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
20fa69f7
Commit
20fa69f7
authored
Jan 09, 2024
by
Laurent THOMAS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add const or other simple C code improvement
parent
7dc624cb
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
169 additions
and
207 deletions
+169
-207
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
-15
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
No files found.
openair1/PHY/MODULATION/modulation_UE.h
View file @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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,21 +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
);
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 @
20fa69f7
...
...
@@ -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 @
20fa69f7
...
...
@@ -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
,
...
...
@@ -835,10 +835,8 @@ static bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc,
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
;
...
...
@@ -1013,9 +1011,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 @
20fa69f7
...
...
@@ -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
,
...
...
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