Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Merge Requests
22
Merge Requests
22
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
oai
openairinterface5G
Commits
bd489822
Commit
bd489822
authored
Mar 13, 2017
by
Bilel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pdcch dual buffer
parent
cec9cb76
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
320 additions
and
226 deletions
+320
-226
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+51
-20
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+39
-31
openair1/PHY/LTE_TRANSPORT/dci.h
openair1/PHY/LTE_TRANSPORT/dci.h
+3
-3
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+9
-10
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+5
-4
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+10
-1
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+5
-5
openair1/PHY/LTE_TRANSPORT/print_stats.c
openair1/PHY/LTE_TRANSPORT/print_stats.c
+1
-1
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+3
-3
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+1
-1
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+6
-4
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+1
-1
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+5
-5
openair1/PHY/TOOLS/lte_phy_scope_tm4.c
openair1/PHY/TOOLS/lte_phy_scope_tm4.c
+4
-4
openair1/PHY/defs.h
openair1/PHY/defs.h
+1
-1
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+127
-90
openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c
openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c
+2
-1
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+9
-9
openair1/SIMULATION/LTE_PHY/pdcchsim.c
openair1/SIMULATION/LTE_PHY/pdcchsim.c
+7
-7
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+1
-1
openair3/NAS/TOOLS/network.h
openair3/NAS/TOOLS/network.h
+1
-1
openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
+4
-4
openair3/NAS/UE/ESM/esm_ebr_context.c
openair3/NAS/UE/ESM/esm_ebr_context.c
+1
-1
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+8
-2
targets/SIMU/USER/channel_sim.c
targets/SIMU/USER/channel_sim.c
+1
-1
targets/SIMU/USER/init_lte.c
targets/SIMU/USER/init_lte.c
+12
-12
targets/SIMU/USER/oaisim_functions.c
targets/SIMU/USER/oaisim_functions.c
+1
-1
No files found.
openair1/PHY/INIT/lte_init.c
View file @
bd489822
...
...
@@ -614,8 +614,12 @@ void phy_config_afterHO_ue(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_id, Mobility
// RNTI
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
pdcch_vars
[
eNB_id
]
->
crnti
=
mobilityControlInfo
->
newUE_Identity
.
buf
[
0
]
|
(
mobilityControlInfo
->
newUE_Identity
.
buf
[
1
]
<<
8
);
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
=
mobilityControlInfo
->
newUE_Identity
.
buf
[
0
]
|
(
mobilityControlInfo
->
newUE_Identity
.
buf
[
1
]
<<
8
);
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
=
mobilityControlInfo
->
newUE_Identity
.
buf
[
0
]
|
(
mobilityControlInfo
->
newUE_Identity
.
buf
[
1
]
<<
8
);
LOG_I
(
PHY
,
"SET C-RNTI %x %x
\n
"
,
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
,
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
);
}
if
(
ho_failed
)
{
...
...
@@ -835,7 +839,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
if
(
physicalConfigDedicated
->
antennaInfo
)
{
phy_vars_ue
->
transmission_mode
[
eNB_id
]
=
1
+
(
physicalConfigDedicated
->
antennaInfo
->
choice
.
explicitValue
.
transmissionMode
);
LOG_
D
(
PHY
,
"Transmission Mode %d
\n
"
,
phy_vars_ue
->
transmission_mode
[
eNB_id
]);
LOG_
I
(
PHY
,
"Transmission Mode %d
\n
"
,
phy_vars_ue
->
transmission_mode
[
eNB_id
]);
switch
(
physicalConfigDedicated
->
antennaInfo
->
choice
.
explicitValue
.
transmissionMode
)
{
case
AntennaInfoDedicated__transmissionMode_tm1
:
phy_vars_ue
->
transmission_mode
[
eNB_id
]
=
1
;
...
...
@@ -856,7 +860,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
phy_vars_ue
->
transmission_mode
[
eNB_id
]
=
6
;
break
;
case
AntennaInfoDedicated__transmissionMode_tm7
:
lte_gold_ue_spec_port5
(
phy_vars_ue
->
lte_gold_uespec_port5_table
,
phy_vars_ue
->
frame_parms
.
Nid_cell
,
phy_vars_ue
->
pdcch_vars
[
eNB_id
]
->
crnti
);
lte_gold_ue_spec_port5
(
phy_vars_ue
->
lte_gold_uespec_port5_table
,
phy_vars_ue
->
frame_parms
.
Nid_cell
,
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
);
phy_vars_ue
->
transmission_mode
[
eNB_id
]
=
7
;
break
;
default:
...
...
@@ -952,6 +956,14 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
LOG_I
(
PHY
,
"Disabling SIB MIB decoding
\n
"
);
phy_vars_ue
->
decode_SIB
=
0
;
phy_vars_ue
->
decode_MIB
=
0
;
//phy_vars_ue->pdcch_vars[1][eNB_id]->crnti = phy_vars_ue->pdcch_vars[0][eNB_id]->crnti;
if
(
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
==
0x1234
)
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
=
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
;
else
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
=
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
;
LOG_I
(
PHY
,
"C-RNTI %x %x
\n
"
,
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
,
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
);
}
...
...
@@ -1075,7 +1087,8 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
LTE_UE_PDSCH
**
const
pdsch_vars_ra
=
ue
->
pdsch_vars_ra
;
LTE_UE_PDSCH
**
const
pdsch_vars_mch
=
ue
->
pdsch_vars_MCH
;
LTE_UE_PBCH
**
const
pbch_vars
=
ue
->
pbch_vars
;
LTE_UE_PDCCH
**
const
pdcch_vars
=
ue
->
pdcch_vars
;
LTE_UE_PDCCH
**
const
pdcch_vars_th0
=
ue
->
pdcch_vars
[
0
];
LTE_UE_PDCCH
**
const
pdcch_vars_th1
=
ue
->
pdcch_vars
[
1
];
LTE_UE_PRACH
**
const
prach_vars
=
ue
->
prach_vars
;
int
i
,
j
,
k
,
l
;
...
...
@@ -1157,7 +1170,8 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_mch
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdcch_vars
[
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
pdcch_vars_th0
[
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
pdcch_vars_th1
[
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
prach_vars
[
eNB_id
]
=
(
LTE_UE_PRACH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PRACH
));
pbch_vars
[
eNB_id
]
=
(
LTE_UE_PBCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PBCH
));
...
...
@@ -1233,29 +1247,46 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
phy_init_lte_ue__PDSCH
(
pdsch_vars_mch
[
eNB_id
],
fp
);
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
pdcch_vars
[
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars
[
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars
[
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars
[
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
pdcch_vars
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars
[
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pdcch_vars
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
//ue_pdcch_vars[eNB_id]->rho[i] = (int32_t*)malloc16_clear( sizeof(int32_t)*(fp->N_RB_DL*12*7*2) );
pdcch_vars
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
pdcch_vars_th0
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
pdcch_vars_th1
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
for
(
j
=
0
;
j
<
4
;
j
++
)
{
//fp->nb_antennas_tx; j++)
int
idx
=
(
j
<<
1
)
+
i
;
// size_t num = 7*2*fp->N_RB_DL*12;
size_t
num
=
4
*
100
*
12
;
// 4 symbols, 100 PRBs, 12 REs per PRB
pdcch_vars
[
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars
[
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars
[
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars
[
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
}
}
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
bd489822
...
...
@@ -1682,9 +1682,7 @@ void pdcch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
int32_t
avgP
[
4
];
int32_t
rx_pdcch
(
LTE_UE_COMMON
*
common_vars
,
LTE_UE_PDCCH
**
pdcch_vars
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
rx_pdcch
(
PHY_VARS_UE
*
ue
,
uint32_t
frame
,
uint8_t
subframe
,
uint8_t
eNB_id
,
...
...
@@ -1693,6 +1691,10 @@ int32_t rx_pdcch(LTE_UE_COMMON *common_vars,
uint8_t
is_secondary_ue
)
{
LTE_UE_COMMON
*
common_vars
=
&
ue
->
common_vars
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
LTE_UE_PDCCH
**
pdcch_vars
=
ue
->
pdcch_vars
[
subframe
&
0x1
];
uint8_t
log2_maxh
,
aatx
,
aarx
;
#ifdef MU_RECEIVER
uint8_t
eNB_id_i
=
eNB_id
+
1
;
//add 1 to eNB_id to separate from wanted signal, chosen as the B/F'd pilots from the SeNB are shifted by 1
...
...
@@ -1701,7 +1703,7 @@ int32_t rx_pdcch(LTE_UE_COMMON *common_vars,
uint8_t
n_pdcch_symbols
=
3
;
//pdcch_vars[eNB_id]->num_pdcch_symbols;
uint8_t
mi
=
get_mi
(
frame_parms
,
subframe
);
//
printf("In rx_pdcch, subframe %d, eNB_id %d\n",subframe,eNB_id
);
//
printf("In rx_pdcch, subframe %d, eNB_id %d, pdcch_vars %d \n",subframe,eNB_id,pdcch_vars
);
for
(
s
=
0
;
s
<
n_pdcch_symbols
;
s
++
)
{
if
(
is_secondary_ue
==
1
)
{
...
...
@@ -1876,12 +1878,12 @@ int32_t rx_pdcch(LTE_UE_COMMON *common_vars,
pdcch_vars
[
eNB_id
],
mimo_mode
);
if
(
n_pdcch_symbols
>
3
)
n_pdcch_symbols
=
1
;
#ifdef DEBUG_DCI_DECODING
printf
(
"[PDCCH] subframe %d n_pdcch_symbols from PCFICH =%d
\n
"
,
subframe
,
n_pdcch_symbols
);
printf
(
"demapping: subframe %d, mi %d, tdd_config %d
\n
"
,
subframe
,
get_mi
(
frame_parms
,
subframe
),
frame_parms
->
tdd_config
);
#endif
...
...
@@ -2503,7 +2505,7 @@ void dci_decoding(uint8_t DCI_LENGTH,
}
static
uint8_t
dci_decoded_output
[(
MAX_DCI_SIZE_BITS
+
64
)
/
8
];
static
uint8_t
dci_decoded_output
[
2
][
(
MAX_DCI_SIZE_BITS
+
64
)
/
8
];
uint16_t
get_nCCE
(
uint8_t
num_pdcch_symbols
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
mi
)
{
...
...
@@ -2795,21 +2797,23 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
#ifdef DEBUG_DCI_DECODING
if
(
do_common
==
1
)
LOG_I
(
PHY
,
"[DCI search - common] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x)
\n
"
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
);
LOG_I
(
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_I
(
PHY
,
"[DCI search - ue spec] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x)
\n
"
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
);
LOG_I
(
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)
\n
"
,
pdcch_vars
[
eNB_id
]
->
num_pdcch_symbols
,
m
,
L2
,
sizeof_bits
,
CCEind
,
nCCE
,
*
CCEmap
,
CCEmap_mask
);
#endif
dci_decoding
(
sizeof_bits
,
L
,
&
pdcch_vars
[
eNB_id
]
->
e_rx
[
CCEind
*
72
],
dci_decoded_output
);
&
dci_decoded_output
[
subframe
&
0x1
][
0
]
);
/*
for (i=0;i<3+(sizeof_bits>>3);i++)
printf("dci_decoded_output[%d] => %x\n",i,dci_decoded_output[i]);
*/
crc
=
(
crc16
(
dci_decoded_output
,
sizeof_bits
)
>>
16
)
^
extract_crc
(
dci_decoded_output
,
sizeof_bits
);
crc
=
(
crc16
(
&
dci_decoded_output
[
subframe
&
0x1
][
0
],
sizeof_bits
)
>>
16
)
^
extract_crc
(
&
dci_decoded_output
[
subframe
&
0x1
][
0
]
,
sizeof_bits
);
#ifdef DEBUG_DCI_DECODING
printf
(
"crc =>%x
\n
"
,
crc
);
#endif
...
...
@@ -2823,27 +2827,31 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
dci_alloc
[
*
dci_cnt
].
L
=
L
;
dci_alloc
[
*
dci_cnt
].
firstCCE
=
CCEind
;
//printf("DCI FOUND !!! crc =>%x, sizeof_bits %d, sizeof_bytes %d \n",crc, sizeof_bits, sizeof_bytes);
if
(
sizeof_bytes
<=
4
)
{
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
3
]
=
dci_decoded_output
[
0
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
2
]
=
dci_decoded_output
[
1
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
1
]
=
dci_decoded_output
[
2
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
0
]
=
dci_decoded_output
[
3
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
3
]
=
dci_decoded_output
[
subframe
&
0x1
][
0
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
2
]
=
dci_decoded_output
[
subframe
&
0x1
][
1
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
1
]
=
dci_decoded_output
[
subframe
&
0x1
][
2
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
0
]
=
dci_decoded_output
[
subframe
&
0x1
][
3
];
#ifdef DEBUG_DCI_DECODING
printf
(
"DCI => %x,%x,%x,%x
\n
"
,
dci_decoded_output
[
0
],
dci_decoded_output
[
1
],
dci_decoded_output
[
2
],
dci_decoded_output
[
3
]);
printf
(
"DCI => %x,%x,%x,%x
\n
"
,
dci_decoded_output
[
subframe
&
0x1
][
0
],
dci_decoded_output
[
subframe
&
0x1
][
1
],
dci_decoded_output
[
subframe
&
0x1
][
2
],
dci_decoded_output
[
subframe
&
0x1
][
3
]);
#endif
}
else
{
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
7
]
=
dci_decoded_output
[
0
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
6
]
=
dci_decoded_output
[
1
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
5
]
=
dci_decoded_output
[
2
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
4
]
=
dci_decoded_output
[
3
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
3
]
=
dci_decoded_output
[
4
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
2
]
=
dci_decoded_output
[
5
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
1
]
=
dci_decoded_output
[
6
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
0
]
=
dci_decoded_output
[
7
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
7
]
=
dci_decoded_output
[
subframe
&
0x1
][
0
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
6
]
=
dci_decoded_output
[
subframe
&
0x1
][
1
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
5
]
=
dci_decoded_output
[
subframe
&
0x1
][
2
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
4
]
=
dci_decoded_output
[
subframe
&
0x1
][
3
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
3
]
=
dci_decoded_output
[
subframe
&
0x1
][
4
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
2
]
=
dci_decoded_output
[
subframe
&
0x1
][
5
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
1
]
=
dci_decoded_output
[
subframe
&
0x1
][
6
];
dci_alloc
[
*
dci_cnt
].
dci_pdu
[
0
]
=
dci_decoded_output
[
subframe
&
0x1
][
7
];
#ifdef DEBUG_DCI_DECODING
printf
(
"DCI => %x,%x,%x,%x,%x,%x,%x,%x
\n
"
,
dci_decoded_output
[
0
],
dci_decoded_output
[
1
],
dci_decoded_output
[
2
],
dci_decoded_output
[
3
],
dci_decoded_output
[
4
],
dci_decoded_output
[
5
],
dci_decoded_output
[
6
],
dci_decoded_output
[
7
]);
dci_decoded_output
[
subframe
&
0x1
][
0
],
dci_decoded_output
[
subframe
&
0x1
][
1
],
dci_decoded_output
[
subframe
&
0x1
][
2
],
dci_decoded_output
[
subframe
&
0x1
]
[
3
],
dci_decoded_output
[
subframe
&
0x1
][
4
],
dci_decoded_output
[
subframe
&
0x1
][
5
],
dci_decoded_output
[
subframe
&
0x1
][
6
],
dci_decoded_output
[
subframe
&
0x1
]
[
7
]);
#endif
}
...
...
@@ -2860,7 +2868,7 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
*
dci_cnt
=
*
dci_cnt
+
1
;
}
else
if
(
crc
==
pdcch_vars
[
eNB_id
]
->
crnti
)
{
if
((
mode
&
UL_DCI
)
&&
(
format_c
==
format0
)
&&
((
dci_decoded_output
[
0
]
&
0x80
)
==
0
))
{
// check if pdu is format 0 or 1A
if
((
mode
&
UL_DCI
)
&&
(
format_c
==
format0
)
&&
((
dci_decoded_output
[
subframe
&
0x1
][
0
]
&
0x80
)
==
0
))
{
// check if pdu is format 0 or 1A
if
(
*
format0_found
==
0
)
{
dci_alloc
[
*
dci_cnt
].
format
=
format0
;
*
format0_found
=
1
;
...
...
@@ -2882,7 +2890,7 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
}
}
LOG_
D
(
PHY
,
"DCI decoding CRNTI [format: %d, nCCE[subframe: %d]: %d ], AggregationLevel %d
\n
"
,
format_c
,
subframe
,
pdcch_vars
[
eNB_id
]
->
nCCE
[
subframe
],
L2
);
LOG_
I
(
PHY
,
"DCI decoding CRNTI [format: %d, nCCE[subframe: %d]: %d ], AggregationLevel %d
\n
"
,
format_c
,
subframe
,
pdcch_vars
[
eNB_id
]
->
nCCE
[
subframe
],
L2
);
// memcpy(&dci_alloc[*dci_cnt].dci_pdu[0],dci_decoded_output,sizeof_bytes);
...
...
@@ -2928,7 +2936,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
uint8_t
dci_cnt
=
0
,
old_dci_cnt
=
0
;
uint32_t
CCEmap0
=
0
,
CCEmap1
=
0
,
CCEmap2
=
0
;
LTE_UE_PDCCH
**
pdcch_vars
=
ue
->
pdcch_vars
;
LTE_UE_PDCCH
**
pdcch_vars
=
ue
->
pdcch_vars
[
subframe
&
0x1
]
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
uint8_t
mi
=
get_mi
(
&
ue
->
frame_parms
,
subframe
);
uint16_t
ra_rnti
=
99
;
...
...
@@ -3518,7 +3526,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
\n
"
);
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
,
...
...
@@ -3554,7 +3562,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
return
(
dci_cnt
);
// Now check UE_SPEC format 2 search spaces at aggregation 2
LOG_D
(
PHY
,
" Now check UE_SPEC format 2A_2A search aggregation 2
\n
"
);
LOG_D
(
PHY
,
" Now check UE_SPEC format 2A_2A search aggregation 2
dci length: %d[bits] %d[bytes]
\n
"
,
format2A_size_bits
,
format2A_size_bytes
);
old_dci_cnt
=
dci_cnt
;
dci_decoding_procedure0
(
pdcch_vars
,
0
,
mode
,
subframe
,
...
...
@@ -3623,7 +3631,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
//#ifdef ALL_AGGREGATION
// Now check UE_SPEC format 2_2A search spaces at aggregation 8
LOG_D
(
PHY
,
" Now check UE_SPEC format 2_2A search spaces at aggregation 8
\n
"
);
LOG_D
(
PHY
,
" Now check UE_SPEC format 2_2A search spaces at aggregation 8
dci length: %d[bits] %d[bytes]
\n
"
,
format2A_size_bits
,
format2A_size_bytes
);
old_dci_cnt
=
dci_cnt
;
dci_decoding_procedure0
(
pdcch_vars
,
0
,
mode
,
subframe
,
...
...
openair1/PHY/LTE_TRANSPORT/dci.h
View file @
bd489822
...
...
@@ -1897,9 +1897,9 @@ struct DCI2A_10MHz_4A_TDD {
#define sizeof_DCI2A_10MHz_4A_TDD_t 41
typedef
struct
DCI2A_10MHz_4A_TDD
DCI2A_10MHz_4A_TDD_t
;
/// DCI Format Type 2A (10 MHz, FDD, 2 Antenna Ports,
36
bits)
/// DCI Format Type 2A (10 MHz, FDD, 2 Antenna Ports,
40
bits)
struct
DCI2A_10MHz_2A_FDD
{
uint64_t
padding
:
2
8
;
uint64_t
padding
:
2
4
;
/// Redundancy version 2
uint64_t
rv2
:
2
;
/// New Data Indicator 2
...
...
@@ -1923,7 +1923,7 @@ struct DCI2A_10MHz_2A_FDD {
/// Resource Allocation Header
uint64_t
rah
:
1
;
}
__attribute__
((
__packed__
));
#define sizeof_DCI2A_10MHz_2A_FDD_t
36
#define sizeof_DCI2A_10MHz_2A_FDD_t
41
typedef
struct
DCI2A_10MHz_2A_FDD
DCI2A_10MHz_2A_FDD_t
;
/// DCI Format Type 2A (10 MHz, FDD, 4 Antenna Ports, 38 bits)
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
bd489822
...
...
@@ -5720,9 +5720,9 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
pdlsch1
->
active
=
0
;
}
#ifdef DEBUG_HARQ
//
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: dlsch0_harq status %d , dlsch1_harq status %d
\n
"
,
dlsch0_harq
->
status
,
dlsch1_harq
->
status
);
#endif
//
#endif
// compute resource allocation
if
(
TB0_active
==
1
){
...
...
@@ -5882,9 +5882,9 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
dlsch1_harq
->
Qm
=
(
mcs2
-
28
)
<<
1
;
}
#ifdef DEBUG_HARQ
//
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: dlsch0_harq status %d , dlsch1_harq status %d
\n
"
,
dlsch0_harq
->
status
,
dlsch1_harq
->
status
);
#endif
//
#endif
#ifdef DEBUG_HARQ
if
(
dlsch0
!=
NULL
&&
dlsch1
!=
NULL
)
...
...
@@ -6156,7 +6156,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
case
format2A
:
{
// extract dci infomation
//
LOG_I(PHY,"[DCI-format2] AbsSubframe %d.%d extract dci infomation \n", frame%1024, subframe);
LOG_I
(
PHY
,
"[DCI-format2] AbsSubframe %d.%d extract dci infomation
\n
"
,
frame
%
1024
,
subframe
);
extract_dci2A_info
(
frame_parms
->
N_RB_DL
,
frame_type
,
frame_parms
->
nb_antenna_ports_eNB
,
...
...
@@ -6376,7 +6376,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
}
#ifdef DEBUG_DCI
#ifdef DEBUG_DCI
if
(
dlsch
[
0
]
&&
(
dlsch
[
0
]
->
rnti
!=
0xffff
))
{
printf
(
"dci_format:%d Abssubframe: %d.%d
\n
"
,
dci_format
,
frame
%
1024
,
subframe
);
...
...
@@ -6384,7 +6384,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
printf
(
"PDSCH dlsch0 UE: NBRB %d
\n
"
,
dlsch0_harq
->
nb_rb
);
printf
(
"PDSCH dlsch0 UE: rballoc %x
\n
"
,
dlsch0_harq
->
rb_alloc_even
[
0
]);
printf
(
"PDSCH dlsch0 UE: harq_pid %d
\n
"
,
harq_pid
);
printf
(
"PDSCH dlsch0 UE: tpc %d
\n
"
,
TPC
);
//
printf("PDSCH dlsch0 UE: tpc %d\n",TPC);
printf
(
"PDSCH dlsch0 UE: g %d
\n
"
,
dlsch
[
0
]
->
g_pucch
);
printf
(
"PDSCH dlsch0 UE: round %d
\n
"
,
dlsch0_harq
->
round
);
printf
(
"PDSCH dlsch0 UE: DCINdi %d
\n
"
,
dlsch0_harq
->
DCINdi
);
...
...
@@ -6393,8 +6393,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
printf
(
"PDSCH dlsch0 UE: mcs %d
\n
"
,
dlsch0_harq
->
mcs
);
printf
(
"PDSCH dlsch0 UE: pwr_off %d
\n
"
,
dlsch0_harq
->
dl_power_off
);
}
#endif
#endif
#if T_TRACER
if
(
(
dlsch
[
0
]
->
rnti
!=
si_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
ra_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
p_rnti
))
...
...
@@ -8077,7 +8076,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
// ulsch->n_DMRS2 = ((DCI0_5MHz_TDD_1_6_t *)dci_pdu)->cshift;
#ifdef DEBUG_DCI
#ifdef DEBUG_DCI
printf
(
"Format 0 DCI : ulsch (ue): AbsSubframe %d.%d
\n
"
,
proc
->
frame_rx
%
1024
,
subframe
);
printf
(
"Format 0 DCI : ulsch (ue): NBRB %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
bd489822
...
...
@@ -927,7 +927,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
case
PDSCH
:
// TB0
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
];
harq_pid
=
dlsch_ue
->
current_harq_pid
;
ue_id
=
(
uint32_t
)
find_ue
((
int16_t
)
phy_vars_ue
->
pdcch_vars
[(
uint32_t
)
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]);
ue_id
=
(
uint32_t
)
find_ue
((
int16_t
)
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][
(
uint32_t
)
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]);
DevAssert
(
ue_id
!=
(
uint32_t
)
-
1
);
dlsch_eNB
=
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]
->
dlsch
[
ue_id
][
0
];
...
...
@@ -973,7 +973,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
case
PDSCH1
:
{
// TB1
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
];
harq_pid
=
dlsch_ue
->
current_harq_pid
;
int8_t
UE_id
=
find_ue
(
phy_vars_ue
->
pdcch_vars
[
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]
);
int8_t
UE_id
=
find_ue
(
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]
);
DevAssert
(
UE_id
!=
-
1
);
dlsch_eNB
=
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]
->
dlsch
[
UE_id
][
1
];
// reset HARQ
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
bd489822
...
...
@@ -56,9 +56,7 @@ int16_t dlsch_demod_shift = 0;
//#define DEBUG_PHY 1
//#define DEBUG_DLSCH_DEMOD 1
int
avg
[
4
];
int
avg_0
[
2
];
int
avg_1
[
2
];
// [MCS][i_mod (0,1,2) = (2,4,6)]
unsigned
char
offset_mumimo_llr_drange_fix
=
0
;
...
...
@@ -110,6 +108,9 @@ int rx_pdsch(PHY_VARS_UE *ue,
PHY_MEASUREMENTS
*
measurements
=
&
ue
->
measurements
;
LTE_UE_DLSCH_t
**
dlsch
;
int
avg
[
4
];
int
avg_0
[
2
];
int
avg_1
[
2
];
unsigned
char
aatx
,
aarx
;
...
...
@@ -143,7 +144,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
break
;
case
PDSCH
:
pdsch_vars
=
&
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
];
pdsch_vars
=
ue
->
pdsch_vars
[
subframe
&
0x1
];
dlsch
=
ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
];
LOG_D
(
PHY
,
"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d
\n
"
,
frame
,
subframe
,
symbol
,
harq_pid
,
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
View file @
bd489822
...
...
@@ -8847,6 +8847,15 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
memcpy
(
ch_mag_i_256i
,
ch_mag_i
,
len
*
4
);
memcpy
(
rho_256i
,
rho
,
len
*
4
);
#if 1
qam64_qam16_avx2
((
short
*
)
rxF_256i
,
(
short
*
)
rxF_i_256i
,
(
short
*
)
ch_mag_256i
,
(
short
*
)
ch_mag_i_256i
,
(
short
*
)
llr16
,
(
short
*
)
rho_256i
,
len
);
#else
qam64_qam64_avx2
((
int32_t
*
)
rxF_256i
,
(
int32_t
*
)
rxF_i_256i
,
(
int32_t
*
)
ch_mag_256i
,
...
...
@@ -8854,7 +8863,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
(
int16_t
*
)
llr16
,
(
int32_t
*
)
rho_256i
,
len
);
#endif
free16
(
rxF_256i
,
sizeof
(
rxF_256i
));
free16
(
rxF_i_256i
,
sizeof
(
rxF_i_256i
));
free16
(
ch_mag_256i
,
sizeof
(
ch_mag_256i
));
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
bd489822
...
...
@@ -1067,7 +1067,7 @@ void rx_phich(PHY_VARS_UE *ue,
LTE_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
LTE_UE_PDCCH
**
pdcch_vars
=
ue
->
pdcch_vars
;
LTE_UE_PDCCH
**
pdcch_vars
=
&
ue
->
pdcch_vars
[
subframe
&
0x1
][
eNB_id
]
;
// uint8_t HI;
uint8_t
harq_pid
=
phich_subframe_to_harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
...
...
@@ -1368,7 +1368,7 @@ void rx_phich(PHY_VARS_UE *ue,
if
(
HI16
>
0
)
{
//NACK
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
...
...
@@ -1389,7 +1389,7 @@ void rx_phich(PHY_VARS_UE *ue,
}
}
else
{
//#ifdef DEBUG_PHICH
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)
\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
%
1024
,
subframe
,
...
...
@@ -1436,7 +1436,7 @@ void rx_phich(PHY_VARS_UE *ue,
}
else
{
//ACK
if
(
ue
->
ulsch_Msg3_active
[
eNB_id
]
==
1
)
{
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
,
subframe
,
...
...
@@ -1444,7 +1444,7 @@ void rx_phich(PHY_VARS_UE *ue,
nseq_PHICH
,
ngroup_PHICH
);
}
else
{
//#ifdef PHICH_DEBUG
LOG_
D
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d
\n\n
"
,
ue
->
Mod_id
,
harq_pid
,
proc
->
frame_rx
%
1024
,
subframe
,
HI16
,
...
...
openair1/PHY/LTE_TRANSPORT/print_stats.c
View file @
bd489822
...
...
@@ -59,7 +59,7 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char* buffer, int length
return
0
;
if
((
mode
==
normal_txrx
)
||
(
mode
==
no_L2_connect
))
{
len
+=
sprintf
(
&
buffer
[
len
],
"[UE_PROC] UE %d, RNTI %x
\n
"
,
ue
->
Mod_id
,
ue
->
pdcch_vars
[
0
]
->
crnti
);
len
+=
sprintf
(
&
buffer
[
len
],
"[UE_PROC] UE %d, RNTI %x
\n
"
,
ue
->
Mod_id
,
ue
->
pdcch_vars
[
0
]
[
0
]
->
crnti
);
len
+=
sprintf
(
&
buffer
[
len
],
"[UE PROC] RSRP[0] %.2f dBm/RE, RSSI %.2f dBm, RSRQ[0] %.2f dB, N0 %d dBm/RE (NF %.1f dB)
\n
"
,
10
*
log10
(
ue
->
measurements
.
rsrp
[
0
])
-
ue
->
rx_total_gain_dB
,
10
*
log10
(
ue
->
measurements
.
rssi
)
-
ue
->
rx_total_gain_dB
,
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
bd489822
...
...
@@ -1308,9 +1308,7 @@ int32_t rx_pdsch(PHY_VARS_UE *phy_vars_ue,
uint8_t
i_mod
,
uint8_t
harq_pid
);
int32_t
rx_pdcch
(
LTE_UE_COMMON
*
lte_ue_common_vars
,
LTE_UE_PDCCH
**
lte_ue_pdcch_vars
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
rx_pdcch
(
PHY_VARS_UE
*
ue
,
uint32_t
frame
,
uint8_t
subframe
,
uint8_t
eNB_id
,
...
...
@@ -1781,6 +1779,7 @@ uint32_t ulsch_encoding(uint8_t *a,
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
harq_pid
,
uint8_t
eNB_id
,
uint8_t
subframe_rx
,
uint8_t
tmode
,
uint8_t
control_only_flag
,
uint8_t
Nbundled
);
...
...
@@ -1796,6 +1795,7 @@ uint32_t ulsch_encoding(uint8_t *a,
int32_t
ulsch_encoding_emul
(
uint8_t
*
ulsch_buffer
,
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe_rx
,
uint8_t
harq_pid
,
uint8_t
control_only_flag
);
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
bd489822
...
...
@@ -1315,7 +1315,7 @@ int32_t rx_pucch_emul(PHY_VARS_eNB *eNB,
rnti
=
eNB
->
ulsch
[
UE_index
]
->
rnti
;
for
(
UE_id
=
0
;
UE_id
<
NB_UE_INST
;
UE_id
++
)
{
if
(
rnti
==
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
pdcch_vars
[
0
]
->
crnti
)
if
(
rnti
==
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
pdcch_vars
[
subframe
&
0x1
][
0
]
->
crnti
)
break
;
}
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
bd489822
...
...
@@ -202,6 +202,7 @@ uint32_t ulsch_encoding(uint8_t *a,
PHY_VARS_UE
*
ue
,
uint8_t
harq_pid
,
uint8_t
eNB_id
,
uint8_t
subframe_rx
,
uint8_t
tmode
,
uint8_t
control_only_flag
,
uint8_t
Nbundled
)
...
...
@@ -261,10 +262,10 @@ uint32_t ulsch_encoding(uint8_t *a,
// fill CQI/PMI information
if
(
ulsch
->
O
>
0
)
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_ENCODING_FILL_CQI
,
VCD_FUNCTION_IN
);
rnti
=
ue
->
pdcch_vars
[
eNB_id
]
->
crnti
;
rnti
=
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
crnti
;
fill_CQI
(
ulsch
,
meas
,
0
,
harq_pid
,
ue
->
frame_parms
.
N_RB_DL
,
rnti
,
tmode
,
ue
->
sinr_eff
);
LOG_
D
(
PHY
,
"UE CQI
\n
"
);
LOG_
I
(
PHY
,
"ULSCH Encoding rnti %x
\n
"
,
rnti
);
print_CQI
(
ulsch
->
o
,
ulsch
->
uci_format
,
0
,
ue
->
frame_parms
.
N_RB_DL
);
// save PUSCH pmi for later (transmission modes 4,5,6)
...
...
@@ -961,6 +962,7 @@ uint32_t ulsch_encoding(uint8_t *a,
int
ulsch_encoding_emul
(
uint8_t
*
ulsch_buffer
,
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
,
uint8_t
subframe_rx
,
uint8_t
harq_pid
,
uint8_t
control_only_flag
)
{
...
...
@@ -969,7 +971,7 @@ int ulsch_encoding_emul(uint8_t *ulsch_buffer,
LTE_UE_DLSCH_t
**
dlsch
=
ue
->
dlsch
[
0
][
eNB_id
];
PHY_MEASUREMENTS
*
meas
=
&
ue
->
measurements
;
uint8_t
tmode
=
ue
->
transmission_mode
[
eNB_id
];
uint16_t
rnti
=
ue
->
pdcch_vars
[
eNB_id
]
->
crnti
;
uint16_t
rnti
=
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
crnti
;
LOG_D
(
PHY
,
"EMUL UE ulsch_encoding for eNB %d,mod_id %d, harq_pid %d rnti %x, ACK(%d,%d)
\n
"
,
eNB_id
,
ue
->
Mod_id
,
harq_pid
,
rnti
,
ulsch
->
o_ACK
[
0
],
ulsch
->
o_ACK
[
1
]);
...
...
@@ -1003,7 +1005,7 @@ int ulsch_encoding_emul(uint8_t *ulsch_buffer,
//UE_transport_info_TB_index[ue->Mod_id]+=ue->ulsch[eNB_id]->harq_processes[harq_pid]->TBS>>3;
// navid: currently more than one eNB is not supported in the code
UE_transport_info
[
ue
->
Mod_id
][
ue
->
CC_id
].
num_eNB
=
1
;