From 268172a435af07538d53df719888a60bf120e465 Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Sun, 19 Jan 2025 17:52:45 +0100 Subject: [PATCH] pure bad code fix --- common/platform_types.h | 6 +++++ .../PHY/NR_ESTIMATION/nr_measurements_gNB.c | 6 +++-- openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h | 2 +- openair1/PHY/NR_TRANSPORT/nr_prs.c | 24 ++++--------------- openair1/PHY/NR_TRANSPORT/srs_rx.c | 4 ++-- openair1/SCHED_NR/phy_procedures_nr_gNB.c | 8 +++---- openair1/SIMULATION/NR_PHY/psbchsim.c | 11 ++------- 7 files changed, 24 insertions(+), 37 deletions(-) diff --git a/common/platform_types.h b/common/platform_types.h index cb3d872804..1001a454a9 100644 --- a/common/platform_types.h +++ b/common/platform_types.h @@ -288,6 +288,12 @@ typedef struct protocol_ctxt_s { #define CHECK_CTXT_ARGS(CTXT_Pp) + +static inline int ceil_mod(const unsigned int v, const unsigned int mod) +{ + return ((v + mod - 1) / mod) * mod; +} + #define exit_fun(msg) exit_function(__FILE__, __FUNCTION__, __LINE__, "exit_fun", OAI_EXIT_NORMAL) #ifdef __cplusplus extern "C" { diff --git a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c index 42b0b0b515..69d032a4f8 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c +++ b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c @@ -38,8 +38,10 @@ extern openair0_config_t openair0_cfg[MAX_CARDS]; -int nr_est_timing_advance_srs(const NR_DL_FRAME_PARMS *frame_parms, - const int32_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]) { +int nr_est_timing_advance_srs(const NR_DL_FRAME_PARMS *frame_parms, + const c16_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]) +{ + int timing_advance = 0; int max_val = 0; diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h index 9f340d84d6..d3db4f396a 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h @@ -64,7 +64,7 @@ void nr_gnb_measurements(PHY_VARS_gNB *gNB, uint8_t nrOfLayers); int nr_est_timing_advance_srs(const NR_DL_FRAME_PARMS *frame_parms, - const int32_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]); + const c16_t srs_estimated_channel_time[][frame_parms->ofdm_symbol_size]); void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB, NR_DL_FRAME_PARMS *frame_parms, diff --git a/openair1/PHY/NR_TRANSPORT/nr_prs.c b/openair1/PHY/NR_TRANSPORT/nr_prs.c index 382e995a65..6f26b9a07f 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prs.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prs.c @@ -4,11 +4,10 @@ #include "PHY/NR_REFSIG/nr_refsig.h" #include "PHY/sse_intrin.h" #include "openair1/PHY/NR_REFSIG/refsig_defs_ue.h" +#include "openair1/PHY/NR_REFSIG/nr_mod_table.h" //#define DEBUG_PRS_MOD //#define DEBUG_PRS_MAP -extern short nr_qpsk_mod_table[8]; - int nr_generate_prs(int slot, c16_t *txdataF, int16_t amp, @@ -18,7 +17,7 @@ int nr_generate_prs(int slot, { int k_prime = 0, k = 0, idx; - int16_t mod_prs[NR_MAX_PRS_LENGTH<<1]; + c16_t mod_prs[NR_MAX_PRS_LENGTH]; int16_t k_prime_table[K_PRIME_TABLE_ROW_SIZE][K_PRIME_TABLE_COL_SIZE] = PRS_K_PRIME_TABLE; // PRS resource mapping with combsize=k which means PRS symbols exist in every k-th subcarrier in frequency domain @@ -45,25 +44,12 @@ int nr_generate_prs(int slot, uint32_t *gold = nr_gold_prs(prs_cfg->NPRSID, slot, l); for (int m = 0; m < (12/prs_cfg->CombSize) * prs_cfg->NumRB; m++) { idx = (((gold[(m << 1) >> 5]) >> ((m << 1) & 0x1f)) & 3); - mod_prs[m<<1] = nr_qpsk_mod_table[idx<<1]; - mod_prs[(m<<1)+1] = nr_qpsk_mod_table[(idx<<1) + 1]; - -#ifdef DEBUG_PRS_MOD - LOG_D("m %d idx %d gold seq %d mod_prs %d %d\n", m, idx, nr_gold_prs[l][(m<<1)>>5], mod_prs[m<<1], mod_prs[(m<<1)+1]); -#endif - + mod_prs[m] = nr_qpsk_mod_table[idx]; + #ifdef DEBUG_PRS_MAP LOG_D("m %d at k %d of l %d reIdx %d\n", m, k, l, (l*frame_parms->ofdm_symbol_size + k)<<1); #endif - - ((int16_t *)txdataF)[(l*frame_parms->ofdm_symbol_size + k)<<1] = (amp * mod_prs[m<<1]) >> 15; - ((int16_t *)txdataF)[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1] = (amp * mod_prs[(m<<1) + 1]) >> 15; - -#ifdef DEBUG_PRS_MAP - LOG_D("(%d,%d)\n", - ((int16_t *)txdataF)[(l*frame_parms->ofdm_symbol_size + k)<<1], - ((int16_t *)txdataF)[((l*frame_parms->ofdm_symbol_size + k)<<1)+1]); -#endif + txdataF[l * frame_parms->ofdm_symbol_size + k] = c16mulRealShift(mod_prs[m], amp, 15); k = k + prs_cfg->CombSize; diff --git a/openair1/PHY/NR_TRANSPORT/srs_rx.c b/openair1/PHY/NR_TRANSPORT/srs_rx.c index 49ae659a06..ff9539edba 100644 --- a/openair1/PHY/NR_TRANSPORT/srs_rx.c +++ b/openair1/PHY/NR_TRANSPORT/srs_rx.c @@ -88,7 +88,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, const uint8_t K_TC = 2 << srs_pdu->comb_size; const uint16_t M_sc_b_SRS = get_m_srs(srs_pdu->config_index, srs_pdu->bandwidth_index) * NR_NB_SC_PER_RB / K_TC; - int32_t *rx_signal; + c16_t *rx_signal; bool no_srs_signal = true; for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { @@ -117,7 +117,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, srs_received_signal[ant][l_line_offset+subcarrier] = rx_signal[l_line_offset+subcarrier]; - if (rx_signal[l_line_offset+subcarrier] != 0) { + if (rx_signal[l_line_offset + subcarrier].r || rx_signal[l_line_offset + subcarrier].i) { no_srs_signal = false; } diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 9e1ec84d9c..bcb530a0bf 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -647,8 +647,9 @@ int fill_srs_channel_matrix(uint8_t *channel_matrix, const uint16_t prg_size, const uint16_t num_prgs, const NR_DL_FRAME_PARMS *frame_parms, - const int32_t srs_estimated_channel_freq[][1<num_ant_ports][frame_parms->ofdm_symbol_size*(1<num_symbols)]) { - + const c16_t srs_estimated_channel_freq[][1 << srs_pdu->num_ant_ports] + [frame_parms->ofdm_symbol_size * (1 << srs_pdu->num_symbols)]) +{ const uint64_t subcarrier_offset = frame_parms->first_carrier_offset + srs_pdu->bwp_start*NR_NB_SC_PER_RB; const uint16_t step = prg_size*NR_NB_SC_PER_RB; @@ -664,8 +665,7 @@ int fill_srs_channel_matrix(uint8_t *channel_matrix, } for(int pI = 0; pI < num_prgs; pI++) { - - c16_t *srs_estimated_channel16 = (c16_t *)&srs_estimated_channel_freq[gI][uI][subcarrier]; + const c16_t *srs_estimated_channel16 = srs_estimated_channel_freq[gI][uI] + subcarrier; uint16_t index = uI*num_gnb_antenna_elements*num_prgs + gI*num_prgs + pI; if (normalized_iq_representation == 0) { diff --git a/openair1/SIMULATION/NR_PHY/psbchsim.c b/openair1/SIMULATION/NR_PHY/psbchsim.c index 972605fc96..d1f7993346 100644 --- a/openair1/SIMULATION/NR_PHY/psbchsim.c +++ b/openair1/SIMULATION/NR_PHY/psbchsim.c @@ -260,15 +260,8 @@ static int freq_domain_loopback(PHY_VARS_NR_UE *UE_tx, PHY_VARS_NR_UE *UE_rx, in nr_tx_psbch(UE_tx, frame, slot, &phy_data->psbch_vars, txdataF); int estimateSz = sl_ue2->sl_frame_params.samples_per_slot_wCP; - __attribute__((aligned(32))) struct complex16 rxdataF[1][estimateSz]; - for (int i = 0; i < sl_ue1->sl_frame_params.samples_per_slot_wCP; i++) { - struct complex16 *txdataF_ptr = (struct complex16 *)&txdataF[0][i]; - struct complex16 *rxdataF_ptr = (struct complex16 *)&rxdataF[0][i]; - rxdataF_ptr->r = txdataF_ptr->r; - rxdataF_ptr->i = txdataF_ptr->i; - // printf("r,i TXDATAF[%d]- %d:%d, RXDATAF[%d]- %d:%d\n", - // i, txdataF_ptr->r, txdataF_ptr->i, i, txdataF_ptr->r, txdataF_ptr->i); - } + __attribute__((aligned(32))) c16_t rxdataF[1][estimateSz]; + memcpy(rxdataF[0], txdataF[0], sl_ue1->sl_frame_params.samples_per_slot_wCP * sizeof(**rxdataF)); uint8_t err_status = 0;