[OAI-UE] fix time tracking and channel interpolation

This commit is contained in:
gabrielC
2017-01-25 17:23:32 +01:00
parent 7a2984e8ae
commit 0dd076a37a
25 changed files with 282 additions and 275 deletions
+12 -7
View File
@@ -856,8 +856,8 @@ static void *UE_thread_rxn_txnp4(void *arg)
#define RX_OFF_MAX 10
#define RX_OFF_MIN 5
#define RX_OFF_MAX 23
#define RX_OFF_MIN 0
#define RX_OFF_MID ((RX_OFF_MAX+RX_OFF_MIN)/2)
/*!
@@ -1033,6 +1033,7 @@ void *UE_thread(void *arg) {
return &UE_thread_retval;
}
}
LOG_D(PHY,"Set rx_offset to 0 \n");
UE->rx_offset=0;
UE->proc.proc_rxtx[0].frame_rx++;
UE->proc.proc_rxtx[1].frame_rx++;
@@ -1079,6 +1080,8 @@ void *UE_thread(void *arg) {
rxp,
UE->frame_parms.samples_per_tti,
UE->frame_parms.nb_antennas_rx);
LOG_D(PHY,"grab signal for subframe %d offset %d Nbsamples %d \n", sf, UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0+(sf*UE->frame_parms.samples_per_tti),
UE->frame_parms.samples_per_tti);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ, 0 );
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_UE0_TRX_READ_NS, rxs );
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_UE0_TRX_READ_NS_MISSING, UE->frame_parms.samples_per_tti - rxs);
@@ -1119,6 +1122,9 @@ void *UE_thread(void *arg) {
rxp,
UE->frame_parms.samples_per_tti-UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0,
UE->frame_parms.nb_antennas_rx);
LOG_D(PHY,"grab signal for subframe %d offset %d Nbsamples %d \n", sf, UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0+(sf*UE->frame_parms.samples_per_tti),
UE->frame_parms.samples_per_tti-UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_SF9, 0 );
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_UE0_TRX_READ_NS, rxs );
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_UE0_TRX_READ_NS_MISSING, (UE->frame_parms.samples_per_tti-UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0) - rxs);
@@ -1182,7 +1188,7 @@ void *UE_thread(void *arg) {
return &UE_thread_retval;
}
UE->rx_offset_diff = rx_off_diff;
LOG_E(PHY,"SET rx_off_diff to %d\n",UE->rx_offset_diff);
LOG_D(PHY,"SET rx_off_diff to %d\n",UE->rx_offset_diff);
rx_off_diff = 0;
}
}
@@ -1259,18 +1265,17 @@ void *UE_thread(void *arg) {
(UE->rx_offset > 0) &&
(rx_correction_timer == 0)) {
rx_off_diff = -1 ;
LOG_I(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
rx_correction_timer = 5;
} else if ((UE->rx_offset>(5*UE->frame_parms.samples_per_tti)) &&
(UE->rx_offset < ((10*UE->frame_parms.samples_per_tti))) &&
(rx_correction_timer == 0)) { // moving to the left so drop rx_off_diff samples
rx_off_diff = 1;
LOG_I(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
rx_correction_timer = 5;
}
//rx_off_diff = 0;
if (rx_correction_timer>0)
rx_correction_timer--;
} // start_rx_stream==1