diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c index 89e935528b..e78d604f6c 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c @@ -970,9 +970,6 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB, int32_t srs_estimated_channel_freq[][1<num_ant_ports][gNB->frame_parms.ofdm_symbol_size*(1<num_symbols)], int32_t srs_estimated_channel_time[][1<num_ant_ports][gNB->frame_parms.ofdm_symbol_size], int32_t srs_estimated_channel_time_shifted[][1<num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - uint32_t *signal_power, - uint32_t *noise_power_per_rb, - uint32_t *noise_power, int8_t *snr_per_rb, int8_t *snr) { @@ -993,6 +990,7 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB, } c16_t srs_ls_estimated_channel[frame_parms->ofdm_symbol_size*(1<num_symbols)]; + uint32_t noise_power_per_rb[srs_pdu->bwp_size]; int16_t ch_real[frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS]; int16_t ch_imag[frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS]; int16_t noise_real[frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS]; @@ -1003,6 +1001,7 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB, for (int p_index = 0; p_index < N_ap; p_index++) { + memset(srs_ls_estimated_channel, 0, frame_parms->ofdm_symbol_size*(1<num_symbols)*sizeof(c16_t)); memset(srs_estimated_channel_freq[ant][p_index], 0, frame_parms->ofdm_symbol_size*(1<num_symbols)*sizeof(int32_t)); #ifdef SRS_DEBUG @@ -1178,21 +1177,21 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB, } // for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) // Compute signal power - *signal_power = calc_power(ch_real,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS) - + calc_power(ch_imag,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS); + uint32_t signal_power = calc_power(ch_real,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS) + + calc_power(ch_imag,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS); #ifdef SRS_DEBUG - LOG_I(NR_PHY,"signal_power = %u\n", *signal_power); + LOG_I(NR_PHY,"signal_power = %u\n", signal_power); #endif - if (*signal_power == 0) { + if (signal_power == 0) { LOG_W(NR_PHY, "Received SRS signal power is 0\n"); return -1; } // Compute noise power - const uint8_t signal_power_bits = log2_approx(*signal_power); + const uint8_t signal_power_bits = log2_approx(signal_power); const uint8_t factor_bits = signal_power_bits < 32 ? 32 - signal_power_bits : 0; // 32 due to input of dB_fixed(uint32_t x) const int32_t factor_dB = dB_fixed(1<nb_antennas_rx*N_ap*M_sc_b_SRS) - + calc_power(noise_imag,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS); + uint32_t noise_power = calc_power(noise_real,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS) + + calc_power(noise_imag,frame_parms->nb_antennas_rx*N_ap*M_sc_b_SRS); - *snr = dB_fixed((int32_t)((*signal_power<num_ant_ports][gNB->frame_parms.ofdm_symbol_size*(1<num_symbols)], int32_t srs_estimated_channel_time[][1<num_ant_ports][gNB->frame_parms.ofdm_symbol_size], int32_t srs_estimated_channel_time_shifted[][1<num_ant_ports][gNB->frame_parms.ofdm_symbol_size], - uint32_t *signal_power, - uint32_t *noise_power_per_rb, - uint32_t *noise_power, int8_t *snr_per_rb, int8_t *snr); #endif diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index e4b558c4ff..9e888cab89 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -885,10 +885,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { int32_t srs_estimated_channel_freq[frame_parms->nb_antennas_rx][1<num_ant_ports][frame_parms->ofdm_symbol_size*N_symb_SRS] __attribute__ ((aligned(32))); int32_t srs_estimated_channel_time[frame_parms->nb_antennas_rx][1<num_ant_ports][frame_parms->ofdm_symbol_size] __attribute__ ((aligned(32))); int32_t srs_estimated_channel_time_shifted[frame_parms->nb_antennas_rx][1<num_ant_ports][frame_parms->ofdm_symbol_size]; - uint32_t noise_power_per_rb[srs_pdu->bwp_size]; int8_t snr_per_rb[srs_pdu->bwp_size]; - uint32_t signal_power; - uint32_t noise_power; int8_t snr; // At least currently, the configuration is constant, so it is enough to generate the sequence just once. @@ -909,9 +906,6 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { srs_estimated_channel_freq, srs_estimated_channel_time, srs_estimated_channel_time_shifted, - &signal_power, - noise_power_per_rb, - &noise_power, snr_per_rb, &snr); }