From 4cb633e6e69610648c575b4448a1baaab5591a5b Mon Sep 17 00:00:00 2001 From: Xavier Arteaga Date: Tue, 24 Aug 2021 13:15:28 +0200 Subject: [PATCH] UE dicards NR CFO measurement if SNR is negative --- srsue/hdr/phy/nr/state.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/srsue/hdr/phy/nr/state.h b/srsue/hdr/phy/nr/state.h index 6ff0afbfb..f804b8a6a 100644 --- a/srsue/hdr/phy/nr/state.h +++ b/srsue/hdr/phy/nr/state.h @@ -497,10 +497,16 @@ public: measurements.K_csi_rs = K_csi_rs; new_nzp_csi_rs_channel_measurement(measurements, resource_set_id); + // Update tracking information trs_measurements_mutex.lock(); trs_measurements.rsrp_dB = SRSRAN_VEC_SAFE_EMA(new_meas.rsrp_dB, trs_measurements.rsrp_dB, args.trs_epre_ema_alpha); trs_measurements.epre_dB = SRSRAN_VEC_SAFE_EMA(new_meas.epre_dB, trs_measurements.epre_dB, args.trs_rsrp_ema_alpha); - trs_measurements.cfo_hz = SRSRAN_VEC_SAFE_EMA(new_meas.cfo_hz, trs_measurements.cfo_hz, args.trs_cfo_ema_alpha); + // Consider CFO measurement invalid if the SNR is negative. In this case, set CFO to 0. + if (trs_measurements.snr_dB > 0.0f) { + trs_measurements.cfo_hz = SRSRAN_VEC_SAFE_EMA(new_meas.cfo_hz, trs_measurements.cfo_hz, args.trs_cfo_ema_alpha); + } else { + trs_measurements.cfo_hz = 0.0f; + } trs_measurements.nof_re++; trs_measurements_mutex.unlock(); }