diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c index 68196e78c7..0119023882 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c @@ -34,7 +34,7 @@ typedef struct puschAntennaProc_s { int aarx; int beam_nb; int numAntennas; - nfapi_nr_pusch_pdu_t *pusch_pdu; + const nfapi_nr_pusch_pdu_t *pusch_pdu; int *max_ch; c16_t *pilot; int *nest_count; @@ -82,7 +82,7 @@ static void nr_pusch_antenna_processing(void *arg) int aarx = rdata->aarx; int numAntennas = rdata->numAntennas; unsigned short bwp_start_subcarrier = rdata->bwp_start_subcarrier; - nfapi_nr_pusch_pdu_t *pusch_pdu = rdata->pusch_pdu; + const nfapi_nr_pusch_pdu_t *pusch_pdu = rdata->pusch_pdu; int *max_ch = rdata->max_ch; c16_t *pilot = rdata->pilot; uint64_t noise_amp2 = *(rdata->noise_amp2); @@ -455,7 +455,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, NR_gNB_PUSCH *pusch_vars, int beam_nb, unsigned short bwp_start_subcarrier, - nfapi_nr_pusch_pdu_t *pusch_pdu, + const nfapi_nr_pusch_pdu_t *pusch_pdu, int *max_ch, uint32_t *nvar, c16_t *pusch_dmrs_slot_mem, @@ -646,7 +646,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, // #define DEBUG_UL_PTRS void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, NR_DL_FRAME_PARMS *frame_parms, - nfapi_nr_pusch_pdu_t *rel15_ul, + const nfapi_nr_pusch_pdu_t *rel15_ul, uint8_t ulsch_id, uint8_t nr_tti_rx, unsigned char symbol, @@ -656,15 +656,13 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, int32_t *ptrs_re_symbol = NULL; int8_t ret = 0; uint8_t symbInSlot = rel15_ul->start_symbol_index + rel15_ul->nr_of_symbols; - uint8_t *startSymbIndex = &rel15_ul->start_symbol_index; - uint8_t *nbSymb = &rel15_ul->nr_of_symbols; - uint8_t *L_ptrs = &rel15_ul->pusch_ptrs.ptrs_time_density; - uint8_t *K_ptrs = &rel15_ul->pusch_ptrs.ptrs_freq_density; - uint16_t *dmrsSymbPos = &rel15_ul->ul_dmrs_symb_pos; - uint16_t *ptrsSymbPos = &pusch_vars->ptrs_symbols; - uint8_t *ptrsSymbIdx = &pusch_vars->ptrs_symbol_index; - uint16_t *nb_rb = &rel15_ul->rb_size; - uint8_t *ptrsReOffset = &rel15_ul->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset; + uint8_t startSymbIndex = rel15_ul->start_symbol_index; + uint8_t nbSymb = rel15_ul->nr_of_symbols; + uint8_t L_ptrs = rel15_ul->pusch_ptrs.ptrs_time_density; + uint8_t K_ptrs = rel15_ul->pusch_ptrs.ptrs_freq_density; + uint16_t dmrsSymbPos = rel15_ul->ul_dmrs_symb_pos; + uint16_t nb_rb = rel15_ul->rb_size; + uint8_t ptrsReOffset = rel15_ul->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset; /* loop over antennas */ for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { @@ -673,7 +671,7 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, *ptrs_re_symbol = 0; phase_per_symbol[symbol].i = 0; /* set DMRS estimates to 0 angle with magnitude 1 */ - if (is_dmrs_symbol(symbol, *dmrsSymbPos)) { + if (is_dmrs_symbol(symbol, dmrsSymbPos)) { /* set DMRS real estimation to 32767 */ phase_per_symbol[symbol].r = INT16_MAX; // 32767 #ifdef DEBUG_UL_PTRS @@ -683,17 +681,13 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, phase_per_symbol[symbol].r = 0; } - if (symbol == *startSymbIndex) { - *ptrsSymbPos = 0; - set_ptrs_symb_idx(ptrsSymbPos, *nbSymb, *startSymbIndex, 1 << *L_ptrs, *dmrsSymbPos); + if (symbol == startSymbIndex) { + pusch_vars->ptrs_symbols = 0; + set_ptrs_symb_idx(&pusch_vars->ptrs_symbols, nbSymb, startSymbIndex, 1 << L_ptrs, dmrsSymbPos); } - /* if not PTRS symbol set current ptrs symbol index to zero*/ - *ptrsSymbIdx = 0; - /* Check if current symbol contains PTRS */ - if (is_ptrs_symbol(symbol, *ptrsSymbPos)) { - *ptrsSymbIdx = symbol; + if (is_ptrs_symbol(symbol, pusch_vars->ptrs_symbols)) { /*------------------------------------------------------------------------------------------------------- */ /* 1) Estimate common phase error per PTRS symbol */ /*------------------------------------------------------------------------------------------------------- */ @@ -703,9 +697,9 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, rel15_ul->scid, nr_tti_rx, symbol); - nr_ptrs_cpe_estimation(*K_ptrs, - *ptrsReOffset, - *nb_rb, + nr_ptrs_cpe_estimation(K_ptrs, + ptrsReOffset, + nb_rb, rel15_ul->rnti, frame_parms->ofdm_symbol_size, &pusch_vars->rxdataF_comp[aarx][(symbol * nb_re_pusch)], @@ -720,8 +714,8 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, /* 2) Interpolate PTRS estimated value in TD */ /*------------------------------------------------------------------------------------------------------- */ /* If L-PTRS is > 0 then we need interpolation */ - if (*L_ptrs > 0) { - ret = nr_ptrs_process_slot(*dmrsSymbPos, *ptrsSymbPos, (int16_t *)phase_per_symbol, *startSymbIndex, *nbSymb); + if (L_ptrs > 0) { + ret = nr_ptrs_process_slot(dmrsSymbPos, pusch_vars->ptrs_symbols, (int16_t *)phase_per_symbol, startSymbIndex, nbSymb); if (ret != 0) { LOG_W(PHY, "[PTRS] Compensation is skipped due to error in PTRS slot processing !!\n"); } @@ -730,17 +724,17 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, /*------------------------------------------------------------------------------------------------------- */ /* 3) Compensated DMRS based estimated signal with PTRS estimation */ /*--------------------------------------------------------------------------------------------------------*/ - for (uint8_t i = *startSymbIndex; i < symbInSlot; i++) { + for (uint8_t i = startSymbIndex; i < symbInSlot; i++) { /* DMRS Symbol has 0 phase so no need to rotate the respective symbol */ /* Skip rotation if the slot processing is wrong */ - if ((!is_dmrs_symbol(i, *dmrsSymbPos)) && (ret == 0)) { + if ((!is_dmrs_symbol(i, dmrsSymbPos)) && (ret == 0)) { #ifdef DEBUG_UL_PTRS printf("[PHY][UL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r, phase_per_symbol[i].i); #endif rotate_cpx_vector(&pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch], &phase_per_symbol[i], &pusch_vars->rxdataF_comp[aarx][i * nb_re_pusch], - ((*nb_rb) * NR_NB_SC_PER_RB), + (nb_rb * NR_NB_SC_PER_RB), 15); } // if not DMRS Symbol } // symbol loop diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h index 57bac0dccc..b5ec042419 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h @@ -32,7 +32,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, NR_gNB_PUSCH *pusch_vars, int beam_nb, unsigned short bwp_start_subcarrier, - nfapi_nr_pusch_pdu_t *pusch_pdu, + const nfapi_nr_pusch_pdu_t *pusch_pdu, int *max_ch, uint32_t *nvar, c16_t *pusch_dmrs_slot_mem, @@ -52,7 +52,7 @@ void nr_est_srs_timing_advance_offset(uint16_t ofdm_symbol_size, void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, NR_DL_FRAME_PARMS *frame_parms, - nfapi_nr_pusch_pdu_t *rel15_ul, + const nfapi_nr_pusch_pdu_t *rel15_ul, uint8_t ulsch_id, uint8_t nr_tti_rx, unsigned char symbol, diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index 1984c4b03c..d9a79ac84d 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -80,7 +80,7 @@ static void nr_ulsch_extract_rbs(c16_t* const rxdataF, int rxoffset, int choffset, int is_dmrs_symbol, - nfapi_nr_pusch_pdu_t *pusch_pdu, + const nfapi_nr_pusch_pdu_t *pusch_pdu, NR_DL_FRAME_PARMS *frame_parms) { uint8_t delta = 0; @@ -160,7 +160,7 @@ static void nr_ulsch_extract_rbs(c16_t* const rxdataF, } } -static int get_nb_re_pusch (NR_DL_FRAME_PARMS *frame_parms, nfapi_nr_pusch_pdu_t *rel15_ul,int symbol) +static int get_nb_re_pusch (NR_DL_FRAME_PARMS *frame_parms, const nfapi_nr_pusch_pdu_t *rel15_ul, int symbol) { uint8_t dmrs_symbol_flag = (rel15_ul->ul_dmrs_symb_pos >> symbol) & 0x01; if (dmrs_symbol_flag == 1) { @@ -186,7 +186,7 @@ static void nr_ulsch_channel_compensation(uint32_t buffer_length, c16_t **rxComp, int nb_layers, c16_t rho[][nb_layers][buffer_length], - nfapi_nr_pusch_pdu_t *rel15_ul, + const nfapi_nr_pusch_pdu_t *rel15_ul, uint32_t symbol, uint32_t output_shift) { @@ -861,7 +861,7 @@ static void inner_rx(PHY_VARS_gNB *gNB, int slot, NR_DL_FRAME_PARMS *frame_parms, NR_gNB_PUSCH *pusch_vars, - nfapi_nr_pusch_pdu_t *rel15_ul, + const nfapi_nr_pusch_pdu_t *rel15_ul, c16_t **rxF, int16_t **llr, int soffset, @@ -1003,7 +1003,7 @@ static void inner_rx(PHY_VARS_gNB *gNB, typedef struct puschSymbolProc_s { PHY_VARS_gNB *gNB; NR_DL_FRAME_PARMS *frame_parms; - nfapi_nr_pusch_pdu_t *rel15_ul; + const nfapi_nr_pusch_pdu_t *rel15_ul; int ulsch_id; int slot; int startSymbol; @@ -1023,7 +1023,7 @@ static void nr_pusch_symbol_processing(void *arg) PHY_VARS_gNB *gNB = rdata->gNB; NR_DL_FRAME_PARMS *frame_parms = rdata->frame_parms; - nfapi_nr_pusch_pdu_t *rel15_ul = rdata->rel15_ul; + const nfapi_nr_pusch_pdu_t *rel15_ul = rdata->rel15_ul; int ulsch_id = rdata->ulsch_id; int slot = rdata->slot; NR_gNB_PUSCH *pusch_vars = &gNB->pusch_vars[ulsch_id];