tentative fix for wrong frame caused by rx offset
This commit is contained in:
+3
-3
@@ -513,7 +513,7 @@ void *UE_thread(void *arg) {
|
|||||||
if (UE->is_synchronized) {
|
if (UE->is_synchronized) {
|
||||||
decoded_frame_rx=(((mac->mib->systemFrameNumber.buf[0] >> mac->mib->systemFrameNumber.bits_unused)<<4) | tmp->proc.decoded_frame_rx);
|
decoded_frame_rx=(((mac->mib->systemFrameNumber.buf[0] >> mac->mib->systemFrameNumber.bits_unused)<<4) | tmp->proc.decoded_frame_rx);
|
||||||
// shift the frame index with all the frames we trashed meanwhile we perform the synch search
|
// shift the frame index with all the frames we trashed meanwhile we perform the synch search
|
||||||
decoded_frame_rx=(decoded_frame_rx + (!UE->init_sync_frame) + trashed_frames) % MAX_FRAME_NUMBER;
|
decoded_frame_rx=(decoded_frame_rx + UE->init_sync_frame + trashed_frames) % MAX_FRAME_NUMBER;
|
||||||
}
|
}
|
||||||
delNotifiedFIFO_elt(res);
|
delNotifiedFIFO_elt(res);
|
||||||
} else {
|
} else {
|
||||||
@@ -652,9 +652,9 @@ void *UE_thread(void *arg) {
|
|||||||
pushNotifiedFIFO_nothreadSafe(&freeBlocks,res);
|
pushNotifiedFIFO_nothreadSafe(&freeBlocks,res);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( decoded_frame_rx>0 && decoded_frame_rx != curMsg->proc.frame_rx)
|
if (decoded_frame_rx>0 && decoded_frame_rx != curMsg->proc.frame_rx)
|
||||||
LOG_E(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n",
|
LOG_E(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n",
|
||||||
decoded_frame_rx, curMsg->proc.frame_rx );
|
decoded_frame_rx, curMsg->proc.frame_rx);
|
||||||
|
|
||||||
// use previous timing_advance value to compute writeTimestamp
|
// use previous timing_advance value to compute writeTimestamp
|
||||||
writeTimestamp = timestamp+
|
writeTimestamp = timestamp+
|
||||||
|
|||||||
@@ -308,12 +308,14 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, int n_frames)
|
|||||||
// every 7*(1<<mu) symbols there is a different prefix length (38.211 5.3.1)
|
// every 7*(1<<mu) symbols there is a different prefix length (38.211 5.3.1)
|
||||||
int n_symb_prefix0 = (ue->symbol_offset/(7*(1<<mu)))+1;
|
int n_symb_prefix0 = (ue->symbol_offset/(7*(1<<mu)))+1;
|
||||||
sync_pos_frame = n_symb_prefix0*(fp->ofdm_symbol_size + fp->nb_prefix_samples0)+(ue->symbol_offset-n_symb_prefix0)*(fp->ofdm_symbol_size + fp->nb_prefix_samples);
|
sync_pos_frame = n_symb_prefix0*(fp->ofdm_symbol_size + fp->nb_prefix_samples0)+(ue->symbol_offset-n_symb_prefix0)*(fp->ofdm_symbol_size + fp->nb_prefix_samples);
|
||||||
if (ue->ssb_offset < sync_pos_frame)
|
if (ue->ssb_offset < sync_pos_frame){
|
||||||
ue->rx_offset = fp->samples_per_frame - sync_pos_frame + ue->ssb_offset;
|
ue->rx_offset = (2*fp->samples_per_frame) - sync_pos_frame + ue->ssb_offset;
|
||||||
else
|
ue->init_sync_frame = !is + 2;
|
||||||
|
}
|
||||||
|
else{
|
||||||
ue->rx_offset = ue->ssb_offset - sync_pos_frame;
|
ue->rx_offset = ue->ssb_offset - sync_pos_frame;
|
||||||
|
ue->init_sync_frame = !is;
|
||||||
ue->init_sync_frame = is;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user