From 2f81e507d7f65861ae417af0354961512a16a7d7 Mon Sep 17 00:00:00 2001 From: francescomani Date: Mon, 16 May 2022 15:11:09 +0200 Subject: [PATCH] fixes for pbch detection and measurements on multiple SSBs --- openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c | 9 +++------ openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c | 3 ++- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c index 442bee09bf..6e418b3f12 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c @@ -211,14 +211,11 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue, int k_start = 55; int k_end = 183; unsigned int ssb_offset = ue->frame_parms.first_carrier_offset + ue->frame_parms.ssb_start_subcarrier; - uint8_t l_sss = ue->symbol_offset + 2; - - if (ssb_offset>= ue->frame_parms.ofdm_symbol_size){ + uint8_t l_sss = (ue->symbol_offset + 2) % ue->frame_parms.symbols_per_slot; + if (ssb_offset>= ue->frame_parms.ofdm_symbol_size) ssb_offset -= ue->frame_parms.ofdm_symbol_size; - } - uint32_t rsrp = 0; LOG_D(PHY, "In %s: [UE %d] slot %d l_sss %d ssb_offset %d\n", __FUNCTION__, ue->Mod_id, slot, l_sss, ssb_offset); @@ -267,7 +264,7 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue, uint8_t k_left = 48; uint8_t k_right = 183; uint8_t k_length = 8; - uint8_t l_sss = ue->symbol_offset + 2; + uint8_t l_sss = (ue->symbol_offset + 2) % ue->frame_parms.symbols_per_slot; unsigned int ssb_offset = ue->frame_parms.first_carrier_offset + ue->frame_parms.ssb_start_subcarrier; double rx_gain = openair0_cfg[0].rx_gain[0]; double rx_gain_offset = openair0_cfg[0].rx_gain_offset[0]; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c index 48b08d761e..1c3606d4dc 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c @@ -393,6 +393,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, MIMO_mode_t mimo_mode, NR_UE_PDCCH_CONFIG *phy_pdcch_config, fapiPbch_t *result) { + NR_UE_COMMON *nr_ue_common_vars = &ue->common_vars; int max_h=0; int symbol; @@ -416,7 +417,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, int symbol_offset=1; if (ue->is_synchronized > 0) - symbol_offset=(ue->symbol_offset)%(frame_parms->symbols_per_slot); + symbol_offset=nr_get_ssb_start_symbol(frame_parms, i_ssb)%(frame_parms->symbols_per_slot); else symbol_offset=0; diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 8abe77f93c..deaefa1259 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -1364,7 +1364,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, nr_ue_ssb_rsrp_measurements(ue, ssb_index, proc, nr_slot_rx); // resetting ssb index for PBCH detection if there is a stronger SSB index - if(measurements.ssb_rsrp_dBm[ssb_index]>ue->measurements.ssb_rsrp_dBm[fp->ssb_index]) + if(ue->measurements.ssb_rsrp_dBm[ssb_index] > ue->measurements.ssb_rsrp_dBm[fp->ssb_index]) fp->ssb_index = ssb_index; if(ssb_index == fp->ssb_index) {