Merge remote-tracking branch 'origin/unused_function_arguments' into integration_2026_w10 (!3958)
Remove unused function arguments Some of them, because there are hundreds if not thousands. Warnings at compilation time can be enabled using -Wunused-parameter.
This commit is contained in:
@@ -291,7 +291,7 @@ static void sl_ue_free(PHY_VARS_NR_UE *UE)
|
||||
}
|
||||
}
|
||||
|
||||
void term_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
|
||||
void term_nr_ue_signal(PHY_VARS_NR_UE *ue)
|
||||
{
|
||||
const NR_DL_FRAME_PARMS* fp = &ue->frame_parms;
|
||||
phy_term_nr_top();
|
||||
|
||||
@@ -34,7 +34,7 @@ int nr_init_frame_parms_ue_sl(NR_DL_FRAME_PARMS *fp,
|
||||
int threequarter_fs,
|
||||
uint32_t ofdm_offset_divisor);
|
||||
int init_nr_ue_signal(PHY_VARS_NR_UE *ue,int nb_connected_eNB);
|
||||
void term_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB);
|
||||
void term_nr_ue_signal(PHY_VARS_NR_UE *ue);
|
||||
void init_nr_ue_transport(PHY_VARS_NR_UE *ue);
|
||||
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *frame_parms);
|
||||
void phy_init_nr_gNB(PHY_VARS_gNB *gNB);
|
||||
|
||||
@@ -500,7 +500,6 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
|
||||
float beta_dmrs_pusch = get_beta_dmrs(pusch_pdu->num_dmrs_cdm_grps_no_data, pusch_pdu->dmrs_config_type == pusch_dmrs_type2);
|
||||
int16_t dmrs_scaling = (1 / beta_dmrs_pusch) * (1 << 14);
|
||||
nr_pusch_dmrs_rx(fp->Ncp,
|
||||
Ns,
|
||||
gold,
|
||||
pilot,
|
||||
(1000 + p),
|
||||
@@ -520,7 +519,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
|
||||
"Num RBs not configured according to 3GPP 38.211 section 6.3.1.4. For PUSCH with transform precoding, num RBs "
|
||||
"cannot be multiple of any other primenumber other than 2,3,5\n");
|
||||
AssertFatal(dmrs_seq != NULL, "DMRS low PAPR seq not found, check if DMRS sequences are generated");
|
||||
nr_pusch_lowpaprtype1_dmrs_rx(fp->Ncp, Ns, dmrs_seq, pilot, 1000, 0, nb_rb_pusch, 0, pusch_pdu->dmrs_config_type);
|
||||
nr_pusch_lowpaprtype1_dmrs_rx(fp->Ncp, dmrs_seq, pilot, 1000, 0, nb_rb_pusch, 0, pusch_pdu->dmrs_config_type);
|
||||
#ifdef DEBUG_PUSCH
|
||||
printf("NR_UL_CHANNEL_EST: index %d, u %d,v %d\n", index, u, v);
|
||||
LOG_M("gNb_DMRS_SEQ.m", "gNb_DMRS_SEQ", dmrs_seq, 6 * nb_rb_pusch, 1, 1);
|
||||
@@ -725,8 +724,6 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB,
|
||||
*ptrsReOffset,
|
||||
*nb_rb,
|
||||
rel15_ul->rnti,
|
||||
nr_tti_rx,
|
||||
symbol,
|
||||
frame_parms->ofdm_symbol_size,
|
||||
(int16_t *)&pusch_vars->rxdataF_comp[aarx][(symbol * nb_re_pusch)],
|
||||
gold,
|
||||
|
||||
@@ -64,7 +64,6 @@ static inline c16_t get_modulated(const uint32_t *gold_sequence, const int idx_g
|
||||
}
|
||||
|
||||
int nr_pusch_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
const uint32_t *nr_gold_pusch,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
@@ -108,7 +107,6 @@ int nr_pusch_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
}
|
||||
|
||||
int nr_pdsch_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
const unsigned int *nr_gold_pdsch,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
@@ -213,7 +211,6 @@ void nr_gen_ref_conj_symbols(const uint32_t *in, uint32_t length, c16_t *output,
|
||||
}
|
||||
|
||||
int nr_pusch_lowpaprtype1_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
c16_t *dmrs_seq,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
|
||||
@@ -36,7 +36,6 @@ uint32_t *nr_gold_csi_rs(int N_RB_DL, int symbols_per_slot, int slot, int symb,
|
||||
uint32_t *nr_gold_prs(int nid, int slot, int symbol);
|
||||
|
||||
int nr_pdsch_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
const unsigned int *nr_gold_pdsch,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
@@ -56,7 +55,6 @@ void nr_pbch_dmrs_rx(int dmrss, const unsigned int *nr_gold_pbch, c16_t *output,
|
||||
void nr_pdcch_dmrs_ref(const unsigned int *nr_gold_pdcch, c16_t *output, unsigned short nb_rb_corset);
|
||||
|
||||
int nr_pusch_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
const uint32_t *nr_gold_pusch,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
@@ -71,7 +69,6 @@ void nr_generate_modulation_table(void);
|
||||
extern simde__m128i byte2m128i[256];
|
||||
|
||||
int nr_pusch_lowpaprtype1_dmrs_rx(nr_prefix_type_t Ncp,
|
||||
unsigned int Ns,
|
||||
c16_t *dmrs_seq,
|
||||
c16_t *output,
|
||||
unsigned short p,
|
||||
|
||||
@@ -194,8 +194,6 @@ void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
||||
uint8_t ptrsReOffset,
|
||||
uint16_t nb_rb,
|
||||
uint16_t rnti,
|
||||
unsigned char Ns,
|
||||
unsigned char symbol,
|
||||
uint16_t ofdm_symbol_size,
|
||||
int16_t *rxF_comp,
|
||||
const uint32_t *gold_seq,
|
||||
|
||||
@@ -79,8 +79,6 @@ void nr_ptrs_cpe_estimation(uint8_t K_ptrs,
|
||||
uint8_t ptrsReOffset,
|
||||
uint16_t nb_rb,
|
||||
uint16_t rnti,
|
||||
unsigned char Ns,
|
||||
unsigned char symbol,
|
||||
uint16_t ofdm_symbol_size,
|
||||
int16_t *rxF_comp,
|
||||
const uint32_t *gold_seq,
|
||||
|
||||
@@ -262,7 +262,6 @@ static inline int dmrs_case00(c16_t *output,
|
||||
const int amp,
|
||||
int sz,
|
||||
int start_sc,
|
||||
int remaining_re,
|
||||
int dmrs_port,
|
||||
const int dmrs_Type,
|
||||
int symbol_sz,
|
||||
@@ -439,7 +438,6 @@ static inline int do_onelayer(NR_DL_FRAME_PARMS *frame_parms,
|
||||
amp,
|
||||
sz,
|
||||
start_sc,
|
||||
remaining_re,
|
||||
dmrs_port,
|
||||
dmrs_Type,
|
||||
symbol_sz,
|
||||
@@ -773,7 +771,6 @@ static int do_one_dlsch(unsigned char *input_ptr, PHY_VARS_gNB *gNB, NR_gNB_DLSC
|
||||
|
||||
void nr_generate_pdsch(PHY_VARS_gNB *gNB, int n_dlsch, NR_gNB_DLSCH_t *dlsch_array, int frame, int slot)
|
||||
{
|
||||
NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms;
|
||||
time_stats_t *dlsch_encoding_stats = &gNB->dlsch_encoding_stats;
|
||||
time_stats_t *tinput = &gNB->tinput;
|
||||
time_stats_t *tprep = &gNB->tprep;
|
||||
@@ -832,7 +829,6 @@ void nr_generate_pdsch(PHY_VARS_gNB *gNB, int n_dlsch, NR_gNB_DLSCH_t *dlsch_arr
|
||||
dlsch_array,
|
||||
frame,
|
||||
slot,
|
||||
frame_parms,
|
||||
output,
|
||||
tinput,
|
||||
tprep,
|
||||
|
||||
@@ -42,7 +42,6 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
|
||||
NR_gNB_DLSCH_t *dlsch_array,
|
||||
int frame,
|
||||
uint8_t slot,
|
||||
NR_DL_FRAME_PARMS *frame_parms,
|
||||
unsigned char *output,
|
||||
time_stats_t *tinput,
|
||||
time_stats_t *tprep,
|
||||
|
||||
@@ -106,7 +106,6 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
|
||||
NR_gNB_DLSCH_t *dlsch_array,
|
||||
int frame,
|
||||
uint8_t slot,
|
||||
NR_DL_FRAME_PARMS *frame_parms,
|
||||
unsigned char *output,
|
||||
time_stats_t *tinput,
|
||||
time_stats_t *tprep,
|
||||
|
||||
@@ -27,12 +27,7 @@
|
||||
//#define DEBUG_PRS_MOD
|
||||
//#define DEBUG_PRS_MAP
|
||||
|
||||
int nr_generate_prs(int slot,
|
||||
c16_t *txdataF,
|
||||
int16_t amp,
|
||||
prs_config_t *prs_cfg,
|
||||
nfapi_nr_config_request_scf_t *config,
|
||||
const NR_DL_FRAME_PARMS *frame_parms)
|
||||
int nr_generate_prs(int slot, c16_t *txdataF, int16_t amp, prs_config_t *prs_cfg, const NR_DL_FRAME_PARMS *frame_parms)
|
||||
{
|
||||
|
||||
int k_prime = 0, k = 0, idx;
|
||||
|
||||
@@ -40,12 +40,7 @@
|
||||
|
||||
NR_gNB_PHY_STATS_t *get_phy_stats(PHY_VARS_gNB *gNB, uint16_t rnti);
|
||||
|
||||
int nr_generate_prs(int slot,
|
||||
c16_t *txdataF,
|
||||
int16_t amp,
|
||||
prs_config_t *prs_cfg,
|
||||
nfapi_nr_config_request_scf_t *config,
|
||||
const NR_DL_FRAME_PARMS *frame_parms);
|
||||
int nr_generate_prs(int slot, c16_t *txdataF, int16_t amp, prs_config_t *prs_cfg, const NR_DL_FRAME_PARMS *frame_parms);
|
||||
|
||||
/*!
|
||||
\fn int nr_generate_pss
|
||||
@@ -224,7 +219,6 @@ void nr_fill_srs(PHY_VARS_gNB *gNB,
|
||||
|
||||
int nr_get_srs_signal(PHY_VARS_gNB *gNB,
|
||||
c16_t **rxdataF,
|
||||
frame_t frame,
|
||||
slot_t slot,
|
||||
nfapi_nr_srs_pdu_t *srs_pdu,
|
||||
nr_srs_info_t *nr_srs_info,
|
||||
|
||||
@@ -1372,67 +1372,3 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
uci_pdu->pduBitmap|=8;
|
||||
}
|
||||
}
|
||||
|
||||
void nr_dump_uci_stats(FILE *fd,PHY_VARS_gNB *gNB,int frame) {
|
||||
int strpos = 0;
|
||||
char output[16384];
|
||||
|
||||
for (int i = 0; i < MAX_MOBILES_PER_GNB; i++) {
|
||||
NR_gNB_PHY_STATS_t *stats = &gNB->phy_stats[i];
|
||||
if (!stats->active)
|
||||
return;
|
||||
NR_gNB_UCI_STATS_t *uci_stats = &stats->uci_stats;
|
||||
if (uci_stats->pucch0_sr_trials > 0)
|
||||
strpos += sprintf(output + strpos,
|
||||
"UCI %d RNTI %x: pucch0_sr_trials %d, pucch0_n00 %d dB, pucch0_n01 %d dB, pucch0_sr_thres %d dB, current "
|
||||
"pucch1_stat0 %d dB, current pucch1_stat1 %d dB, positive SR count %d\n",
|
||||
i,
|
||||
stats->rnti,
|
||||
uci_stats->pucch0_sr_trials,
|
||||
uci_stats->pucch0_n00,
|
||||
uci_stats->pucch0_n01,
|
||||
uci_stats->pucch0_sr_thres,
|
||||
dB_fixed(uci_stats->current_pucch0_sr_stat0),
|
||||
dB_fixed(uci_stats->current_pucch0_sr_stat1),
|
||||
uci_stats->pucch0_positive_SR);
|
||||
if (uci_stats->pucch01_trials > 0)
|
||||
strpos += sprintf(output + strpos,
|
||||
"UCI %d RNTI %x: pucch01_trials %d, pucch0_n00 %d dB, pucch0_n01 %d dB, pucch0_thres %d dB, current "
|
||||
"pucch0_stat0 %d dB, current pucch1_stat1 %d dB, pucch01_DTX %d\n",
|
||||
i,
|
||||
stats->rnti,
|
||||
uci_stats->pucch01_trials,
|
||||
uci_stats->pucch0_n01,
|
||||
uci_stats->pucch0_n01,
|
||||
uci_stats->pucch0_thres,
|
||||
dB_fixed(uci_stats->current_pucch0_stat0),
|
||||
dB_fixed(uci_stats->current_pucch0_stat1),
|
||||
uci_stats->pucch01_DTX);
|
||||
|
||||
if (uci_stats->pucch02_trials > 0)
|
||||
strpos += sprintf(output + strpos,
|
||||
"UCI %d RNTI %x: pucch01_trials %d, pucch0_n00 %d dB, pucch0_n01 %d dB, pucch0_thres %d dB, current "
|
||||
"pucch0_stat0 %d dB, current pucch0_stat1 %d dB, pucch01_DTX %d\n",
|
||||
i,
|
||||
stats->rnti,
|
||||
uci_stats->pucch02_trials,
|
||||
uci_stats->pucch0_n00,
|
||||
uci_stats->pucch0_n01,
|
||||
uci_stats->pucch0_thres,
|
||||
dB_fixed(uci_stats->current_pucch0_stat0),
|
||||
dB_fixed(uci_stats->current_pucch0_stat1),
|
||||
uci_stats->pucch02_DTX);
|
||||
|
||||
if (uci_stats->pucch2_trials > 0)
|
||||
strpos += sprintf(output + strpos,
|
||||
"UCI %d RNTI %x: pucch2_trials %d, pucch2_DTX %d\n",
|
||||
i,
|
||||
stats->rnti,
|
||||
uci_stats->pucch2_trials,
|
||||
uci_stats->pucch2_DTX);
|
||||
}
|
||||
if (fd)
|
||||
fprintf(fd, "%s", output);
|
||||
else
|
||||
printf("%s", output);
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@ void nr_fill_srs(PHY_VARS_gNB *gNB, frame_t frame, slot_t slot, nfapi_nr_srs_pdu
|
||||
|
||||
int nr_get_srs_signal(PHY_VARS_gNB *gNB,
|
||||
c16_t **rxdataF,
|
||||
frame_t frame,
|
||||
slot_t slot,
|
||||
nfapi_nr_srs_pdu_t *srs_pdu,
|
||||
nr_srs_info_t *nr_srs_info,
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
|
||||
int nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
module_id_t gNB_id,
|
||||
const int estimateSz,
|
||||
struct complex16 dl_ch_estimates_time[][estimateSz],
|
||||
uint8_t frame,
|
||||
|
||||
@@ -1295,7 +1295,7 @@ void nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||
float beta_dmrs_pdsch = get_beta_dmrs(dlsch->n_dmrs_cdm_groups, config_type == NFAPI_NR_DMRS_TYPE2);
|
||||
int16_t dmrs_scaling = (int16_t)((1 / beta_dmrs_pdsch) * (1 << 14));
|
||||
const uint32_t *gold = nr_gold_pdsch(fp->N_RB_DL, fp->symbols_per_slot, dlsch->dlDmrsScramblingId, dlsch->nscid, slot, symbol);
|
||||
nr_pdsch_dmrs_rx(fp->Ncp, slot, gold, pilot, 1000 + p, 0, nb_rb_pdsch + rb_offset, config_type, dmrs_scaling);
|
||||
nr_pdsch_dmrs_rx(fp->Ncp, gold, pilot, 1000 + p, 0, nb_rb_pdsch + rb_offset, config_type, dmrs_scaling);
|
||||
|
||||
delay_t delay = {0};
|
||||
|
||||
@@ -1380,8 +1380,7 @@ void nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||
* 2) Interpolate PTRS estimated value in TD after all PTRS symbols
|
||||
* 3) Compensate signal with PTRS estimation for slot
|
||||
*********************************************************************/
|
||||
void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
int nbRx,
|
||||
void nr_pdsch_ptrs_processing(int nbRx,
|
||||
c16_t ptrs_phase_per_slot[][14],
|
||||
int32_t ptrs_re_per_slot[][14],
|
||||
uint32_t rx_size_symbol,
|
||||
@@ -1389,7 +1388,6 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
NR_DL_FRAME_PARMS *frame_parms,
|
||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||
uint8_t gNB_id,
|
||||
uint8_t nr_slot_rx,
|
||||
unsigned char symbol,
|
||||
uint16_t rnti,
|
||||
@@ -1478,8 +1476,6 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
*ptrsReOffset,
|
||||
*nb_rb,
|
||||
rnti,
|
||||
nr_slot_rx,
|
||||
symbol,
|
||||
frame_parms->ofdm_symbol_size,
|
||||
(int16_t *)(rxdataF_comp[0][aarx] + symbol * rx_size_symbol),
|
||||
gold,
|
||||
|
||||
@@ -94,7 +94,6 @@ void nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||
|
||||
int nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
module_id_t gNB_id,
|
||||
int estimateSz,
|
||||
struct complex16 dl_ch_estimates_time[][estimateSz],
|
||||
uint8_t frame,
|
||||
@@ -108,7 +107,6 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
|
||||
int32_t dl_ch_estimates[][pdsch_est_size]);
|
||||
|
||||
uint32_t nr_ue_calculate_ssb_rsrp(const NR_DL_FRAME_PARMS *fp,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
const c16_t rxdataF[][fp->samples_per_slot_wCP],
|
||||
int symbol_offset,
|
||||
int ssb_start_subcarrier);
|
||||
@@ -139,8 +137,7 @@ void phy_adjust_gain_nr(PHY_VARS_NR_UE *ue,
|
||||
uint32_t rx_power_fil_dB,
|
||||
uint8_t gNB_id);
|
||||
|
||||
void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
int nbRx,
|
||||
void nr_pdsch_ptrs_processing(int nbRx,
|
||||
c16_t ptrs_phase_per_slot[][14],
|
||||
int32_t ptrs_re_per_slot[][14],
|
||||
uint32_t rx_size_symbol,
|
||||
@@ -148,7 +145,6 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
NR_DL_FRAME_PARMS *frame_parms,
|
||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||
uint8_t gNB_id,
|
||||
uint8_t nr_slot_rx,
|
||||
unsigned char symbol,
|
||||
uint16_t rnti,
|
||||
|
||||
@@ -143,7 +143,6 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
|
||||
// This function calculates:
|
||||
// - SS reference signal received digital power in dB/RE
|
||||
uint32_t nr_ue_calculate_ssb_rsrp(const NR_DL_FRAME_PARMS *fp,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
const c16_t rxdataF[][fp->samples_per_slot_wCP],
|
||||
int symbol_offset,
|
||||
int ssb_start_subcarrier)
|
||||
@@ -231,7 +230,7 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
|
||||
if (fp->half_frame_bit)
|
||||
symbol_offset += (fp->slots_per_frame >> 1) * fp->symbols_per_slot;
|
||||
|
||||
uint32_t rsrp_avg = nr_ue_calculate_ssb_rsrp(fp, proc, rxdataF, symbol_offset, fp->ssb_start_subcarrier);
|
||||
uint32_t rsrp_avg = nr_ue_calculate_ssb_rsrp(fp, rxdataF, symbol_offset, fp->ssb_start_subcarrier);
|
||||
float rsrp_db_per_re = 10 * log10(rsrp_avg);
|
||||
|
||||
openair0_config_t *cfg0 = &openair0_cfg[ue->rf_map.card];
|
||||
@@ -478,7 +477,7 @@ void do_neighboring_cell_measurements(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *u
|
||||
}
|
||||
|
||||
// RSRP measurements
|
||||
neighboring_cell_info->ssb_rsrp = nr_ue_calculate_ssb_rsrp(frame_parms, proc, rxdataF, 0, frame_parms->ssb_start_subcarrier);
|
||||
neighboring_cell_info->ssb_rsrp = nr_ue_calculate_ssb_rsrp(frame_parms, rxdataF, 0, frame_parms->ssb_start_subcarrier);
|
||||
|
||||
neighboring_cell_info->ssb_rsrp_dBm =
|
||||
10 * log10(neighboring_cell_info->ssb_rsrp) + 30 - SQ15_SQUARED_NORM_FACTOR_DB
|
||||
|
||||
@@ -730,7 +730,6 @@ int nr_csi_rs_cqi_estimation(const uint32_t precoded_sinr,
|
||||
}
|
||||
|
||||
static void nr_csi_im_power_estimation(const PHY_VARS_NR_UE *ue,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
const fapi_nr_dl_config_csiim_pdu_rel15_t *csiim_config_pdu,
|
||||
uint32_t *interference_plus_noise_power,
|
||||
const c16_t rxdataF[][ue->frame_parms.samples_per_slot_wCP])
|
||||
@@ -822,7 +821,7 @@ void nr_ue_csi_im_procedures(PHY_VARS_NR_UE *ue,
|
||||
LOG_I(NR_PHY, "csiim_config_pdu->l_csiim = %i.%i.%i.%i\n", csiim_config_pdu->l_csiim[0], csiim_config_pdu->l_csiim[1], csiim_config_pdu->l_csiim[2], csiim_config_pdu->l_csiim[3]);
|
||||
#endif
|
||||
|
||||
nr_csi_im_power_estimation(ue, proc, csiim_config_pdu, &ue->nr_csi_info->interference_plus_noise_power, rxdataF);
|
||||
nr_csi_im_power_estimation(ue, csiim_config_pdu, &ue->nr_csi_info->interference_plus_noise_power, rxdataF);
|
||||
ue->nr_csi_info->csi_im_meas_computed = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -324,7 +324,6 @@ static void nr_pdcch_detection_mrc(int nb_ant, int sz, c16_t rxdataF_comp[][sz])
|
||||
static void nr_rx_pdcch_symbol(PHY_VARS_NR_UE *ue,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
int symbol,
|
||||
int rel_symb_monOcc,
|
||||
int ss_idx,
|
||||
nr_phy_data_t *phy_data,
|
||||
int llr_size_symbol,
|
||||
@@ -430,12 +429,6 @@ int get_max_pdcch_monOcc(const NR_UE_PDCCH_CONFIG *phy_pdcch_config)
|
||||
return monOcc;
|
||||
}
|
||||
|
||||
static void nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
c16_t *pdcch_e_rx,
|
||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15,
|
||||
fapi_nr_dci_indication_t *dci_ind);
|
||||
|
||||
void set_first_last_pdcch_symb(const NR_UE_PDCCH_CONFIG *phy_pdcch_config, int *first_symb, int *last_symb)
|
||||
{
|
||||
*first_symb = NR_SYMBOLS_PER_SLOT; // max first pdcch symbol
|
||||
@@ -478,7 +471,6 @@ void nr_pdcch_generate_llr(PHY_VARS_NR_UE *ue,
|
||||
nr_rx_pdcch_symbol(ue,
|
||||
proc,
|
||||
symbol,
|
||||
rel_symb_monOcc,
|
||||
ss_idx,
|
||||
phy_data,
|
||||
llr_size_symbol,
|
||||
@@ -489,64 +481,6 @@ void nr_pdcch_generate_llr(PHY_VARS_NR_UE *ue,
|
||||
}
|
||||
}
|
||||
|
||||
/* Decode DCI from LLRs for each Search-Space and send to MAC */
|
||||
void nr_pdcch_dci_indication(const UE_nr_rxtx_proc_t *proc,
|
||||
int llr_size,
|
||||
int max_monOcc,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
nr_phy_data_t *phy_data,
|
||||
c16_t llr[phy_data->phy_pdcch_config.nb_search_space][max_monOcc][llr_size])
|
||||
{
|
||||
NR_UE_PDCCH_CONFIG *phy_pdcch_config = &phy_data->phy_pdcch_config;
|
||||
|
||||
nr_downlink_indication_t dl_indication;
|
||||
fapi_nr_dci_indication_t dci_ind = {.SFN = proc->frame_rx, .slot = proc->nr_slot_rx};
|
||||
|
||||
for (int ss_idx = 0; ss_idx < phy_pdcch_config->nb_search_space; ss_idx++) {
|
||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &phy_pdcch_config->pdcch_config[ss_idx];
|
||||
uint8_t unused_start_symb[NR_SYMBOLS_PER_SLOT] = {0};
|
||||
const int num_monitoring_occ = get_pdcch_mon_occasions_slot(rel15, unused_start_symb);
|
||||
const int llr_stride = llr_size / rel15->coreset.duration;
|
||||
int n_rb, cset_start;
|
||||
get_coreset_rballoc(rel15->coreset.frequency_domain_resource, &n_rb, &cset_start);
|
||||
|
||||
for (int m = 0; m < num_monitoring_occ; m++) {
|
||||
/// PDCCH/DCI e-sequence (input to rate matching).
|
||||
c16_t pdcch_e_rx[NR_MAX_PDCCH_SIZE];
|
||||
|
||||
nr_pdcch_demapping_deinterleaving(n_rb,
|
||||
llr[ss_idx][m],
|
||||
pdcch_e_rx,
|
||||
rel15->coreset.duration,
|
||||
rel15->coreset.RegBundleSize,
|
||||
rel15->coreset.InterleaverSize,
|
||||
rel15->coreset.ShiftIndex,
|
||||
rel15->number_of_candidates,
|
||||
rel15->CCE,
|
||||
rel15->L,
|
||||
llr_stride);
|
||||
|
||||
nr_dci_decoding_procedure(ue, proc, pdcch_e_rx, rel15, &dci_ind);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < dci_ind.number_of_dcis; i++) {
|
||||
LOG_D(PHY,
|
||||
"Frame.slot: %d.%d: DCI %i of %d total DCIs found --> rnti %x : format %d\n",
|
||||
proc->frame_rx,
|
||||
proc->nr_slot_rx,
|
||||
i + 1,
|
||||
dci_ind.number_of_dcis,
|
||||
dci_ind.dci_list[i].rnti,
|
||||
dci_ind.dci_list[i].dci_format);
|
||||
}
|
||||
|
||||
/* Send to MAC */
|
||||
nr_fill_dl_indication(&dl_indication, &dci_ind, NULL, proc, ue, phy_data);
|
||||
ue->if_inst->dl_indication(&dl_indication);
|
||||
phy_pdcch_config->nb_search_space = 0;
|
||||
}
|
||||
|
||||
static void nr_pdcch_unscrambling(c16_t *e_rx,
|
||||
uint16_t scrambling_RNTI,
|
||||
uint32_t length,
|
||||
@@ -566,8 +500,7 @@ static void nr_pdcch_unscrambling(c16_t *e_rx,
|
||||
}
|
||||
}
|
||||
|
||||
static void nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
static void nr_dci_decoding_procedure(const UE_nr_rxtx_proc_t *proc,
|
||||
c16_t *pdcch_e_rx,
|
||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15,
|
||||
fapi_nr_dci_indication_t *dci_ind)
|
||||
@@ -659,3 +592,61 @@ static void nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
||||
e_rx_cand_idx += RE_PER_RB_OUT_DMRS * L * 6; // e_rx index for next candidate (L CCEs, 6 REGs per CCE and 9 REs per REG )
|
||||
}
|
||||
}
|
||||
|
||||
/* Decode DCI from LLRs for each Search-Space and send to MAC */
|
||||
void nr_pdcch_dci_indication(const UE_nr_rxtx_proc_t *proc,
|
||||
int llr_size,
|
||||
int max_monOcc,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
nr_phy_data_t *phy_data,
|
||||
c16_t llr[phy_data->phy_pdcch_config.nb_search_space][max_monOcc][llr_size])
|
||||
{
|
||||
NR_UE_PDCCH_CONFIG *phy_pdcch_config = &phy_data->phy_pdcch_config;
|
||||
|
||||
nr_downlink_indication_t dl_indication;
|
||||
fapi_nr_dci_indication_t dci_ind = {.SFN = proc->frame_rx, .slot = proc->nr_slot_rx};
|
||||
|
||||
for (int ss_idx = 0; ss_idx < phy_pdcch_config->nb_search_space; ss_idx++) {
|
||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &phy_pdcch_config->pdcch_config[ss_idx];
|
||||
uint8_t unused_start_symb[NR_SYMBOLS_PER_SLOT] = {0};
|
||||
const int num_monitoring_occ = get_pdcch_mon_occasions_slot(rel15, unused_start_symb);
|
||||
const int llr_stride = llr_size / rel15->coreset.duration;
|
||||
int n_rb, cset_start;
|
||||
get_coreset_rballoc(rel15->coreset.frequency_domain_resource, &n_rb, &cset_start);
|
||||
|
||||
for (int m = 0; m < num_monitoring_occ; m++) {
|
||||
/// PDCCH/DCI e-sequence (input to rate matching).
|
||||
c16_t pdcch_e_rx[NR_MAX_PDCCH_SIZE];
|
||||
|
||||
nr_pdcch_demapping_deinterleaving(n_rb,
|
||||
llr[ss_idx][m],
|
||||
pdcch_e_rx,
|
||||
rel15->coreset.duration,
|
||||
rel15->coreset.RegBundleSize,
|
||||
rel15->coreset.InterleaverSize,
|
||||
rel15->coreset.ShiftIndex,
|
||||
rel15->number_of_candidates,
|
||||
rel15->CCE,
|
||||
rel15->L,
|
||||
llr_stride);
|
||||
|
||||
nr_dci_decoding_procedure(proc, pdcch_e_rx, rel15, &dci_ind);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < dci_ind.number_of_dcis; i++) {
|
||||
LOG_D(PHY,
|
||||
"Frame.slot: %d.%d: DCI %i of %d total DCIs found --> rnti %x : format %d\n",
|
||||
proc->frame_rx,
|
||||
proc->nr_slot_rx,
|
||||
i + 1,
|
||||
dci_ind.number_of_dcis,
|
||||
dci_ind.dci_list[i].rnti,
|
||||
dci_ind.dci_list[i].dci_format);
|
||||
}
|
||||
|
||||
/* Send to MAC */
|
||||
nr_fill_dl_indication(&dl_indication, &dci_ind, NULL, proc, ue, phy_data);
|
||||
ue->if_inst->dl_indication(&dl_indication);
|
||||
phy_pdcch_config->nb_search_space = 0;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,6 @@ static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
||||
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
||||
c16_t dl_ch_magr[][n_rx][rx_size_symbol],
|
||||
int32_t dl_ch_estimates_ext[][rx_size_symbol],
|
||||
unsigned short nb_rb,
|
||||
unsigned char mod_order,
|
||||
int shift,
|
||||
unsigned char symbol,
|
||||
@@ -86,7 +85,6 @@ static void nr_dlsch_llr(uint32_t rx_size_symbol,
|
||||
c16_t dl_ch_mag[rx_size_symbol],
|
||||
c16_t dl_ch_magb[rx_size_symbol],
|
||||
c16_t dl_ch_magr[rx_size_symbol],
|
||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||
unsigned char symbol,
|
||||
uint32_t len,
|
||||
@@ -611,7 +609,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
dl_ch_magb,
|
||||
dl_ch_magr,
|
||||
dl_ch_estimates_ext,
|
||||
nb_rb_pdsch,
|
||||
dlsch_config->qamModOrder,
|
||||
*log2_maxh,
|
||||
symbol,
|
||||
@@ -646,8 +643,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
|
||||
/* Check for PTRS bitmap and process it respectively */
|
||||
if((pduBitmap & 0x1) && (dlsch[0].rnti_type == TYPE_C_RNTI_)) {
|
||||
nr_pdsch_ptrs_processing(ue,
|
||||
nbRx,
|
||||
nr_pdsch_ptrs_processing(nbRx,
|
||||
ptrs_phase_per_slot,
|
||||
ptrs_re_per_slot,
|
||||
rx_size_symbol,
|
||||
@@ -655,7 +651,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
fp,
|
||||
dlsch0_harq,
|
||||
dlsch1_harq,
|
||||
gNB_id,
|
||||
nr_slot_rx,
|
||||
symbol,
|
||||
dlsch[0].rnti,
|
||||
@@ -671,7 +666,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
dl_ch_mag[0][0],
|
||||
dl_ch_magb[0][0],
|
||||
dl_ch_magr[0][0],
|
||||
dlsch0_harq,
|
||||
dlsch1_harq,
|
||||
symbol,
|
||||
dl_valid_re[symbol],
|
||||
@@ -1347,7 +1341,6 @@ static void nr_dlsch_mmse(uint32_t rx_size_symbol,
|
||||
c16_t dl_ch_magb[][n_rx][rx_size_symbol],
|
||||
c16_t dl_ch_magr[][n_rx][rx_size_symbol],
|
||||
int32_t dl_ch_estimates_ext[][rx_size_symbol],
|
||||
unsigned short nb_rb,
|
||||
unsigned char mod_order,
|
||||
int shift,
|
||||
unsigned char symbol,
|
||||
@@ -1539,7 +1532,6 @@ static void nr_dlsch_llr(uint32_t rx_size_symbol,
|
||||
c16_t dl_ch_mag[rx_size_symbol],
|
||||
c16_t dl_ch_magb[rx_size_symbol],
|
||||
c16_t dl_ch_magr[rx_size_symbol],
|
||||
NR_DL_UE_HARQ_t *dlsch0_harq,
|
||||
NR_DL_UE_HARQ_t *dlsch1_harq,
|
||||
unsigned char symbol,
|
||||
uint32_t len,
|
||||
|
||||
@@ -374,7 +374,7 @@ void nr_scan_ssb(void *arg)
|
||||
&ssbInfo->pbchResult,
|
||||
rxdataF); // start pbch detection at first symbol after pss
|
||||
if (ssbInfo->syncRes.cell_detected) {
|
||||
uint32_t rsrp_avg = nr_ue_calculate_ssb_rsrp(ssbInfo->fp, ssbInfo->proc, rxdataF, 0, ssbInfo->gscnInfo.ssbFirstSC);
|
||||
uint32_t rsrp_avg = nr_ue_calculate_ssb_rsrp(ssbInfo->fp, rxdataF, 0, ssbInfo->gscnInfo.ssbFirstSC);
|
||||
int rsrp_db_per_re = 10 * log10(rsrp_avg);
|
||||
ssbInfo->adjust_rxgain = TARGET_RX_POWER - rsrp_db_per_re;
|
||||
LOG_I(PHY, "pbch rx ok. rsrp:%d dB/RE, adjust_rxgain:%d dB\n", rsrp_db_per_re, ssbInfo->adjust_rxgain);
|
||||
@@ -388,7 +388,6 @@ void nr_scan_ssb(void *arg)
|
||||
nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
int n_frames,
|
||||
int sa,
|
||||
nr_gscn_info_t gscnInfo[MAX_GSCN_BAND],
|
||||
int numGscn)
|
||||
{
|
||||
|
||||
@@ -151,7 +151,6 @@ static int sl_nr_pss_correlation(PHY_VARS_NR_UE *UE, int frame_index)
|
||||
}
|
||||
|
||||
static void sl_nr_extract_sss(PHY_VARS_NR_UE *ue,
|
||||
UE_nr_rxtx_proc_t *proc,
|
||||
int32_t *tot_metric,
|
||||
uint8_t *phase_max,
|
||||
c16_t rxdataF[][ue->SL_UE_PHY_PARAMS.sl_frame_params.samples_per_slot_wCP])
|
||||
@@ -440,7 +439,7 @@ nr_initial_sync_t sl_nr_slss_search(PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc,
|
||||
UE->common_vars.rxdata);
|
||||
}
|
||||
|
||||
sl_nr_extract_sss(UE, NULL, &metric_tdd_ncp, &phase_tdd_ncp, rxdataF);
|
||||
sl_nr_extract_sss(UE, &metric_tdd_ncp, &phase_tdd_ncp, rxdataF);
|
||||
|
||||
// save detected cell id to psbch
|
||||
rx_slss_id = UE->SL_UE_PHY_PARAMS.sync_params.N_sl_id;
|
||||
@@ -510,7 +509,7 @@ nr_initial_sync_t sl_nr_slss_search(PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc,
|
||||
sl_nr_rx_indication_t rx_ind = {0};
|
||||
uint16_t number_pdus = 1;
|
||||
nr_fill_sl_indication(&sl_indication, &rx_ind, NULL, proc, UE, NULL);
|
||||
nr_fill_sl_rx_indication(&rx_ind, SL_NR_RX_PDU_TYPE_SSB, UE, number_pdus, proc, (void *)decoded_output, rx_slss_id);
|
||||
nr_fill_sl_rx_indication(&rx_ind, SL_NR_RX_PDU_TYPE_SSB, UE, number_pdus, (void *)decoded_output, rx_slss_id);
|
||||
|
||||
LOG_D(PHY, "Sidelink SLSS SEARCH PSBCH RX OK. Send SL-SSB TO MAC\n");
|
||||
|
||||
|
||||
@@ -126,8 +126,7 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
|
||||
const uint8_t slot,
|
||||
unsigned int *G,
|
||||
int nb_ulsch,
|
||||
uint8_t *ULSCH_ids,
|
||||
uint16_t number_dmrs_symbols);
|
||||
uint8_t *ULSCH_ids);
|
||||
|
||||
/*! \brief Perform PUSCH scrambling. TS 38.211 V15.4.0 subclause 6.3.1.1
|
||||
@param[in] in Pointer to input bits
|
||||
@@ -242,7 +241,6 @@ double nr_ue_pbch_freq_offset(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc,
|
||||
PHY_VARS_NR_UE *phy_vars_ue,
|
||||
int n_frames,
|
||||
int sa,
|
||||
nr_gscn_info_t gscnInfo[MAX_GSCN_BAND],
|
||||
int numGscn);
|
||||
|
||||
|
||||
@@ -159,8 +159,7 @@ int nr_ulsch_encoding(PHY_VARS_NR_UE *ue,
|
||||
const uint8_t slot,
|
||||
unsigned int *G,
|
||||
int nb_ulsch,
|
||||
uint8_t *ULSCH_ids,
|
||||
uint16_t number_dmrs_symbols)
|
||||
uint8_t *ULSCH_ids)
|
||||
{
|
||||
start_meas_nr_ue_phy(ue, ULSCH_ENCODING_STATS);
|
||||
|
||||
|
||||
@@ -435,8 +435,7 @@ static void map_current_symbol(const nr_phy_pxsch_params_t p,
|
||||
/*
|
||||
TS 38.211 table 6.4.1.1.3-1 and 2
|
||||
*/
|
||||
static void dmrs_amp_mult(const uint32_t dmrs_port,
|
||||
const int Wt,
|
||||
static void dmrs_amp_mult(const int Wt,
|
||||
const int Wf[2],
|
||||
const c16_t *mod_dmrs,
|
||||
c16_t *mod_dmrs_out,
|
||||
@@ -493,9 +492,9 @@ static void map_symbols(const nr_phy_pxsch_params_t p,
|
||||
c16_t mod_dmrs[ALNARS_16_4(n_dmrs)] __attribute((aligned(16)));
|
||||
if (p.transform_precoding == transformPrecoder_disabled) {
|
||||
nr_modulation(gold, n_dmrs * 2, DMRS_MOD_ORDER, (int16_t *)mod_dmrs);
|
||||
dmrs_amp_mult(p.dmrs_port, p.Wt, p.Wf, mod_dmrs, mod_dmrs_amp, n_dmrs, p.dmrs_type, p.num_cdm_no_data);
|
||||
dmrs_amp_mult(p.Wt, p.Wf, mod_dmrs, mod_dmrs_amp, n_dmrs, p.dmrs_type, p.num_cdm_no_data);
|
||||
} else {
|
||||
dmrs_amp_mult(p.dmrs_port, p.Wt, p.Wf, dmrs_seq, mod_dmrs_amp, n_dmrs, p.dmrs_type, p.num_cdm_no_data);
|
||||
dmrs_amp_mult(p.Wt, p.Wf, dmrs_seq, mod_dmrs_amp, n_dmrs, p.dmrs_type, p.num_cdm_no_data);
|
||||
}
|
||||
} else if ((p.pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) && ptrs_symbol) {
|
||||
AssertFatal(p.transform_precoding == transformPrecoder_disabled, "PTRS NOT SUPPORTED IF TRANSFORM PRECODING IS ENABLED\n");
|
||||
@@ -1190,7 +1189,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
||||
rm_info = calc_rate_match_info_uci(pusch_pdu, harq_process_ul_ue, nl_qm, &G[pusch_id]);
|
||||
}
|
||||
|
||||
if (nr_ulsch_encoding(UE, &phy_data->ulsch, frame, slot, G, 1, ULSCH_ids, number_dmrs_symbols) == -1) {
|
||||
if (nr_ulsch_encoding(UE, &phy_data->ulsch, frame, slot, G, 1, ULSCH_ids) == -1) {
|
||||
stop_meas_nr_ue_phy(UE, PUSCH_PROC_STATS);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -52,8 +52,7 @@
|
||||
//#define ONE_OVER_SQRT2 23170 // 32767/sqrt(2) = 23170 (ONE_OVER_SQRT2)
|
||||
//#define POLAR_CODING_DEBUG
|
||||
|
||||
void nr_generate_pucch0(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch0(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp16,
|
||||
const int nr_slot_tx,
|
||||
@@ -156,8 +155,7 @@ void nr_generate_pucch0(const PHY_VARS_NR_UE *ue,
|
||||
}
|
||||
}
|
||||
|
||||
void nr_generate_pucch1(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch1(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp16,
|
||||
const int nr_slot_tx,
|
||||
@@ -752,8 +750,7 @@ void nr_uci_encoding(uint64_t payload, uint8_t nr_bit, uint8_t nrofPRB, bool uci
|
||||
}
|
||||
}
|
||||
//#if 0
|
||||
void nr_generate_pucch2(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch2(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp16,
|
||||
const int nr_slot_tx,
|
||||
@@ -937,8 +934,7 @@ void nr_generate_pucch2(const PHY_VARS_NR_UE *ue,
|
||||
}
|
||||
}
|
||||
//#if 0
|
||||
void nr_generate_pucch3_4(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp16,
|
||||
const int nr_slot_tx,
|
||||
|
||||
@@ -42,29 +42,25 @@
|
||||
#include "T.h"
|
||||
#define ONE_OVER_SQRT2 23170 // 32767/sqrt(2) = 23170 (ONE_OVER_SQRT2)
|
||||
|
||||
void nr_generate_pucch0(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch0(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp,
|
||||
const int nr_slot_tx,
|
||||
const fapi_nr_ul_config_pucch_pdu *pucch_pdu);
|
||||
|
||||
void nr_generate_pucch1(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch1(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp,
|
||||
const int nr_slot_tx,
|
||||
const fapi_nr_ul_config_pucch_pdu *pucch_pdu);
|
||||
|
||||
void nr_generate_pucch2(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch2(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp,
|
||||
const int nr_slot_tx,
|
||||
const fapi_nr_ul_config_pucch_pdu *pucch_pdu);
|
||||
|
||||
void nr_generate_pucch3_4(const PHY_VARS_NR_UE *ue,
|
||||
c16_t **txdataF,
|
||||
void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
const NR_DL_FRAME_PARMS *frame_parms,
|
||||
const int16_t amp,
|
||||
const int nr_slot_tx,
|
||||
|
||||
@@ -255,7 +255,6 @@ static int do_pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR],
|
||||
uint8_t doPss,
|
||||
uint8_t doSss,
|
||||
uint8_t subframe,
|
||||
int ssb_start_subcarrier,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP]) // add flag to indicate extracting only PSS, only SSS, or both
|
||||
{
|
||||
@@ -332,7 +331,6 @@ static int do_pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
static int pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
c16_t pss_ext[frame_parms->nb_antennas_rx][LENGTH_PSS_NR],
|
||||
c16_t sss_ext[frame_parms->nb_antennas_rx][LENGTH_SSS_NR],
|
||||
uint8_t subframe,
|
||||
int ssb_start_subcarrier,
|
||||
c16_t rxdataF[][frame_parms->samples_per_slot_wCP])
|
||||
{
|
||||
@@ -341,7 +339,6 @@ static int pss_sss_extract_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
sss_ext,
|
||||
1 /* doPss */,
|
||||
1 /* doSss */,
|
||||
subframe,
|
||||
ssb_start_subcarrier,
|
||||
rxdataF);
|
||||
}
|
||||
@@ -380,7 +377,7 @@ bool rx_sss_nr(const NR_DL_FRAME_PARMS *frame_parms,
|
||||
|
||||
|
||||
// pss sss extraction
|
||||
pss_sss_extract_nr(frame_parms, pss_ext, sss_ext, 0, ssb_start_subcarrier, rxdataF); /* subframe */
|
||||
pss_sss_extract_nr(frame_parms, pss_ext, sss_ext, ssb_start_subcarrier, rxdataF); /* subframe */
|
||||
|
||||
#ifdef DEBUG_PLOT_SSS
|
||||
|
||||
|
||||
@@ -201,10 +201,7 @@ void clear_slot_beamid(PHY_VARS_gNB *gNB, int slot)
|
||||
}
|
||||
}
|
||||
|
||||
static void nr_generate_csi_rs_gNB(PHY_VARS_gNB *gNB,
|
||||
int slot,
|
||||
const nfapi_nr_config_request_scf_t *cfg,
|
||||
const nfapi_nr_dl_tti_csi_rs_pdu *csi_rs_pdu)
|
||||
static void nr_generate_csi_rs_gNB(PHY_VARS_gNB *gNB, int slot, const nfapi_nr_dl_tti_csi_rs_pdu *csi_rs_pdu)
|
||||
{
|
||||
const nfapi_nr_dl_tti_csi_rs_pdu_rel15_t *csi_params = &csi_rs_pdu->csi_rs_pdu_rel15;
|
||||
if (csi_params->csi_type == 2) // ZP-CSI
|
||||
@@ -245,8 +242,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
const nfapi_nr_tx_data_request_t *TX_req,
|
||||
const nfapi_nr_ul_dci_request_t *UL_dci_req,
|
||||
int frame,
|
||||
int slot,
|
||||
int do_meas)
|
||||
int slot)
|
||||
{
|
||||
const NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
|
||||
nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config;
|
||||
@@ -272,7 +268,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
{
|
||||
int slot_prs = (slot - i * prs_config->PRSResourceTimeGap + fp->slots_per_frame) % fp->slots_per_frame;
|
||||
LOG_D(PHY,"gNB_TX: frame %d, slot %d, slot_prs %d, PRS Resource ID %d\n",frame, slot, slot_prs, rsc_id);
|
||||
nr_generate_prs(slot_prs, &gNB->common_vars.txdataF[0][0][txdataF_offset], AMP, prs_config, cfg, fp);
|
||||
nr_generate_prs(slot_prs, &gNB->common_vars.txdataF[0][0][txdataF_offset], AMP, prs_config, fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -291,7 +287,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
nr_generate_dci(gNB, &dl_tti_pdu->pdcch_pdu.pdcch_pdu_rel15, txdataF_offset, &gNB->frame_parms, slot);
|
||||
break;
|
||||
case NFAPI_NR_DL_TTI_CSI_RS_PDU_TYPE:
|
||||
nr_generate_csi_rs_gNB(gNB, slot, cfg, &dl_tti_pdu->csi_rs_pdu);
|
||||
nr_generate_csi_rs_gNB(gNB, slot, &dl_tti_pdu->csi_rs_pdu);
|
||||
break;
|
||||
case NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE: {
|
||||
int tx_data_idx = dl_tti_pdu->pdsch_pdu.pdsch_pdu_rel15.pduIndex;
|
||||
@@ -713,7 +709,6 @@ static void fill_ul_rb_mask(PHY_VARS_gNB *gNB,
|
||||
|
||||
static int fill_srs_reported_symbol(nfapi_nr_srs_reported_symbol_t *reported_symbol,
|
||||
const nfapi_nr_srs_pdu_t *srs_pdu,
|
||||
const int N_RB_UL,
|
||||
const int16_t *snr_per_rb,
|
||||
const int srs_est)
|
||||
{
|
||||
@@ -882,7 +877,7 @@ void nr_srs_rx_procedures(PHY_VARS_gNB *gNB,
|
||||
stop_meas(&gNB->generate_srs_stats);
|
||||
c16_t **rxdataF = gNB->common_vars.rxdataF[srs->beam_nb];
|
||||
start_meas(&gNB->get_srs_signal_stats);
|
||||
*srs_est = nr_get_srs_signal(gNB, rxdataF, frame_rx, slot_rx, srs_pdu, nr_srs_info, srs_received_signal, srs_received_noise);
|
||||
*srs_est = nr_get_srs_signal(gNB, rxdataF, slot_rx, srs_pdu, nr_srs_info, srs_received_signal, srs_received_noise);
|
||||
stop_meas(&gNB->get_srs_signal_stats);
|
||||
|
||||
uint32_t signal_power_avg = 0;
|
||||
@@ -1267,7 +1262,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N
|
||||
AssertFatal(nr_srs_bf_report.num_reported_symbols == 1,
|
||||
"nr_srs_bf_report.num_reported_symbols %i not handled yet!\n",
|
||||
nr_srs_bf_report.num_reported_symbols);
|
||||
fill_srs_reported_symbol(&nr_srs_bf_report.reported_symbol_list[0], srs_pdu, frame_parms->N_RB_UL, snr_per_rb, srs_est);
|
||||
fill_srs_reported_symbol(&nr_srs_bf_report.reported_symbol_list[0], srs_pdu, snr_per_rb, srs_est);
|
||||
|
||||
#ifdef SRS_IND_DEBUG
|
||||
LOG_I(NR_PHY, "nr_srs_bf_report.prg_size = %i\n", nr_srs_bf_report.prg_size);
|
||||
|
||||
@@ -38,8 +38,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
const nfapi_nr_tx_data_request_t *TX_req,
|
||||
const nfapi_nr_ul_dci_request_t *UL_dci_req,
|
||||
int frame,
|
||||
int slot,
|
||||
int do_meas);
|
||||
int slot);
|
||||
void nr_save_ul_tti_req(PHY_VARS_gNB *gNB, nfapi_nr_ul_tti_request_t *UL_tti_req);
|
||||
int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, NR_UL_IND_t *UL_INFO);
|
||||
void L1_nr_prach_procedures(PHY_VARS_gNB *gNB, int frame, int slot, nfapi_nr_rach_indication_t *rach_ind);
|
||||
|
||||
@@ -172,7 +172,6 @@ void nr_fill_sl_rx_indication(sl_nr_rx_indication_t *rx_ind,
|
||||
uint8_t pdu_type,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
uint16_t n_pdus,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
void *typeSpecific,
|
||||
uint16_t rx_slss_id);
|
||||
|
||||
|
||||
@@ -1066,7 +1066,6 @@ int pbch_processing(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_da
|
||||
TracyCZone(ctx, true);
|
||||
int frame_rx = proc->frame_rx;
|
||||
int nr_slot_rx = proc->nr_slot_rx;
|
||||
int gNB_id = proc->gNB_id;
|
||||
NR_DL_FRAME_PARMS *fp = &ue->frame_parms;
|
||||
int sampleShift = INT_MAX;
|
||||
nr_ue_dlsch_init(phy_data->dlsch, NR_MAX_NB_LAYERS>4 ? 2:1, ue->max_ldpc_iterations);
|
||||
@@ -1152,7 +1151,7 @@ int pbch_processing(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_da
|
||||
if (ue->no_timing_correction == 0 && pbchSuccess == 0) {
|
||||
LOG_D(PHY,"start adjust sync slot = %d no timing %d\n", nr_slot_rx, ue->no_timing_correction);
|
||||
sampleShift =
|
||||
nr_adjust_synch_ue(fp, ue, gNB_id, fp->ofdm_symbol_size, dl_ch_estimates_time, frame_rx, nr_slot_rx, 16384);
|
||||
nr_adjust_synch_ue(fp, ue, fp->ofdm_symbol_size, dl_ch_estimates_time, frame_rx, nr_slot_rx, 16384);
|
||||
}
|
||||
|
||||
if (get_nrUE_params()->cont_fo_comp && pbchSuccess == 0) {
|
||||
|
||||
@@ -66,7 +66,6 @@ void nr_fill_sl_rx_indication(sl_nr_rx_indication_t *rx_ind,
|
||||
uint8_t pdu_type,
|
||||
PHY_VARS_NR_UE *ue,
|
||||
uint16_t n_pdus,
|
||||
const UE_nr_rxtx_proc_t *proc,
|
||||
void *typeSpecific,
|
||||
uint16_t rx_slss_id)
|
||||
{
|
||||
@@ -157,7 +156,7 @@ static int nr_ue_psbch_procedures(PHY_VARS_NR_UE *ue,
|
||||
}
|
||||
|
||||
nr_fill_sl_indication(&sl_indication, &rx_ind, NULL, proc, ue, phy_data);
|
||||
nr_fill_sl_rx_indication(&rx_ind, SL_NR_RX_PDU_TYPE_SSB, ue, number_pdus, proc, (void *)result, rx_slss_id);
|
||||
nr_fill_sl_rx_indication(&rx_ind, SL_NR_RX_PDU_TYPE_SSB, ue, number_pdus, (void *)result, rx_slss_id);
|
||||
|
||||
if (ue->if_inst && ue->if_inst->sl_indication)
|
||||
ue->if_inst->sl_indication(&sl_indication);
|
||||
@@ -232,7 +231,7 @@ int psbch_pscch_processing(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr
|
||||
if (ue->no_timing_correction == 0 && psbchSuccess == 0) {
|
||||
LOG_D(NR_PHY, "start adjust sync slot = %d no timing %d\n", nr_slot_rx, ue->no_timing_correction);
|
||||
sampleShift =
|
||||
nr_adjust_synch_ue(fp, ue, proc->gNB_id, fp->ofdm_symbol_size, dl_ch_estimates_time, frame_rx, nr_slot_rx, 16384);
|
||||
nr_adjust_synch_ue(fp, ue, fp->ofdm_symbol_size, dl_ch_estimates_time, frame_rx, nr_slot_rx, 16384);
|
||||
}
|
||||
|
||||
LOG_D(NR_PHY, "Doing N0 measurements in %s\n", __FUNCTION__);
|
||||
|
||||
@@ -176,17 +176,17 @@ void pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue,
|
||||
|
||||
switch(pucch_pdu->format_type) {
|
||||
case 0:
|
||||
nr_generate_pucch0(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
nr_generate_pucch0(txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
break;
|
||||
case 1:
|
||||
nr_generate_pucch1(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
nr_generate_pucch1(txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
break;
|
||||
case 2:
|
||||
nr_generate_pucch2(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
nr_generate_pucch2(txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
nr_generate_pucch3_4(ue, txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
nr_generate_pucch3_4(txdataF, &ue->frame_parms, tx_amp, nr_slot_tx, pucch_pdu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ int main(int argc, char **argv)
|
||||
unsigned char output[nb_rb * NR_SYMBOLS_PER_SLOT * NR_NB_SC_PER_RB * NR_MAX_NB_LAYERS] __attribute__((aligned(64)));
|
||||
bzero(output, sizeof(output));
|
||||
if (input_fd == NULL) {
|
||||
nr_dlsch_encoding(gNB, 1, dlsch, frame, slot, frame_parms, output, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
nr_dlsch_encoding(gNB, 1, dlsch, frame, slot, output, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
for (SNR = snr0; SNR < snr1 && !stop; SNR += snr_step) {
|
||||
@@ -620,7 +620,7 @@ int main(int argc, char **argv)
|
||||
free(RC.gNB);
|
||||
|
||||
free_nr_ue_dl_harq(UE->dl_harq_processes, 8, nb_rb);
|
||||
term_nr_ue_signal(UE, 1);
|
||||
term_nr_ue_signal(UE);
|
||||
free(UE);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
|
||||
@@ -1120,7 +1120,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
start_meas(&gNB->phy_proc_tx);
|
||||
phy_procedures_gNB_TX(gNB, &Sched_INFO->DL_req, &Sched_INFO->TX_req, &Sched_INFO->UL_dci_req, frame, slot, 1);
|
||||
phy_procedures_gNB_TX(gNB, &Sched_INFO->DL_req, &Sched_INFO->TX_req, &Sched_INFO->UL_dci_req, frame, slot);
|
||||
stop_meas(&gNB->phy_proc_tx);
|
||||
|
||||
int txdataF_offset = slot * frame_parms->samples_per_slot_wCP;
|
||||
|
||||
@@ -654,7 +654,7 @@ int main(int argc, char **argv)
|
||||
nr_gscn_info_t gscnInfo[MAX_GSCN_BAND] = {0};
|
||||
const int numGscn = 1;
|
||||
gscnInfo[0].ssbFirstSC = frame_parms->ssb_start_subcarrier;
|
||||
nr_initial_sync_t ret = nr_initial_sync(&proc, UE, 1, 0, gscnInfo, numGscn);
|
||||
nr_initial_sync_t ret = nr_initial_sync(&proc, UE, 1, gscnInfo, numGscn);
|
||||
printf("nr_initial_sync1 returns %s\n", ret.cell_detected ? "cell detected" : "cell not detected");
|
||||
if (!ret.cell_detected)
|
||||
n_errors++;
|
||||
@@ -761,7 +761,7 @@ int main(int argc, char **argv)
|
||||
free(RC.gNB[0]);
|
||||
free(RC.gNB);
|
||||
|
||||
term_nr_ue_signal(UE, 1);
|
||||
term_nr_ue_signal(UE);
|
||||
free(UE);
|
||||
|
||||
for (i=0; i<2; i++) {
|
||||
|
||||
@@ -844,7 +844,7 @@ int main(int argc, char **argv){
|
||||
free(RC.gNB[0]);
|
||||
free(RC.gNB);
|
||||
|
||||
term_nr_ue_signal(UE, 1);
|
||||
term_nr_ue_signal(UE);
|
||||
free(UE->nrUE_config.prach_config.num_prach_fd_occasions_list);
|
||||
free(UE);
|
||||
free(PHY_vars_UE_g[0]);
|
||||
|
||||
@@ -673,8 +673,8 @@ int main(int argc, char **argv)
|
||||
free(r_re);
|
||||
free(r_im);
|
||||
|
||||
term_nr_ue_signal(UE_TX, 1);
|
||||
term_nr_ue_signal(UE_RX, 1);
|
||||
term_nr_ue_signal(UE_TX);
|
||||
term_nr_ue_signal(UE_RX);
|
||||
|
||||
free(UE_TX);
|
||||
free(UE_RX);
|
||||
|
||||
@@ -551,11 +551,11 @@ int main(int argc, char **argv)
|
||||
for (int aatx=0;aatx<1;aatx++)
|
||||
bzero(txdataF[aatx],frame_parms->ofdm_symbol_size*sizeof(int));
|
||||
if(format==0 && do_DTX==0){
|
||||
nr_generate_pucch0(UE, txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
nr_generate_pucch0(txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
} else if (format == 1 && do_DTX==0){
|
||||
nr_generate_pucch1(UE, txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
nr_generate_pucch1(txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
} else if (do_DTX == 0){
|
||||
nr_generate_pucch2(UE, txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
nr_generate_pucch2(txdataF, frame_parms, amp, nr_slot_tx, &pucch_tx_pdu);
|
||||
}
|
||||
|
||||
// SNR Computation
|
||||
@@ -784,7 +784,7 @@ int main(int argc, char **argv)
|
||||
free(RC.gNB[0]);
|
||||
free(RC.gNB);
|
||||
|
||||
term_nr_ue_signal(UE, 1);
|
||||
term_nr_ue_signal(UE);
|
||||
free(UE);
|
||||
|
||||
for (int aatx=0; aatx<n_tx; aatx++) {
|
||||
|
||||
@@ -511,7 +511,7 @@ int main(int argc, char **argv)
|
||||
if (input_fd == NULL) {
|
||||
uint8_t ULSCH_ids[] = {0};
|
||||
nr_ulsch_pre_encoding(UE, ulsch_ue, 0, 0, &G, 1, ULSCH_ids);
|
||||
nr_ulsch_encoding(UE, ulsch_ue, 0, 0, &G, 1, ULSCH_ids, 0);
|
||||
nr_ulsch_encoding(UE, ulsch_ue, 0, 0, &G, 1, ULSCH_ids);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
@@ -609,7 +609,7 @@ int main(int argc, char **argv)
|
||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
|
||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
|
||||
|
||||
term_nr_ue_signal(UE, 1);
|
||||
term_nr_ue_signal(UE);
|
||||
free(UE);
|
||||
|
||||
abortTpool(&gNB->threadPool);
|
||||
|
||||
Reference in New Issue
Block a user