nr-uesoftmodem: moving phy_procedures_nrUE into main thread when --loop-memory is used.
This commit is contained in:
@@ -5913,8 +5913,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//nr_gold_pdcch(ue,0, 2);
|
//nr_gold_pdcch(ue,0, 2);
|
||||||
/*
|
|
||||||
for (l=0; l<2; l++) {
|
for (int l=0; l<2; l++) {
|
||||||
if (abstraction_flag == 0) {
|
if (abstraction_flag == 0) {
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->ofdm_demod_stats);
|
start_meas(&ue->ofdm_demod_stats);
|
||||||
@@ -5933,7 +5933,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
stop_meas(&ue->ofdm_demod_stats);
|
stop_meas(&ue->ofdm_demod_stats);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
//ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
//ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
||||||
|
|
||||||
//if (do_pdcch_flag) {
|
//if (do_pdcch_flag) {
|
||||||
|
|||||||
+44
-13
@@ -956,7 +956,7 @@ void *UE_thread(void *arg) {
|
|||||||
#if BASIC_SIMULATOR
|
#if BASIC_SIMULATOR
|
||||||
{
|
{
|
||||||
int t;
|
int t;
|
||||||
for (t = 0; t < 2; t++) {
|
for (t = 0; t < RX_NB_TH; t++) {
|
||||||
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[t];
|
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[t];
|
||||||
pthread_mutex_lock(&proc->mutex_rxtx);
|
pthread_mutex_lock(&proc->mutex_rxtx);
|
||||||
while (proc->instance_cnt_rxtx >= 0) pthread_cond_wait( &proc->cond_rxtx, &proc->mutex_rxtx );
|
while (proc->instance_cnt_rxtx >= 0) pthread_cond_wait( &proc->cond_rxtx, &proc->mutex_rxtx );
|
||||||
@@ -964,13 +964,13 @@ void *UE_thread(void *arg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LOG_D(PHY,"Process subframe %d thread Idx %d \n", subframe_nr, UE->current_thread_id[subframe_nr]);
|
LOG_D(PHY,"Process subframe %d thread Idx %d \n", subframe_nr, UE->current_thread_id[subframe_nr]);
|
||||||
|
|
||||||
thread_idx++;
|
thread_idx++;
|
||||||
if(thread_idx>=RX_NB_TH)
|
if(thread_idx>=RX_NB_TH)
|
||||||
thread_idx = 0;
|
thread_idx = 0;
|
||||||
|
|
||||||
|
|
||||||
if (UE->mode != loop_through_memory) {
|
if (UE->mode != loop_through_memory) {
|
||||||
for (i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
for (i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.ofdm_symbol_size+
|
rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.ofdm_symbol_size+
|
||||||
@@ -1033,9 +1033,6 @@ void *UE_thread(void *arg) {
|
|||||||
if ( first_symbols <0 )
|
if ( first_symbols <0 )
|
||||||
LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols);
|
LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols);
|
||||||
}
|
}
|
||||||
} //UE->mode != loop_through_memory
|
|
||||||
else
|
|
||||||
rt_sleep_ns(1000*1000);
|
|
||||||
|
|
||||||
pickTime(gotIQs);
|
pickTime(gotIQs);
|
||||||
// operate on thread sf mod 2
|
// operate on thread sf mod 2
|
||||||
@@ -1047,13 +1044,13 @@ void *UE_thread(void *arg) {
|
|||||||
UE->proc.proc_rxtx[th_id].frame_rx++;
|
UE->proc.proc_rxtx[th_id].frame_rx++;
|
||||||
}
|
}
|
||||||
#ifdef SAIF_ENABLED
|
#ifdef SAIF_ENABLED
|
||||||
if (!(proc->frame_rx%4000))
|
if (!(proc->frame_rx%4000))
|
||||||
{
|
{
|
||||||
printf("frame_rx=%d rx_thread_busy=%ld - rate %8.3f\n",
|
printf("frame_rx=%d rx_thread_busy=%ld - rate %8.3f\n",
|
||||||
proc->frame_rx, g_ue_rx_thread_busy,
|
proc->frame_rx, g_ue_rx_thread_busy,
|
||||||
(float)g_ue_rx_thread_busy/(proc->frame_rx*10+1)*100.0);
|
(float)g_ue_rx_thread_busy/(proc->frame_rx*10+1)*100.0);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//UE->proc.proc_rxtx[0].gotIQs=readTime(gotIQs);
|
//UE->proc.proc_rxtx[0].gotIQs=readTime(gotIQs);
|
||||||
@@ -1071,7 +1068,7 @@ void *UE_thread(void *arg) {
|
|||||||
proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER;
|
proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER;
|
||||||
proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME;
|
proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME;
|
||||||
}
|
}
|
||||||
proc->subframe_tx=subframe_nr + DURATION_RX_TO_TX;
|
proc->subframe_tx=proc->nr_tti_rx;
|
||||||
proc->timestamp_tx = timestamp+
|
proc->timestamp_tx = timestamp+
|
||||||
(DURATION_RX_TO_TX*UE->frame_parms.samples_per_subframe)-
|
(DURATION_RX_TO_TX*UE->frame_parms.samples_per_subframe)-
|
||||||
UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0;
|
UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0;
|
||||||
@@ -1107,7 +1104,41 @@ void *UE_thread(void *arg) {
|
|||||||
// initStaticTime(lastTime);
|
// initStaticTime(lastTime);
|
||||||
// updateTimes(lastTime, &t1, 20000, "Delay between two IQ acquisitions (case 1)");
|
// updateTimes(lastTime, &t1, 20000, "Delay between two IQ acquisitions (case 1)");
|
||||||
// pickStaticTime(lastTime);
|
// pickStaticTime(lastTime);
|
||||||
|
} //UE->mode != loop_through_memory
|
||||||
|
else {
|
||||||
|
proc->nr_tti_rx=subframe_nr;
|
||||||
|
proc->subframe_rx=subframe_nr;
|
||||||
|
if(subframe_nr == 0) {
|
||||||
|
for (th_id=0; th_id < RX_NB_TH; th_id++) {
|
||||||
|
UE->proc.proc_rxtx[th_id].frame_rx++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
proc->frame_tx = proc->frame_rx;
|
||||||
|
proc->nr_tti_tx= subframe_nr + DURATION_RX_TO_TX;
|
||||||
|
if (proc->nr_tti_tx > NR_NUMBER_OF_SUBFRAMES_PER_FRAME) {
|
||||||
|
proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER;
|
||||||
|
proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME;
|
||||||
|
}
|
||||||
|
proc->subframe_tx=proc->nr_tti_tx;
|
||||||
|
|
||||||
|
printf("Processing subframe %d\n",proc->subframe_rx);
|
||||||
|
|
||||||
|
if(UE->if_inst != NULL && UE->if_inst->ul_indication != NULL){
|
||||||
|
UE->ul_indication.module_id = 0;
|
||||||
|
UE->ul_indication.gNB_index = 0;
|
||||||
|
UE->ul_indication.cc_id = 0;
|
||||||
|
UE->ul_indication.slot = 0; // to be fill
|
||||||
|
UE->ul_indication.frame = 0; // to be fill
|
||||||
|
// [TODO] mapping right after NR initial sync
|
||||||
|
UE->ul_indication.frame = proc->frame_rx;
|
||||||
|
UE->ul_indication.slot = proc->nr_tti_rx;
|
||||||
|
|
||||||
|
UE->if_inst->ul_indication(&UE->ul_indication);
|
||||||
|
}
|
||||||
|
|
||||||
|
phy_procedures_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay);
|
||||||
|
getchar();
|
||||||
|
} // else loop_through_memory
|
||||||
} // start_rx_stream==1
|
} // start_rx_stream==1
|
||||||
} // UE->is_synchronized==1
|
} // UE->is_synchronized==1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user