diff --git a/executables/nr-ue.c b/executables/nr-ue.c index c27477388049bf14f9cd0b2caadcc3bae492dd4c..641aa0a64c6eaac6fa60272362d00949c8ab4ae4 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -801,7 +801,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) { if (samples_shift != 0) { LOG_I(NR_PHY,"Adjusting frame in time by %i samples\n", samples_shift); UE->rx_offset = 0; // reset so that it is not applied falsely in case of SSB being only in every second frame - UE->max_pos_fil += samples_shift; // reset IIR filter when sample shift is applied + UE->max_pos_fil += samples_shift << 15; // reset IIR filter when sample shift is applied } return samples_shift; } diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c index 20be0919759a3ce2eef1b4e7ecf6b8613908aac8..c387c7f38ba1bdd60f00bbefa54a96dd852decd5 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c @@ -75,14 +75,14 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, // filter position to reduce jitter if (clear == 1) - ue->max_pos_fil = max_pos; + ue->max_pos_fil = max_pos << 15; else - ue->max_pos_fil = ((ue->max_pos_fil * coef) + (max_pos * ncoef)) >> 15; + ue->max_pos_fil = ((ue->max_pos_fil * coef) >> 15) + (max_pos * ncoef); // do not filter to have proactive timing adjustment - //ue->max_pos_fil = max_pos; + //ue->max_pos_fil = max_pos << 15; - int diff = ue->max_pos_fil - sync_pos; + int diff = (ue->max_pos_fil >> 15) - sync_pos; if (frame_parms->freq_range==nr_FR2) sync_offset = 2;