Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop
This commit is contained in:
+40
-11
@@ -860,8 +860,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)
|
||||
|
||||
/*!
|
||||
@@ -1037,6 +1037,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++;
|
||||
@@ -1083,6 +1084,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);
|
||||
@@ -1123,6 +1126,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);
|
||||
@@ -1156,18 +1162,37 @@ void *UE_thread(void *arg) {
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_SF9, 1 );
|
||||
// read in first symbol of next frame and adjust for timing drift
|
||||
for (i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||
{
|
||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][0];
|
||||
}
|
||||
|
||||
rxs = UE->rfdevice.trx_read_func(&UE->rfdevice,
|
||||
×tamp1,
|
||||
(void**)UE->common_vars.rxdata,
|
||||
UE->frame_parms.ofdm_symbol_size + UE->frame_parms.nb_prefix_samples0 - rx_off_diff,
|
||||
rxp,
|
||||
UE->frame_parms.nb_prefix_samples0 - rx_off_diff,
|
||||
UE->frame_parms.nb_antennas_rx);
|
||||
|
||||
for (i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||
{
|
||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.nb_prefix_samples0];
|
||||
}
|
||||
|
||||
rxs = UE->rfdevice.trx_read_func(&UE->rfdevice,
|
||||
×tamp1,
|
||||
rxp,
|
||||
UE->frame_parms.ofdm_symbol_size,
|
||||
UE->frame_parms.nb_antennas_rx);
|
||||
|
||||
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 );
|
||||
if (rxs != (UE->frame_parms.ofdm_symbol_size + UE->frame_parms.nb_prefix_samples0 - rx_off_diff)) {
|
||||
if (rxs != (UE->frame_parms.ofdm_symbol_size)) {
|
||||
LOG_E(PHY, "problem in rx 7! expect #samples=%d but got only %d! rx_off_diff=%d\n", UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0 - rx_off_diff, rxs, rx_off_diff);
|
||||
exit_fun("problem in rx 7!");
|
||||
return &UE_thread_retval;
|
||||
}
|
||||
UE->rx_offset_diff = rx_off_diff;
|
||||
LOG_D(PHY,"SET rx_off_diff to %d\n",UE->rx_offset_diff);
|
||||
rx_off_diff = 0;
|
||||
}
|
||||
}
|
||||
@@ -1236,17 +1261,21 @@ void *UE_thread(void *arg) {
|
||||
getchar();
|
||||
}
|
||||
}// for sf=0..10
|
||||
|
||||
uint8_t proc_select = 9&1;
|
||||
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[proc_select];
|
||||
|
||||
if ((UE->rx_offset<(5*UE->frame_parms.samples_per_tti)) &&
|
||||
(UE->rx_offset > RX_OFF_MIN) &&
|
||||
(UE->rx_offset > 0) &&
|
||||
(rx_correction_timer == 0)) {
|
||||
rx_off_diff = -UE->rx_offset + RX_OFF_MIN;
|
||||
LOG_D(PHY,"UE->rx_offset %d > %d, diff %d\n",UE->rx_offset,RX_OFF_MIN,rx_off_diff);
|
||||
rx_off_diff = -1 ;
|
||||
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_OFF_MIN)) &&
|
||||
(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 = 10*UE->frame_parms.samples_per_tti - RX_OFF_MIN - UE->rx_offset;
|
||||
LOG_D(PHY,"UE->rx_offset %d < %d, diff %d\n",UE->rx_offset,10*UE->frame_parms.samples_per_tti-RX_OFF_MIN,rx_off_diff);
|
||||
rx_off_diff = 1;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
|
||||
//dlsch_abstraction(PHY_vars_UE_g[UE_id]->sinr_dB, rb_alloc, 8);
|
||||
// fill in perfect channel estimates
|
||||
channel_desc_t *desc1 = eNB2UE[att_eNB_id][UE_id][CC_id];
|
||||
int32_t **dl_channel_est = PHY_vars_UE_g[UE_id][CC_id]->common_vars.dl_ch_estimates[0];
|
||||
int32_t **dl_channel_est = PHY_vars_UE_g[UE_id][CC_id]->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0];
|
||||
// double scale = pow(10.0,(enb_data[att_eNB_id]->tx_power_dBm + eNB2UE[att_eNB_id][UE_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id]->rx_total_gain_dB)/20.0);
|
||||
double scale = pow(10.0,(frame_parms->pdsch_config_common.referenceSignalPower+eNB2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB)/20.0);
|
||||
LOG_D(OCM,"scale =%lf (%d dB)\n",scale,(int) (20*log10(scale)));
|
||||
|
||||
@@ -1043,19 +1043,19 @@ l2l1_task (void *args_p)
|
||||
|
||||
write_output ("dlchan0.m",
|
||||
"dlch0",
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.dl_ch_estimates[0][0][0]),
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[0][0][0]),
|
||||
(6
|
||||
* (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
|
||||
1, 1);
|
||||
write_output ("dlchan1.m",
|
||||
"dlch1",
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.dl_ch_estimates[1][0][0]),
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[1][0][0]),
|
||||
(6
|
||||
* (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
|
||||
1, 1);
|
||||
write_output ("dlchan2.m",
|
||||
"dlch2",
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.dl_ch_estimates[2][0][0]),
|
||||
&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[2][0][0]),
|
||||
(6
|
||||
* (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
|
||||
1, 1);
|
||||
|
||||
@@ -859,13 +859,13 @@ void run(int argc, char *argv[])
|
||||
&& (abstraction_flag == 0) && (oai_emulation.info.n_frames == 1)) {
|
||||
|
||||
write_output ("dlchan0.m", "dlch0",
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][0][0]),
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),
|
||||
(6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
|
||||
write_output ("dlchan1.m", "dlch1",
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[1][0][0]),
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[1][0][0]),
|
||||
(6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
|
||||
write_output ("dlchan2.m", "dlch2",
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[2][0][0]),
|
||||
&(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[2][0][0]),
|
||||
(6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
|
||||
write_output ("pbch_rxF_comp0.m", "pbch_comp0",
|
||||
PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0], 6 * 12 * 4, 1, 1);
|
||||
|
||||
Reference in New Issue
Block a user