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
alex037yang
OpenXG-RAN
Commits
e9d53697
Commit
e9d53697
authored
7 years ago
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
)
...
...
This diff is collapsed.
Click to expand it.
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
)];
}
...
...
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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
;
}
...
...
This diff is collapsed.
Click to expand it.
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
);
}
This diff is collapsed.
Click to expand it.
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
;
}
}
...
...
This diff is collapsed.
Click to expand it.
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
];
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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
))
{
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
];
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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.
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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