Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
e9d53697
Commit
e9d53697
authored
Feb 13, 2018
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated dlsim to FAPI interfaces
parent
4070f0bf
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
575 additions
and
1333 deletions
+575
-1333
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-1
openair1/PHY/CODING/crc_byte.c
openair1/PHY/CODING/crc_byte.c
+2
-1
openair1/PHY/INIT/defs.h
openair1/PHY/INIT/defs.h
+7
-14
openair1/PHY/INIT/lte_param_init.c
openair1/PHY/INIT/lte_param_init.c
+37
-12
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+26
-15
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+29
-24
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+2
-1
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+6
-0
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+8
-6
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+1
-0
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
+8
-5
openair1/PHY/LTE_TRANSPORT/power_control.c
openair1/PHY/LTE_TRANSPORT/power_control.c
+17
-15
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+5
-5
openair1/PHY/vars.h
openair1/PHY/vars.h
+1
-0
openair1/SCHED/fapi_l1.c
openair1/SCHED/fapi_l1.c
+9
-4
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+7
-1
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+8
-5
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+399
-1223
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+1
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
e9d53697
...
...
@@ -2157,11 +2157,12 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr
${
OPENAIR1_DIR
}
/SIMULATION/LTE_PHY/
${
myExe
}
.c
${
XFORMS_SOURCE
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
)
target_link_libraries
(
${
myExe
}
-Wl,--start-group SIMU UTIL SCHED_LIB PHY LFDS
${
ITTI_LIB
}
LFDS7 -Wl,--end-group
pthread m rt
${
CONFIG_LIBRARIES
}
${
ATLAS_LIBRARIES
}
${
XFORMS_LIBRARIES
}
${
T_LIB
}
pthread m rt
${
CONFIG_LIBRARIES
}
${
ATLAS_LIBRARIES
}
${
XFORMS_LIBRARIES
}
${
T_LIB
}
dl
)
endforeach
(
myExe
)
...
...
openair1/PHY/CODING/crc_byte.c
View file @
e9d53697
...
...
@@ -109,7 +109,7 @@ crc24a (unsigned char * inptr, int bitlen)
resbit
=
(
bitlen
%
8
);
while
(
octetlen
--
>
0
)
{
//
printf("
in %x => crc %x\n",crc,*inptr);
//
printf("crc24a:
in %x => crc %x\n",crc,*inptr);
crc
=
(
crc
<<
8
)
^
crc24aTable
[(
*
inptr
++
)
^
(
crc
>>
24
)];
}
...
...
@@ -128,6 +128,7 @@ unsigned int crc24b (unsigned char * inptr, int bitlen)
resbit
=
(
bitlen
%
8
);
while
(
octetlen
--
>
0
)
{
// printf("crc24b: in %x => crc %x (%x)\n",crc,*inptr,crc24bTable[(*inptr) ^ (crc >> 24)]);
crc
=
(
crc
<<
8
)
^
crc24bTable
[(
*
inptr
++
)
^
(
crc
>>
24
)];
}
...
...
openair1/PHY/INIT/defs.h
View file @
e9d53697
...
...
@@ -322,8 +322,11 @@ void init_lte_top(LTE_DL_FRAME_PARMS *lte_frame_parms);
//void copy_lte_parms_to_phy_framing(LTE_DL_FRAME_PARMS *frame_parm, PHY_FRAMING *phy_framing);
void
lte_param_init
(
unsigned
char
N_tx_port_eNB
,
unsigned
char
N_tx
,
void
lte_param_init
(
PHY_VARS_eNB
**
eNBp
,
PHY_VARS_UE
**
UEp
,
RU_t
**
rup
,
unsigned
char
N_tx_port_eNB
,
unsigned
char
N_tx_phy
,
unsigned
char
N_rx
,
unsigned
char
transmission_mode
,
uint8_t
extended_prefix_flag
,
...
...
@@ -331,10 +334,12 @@ void lte_param_init(unsigned char N_tx_port_eNB,
uint16_t
Nid_cell
,
uint8_t
tdd_config
,
uint8_t
N_RB_DL
,
uint8_t
pa
,
uint8_t
threequarter_fs
,
uint8_t
osf
,
uint32_t
perfect_ce
);
#if defined(Rel10) || defined(Rel14)
void
phy_config_dedicated_scell_ue
(
uint8_t
Mod_id
,
uint8_t
eNB_index
,
...
...
@@ -359,18 +364,6 @@ void phy_config_request(PHY_Config_t *phy_config);
int
init_frame_parms
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
osf
);
void
dump_frame_parms
(
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
lte_param_init
(
unsigned
char
N_tx_port_eNB
,
unsigned
char
N_tx_phy
,
unsigned
char
N_rx
,
unsigned
char
transmission_mode
,
uint8_t
extended_prefix_flag
,
frame_t
frame_type
,
uint16_t
Nid_cell
,
uint8_t
tdd_config
,
uint8_t
N_RB_DL
,
uint8_t
threequarter_fs
,
uint8_t
osf
,
uint32_t
perfect_ce
);
/** @} */
#endif
openair1/PHY/INIT/lte_param_init.c
View file @
e9d53697
...
...
@@ -32,8 +32,12 @@
extern
PHY_VARS_eNB
*
eNB
;
extern
PHY_VARS_UE
*
UE
;
extern
RU_t
*
ru
;
void
lte_param_init
(
unsigned
char
N_tx_port_eNB
,
void
lte_param_init
(
PHY_VARS_eNB
**
eNBp
,
PHY_VARS_UE
**
UEp
,
RU_t
**
rup
,
unsigned
char
N_tx_port_eNB
,
unsigned
char
N_tx_phy
,
unsigned
char
N_rx
,
unsigned
char
transmission_mode
,
...
...
@@ -42,6 +46,7 @@ void lte_param_init(unsigned char N_tx_port_eNB,
uint16_t
Nid_cell
,
uint8_t
tdd_config
,
uint8_t
N_RB_DL
,
uint8_t
pa
,
uint8_t
threequarter_fs
,
uint8_t
osf
,
uint32_t
perfect_ce
)
...
...
@@ -49,13 +54,27 @@ void lte_param_init(unsigned char N_tx_port_eNB,
LTE_DL_FRAME_PARMS
*
frame_parms
;
int
i
;
PHY_VARS_eNB
*
eNB
;
PHY_VARS_UE
*
UE
;
RU_t
*
ru
;
printf
(
"Start lte_param_init
\n
"
);
eNB
=
malloc
(
sizeof
(
PHY_VARS_eNB
));
UE
=
malloc
(
sizeof
(
PHY_VARS_UE
));
*
eNBp
=
malloc
(
sizeof
(
PHY_VARS_eNB
));
*
UEp
=
malloc
(
sizeof
(
PHY_VARS_UE
));
*
rup
=
malloc
(
sizeof
(
RU_t
));
eNB
=
*
eNBp
;
UE
=
*
UEp
;
ru
=
*
rup
;
printf
(
"eNB %p, UE %p, ru %p
\n
"
,
eNB
,
UE
,
ru
);
memset
((
void
*
)
eNB
,
0
,
sizeof
(
PHY_VARS_eNB
));
memset
((
void
*
)
UE
,
0
,
sizeof
(
PHY_VARS_UE
));
memset
((
void
*
)
ru
,
0
,
sizeof
(
RU_t
));
ru
->
eNB_list
[
0
]
=
eNB
;
eNB
->
RU_list
[
0
]
=
ru
;
ru
->
num_eNB
=
1
;
srand
(
0
);
randominit
(
0
);
...
...
@@ -90,12 +109,17 @@ void lte_param_init(unsigned char N_tx_port_eNB,
UE
->
is_secondary_ue
=
0
;
UE
->
frame_parms
=
*
frame_parms
;
eNB
->
frame_parms
=
*
frame_parms
;
// eNB->frame_parms = *frame_parms;
ru
->
frame_parms
=
*
frame_parms
;
ru
->
nb_tx
=
N_tx_phy
;
ru
->
nb_rx
=
1
;
ru
->
if_south
=
LOCAL_RF
;
eNB
->
configured
=
1
;
eNB
->
transmission_mode
[
0
]
=
transmission_mode
;
UE
->
transmission_mode
[
0
]
=
transmission_mode
;
init_lte_top
(
frame_parms
);
dump_frame_parms
(
frame_parms
);
UE
->
measurements
.
n_adj_cells
=
0
;
...
...
@@ -105,23 +129,24 @@ void lte_param_init(unsigned char N_tx_port_eNB,
for
(
i
=
0
;
i
<
3
;
i
++
)
lte_gold
(
frame_parms
,
UE
->
lte_gold_table
[
i
],
Nid_cell
+
i
);
init_lte_ue
(
UE
,
1
,
0
);
printf
(
"Calling init_lte_ue_signal
\n
"
);
init_lte_ue_signal
(
UE
,
1
,
0
);
printf
(
"Calling phy_init_lte_eNB
\n
"
);
phy_init_lte_eNB
(
eNB
,
0
,
0
);
printf
(
"Calling phy_init_RU (%p)
\n
"
,
ru
);
phy_init_RU
(
ru
);
generate_pcfich_reg_mapping
(
&
UE
->
frame_parms
);
generate_phich_reg_mapping
(
&
UE
->
frame_parms
);
// DL power control init
//if (transmission_mode == 1) {
UE
->
pdsch_config_dedicated
->
p_a
=
pa
;
if
(
transmission_mode
==
1
||
transmission_mode
==
7
)
{
eNB
->
pdsch_config_dedicated
->
p_a
=
dB0
;
// 4 = 0dB
((
eNB
->
frame_parms
).
pdsch_config_common
).
p_b
=
0
;
UE
->
pdsch_config_dedicated
->
p_a
=
dB0
;
// 4 = 0dB
((
UE
->
frame_parms
).
pdsch_config_common
).
p_b
=
0
;
}
else
{
// rho_a = rhob
eNB
->
pdsch_config_dedicated
->
p_a
=
dBm3
;
// 4 = 0dB
((
eNB
->
frame_parms
).
pdsch_config_common
).
p_b
=
1
;
UE
->
pdsch_config_dedicated
->
p_a
=
dBm3
;
// 4 = 0dB
((
UE
->
frame_parms
).
pdsch_config_common
).
p_b
=
1
;
}
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
e9d53697
...
...
@@ -52,6 +52,9 @@
//extern uint16_t phich_reg[MAX_NUM_PHICH_GROUPS][3];
//extern uint16_t pcfich_reg[4];
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
uint32_t
check_phich_reg
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
kprime
,
uint8_t
lprime
,
uint8_t
mi
)
{
...
...
@@ -177,7 +180,7 @@ void dci_encoding(uint8_t *a,
// encode dci
#ifdef DEBUG_DCI_ENCODING
printf
(
"Doing DCI encoding for %d bits, e %p, rnti %x
\n
"
,
A
,
e
,
rnti
);
printf
(
"Doing DCI encoding for %d bits, e %p, rnti %x
, E %d
\n
"
,
A
,
e
,
rnti
,
E
);
#endif
memset
((
void
*
)
d
,
LTE_NULL
,
96
);
...
...
@@ -231,18 +234,23 @@ uint8_t *generate_dci0(uint8_t *dci,
coded_bits
=
72
*
aggregation_level
;
/*
#ifdef DEBUG_DCI_ENCODING
for (i=0;i<1+((DCI_LENGTH+16)/8);i++)
for
(
i
nt
i
=
0
;
i
<
1
+
((
DCI_LENGTH
+
16
)
/
8
);
i
++
)
printf
(
"i %d : %x
\n
"
,
i
,
dci
[
i
]);
#endif
*/
if
(
DCI_LENGTH
<=
32
)
{
dci_flip
[
0
]
=
dci
[
3
];
dci_flip
[
1
]
=
dci
[
2
];
dci_flip
[
2
]
=
dci
[
1
];
dci_flip
[
3
]
=
dci
[
0
];
#ifdef DEBUG_DCI_ENCODING
printf
(
"DCI => %x,%x,%x,%x
\n
"
,
dci_flip
[
0
],
dci_flip
[
1
],
dci_flip
[
2
],
dci_flip
[
3
]);
#endif
}
else
{
dci_flip
[
0
]
=
dci
[
7
];
dci_flip
[
1
]
=
dci
[
6
];
...
...
@@ -2271,7 +2279,7 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
/* clear all bits, the above code may generate too much false detections
* (not sure about this, to be checked somehow)
*/
//
memset(e, 0, DCI_BITS_MAX);
// memset(e, 0, DCI_BITS_MAX);
e_ptr
=
e
;
...
...
@@ -2285,11 +2293,11 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
if
(
dci_alloc
[
i
].
L
==
(
uint8_t
)
L
)
{
#ifdef DEBUG_DCI_ENCODING
if
(
dci_alloc
[
i
].
rnti
==
0x
02
)
LOG_
I
(
PHY
,
"Generating DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x), rnti %x
\n
"
,
i
,
num_dci
,
dci_alloc
[
i
].
firstCCE
,
dci_alloc
[
i
].
dci_length
,
dci_alloc
[
i
].
L
,
if
(
dci_alloc
[
i
].
rnti
==
0x
1234
)
LOG_
D
(
PHY
,
"Generating DCI %d/%d (nCCE %d) of length %d, aggregation %d (%x), rnti %x
\n
"
,
i
,
num_dci
,
dci_alloc
[
i
].
firstCCE
,
dci_alloc
[
i
].
dci_length
,
dci_alloc
[
i
].
L
,
*
(
unsigned
int
*
)
dci_alloc
[
i
].
dci_pdu
,
dci_alloc
[
i
].
rnti
);
//
dump_dci(frame_parms,&dci_alloc[i]);
dump_dci
(
frame_parms
,
&
dci_alloc
[
i
]);
#endif
if
(
dci_alloc
[
i
].
firstCCE
>=
0
)
{
...
...
@@ -2894,17 +2902,17 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
LOG_D
(
PHY
,
"[DCI search nPdcch %d - common] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x)
\n
"
,
pdcch_vars
[
eNB_id
]
->
num_pdcch_symbols
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
);
else
LOG_D
(
PHY
,
"[DCI search nPdcch %d - ue spec] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x) format %d
\n
"
,
pdcch_vars
[
eNB_id
]
->
num_pdcch_symbols
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
,
format_c
);
LOG_D
(
PHY
,
"[DCI search nPdcch %d - ue spec
%x
] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x) format %d
\n
"
,
pdcch_vars
[
eNB_id
]
->
num_pdcch_symbols
,
pdcch_vars
[
eNB_id
]
->
crnti
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
,
format_c
);
dci_decoding
(
sizeof_bits
,
L
,
&
pdcch_vars
[
eNB_id
]
->
e_rx
[
CCEind
*
72
],
&
dci_decoded_output
[
current_thread_id
][
0
]);
/*
/*
for (i=0;i<3+(sizeof_bits>>3);i++)
printf("dci_decoded_output[%d] => %x\n",i,dci_decoded_output
[i]);
*/
printf("dci_decoded_output[%d][%d] => %x\n",current_thread_id,i,dci_decoded_output[current_thread_id]
[i]);
*/
crc
=
(
crc16
(
&
dci_decoded_output
[
current_thread_id
][
0
],
sizeof_bits
)
>>
16
)
^
extract_crc
(
&
dci_decoded_output
[
current_thread_id
][
0
],
sizeof_bits
);
#ifdef DEBUG_DCI_DECODING
...
...
@@ -3823,7 +3831,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
}
else
if
(
tmode
==
3
)
{
LOG_D
(
PHY
,
" Now check UE_SPEC format 2A_2A search aggregation 1 dci length: %d[bits] %d[bytes]
\n
"
,
format2A_size_bits
,
format2A_size_bytes
);
//
LOG_D(PHY," Now check UE_SPEC format 2A_2A search aggregation 1 dci length: %d[bits] %d[bytes]\n",format2A_size_bits,format2A_size_bytes);
// Now check UE_SPEC format 2A_2A search spaces at aggregation 1
old_dci_cnt
=
dci_cnt
;
dci_decoding_procedure0
(
pdcch_vars
,
0
,
mode
,
...
...
@@ -3895,7 +3903,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
return
(
dci_cnt
);
// Now check UE_SPEC format 2_2A search spaces at aggregation 4
LOG_D
(
PHY
,
" Now check UE_SPEC format 2_2A search spaces at aggregation 4
\n
"
);
//
LOG_D(PHY," Now check UE_SPEC format 2_2A search spaces at aggregation 4 \n");
old_dci_cnt
=
dci_cnt
;
dci_decoding_procedure0
(
pdcch_vars
,
0
,
mode
,
subframe
,
...
...
@@ -4238,3 +4246,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
return
(
dci_cnt
);
}
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
e9d53697
...
...
@@ -44,6 +44,11 @@
#include "LAYER2/MAC/extern.h"
#include "LAYER2/MAC/defs.h"
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
//#undef LOG_I
//#define LOG_I(A,B,C...) printf(B,C)
//#define DEBUG_DCI
uint32_t
localRIV2alloc_LUT6
[
32
];
...
...
@@ -4680,13 +4685,13 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
if
(
harq_pid
>=
8
)
{
LOG_I
(
PHY
,
"bad harq id
\n
"
);
//
LOG_I(PHY,"bad harq id \n");
return
(
0
);
}
if
(
dci_format
==
format1
&&
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
)
{
LOG_I
(
PHY
,
"bad dci format
\n
"
);
//
LOG_I(PHY,"bad dci format \n");
return
(
0
);
}
...
...
@@ -4695,13 +4700,13 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
{
if
(
pdlsch0_harq
->
round
==
0
)
{
LOG_I
(
PHY
,
"bad dci mcs + round
\n
"
);
//
LOG_I(PHY,"bad dci mcs + round \n");
return
(
0
);
}
if
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
{
LOG_I
(
PHY
,
"bad dci mcs + rnti
\n
"
);
//
LOG_I(PHY,"bad dci mcs + rnti \n");
return
(
0
);
}
}
...
...
@@ -4767,7 +4772,7 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
if
(
rballoc
>
RIV_max
)
{
LOG_I
(
PHY
,
"bad dci rballoc rballoc %d RIV_max %lld
\n
"
,
rballoc
,
RIV_max
);
//
LOG_I(PHY,"bad dci rballoc rballoc %d RIV_max %lld \n",rballoc, RIV_max);
// DCI false detection
return
(
0
);
}
...
...
@@ -4775,7 +4780,7 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
if
(
NPRB
==
0
)
{
// DCI false detection
LOG_I
(
PHY
,
"bad NPRB = 0
\n
"
);
//
LOG_I(PHY,"bad NPRB = 0 \n");
return
(
0
);
}
...
...
@@ -4894,13 +4899,13 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
// I- check dci content minimum coherency
if
(
harq_pid
>=
8
)
{
LOG_I
(
PHY
,
"bad harq pid
\n
"
);
//
LOG_I(PHY,"bad harq pid\n");
return
(
0
);
}
if
(
(
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
)
)
{
LOG_I
(
PHY
,
"bad rnti
\n
"
);
//
LOG_I(PHY,"bad rnti\n");
return
(
0
);
}
...
...
@@ -4909,7 +4914,7 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
{
if
(
pdlsch0_harq
->
round
==
0
)
{
LOG_I
(
PHY
,
"bad mcs1
\n
"
);
//
LOG_I(PHY,"bad mcs1\n");
return
(
0
);
}
}
...
...
@@ -4918,7 +4923,7 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
{
if
(
pdlsch1_harq
->
round
==
0
)
{
LOG_I
(
PHY
,
"bad mcs2
\n
"
);
//
LOG_I(PHY,"bad mcs2\n");
return
(
0
);
}
}
...
...
@@ -4927,14 +4932,14 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
if
((
pdlsch0_harq
->
round
==
0
)
&&
(
rv1
>
0
)
&&
(
mcs1
!=
0
))
{
// DCI false detection
LOG_I
(
PHY
,
"bad rv1
\n
"
);
//
LOG_I(PHY,"bad rv1\n");
return
(
0
);
}
if
((
pdlsch1_harq
->
round
==
0
)
&&
(
rv2
>
0
)
&&
(
mcs2
!=
0
))
{
// DCI false detection
LOG_I
(
PHY
,
"bad rv2
\n
"
);
//
LOG_I(PHY,"bad rv2\n");
return
(
0
);
}
...
...
@@ -4995,14 +5000,14 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
if
(
(
rballoc
>
RIV_max
)
&&
(
rah
==
1
)
)
{
// DCI false detection
LOG_I
(
PHY
,
"bad rballoc %d RIV_max %lld
\n
"
,
rballoc
,
RIV_max
);
//
LOG_I(PHY,"bad rballoc %d RIV_max %lld\n", rballoc, RIV_max);
return
(
0
);
}
if
(
NPRB
==
0
)
{
// DCI false detection
LOG_I
(
PHY
,
"bad NPRB
\n
"
);
//
LOG_I(PHY,"bad NPRB\n");
return
(
0
);
}
...
...
@@ -5026,7 +5031,7 @@ void compute_llr_offset(LTE_DL_FRAME_PARMS *frame_parms,
pdsch_vars
->
llr_offset
[
pdcch_vars
->
num_pdcch_symbols
]
=
0
;
//
LOG_I(PHY,"compute_llr_offset: nb RB %d - Qm %d \n", nb_rb_alloc, dlsch0_harq->Qm);
LOG_I
(
PHY
,
"compute_llr_offset: nb RB %d - Qm %d
\n
"
,
nb_rb_alloc
,
dlsch0_harq
->
Qm
);
//dlsch0_harq->rb_alloc_even;
//dlsch0_harq->rb_alloc_odd;
...
...
@@ -5056,15 +5061,15 @@ void compute_llr_offset(LTE_DL_FRAME_PARMS *frame_parms,
if
(
symbol
<
(
frame_parms
->
symbols_per_tti
-
1
))
pdsch_vars
->
llr_offset
[
symbol
+
1
]
=
pdsch_vars
->
llr_offset
[
symbol
]
+
llr_offset
;
//
LOG_I(PHY,"Granted Re subframe %d / symbol %d => %d (%d RBs)\n", subframe, symbol_mod, granted_re,dlsch0_harq->nb_rb);
//
LOG_I(PHY,"Pbch/PSS/SSS Re subframe %d / symbol %d => %d \n", subframe, symbol_mod, pbch_pss_sss_re);
//
LOG_I(PHY,"CRS Re Per PRB subframe %d / symbol %d => %d \n", subframe, symbol_mod, crs_re);
//
LOG_I(PHY,"Data Re subframe %d / symbol %d => %d \n", subframe, symbol_mod, data_re);
LOG_I
(
PHY
,
"Granted Re subframe %d / symbol %d => %d (%d RBs)
\n
"
,
subframe
,
symbol_mod
,
granted_re
,
dlsch0_harq
->
nb_rb
);
LOG_I
(
PHY
,
"Pbch/PSS/SSS Re subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
pbch_pss_sss_re
);
LOG_I
(
PHY
,
"CRS Re Per PRB subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
crs_re
);
LOG_I
(
PHY
,
"Data Re subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
data_re
);
//
LOG_I(PHY,"Data Re subframe %d-symbol %d => llr length %d, llr offset %d \n", subframe, symbol,
//
pdsch_vars->llr_length[symbol], pdsch_vars->llr_offset[symbol]);
LOG_I
(
PHY
,
"Data Re subframe %d-symbol %d => llr length %d, llr offset %d
\n
"
,
subframe
,
symbol
,
pdsch_vars
->
llr_length
[
symbol
],
pdsch_vars
->
llr_offset
[
symbol
]);
}
}
void
prepare_dl_decoding_format1_1A
(
DCI_format_t
dci_format
,
...
...
@@ -5179,7 +5184,7 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
//packet was actually decoded in previous transmission (ACK was missed by eNB)
//However, the round is not a good check as it might have been decoded in a retransmission prior to this one.
{
LOG_D
(
PHY
,
"skip pdsch decoding and report ack
\n
"
);
//
LOG_D(PHY,"skip pdsch decoding and report ack\n");
// skip pdsch decoding and report ack
//pdlsch0_harq->status = SCH_IDLE;
pdlsch0
->
active
=
0
;
...
...
@@ -5804,7 +5809,7 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
//LOG_I(PHY,"[UE] DLSCH: New Data Indicator CW0 subframe %d (pid %d, round %d)\n",
// subframe,harq_pid,dlsch0_harq->round);
if
(
dlsch0_harq
->
first_tx
==
1
)
{
LOG_D
(
PHY
,
"Format 2 DCI First TX0: Clearing flag
\n
"
);
//
LOG_D(PHY,"Format 2 DCI First TX0: Clearing flag\n");
dlsch0_harq
->
first_tx
=
0
;
}
}
...
...
@@ -5852,7 +5857,7 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
//LOG_I(PHY,"[UE] DLSCH: New Data Indicator CW1 subframe %d (pid %d, round %d)\n",
// subframe,harq_pid,dlsch0_harq->round);
if
(
dlsch1_harq
->
first_tx
==
1
)
{
LOG_D
(
PHY
,
"Format 2 DCI First TX1: Clearing flag
\n
"
);
//
LOG_D(PHY,"Format 2 DCI First TX1: Clearing flag\n");
dlsch1_harq
->
first_tx
=
0
;
}
}
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
e9d53697
...
...
@@ -604,7 +604,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
// this is a new packet
#ifdef DEBUG_DLSCH_CODING
printf
(
"encoding thinks this is a new packet
\n
"
);
printf
(
"encoding thinks this is a new packet for harq_pid %d (%p)
\n
"
,
harq_pid
,
dlsch
->
harq_processes
[
harq_pid
]
->
b
);
#endif
/*
int i;
...
...
@@ -614,6 +614,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
printf("\n");
*/
// Add 24-bit crc (polynomial A) to payload
crc
=
crc24a
(
a
,
A
)
>>
8
;
a
[
A
>>
3
]
=
((
uint8_t
*
)
&
crc
)[
2
];
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
e9d53697
...
...
@@ -37,6 +37,12 @@
#include "SCHED/extern.h"
#include "SIMULATION/TOOLS/defs.h"
//#define DEBUG_DLSCH_DECODING
//#define UE_DEBUG_TRACE 1
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
//#undef LOG_I
//#define LOG_I(A,B,C...) printf(B,C)
extern
double
cpuf
;
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
e9d53697
...
...
@@ -49,12 +49,14 @@ int16_t interf_unaw_shift = 13;
//#define DEBUG_HARQ
//#undef LOG_D
//#define LOG_D LOG_I
//#define LOG_D(A,B,C...) printf(B,C)
//#undef LOG_I
//#define LOG_I(A,B,C...) printf(B,C)
//
#define DEBUG_PHY 1
#define DEBUG_PHY 1
//#define DEBUG_DLSCH_DEMOD 1
//#define DISABLE_LOG_X
// [MCS][i_mod (0,1,2) = (2,4,6)]
unsigned
char
offset_mumimo_llr_drange_fix
=
0
;
...
...
@@ -370,7 +372,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
//printf("nb_rb = %d, eNB_id %d\n",nb_rb,eNB_id);
if
(
nb_rb
==
0
)
{
LOG_D
(
PHY
,
"dlsch_demodulation.c: nb_rb=0
\n
"
);
//
LOG_D(PHY,"dlsch_demodulation.c: nb_rb=0\n");
return
(
-
1
);
}
...
...
@@ -845,7 +847,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
pllr_symbol_cw1
=
(
int8_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
1
];
pllr_symbol_cw0
+=
llr_offset_symbol
;
pllr_symbol_cw1
+=
llr_offset_symbol
;
/*
LOG_I
(
PHY
,
"compute LLRs [AbsSubframe %d.%d-%d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %x @LLR Buff(symb) %x
\n
"
,
frame
,
subframe
,
symbol
,
nb_rb
,
dlsch0_harq
->
Qm
,
...
...
@@ -853,7 +855,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
pdsch_vars
[
eNB_id
]
->
llr_offset
[
symbol
],
(
int16_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
0
],
pllr_symbol_cw0
);
*/
switch
(
dlsch0_harq
->
Qm
)
{
case
2
:
if
((
rx_type
==
rx_standard
)
||
(
codeword_TB1
==
-
1
))
{
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
e9d53697
...
...
@@ -2125,6 +2125,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
amp_rho_b
=
(
int16_t
)(((
int32_t
)
amp
*
dlsch1
->
sqrt_rho_b
)
>>
13
);
}
if
(
mod_order0
==
4
)
for
(
i
=
0
;
i
<
4
;
i
++
)
{
qam16_table_a0
[
i
]
=
(
int16_t
)(((
int32_t
)
qam16_table
[
i
]
*
amp_rho_a
)
>>
15
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
View file @
e9d53697
...
...
@@ -124,14 +124,18 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
}
#ifdef DEBUG_SCRAMBLING
#ifdef Rel14
printf
(
"scrambling: i0 %d rnti %x, q %d, Ns %d, Nid_cell %d, G %d x2 %x
\n
"
,
dlsch
->
i0
,
dlsch
->
rnti
,
q
,
Ns
,
frame_parms
->
Nid_cell
,
G
,
x2
);
#else
printf
(
"scrambling: rnti %x, q %d, Ns %d, Nid_cell %d, G %d x2 %x
\n
"
,
dlsch
->
rnti
,
q
,
Ns
,
frame_parms
->
Nid_cell
,
G
,
x2
);
#endif
#endif
s
=
lte_gold_scram
(
&
x1
,
&
x2
,
1
);
for
(
n
=
0
;
n
<
(
1
+
(
G
>>
5
));
n
++
)
{
#ifdef DEBUG_SCRAMBLING
printf
(
"scrambling %d : %d => "
,
k
,
e
[
k
]
);
for
(
int
k
=
0
;
k
<
32
;
k
++
)
printf
(
"scrambling %d : %d xor %d = %d
\n
"
,
k
+
(
n
<<
5
),
e
[
k
],(
s
>>
k
)
&
1
,
e
[
k
]
^
((
s
>>
k
)
&
1
)
);
#endif
...
...
@@ -171,9 +175,8 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
// This is not faster for some unknown reason
// ((__m128i *)e)[0] = _mm_xor_si128(((__m128i *)e)[0],((__m128i *)scrambling_lut)[s&65535]);
// ((__m128i *)e)[1] = _mm_xor_si128(((__m128i *)e)[1],((__m128i *)scrambling_lut)[s>>16]);
#ifdef DEBUG_SCRAMBLING
printf
(
"%d
\n
"
,
e
[
k
]);
#endif
s
=
lte_gold_scram
(
&
x1
,
&
x2
,
0
);
...
...
@@ -213,7 +216,7 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
for
(
i
=
0
;
i
<
(
1
+
(
G
>>
5
));
i
++
)
{
for
(
j
=
0
;
j
<
32
;
j
++
,
k
++
)
{
#ifdef DEBUG_SCRAMBLING
printf
(
"unscrambling %d : %d => "
,
k
,
llr
[
k
]
);
printf
(
"unscrambling %d : %d xor %d ="
,
k
,
llr
[
k
],(
s
>>
j
)
&
1
);
#endif
llr
[
k
]
=
((
2
*
((
s
>>
j
)
&
1
))
-
1
)
*
llr
[
k
];
#ifdef DEBUG_SCRAMBLING
...
...
openair1/PHY/LTE_TRANSPORT/power_control.c
View file @
e9d53697
...
...
@@ -33,20 +33,20 @@ double ratioPB[2][4]={{ 0.00000, -0.96910, -2.21849, -3.97940}, //in db
double
pa_values
[
8
]
=
{
-
6
.
0
,
-
4
.
77
,
-
3
.
0
,
-
1
.
77
,
0
.
0
,
1
.
0
,
2
.
0
,
3
.
0
};
//reported by higher layers
double
get_pa_dB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
)
double
get_pa_dB
(
uint8_t
pa
)
{
if
(
pdsch_config_dedicated
)
return
(
pa_values
[
pdsch_config_dedicated
->
p_a
]);
else
return
(
0
.
0
);
AssertFatal
(
pa
<
8
,
"pa %d is not in (0...7)
\n
"
,
pa
);
return
(
pa_values
[
pa
]);
}
double
computeRhoA_eNB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
,
double
computeRhoA_eNB
(
uint8_t
pa
,
LTE_eNB_DLSCH_t
*
dlsch_eNB
,
int
dl_power_off
,
uint8_t
n_antenna_port
){
double
rho_a_dB
;
double
sqrt_rho_a_lin
;
rho_a_dB
=
get_pa_dB
(
p
dsch_config_dedicated
);
rho_a_dB
=
get_pa_dB
(
p
a
);
if
(
!
dl_power_off
)
//if dl_power_offset is 0, this is for MU-interference, TM5
rho_a_dB
-=
10
*
log10
(
2
);
...
...
@@ -59,14 +59,14 @@ double computeRhoA_eNB(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated,
dlsch_eNB
->
sqrt_rho_a
=
(
short
)
(
sqrt_rho_a_lin
*
pow
(
2
,
13
));
#if DEBUG_PC
printf
(
"eNB: p_a=%d, value=%f, sqrt_rho_a=%d
\n
"
,
p
dsch_config_dedicated
->
p
_a
,
pa_values
[
pdsch_config_dedicated
->
p_a
],
dlsch_eNB
->
sqrt_rho_a
);
printf
(
"eNB: p_a=%d, value=%f, sqrt_rho_a=%d
\n
"
,
p_a
,
pa_values
[
pdsch_config_dedicated
->
p_a
],
dlsch_eNB
->
sqrt_rho_a
);
#endif
return
(
rho_a_dB
);
}
double
computeRhoB_eNB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
,
PDSCH_CONFIG_COMMON
*
pdsch_config_common
,
double
computeRhoB_eNB
(
uint8_t
pa
,
uint8_t
pb
,
uint8_t
n_antenna_port
,
LTE_eNB_DLSCH_t
*
dlsch_eNB
,
int
dl_power_off
)
...
...
@@ -75,19 +75,21 @@ double computeRhoB_eNB(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated,
double
rho_a_dB
,
rho_b_dB
;
double
sqrt_rho_b_lin
;
rho_a_dB
=
computeRhoA_eNB
(
pdsch_config_dedicated
,
dlsch_eNB
,
dl_power_off
,
n_antenna_port
);
AssertFatal
(
pa
<
8
,
"pa %d is not in (0...7)
\n
"
,
pa
);
AssertFatal
(
pb
<
4
,
"pb %d is not in (0...3)
\n
"
,
pb
);
rho_a_dB
=
computeRhoA_eNB
(
pa
,
dlsch_eNB
,
dl_power_off
,
n_antenna_port
);
if
(
n_antenna_port
>
1
)
rho_b_dB
=
ratioPB
[
1
][
p
dsch_config_common
->
p_
b
]
+
rho_a_dB
;
rho_b_dB
=
ratioPB
[
1
][
pb
]
+
rho_a_dB
;
else
rho_b_dB
=
ratioPB
[
0
][
p
dsch_config_common
->
p_
b
]
+
rho_a_dB
;
rho_b_dB
=
ratioPB
[
0
][
pb
]
+
rho_a_dB
;
sqrt_rho_b_lin
=
pow
(
10
,(
0
.
05
*
rho_b_dB
));
dlsch_eNB
->
sqrt_rho_b
=
(
short
)
(
sqrt_rho_b_lin
*
pow
(
2
,
13
));
#ifdef DEBUG_PC
printf
(
"eNB: n_ant=%d, p_b=%d -> rho_b/rho_a=%f -> sqrt_rho_b=%d
\n
"
,
n_antenna_port
,
p
dsch_config_common
->
p_b
,
ratioPB
[
1
][
pdsch_config_common
->
p_
b
],
dlsch_eNB
->
sqrt_rho_b
);
printf
(
"eNB: n_ant=%d, p_b=%d -> rho_b/rho_a=%f -> sqrt_rho_b=%d
\n
"
,
n_antenna_port
,
p
b
,
ratioPB
[
1
][
p
b
],
dlsch_eNB
->
sqrt_rho_b
);
#endif
return
(
rho_b_dB
);
}
...
...
@@ -102,7 +104,7 @@ double computeRhoA_UE(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated,
double
rho_a_dB
;
double
sqrt_rho_a_lin
;
rho_a_dB
=
get_pa_dB
(
pdsch_config_dedicated
);
rho_a_dB
=
get_pa_dB
(
pdsch_config_dedicated
->
p_a
);
if
(
!
dl_power_off
)
rho_a_dB
-=
10
*
log10
(
2
);
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
e9d53697
...
...
@@ -2221,15 +2221,15 @@ uint32_t dlsch_decoding_abstraction(double *dlsch_MIPB,
uint8_t
num_pdcch_symbols
);
// DL power control functions
double
get_pa_dB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
);
double
get_pa_dB
(
uint8_t
pa
);
double
computeRhoA_eNB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
,
LTE_eNB_DLSCH_t
*
dlsch_eNB
,
double
computeRhoA_eNB
(
uint8_t
pa
,
LTE_eNB_DLSCH_t
*
dlsch_eNB
,
int
dl_power_off
,
uint8_t
n_antenna_port
);
double
computeRhoB_eNB
(
PDSCH_CONFIG_DEDICATED
*
pdsch_config_dedicated
,
PDSCH_CONFIG_COMMON
*
pdsch_config_common
,
double
computeRhoB_eNB
(
uint8_t
pa
,
uint8_t
pb
,
uint8_t
n_antenna_port
,
LTE_eNB_DLSCH_t
*
dlsch_eNB
,
int
dl_power_off
);
...
...
openair1/PHY/vars.h
View file @
e9d53697
...
...
@@ -24,6 +24,7 @@
#include "PHY/types.h"
#include "PHY/defs.h"
#include "common/ran_context.h"
char
*
namepointer_chMag
;
char
fmageren_name2
[
512
];
...
...
openair1/SCHED/fapi_l1.c
View file @
e9d53697
...
...
@@ -37,6 +37,11 @@
#include "nfapi_interface.h"
#include "fapi_l1.h"
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
//#undef LOG_I
//#define LOG_I(A,B,C...) printf(B,C)
int
oai_nfapi_dl_config_req
(
nfapi_dl_config_request_t
*
dl_config_req
);
int
oai_nfapi_tx_req
(
nfapi_tx_request_t
*
tx_req
);
int
oai_nfapi_hi_dci0_req
(
nfapi_hi_dci0_request_t
*
hi_dci0_req
);
...
...
@@ -190,12 +195,12 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_pr
eNB
->
pdsch_config_dedicated
[
UE_id
].
p_a
=
rel8
->
pa
;
if
(
dlsch0
->
active
){
computeRhoA_eNB
(
&
eNB
->
pdsch_config_dedicated
[
UE_id
]
,
dlsch0
,
dlsch0_harq
->
dl_power_off
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
);
computeRhoB_eNB
(
&
eNB
->
pdsch_config_dedicated
[
UE_id
],
&
(
eNB
->
frame_parms
.
pdsch_config_common
)
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
,
dlsch0
,
dlsch0_harq
->
dl_power_off
);
computeRhoA_eNB
(
rel8
->
pa
,
dlsch0
,
dlsch0_harq
->
dl_power_off
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
);
computeRhoB_eNB
(
rel8
->
pa
,
eNB
->
frame_parms
.
pdsch_config_common
.
p_b
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
,
dlsch0
,
dlsch0_harq
->
dl_power_off
);
}
if
(
dlsch1
->
active
){
computeRhoA_eNB
(
&
eNB
->
pdsch_config_dedicated
[
UE_id
]
,
dlsch1
,
dlsch1_harq
->
dl_power_off
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
);
computeRhoB_eNB
(
&
eNB
->
pdsch_config_dedicated
[
UE_id
],
&
(
eNB
->
frame_parms
.
pdsch_config_common
)
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
,
dlsch1
,
dlsch1_harq
->
dl_power_off
);
computeRhoA_eNB
(
rel8
->
pa
,
dlsch1
,
dlsch1_harq
->
dl_power_off
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
);
computeRhoB_eNB
(
rel8
->
pa
,
eNB
->
frame_parms
.
pdsch_config_common
.
p_b
,
eNB
->
frame_parms
.
nb_antenna_ports_eNB
,
dlsch1
,
dlsch1_harq
->
dl_power_off
);
}
dlsch0_harq
->
pdsch_start
=
eNB
->
pdcch_vars
[
subframe
&
1
].
num_pdcch_symbols
;
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
e9d53697
...
...
@@ -50,6 +50,9 @@
# include "intertask_interface.h"
#endif
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
extern
uint8_t
nfapi_mode
;
int
oai_nfapi_rach_ind
(
nfapi_rach_indication_t
*
rach_ind
);
...
...
@@ -395,6 +398,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
void
phy_procedures_eNB_TX
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
...
...
@@ -416,7 +420,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
int
offset
=
eNB
->
CC_id
;
//proc == &eNB->proc.proc_rxtx[0] ? 0 : 1;
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
==
SF_UL
))
return
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX
+
offset
,
1
);
...
...
@@ -429,6 +433,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
if
(
nfapi_mode
==
0
||
nfapi_mode
==
1
)
{
if
(
is_pmch_subframe
(
frame
,
subframe
,
fp
))
{
pmch_procedures
(
eNB
,
proc
,
rn
,
r_type
);
...
...
@@ -439,6 +444,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
}
// clear existing ulsch dci allocations before applying info from MAC (this is table
ul_subframe
=
pdcch_alloc2ul_subframe
(
fp
,
subframe
);
ul_frame
=
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
e9d53697
...
...
@@ -73,6 +73,9 @@
extern
double
cpuf
;
//#undef LOG_D
//#define LOG_D(A,B,C...) printf(B,C)
void
Msg1_transmitted
(
module_id_t
module_idP
,
uint8_t
CC_id
,
frame_t
frameP
,
uint8_t
eNB_id
);
void
Msg3_transmitted
(
module_id_t
module_idP
,
uint8_t
CC_id
,
frame_t
frameP
,
uint8_t
eNB_id
);
...
...
@@ -1373,7 +1376,7 @@ void ue_prach_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
if
(
ue
->
mac_enabled
==
1
){
// ask L2 for RACH transport
if
((
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
&&
(
mode
!=
no_L2_connect
)
)
{
LOG_D
(
PHY
,
"Getting PRACH resources
\n
"
);
//
LOG_D(PHY,"Getting PRACH resources\n");
ue
->
prach_resources
[
eNB_id
]
=
ue_get_rach
(
ue
->
Mod_id
,
ue
->
CC_id
,
...
...
@@ -1590,7 +1593,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
LOG_D
(
PHY
,
"Generating PUSCH (Abssubframe: %d.%d): harq-Id: %d, round: %d, MaxReTrans: %d
\n
"
,
frame_tx
,
subframe_tx
,
harq_pid
,
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
,
ue
->
ulsch
[
eNB_id
]
->
Mlimit
);
if
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
>=
(
ue
->
ulsch
[
eNB_id
]
->
Mlimit
-
1
))
{
LOG_D
(
PHY
,
"PUSCH MAX Retransmission achieved ==> send last pusch
\n
"
);
//
LOG_D(PHY,"PUSCH MAX Retransmission achieved ==> send last pusch\n");
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
0
;
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
=
0
;
}
...
...
@@ -2070,10 +2073,10 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
(
bundling_flag
==
bundling
)
||
((
frame_parms
->
frame_type
==
TDD
)
&&
(
frame_parms
->
tdd_config
==
1
)
&&
((
subframe_tx
!=
2
)
||
(
subframe_tx
!=
7
))))
{
format
=
pucch_format1a
;
LOG_D
(
PHY
,
"[UE] PUCCH 1a
\n
"
);
//
LOG_D(PHY,"[UE] PUCCH 1a\n");
}
else
{
format
=
pucch_format1b
;
LOG_D
(
PHY
,
"[UE] PUCCH 1b
\n
"
);
//
LOG_D(PHY,"[UE] PUCCH 1b\n");
}
// Part - I
...
...
@@ -3108,7 +3111,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
int
ret
=
0
;
if
(
is_pmch_subframe
(
frame_rx
,
subframe_rx
,
&
ue
->
frame_parms
))
{
LOG_D
(
PHY
,
"ue calling pmch subframe ..
\n
"
);
//
LOG_D(PHY,"ue calling pmch subframe ..\n ");
LOG_D
(
PHY
,
"[UE %d] Frame %d, subframe %d: Querying for PMCH demodulation
\n
"
,
ue
->
Mod_id
,(
subframe_rx
==
9
?-
1
:
0
)
+
frame_rx
,
subframe_rx
);
...
...
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
e9d53697
This source diff could not be displayed because it is too large. You can
view the blob
instead.
openair2/LAYER2/MAC/defs.h
View file @
e9d53697
...
...
@@ -1079,7 +1079,7 @@ typedef struct eNB_MAC_INST_s {
/// Prealocated TX pdu list
nfapi_tx_request_pdu_t
tx_request_pdu
[
MAX_NUM_CCs
][
MAX_NUM_TX_REQUEST_PDU
];
/// NFAPI DL PDU structure
/// NFAPI DL PDU structure
e
nfapi_tx_request_t
TX_req
[
MAX_NUM_CCs
];
/// UL handle
uint32_t
ul_handle
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment