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
b5e169ec
Commit
b5e169ec
authored
Jan 09, 2024
by
Laurent THOMAS
Committed by
Robert Schmidt
Jan 09, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add const or other simple C code improvement
parent
4c7b185d
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
170 additions
and
219 deletions
+170
-219
openair1/PHY/MODULATION/modulation_UE.h
openair1/PHY/MODULATION/modulation_UE.h
+2
-2
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+2
-2
openair1/PHY/NR_REFSIG/sss_nr.h
openair1/PHY/NR_REFSIG/sss_nr.h
+1
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+5
-5
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+9
-9
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+15
-14
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+7
-3
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+6
-10
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+3
-3
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+37
-64
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+5
-5
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+2
-2
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+26
-26
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
+3
-3
openair1/SCHED_NR_UE/defs.h
openair1/SCHED_NR_UE/defs.h
+11
-26
openair1/SCHED_NR_UE/harq_nr.c
openair1/SCHED_NR_UE/harq_nr.c
+8
-2
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+12
-16
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+15
-25
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+1
-1
No files found.
openair1/PHY/MODULATION/modulation_UE.h
View file @
b5e169ec
...
...
@@ -49,12 +49,12 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
int
reset_freq_est
);
int
nr_slot_fep
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_slot_fep_init_sync
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
sample_offset
,
bool
pbch_decoded
,
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
b5e169ec
...
...
@@ -35,7 +35,7 @@
#endif*/
int
nr_slot_fep
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
...
...
@@ -114,7 +114,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
}
int
nr_slot_fep_init_sync
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
sample_offset
,
bool
pbch_decoded
,
...
...
openair1/PHY/NR_REFSIG/sss_nr.h
View file @
b5e169ec
...
...
@@ -76,7 +76,7 @@ void insert_sss_nr(int16_t *sss_time,
NR_DL_FRAME_PARMS
*
frame_parms
);
bool
rx_sss_nr
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
*
tot_metric
,
uint8_t
*
phase_max
,
int
*
freq_offset_sss
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
b5e169ec
...
...
@@ -74,7 +74,7 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
uint8_t
rsc_id
,
uint8_t
rep_num
,
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_DL_FRAME_PARMS
*
frame_params
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
...
...
@@ -628,7 +628,7 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
}
int
nr_pbch_dmrs_correlation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
NR_UE_SSB
*
current_ssb
,
...
...
@@ -782,7 +782,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
ue
->
frame_parms
.
ofdm_symbol_size
],
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
uint8_t
ssb_index
,
...
...
@@ -1054,7 +1054,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
}
void
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
fapi_nr_coreset_t
*
coreset
,
uint16_t
first_carrier_offset
,
...
...
@@ -1606,7 +1606,7 @@ void NFAPI_NR_DMRS_TYPE2_average_prb(NR_DL_FRAME_PARMS *frame_parms,
#endif
}
int
nr_pdsch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
short
p
,
unsigned
char
symbol
,
unsigned
char
nscid
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
b5e169ec
...
...
@@ -37,7 +37,7 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
uint8_t
rsc_id
,
uint8_t
rep_num
,
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_DL_FRAME_PARMS
*
frame_params
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
...
...
@@ -48,7 +48,7 @@ void peak_estimator(int32_t *buffer, int32_t buf_len, int32_t *peak_idx, int32_t
\brief This function performs channel estimation including frequency and temporal interpolation
*/
void
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
fapi_nr_coreset_t
*
coreset
,
uint16_t
first_carrier_offset
,
...
...
@@ -58,7 +58,7 @@ void nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_pbch_dmrs_correlation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
NR_UE_SSB
*
current_ssb
,
...
...
@@ -68,7 +68,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
ue
->
frame_parms
.
ofdm_symbol_size
],
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
uint8_t
ssb_index
,
...
...
@@ -76,7 +76,7 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_pdsch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
unsigned
short
p
,
unsigned
char
symbol
,
unsigned
char
nscid
,
...
...
@@ -100,20 +100,20 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
uint8_t
subframe
,
unsigned
char
clear
,
short
coef
);
void
nr_ue_measurements
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
*
dlsch
,
uint32_t
pdsch_est_size
,
int32_t
dl_ch_estimates
[][
pdsch_est_size
]);
void
nr_ue_ssb_rsrp_measurements
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_index
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
void
nr_ue_rrc_measurements
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
void
phy_adjust_gain_nr
(
PHY_VARS_NR_UE
*
ue
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
b5e169ec
...
...
@@ -75,7 +75,7 @@ float_t get_nr_RSRP(module_id_t Mod_id,uint8_t CC_id,uint8_t gNB_index)
}
void
nr_ue_measurements
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
*
dlsch
,
uint32_t
pdsch_est_size
,
int32_t
dl_ch_estimates
[][
pdsch_est_size
])
...
...
@@ -180,9 +180,9 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
// - RX Gain dB
void
nr_ue_ssb_rsrp_measurements
(
PHY_VARS_NR_UE
*
ue
,
int
ssb_index
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
k_start
=
56
;
int
k_end
=
183
;
int
slot
=
proc
->
nr_slot_rx
;
...
...
@@ -235,9 +235,9 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
// Measurement units:
// - psd_awgn (AWGN power spectral density): dBm/Hz
void
nr_ue_rrc_measurements
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
uint8_t
k
;
int
slot
=
proc
->
nr_slot_rx
;
int
aarx
;
...
...
@@ -300,11 +300,12 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
LOG_D
(
PHY
,
"In [%s][slot:%d] NF USRP %d dB
\n
"
,
__FUNCTION__
,
slot
,
nf_usrp
);
#endif
LOG_D
(
PHY
,
"In [%s][slot:%d] Noise Level %d (digital level %d dB, noise power spectral density %f dBm/RE)
\n
"
,
__FUNCTION__
,
slot
,
ue
->
measurements
.
n0_power_tot
,
ue
->
measurements
.
n0_power_tot_dB
,
ue
->
measurements
.
n0_power_tot_dB
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
)
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
));
LOG_D
(
PHY
,
"In [%s][slot:%d] Noise Level %d (digital level %d dB, noise power spectral density %f dBm/RE)
\n
"
,
__FUNCTION__
,
slot
,
ue
->
measurements
.
n0_power_tot
,
ue
->
measurements
.
n0_power_tot_dB
,
ue
->
measurements
.
n0_power_tot_dB
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
)
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
));
}
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
b5e169ec
...
...
@@ -807,8 +807,10 @@ int nr_csi_im_power_estimation(const PHY_VARS_NR_UE *ue,
return
0
;
}
int
nr_ue_csi_im_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
nr_ue_csi_im_procedures
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
gNB_id
=
proc
->
gNB_id
;
if
(
!
ue
->
csiim_vars
[
gNB_id
]
->
active
)
{
return
-
1
;
...
...
@@ -852,7 +854,9 @@ static nfapi_nr_dl_tti_csi_rs_pdu_rel15_t convert_csirs_pdu(const fapi_nr_dl_con
return
dl_tti_csi_rs_pdu
;
}
void
nr_ue_csi_rs_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
void
nr_ue_csi_rs_procedures
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
gNB_id
=
proc
->
gNB_id
;
...
...
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
View file @
b5e169ec
...
...
@@ -609,13 +609,13 @@ void nr_pdcch_detection_mrc(NR_DL_FRAME_PARMS *frame_parms,
}
int32_t
nr_rx_pdcch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
int16_t
*
pdcch_e_rx
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
uint8_t
log2_maxh
,
aarx
;
...
...
@@ -739,8 +739,6 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
return
(
0
);
}
void
nr_pdcch_unscrambling
(
int16_t
*
e_rx
,
uint16_t
scrambling_RNTI
,
uint32_t
length
,
...
...
@@ -805,11 +803,11 @@ static uint16_t nr_dci_false_detection(uint64_t *dci,
}
uint8_t
nr_dci_decoding_procedure
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int16_t
*
pdcch_e_rx
,
fapi_nr_dci_indication_t
*
dci_ind
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
)
{
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
)
{
//int gNB_id = 0;
int16_t
tmp_e
[
16
*
108
];
rnti_t
n_rnti
;
...
...
@@ -892,5 +890,3 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
}
return
(
dci_ind
->
number_of_dcis
);
}
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
b5e169ec
...
...
@@ -74,11 +74,11 @@ void nr_dlsch_unscrambling(int16_t *llr, uint32_t size, uint8_t q, uint32_t Nid,
static
bool
nr_ue_postDecode
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
notifiedFIFO_elt_t
*
req
,
notifiedFIFO_t
*
nf_p
,
bool
last
,
const
bool
last
,
int
b_size
,
uint8_t
b
[
b_size
],
int
*
num_seg_ok
,
UE_nr_rxtx_proc_t
*
proc
)
const
UE_nr_rxtx_proc_t
*
proc
)
{
ldpcDecode_ue_t
*
rdata
=
(
ldpcDecode_ue_t
*
)
NotifiedFifoData
(
req
);
NR_DL_UE_HARQ_t
*
harq_process
=
rdata
->
harq_process
;
...
...
@@ -265,7 +265,7 @@ static void nr_processDLSegment(void *arg)
}
uint32_t
nr_dlsch_decoding
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int
eNB_id
,
short
*
dlsch_llr
,
NR_DL_FRAME_PARMS
*
frame_parms
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
b5e169ec
...
...
@@ -49,8 +49,8 @@
int32_t
nr_dlsch_demod_shift
=
0
;
//int16_t interf_unaw_shift = 13;
//
#define DEBUG_HARQ
//#define DEBUG_PHY
//
#define DEBUG_HARQ(a...) printf(a)
#define DEBUG_HARQ(...)
//#define DEBUG_DLSCH_DEMOD
//#define DEBUG_PDSCH_RX
...
...
@@ -233,7 +233,7 @@ void nr_dlsch_detection_mrc(uint32_t rx_size_symbol,
/* Main Function */
int
nr_rx_pdsch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
unsigned
char
symbol
,
unsigned
char
first_symbol_flag
,
...
...
@@ -267,36 +267,19 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
NR_UE_COMMON
*
common_vars
=
&
ue
->
common_vars
;
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
PHY_NR_MEASUREMENTS
*
measurements
=
&
ue
->
measurements
;
int
frame
=
proc
->
frame_rx
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
int
gNB_id
=
proc
->
gNB_id
;
const
int
frame
=
proc
->
frame_rx
;
const
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
const
int
gNB_id
=
proc
->
gNB_id
;
int
avg
[
16
];
// int avg_0[2];
// int avg_1[2];
uint8_t
slot
=
0
;
unsigned
char
aatx
=
0
,
aarx
=
0
;
int
avgs
=
0
;
// rb;
NR_DL_UE_HARQ_t
*
dlsch0_harq
,
*
dlsch1_harq
=
NULL
;
int32_t
codeword_TB0
=
-
1
;
int32_t
codeword_TB1
=
-
1
;
//to be updated higher layer
unsigned
short
start_rb
=
0
;
unsigned
short
nb_rb_pdsch
=
50
;
//int16_t *pllr_symbol_cw0_deint;
//int16_t *pllr_symbol_cw1_deint;
//uint16_t bundle_L = 2;
int32_t
median
[
16
];
uint32_t
nb_re_pdsch
;
uint16_t
startSymbIdx
=
0
;
uint16_t
nbSymb
=
0
;
uint16_t
pduBitmap
=
0x0
;
uint32_t
nb_re_pdsch
=
-
1
;
NR_DL_UE_HARQ_t
*
dlsch0_harq
,
*
dlsch1_harq
=
NULL
;
dlsch0_harq
=
&
ue
->
dl_harq_processes
[
0
][
harq_pid
];
if
(
NR_MAX_NB_LAYERS
>
4
)
dlsch1_harq
=
&
ue
->
dl_harq_processes
[
1
][
harq_pid
];
...
...
@@ -311,75 +294,61 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
dlsch0_harq
=
&
ue
->
dl_harq_processes
[
codeword_TB0
][
harq_pid
];
dlsch1_harq
=
&
ue
->
dl_harq_processes
[
codeword_TB1
][
harq_pid
];
#ifdef DEBUG_HARQ
printf
(
"[DEMOD] I am assuming both TBs are active, in cw0 %d and cw1 %d
\n
"
,
codeword_TB0
,
codeword_TB1
);
#endif
DEBUG_HARQ
(
"[DEMOD] I am assuming both TBs are active, in cw0 %d and cw1 %d
\n
"
,
codeword_TB0
,
codeword_TB1
);
}
else
if
((
dlsch0_harq
->
status
==
ACTIVE
)
&&
(
dlsch1_harq
->
status
!=
ACTIVE
)
)
{
codeword_TB0
=
dlsch0_harq
->
codeword
;
dlsch0_harq
=
&
ue
->
dl_harq_processes
[
codeword_TB0
][
harq_pid
];
dlsch1_harq
=
NULL
;
#ifdef DEBUG_HARQ
printf
(
"[DEMOD] I am assuming only TB0 is active, in cw %d
\n
"
,
codeword_TB0
);
#endif
DEBUG_HARQ
(
"[DEMOD] I am assuming only TB0 is active, in cw %d
\n
"
,
codeword_TB0
);
}
else
if
((
dlsch0_harq
->
status
!=
ACTIVE
)
&&
(
dlsch1_harq
->
status
==
ACTIVE
)){
codeword_TB1
=
dlsch1_harq
->
codeword
;
dlsch0_harq
=
NULL
;
dlsch1_harq
=
&
ue
->
dl_harq_processes
[
codeword_TB1
][
harq_pid
];
#ifdef DEBUG_HARQ
printf
(
"[DEMOD] I am assuming only TB1 is active, it is in cw %d
\n
"
,
codeword_TB1
);
#endif
LOG_E
(
PHY
,
"[UE][FATAL] DLSCH: TB0 not active and TB1 active case is not supported
\n
"
);
DEBUG_HARQ
(
"[DEMOD] I am assuming only TB1 is active, it is in cw %d
\n
"
,
codeword_TB1
);
LOG_E
(
PHY
,
"[DEMOD] slot %d TB0 not active and TB1 active case is not supported
\n
"
,
nr_slot_rx
);
return
-
1
;
}
else
{
LOG_E
(
PHY
,
"[UE][FATAL] nr_slot_rx %d: no active DLSCH
\n
"
,
nr_slot_rx
);
return
(
-
1
);
LOG_E
(
PHY
,
"[DEMOD] slot %d: no active DLSCH (2 layers case)
\n
"
,
nr_slot_rx
);
return
(
-
1
);
}
}
else
if
(
dlsch0_harq
)
{
if
(
dlsch0_harq
->
status
==
ACTIVE
)
{
codeword_TB0
=
dlsch0_harq
->
codeword
;
dlsch0_harq
=
&
ue
->
dl_harq_processes
[
0
][
harq_pid
];
#ifdef DEBUG_HARQ
printf
(
"[DEMOD] I am assuming only TB0 is active
\n
"
);
#endif
DEBUG_HARQ
(
"[DEMOD] I am assuming only TB0 is active
\n
"
);
}
else
{
LOG_E
(
PHY
,
"[UE][FATAL] nr_slot_rx %d: no active DLSCH
\n
"
,
nr_slot_rx
);
LOG_E
(
PHY
,
"[DEMOD] slot %d nr_rx_pdsch no active DLSCH (one layer case)
\n
"
,
nr_slot_rx
);
return
(
-
1
);
}
}
else
{
LOG_E
(
PHY
,
"
Done
\n
"
);
LOG_E
(
PHY
,
"
[DEMOD] slot %d Inconsistent call to nr_rx_pdsch (no layer 0)
\n
"
,
nr_slot_rx
);
return
-
1
;
}
#ifdef DEBUG_HARQ
printf
(
"[DEMOD] MIMO mode = %d
\n
"
,
dlsch0_harq
->
mimo_mode
);
printf
(
"[DEMOD] cw for TB0 = %d, cw for TB1 = %d
\n
"
,
codeword_TB0
,
codeword_TB1
);
#endif
DEBUG_HARQ
(
"[DEMOD] cw for TB0 = %d, cw for TB1 = %d
\n
"
,
codeword_TB0
,
codeword_TB1
);
start_rb
=
dlsch
[
0
].
dlsch_config
.
start_rb
;
nb_rb_pdsch
=
dlsch
[
0
].
dlsch_config
.
number_rbs
;
int
start_rb
=
dlsch
[
0
].
dlsch_config
.
start_rb
;
int
nb_rb_pdsch
=
dlsch
[
0
].
dlsch_config
.
number_rbs
;
DevAssert
(
dlsch0_harq
);
if
(
gNB_id
>
2
)
{
LOG_
W
(
PHY
,
"In %s: Illegal gNB_id %d
\n
"
,
__FUNCTION__
,
gNB_id
);
LOG_
E
(
PHY
,
"In %s: Illegal gNB_id %d
\n
"
,
__FUNCTION__
,
gNB_id
);
return
(
-
1
);
}
if
(
!
common_vars
)
{
LOG_
W
(
PHY
,
"dlsch_demodulation.c: Null common_vars
\n
"
);
LOG_
E
(
PHY
,
"dlsch_demodulation.c: Null common_vars
\n
"
);
return
(
-
1
);
}
if
(
!
frame_parms
)
{
LOG_
W
(
PHY
,
"dlsch_demodulation.c: Null frame_parms
\n
"
);
LOG_
E
(
PHY
,
"dlsch_demodulation.c: Null frame_parms
\n
"
);
return
(
-
1
);
}
...
...
@@ -463,18 +432,19 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
start_meas
(
&
meas
);
if
(
first_symbol_flag
==
1
)
{
nr_dlsch_channel_level
(
rx_size_symbol
,
dl_ch_estimates_ext
,
frame_parms
,
nl
,
avg
,
symbol
,
nb_re_pdsch
,
nb_rb_pdsch
);
avgs
=
0
;
for
(
aatx
=
0
;
aatx
<
nl
;
aatx
++
)
for
(
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
//LOG_I(PHY, "nb_rb %d len %d avg_%d_%d Power per SC is %d\n",nb_rb, len,aarx, aatx,avg[aatx*n_rx+aarx]);
avgs
=
cmax
(
avgs
,
avg
[(
aatx
*
n_rx
)
+
aarx
]);
//LOG_I(PHY, "avgs Power per SC is %d\n", avgs);
median
[(
aatx
*
n_rx
)
+
aarx
]
=
avg
[(
aatx
*
n_rx
)
+
aarx
];
}
int
avgs
=
0
;
int32_t
median
[
16
];
for
(
int
aatx
=
0
;
aatx
<
nl
;
aatx
++
)
for
(
int
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
// LOG_I(PHY, "nb_rb %d len %d avg_%d_%d Power per SC is %d\n",nb_rb, len,aarx, aatx,avg[aatx*n_rx+aarx]);
avgs
=
cmax
(
avgs
,
avg
[(
aatx
*
n_rx
)
+
aarx
]);
// LOG_I(PHY, "avgs Power per SC is %d\n", avgs);
median
[(
aatx
*
n_rx
)
+
aarx
]
=
avg
[(
aatx
*
n_rx
)
+
aarx
];
}
if
(
nl
>
1
)
{
nr_dlsch_channel_level_median
(
rx_size_symbol
,
dl_ch_estimates_ext
,
median
,
nl
,
n_rx
,
nb_re_pdsch
);
for
(
aatx
=
0
;
aatx
<
nl
;
aatx
++
)
{
for
(
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
for
(
int
aatx
=
0
;
aatx
<
nl
;
aatx
++
)
{
for
(
int
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
avgs
=
cmax
(
avgs
,
median
[
aatx
*
n_rx
+
aarx
]);
}
}
...
...
@@ -589,6 +559,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
start_meas
(
&
meas
);
/* Store the valid DL RE's */
dl_valid_re
[
symbol
-
1
]
=
nb_re_pdsch
;
int
startSymbIdx
=
0
;
int
nbSymb
=
0
;
int
pduBitmap
=
0
;
if
(
dlsch0_harq
->
status
==
ACTIVE
)
{
startSymbIdx
=
dlsch
[
0
].
dlsch_config
.
start_symbol
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
b5e169ec
...
...
@@ -100,8 +100,10 @@ void free_list(NR_UE_SSB *node) {
free
(
node
);
}
int
nr_pbch_detection
(
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
pbch_initial_symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
int
nr_pbch_detection
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
pbch_initial_symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
NR_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
int
ret
=-
1
;
...
...
@@ -196,9 +198,7 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
}
int
nr_initial_sync
(
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
n_frames
,
int
sa
)
int
nr_initial_sync
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
n_frames
,
int
sa
)
{
int32_t
sync_pos
,
sync_pos_frame
;
// k_ssb, N_ssb_crb, sync_pos2,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
b5e169ec
...
...
@@ -356,9 +356,9 @@ const uint8_t pbch_deinterleaving_pattern[32] = {28, 0, 31, 30, 7, 29, 25, 27,
1
,
4
,
3
,
14
,
15
,
16
,
17
,
2
,
26
,
18
,
19
,
20
,
21
,
22
,
6
,
23
};
int
nr_rx_pbch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates
[][
estimateSz
],
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
i_ssb
,
MIMO_mode_t
mimo_mode
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
b5e169ec
...
...
@@ -198,19 +198,19 @@ void nr_conjch0_mult_ch1(int *ch0,
@returns 0 on success, 1 on unsuccessful decoding
*/
uint32_t
nr_dlsch_decoding
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
UE_nr_rxtx_proc_t
*
proc
,
int
eNB_id
,
short
*
dlsch_llr
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_UE_DLSCH_t
*
dlsch
,
NR_DL_UE_HARQ_t
*
harq_process
,
uint32_t
frame
,
uint16_t
nb_symb_sch
,
uint8_t
nr_slot_rx
,
uint8_t
harq_pid
,
int
b_size
,
uint8_t
b
[
b_size
]);
uint32_t
nr_dlsch_decoding
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
int
eNB_id
,
short
*
dlsch_llr
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_UE_DLSCH_t
*
dlsch
,
NR_DL_UE_HARQ_t
*
harq_process
,
uint32_t
frame
,
uint16_t
nb_symb_sch
,
uint8_t
nr_slot_rx
,
uint8_t
harq_pid
,
int
b_size
,
uint8_t
b
[
b_size
]);
int
nr_ulsch_encoding
(
PHY_VARS_NR_UE
*
ue
,
NR_UE_ULSCH_t
*
ulsch
,
...
...
@@ -267,14 +267,13 @@ void nr_dlsch_unscrambling(int16_t* llr,
uint32_t
n_RNTI
);
int32_t
nr_rx_pdcch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
int16_t
*
pdcch_e_rx
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
/*! \brief Performs detection of SSS to find cell ID and other framing parameters (FDD/TDD, normal/extended prefix)
@param phy_vars_ue Pointer to UE variables
@param tot_metric Pointer to variable containing maximum metric under framing hypothesis (to be compared to other hypotheses
...
...
@@ -289,26 +288,30 @@ int rx_sss(PHY_VARS_NR_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uin
\returns number of tx antennas or -1 if error
*/
int
nr_rx_pbch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
const
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
i_ssb
,
MIMO_mode_t
mimo_mode
,
fapiPbch_t
*
result
,
fapiPbch_t
*
result
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_pbch_detection
(
UE_nr_rxtx_proc_t
*
proc
,
int
nr_pbch_detection
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
pbch_initial_symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
#ifndef modOrder
#define modOrder(I_MCS,I_TBS) ((I_MCS-I_TBS)*2+2) // Find modulation order from I_TBS and I_MCS
#endif
int
dump_ue_stats
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
UE_nr_rxtx_proc_t
*
proc
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
);
int
dump_ue_stats
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
char
*
buffer
,
int
length
,
runmode_t
mode
,
int
input_level_dBm
);
/*!
\brief This function performs the initial cell search procedure - PSS detection, SSS detection and PBCH detection. At the
...
...
@@ -320,10 +323,7 @@ int dump_ue_stats(PHY_VARS_NR_UE *phy_vars_ue, UE_nr_rxtx_proc_t *proc, char* bu
@param n_frames
@param sa current running mode
*/
int
nr_initial_sync
(
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
phy_vars_ue
,
int
n_frames
,
int
sa
);
int
nr_initial_sync
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
phy_vars_ue
,
int
n_frames
,
int
sa
);
/*!
\brief This function gets the carrier frequencies either from FP or command-line-set global variables, depending on the
...
...
@@ -368,7 +368,7 @@ void nr_pdcch_unscrambling(int16_t *z,
int16_t
*
z2
);
uint8_t
nr_dci_decoding_procedure
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int16_t
*
pdcch_e_rx
,
fapi_nr_dci_indication_t
*
dci_ind
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
);
...
...
@@ -401,7 +401,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
@param ptrs_re_per_slot
*/
int
nr_rx_pdsch
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
unsigned
char
symbol
,
unsigned
char
first_symbol_flag
,
...
...
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
View file @
b5e169ec
...
...
@@ -258,7 +258,7 @@ static int pss_ch_est_nr(PHY_VARS_NR_UE *ue,
static
int
do_pss_sss_extract_nr
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
pss_ext
[
NB_ANTENNAS_RX
][
LENGTH_PSS_NR
],
c16_t
sss_ext
[
NB_ANTENNAS_RX
][
LENGTH_SSS_NR
],
uint8_t
doPss
,
...
...
@@ -340,7 +340,7 @@ static int do_pss_sss_extract_nr(
*********************************************************************/
static
int
pss_sss_extract_nr
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
pss_ext
[
NB_ANTENNAS_RX
][
LENGTH_PSS_NR
],
c16_t
sss_ext
[
NB_ANTENNAS_RX
][
LENGTH_SSS_NR
],
uint8_t
subframe
,
...
...
@@ -362,7 +362,7 @@ static int pss_sss_extract_nr(PHY_VARS_NR_UE *phy_vars_ue,
*
*********************************************************************/
bool
rx_sss_nr
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
*
tot_metric
,
uint8_t
*
phase_max
,
int
*
freq_offset_sss
,
...
...
openair1/SCHED_NR_UE/defs.h
View file @
b5e169ec
...
...
@@ -98,17 +98,9 @@ typedef struct {
*/
void
phy_procedures_nrUE_TX
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_tx_t
*
phy_data
);
void
send_slot_ind
(
notifiedFIFO_t
*
nf
,
int
slot
);
void
pbch_pdcch_processing
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
);
void
pbch_pdcch_processing
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
);
void
pdsch_processing
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
);
int
phy_procedures_slot_parallelization_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
relaying_type_t
r_type
);
void
pdsch_processing
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
);
void
processSlotTX
(
void
*
arg
);
...
...
@@ -139,7 +131,7 @@ bool is_csi_rs_in_symbol(fapi_nr_dl_config_csirs_pdu_rel15_t csirs_config_pdu, i
void
nr_fill_dl_indication
(
nr_downlink_indication_t
*
dl_ind
,
fapi_nr_dci_indication_t
*
dci_ind
,
fapi_nr_rx_indication_t
*
rx_ind
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
void
*
phy_data
);
...
...
@@ -153,32 +145,25 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
NR_UE_DLSCH_t
*
dlsch0
,
NR_UE_DLSCH_t
*
dlsch1
,
uint16_t
n_pdus
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
void
*
typeSpecific
,
uint8_t
*
b
);
bool
nr_ue_dlsch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
int16_t
*
llr
[
2
]);
int
nr_ue_pdsch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
int16_t
*
llr
[
2
],
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_ue_pdcch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
nr_phy_data_t
*
phy_data
,
int
n_ss
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_ue_csi_im_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_ue_csi_im_procedures
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
void
nr_ue_csi_rs_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
void
nr_ue_csi_rs_procedures
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
#endif
/** @}*/
openair1/SCHED_NR_UE/harq_nr.c
View file @
b5e169ec
...
...
@@ -145,8 +145,14 @@ void downlink_harq_process(NR_DL_UE_HARQ_t *dl_harq, int harq_pid, int dci_ndi,
dl_harq
->
status
=
ACTIVE
;
dl_harq
->
first_rx
=
1
;
}
else
{
LOG_D
(
PHY
,
"receive harq process: %p harqPid=%d, rv=%d, ndi=%d, rntiType=%d new transmission= %s
\n
"
,
dl_harq
,
harq_pid
,
rv
,
dci_ndi
,
rnti_type
,
dl_harq
->
Ndi
!=
dci_ndi
?
"yes"
:
"no"
);
LOG_D
(
PHY
,
"receive harq process: %p harqPid=%d, rv=%d, ndi=%d, rntiType=%d new transmission= %s
\n
"
,
dl_harq
,
harq_pid
,
rv
,
dci_ndi
,
rnti_type
,
dl_harq
->
Ndi
!=
dci_ndi
?
"yes"
:
"no"
);
AssertFatal
(
rv
<
4
&&
rv
>=
0
,
"invalid redondancy version %d
\n
"
,
rv
);
if
(
dci_ndi
!=
dl_harq
->
Ndi
)
{
if
(
dl_harq
->
ack
==
DL_NACK
)
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
b5e169ec
...
...
@@ -82,7 +82,7 @@ static const unsigned int gain_table[31] = {100, 112, 126, 141, 158, 178,
void
nr_fill_dl_indication
(
nr_downlink_indication_t
*
dl_ind
,
fapi_nr_dci_indication_t
*
dci_ind
,
fapi_nr_rx_indication_t
*
rx_ind
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
void
*
phy_data
)
{
...
...
@@ -114,7 +114,7 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
NR_UE_DLSCH_t
*
dlsch0
,
NR_UE_DLSCH_t
*
dlsch1
,
uint16_t
n_pdus
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
void
*
typeSpecific
,
uint8_t
*
b
)
{
...
...
@@ -306,11 +306,11 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, n
void
nr_ue_measurement_procedures
(
uint16_t
l
,
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
*
dlsch
,
uint32_t
pdsch_est_size
,
int32_t
dl_ch_estimates
[][
pdsch_est_size
])
{
int32_t
dl_ch_estimates
[][
pdsch_est_size
])
{
NR_DL_FRAME_PARMS
*
frame_parms
=&
ue
->
frame_parms
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
int
gNB_id
=
proc
->
gNB_id
;
...
...
@@ -361,11 +361,11 @@ void nr_ue_measurement_procedures(uint16_t l,
}
static
int
nr_ue_pbch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
ret
=
0
;
DevAssert
(
ue
);
...
...
@@ -424,7 +424,7 @@ unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb
}
int
nr_ue_pdcch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
nr_phy_data_t
*
phy_data
,
...
...
@@ -838,10 +838,8 @@ bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
return
dec
;
}
void
pbch_pdcch_processing
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
)
{
void
pbch_pdcch_processing
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
)
{
int
frame_rx
=
proc
->
frame_rx
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
int
gNB_id
=
proc
->
gNB_id
;
...
...
@@ -1016,9 +1014,7 @@ void pbch_pdcch_processing(PHY_VARS_NR_UE *ue,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH
,
VCD_FUNCTION_OUT
);
}
void
pdsch_processing
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
)
void
pdsch_processing
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
nr_phy_data_t
*
phy_data
)
{
int
frame_rx
=
proc
->
frame_rx
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
b5e169ec
...
...
@@ -97,44 +97,34 @@ nfapi_mode_t nfapi_getmode(void) { return NFAPI_MODE_UNKNOWN; }
void
nr_fill_dl_indication
(
nr_downlink_indication_t
*
dl_ind
,
fapi_nr_dci_indication_t
*
dci_ind
,
fapi_nr_rx_indication_t
*
rx_ind
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
void
*
phy_data
)
{}
void
*
phy_data
)
{
}
void
nr_fill_rx_indication
(
fapi_nr_rx_indication_t
*
rx_ind
,
uint8_t
pdu_type
,
PHY_VARS_NR_UE
*
ue
,
NR_UE_DLSCH_t
*
dlsch0
,
NR_UE_DLSCH_t
*
dlsch1
,
uint16_t
n_pdus
,
UE_nr_rxtx_proc_t
*
proc
,
const
UE_nr_rxtx_proc_t
*
proc
,
void
*
typeSpecific
,
uint8_t
*
b
)
{}
int
nr_ue_pdcch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
nr_phy_data_t
*
phy_data
,
int
n_ss
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
return
0
;
uint8_t
*
b
)
{
}
int
nr_ue_pdsch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
int16_t
*
llr
[
2
],
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
int
nr_ue_pdcch_procedures
(
PHY_VARS_NR_UE
*
ue
,
const
UE_nr_rxtx_proc_t
*
proc
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
],
nr_phy_data_t
*
phy_data
,
int
n_ss
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
return
0
;
}
bool
nr_ue_dlsch_procedures
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
NR_UE_DLSCH_t
dlsch
[
2
],
int16_t
*
llr
[
2
])
{
return
false
;
}
void
nr_phy_config_request_sim_pbchsim
(
PHY_VARS_gNB
*
gNB
,
int
N_RB_DL
,
int
N_RB_UL
,
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
b5e169ec
...
...
@@ -1071,7 +1071,7 @@ void handle_ssb_meas(NR_UE_MAC_INST_t *mac, uint8_t ssb_index, int16_t rsrp_dbm)
// L2 Abstraction Layer
// Note: sdu should always be processed because data and timing advance updates are transmitted by the UE
int8_t
handle_dlsch
(
nr_downlink_indication_t
*
dl_info
,
int
pdu_id
)
static
int8_t
handle_dlsch
(
nr_downlink_indication_t
*
dl_info
,
int
pdu_id
)
{
/* L1 assigns harq_pid, but in emulated L1 mode we need to assign
the harq_pid based on the saved global g_harq_pid. Because we are
...
...
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