From 4fdbfc31eec795be73177bf4fae99cf7c87d2212 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han <wangts@eurecom.fr> Date: Wed, 16 May 2018 16:18:50 +0200 Subject: [PATCH] adding timing check for emulate-rf --- openair1/PHY/defs.h | 1 + targets/RT/USER/lte-enb.c | 1 + targets/RT/USER/lte-ru.c | 9 ++++++++- targets/RT/USER/lte-softmodem.c | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h index bcbcca9ab3..c53303d7e1 100644 --- a/openair1/PHY/defs.h +++ b/openair1/PHY/defs.h @@ -463,6 +463,7 @@ typedef struct RU_proc_t_s { /// pipeline ready state int ru_rx_ready; int ru_tx_ready; + int emulate_rf_busy; } RU_proc_t; /// Context data structure for eNB subframe processing diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index e71ef56bfc..884366374c 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -644,6 +644,7 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB,RU_t *ru) { } pthread_mutex_unlock( &proc_rxtx0->mutex_rxtx ); + ru_proc->emulate_rf_busy = 0; return(0); } diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index ffccb9774f..568a01b9b3 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -122,6 +122,7 @@ extern volatile int oai_exit; extern int emulate_rf; extern int numerology; extern int fepw; +extern int single_thread_flag; extern void phy_init_RU(RU_t*); @@ -703,6 +704,11 @@ static void* emulatedRF_thread(void* param) { wait_sync("emulatedRF_thread"); while(!oai_exit){ nanosleep(&req, (struct timespec *)NULL); + if(proc->emulate_rf_busy ) + { + LOG_E(PHY,"rf being delayed in emulated RF\n"); + } + proc->emulate_rf_busy = 1; pthread_mutex_lock(&proc->mutex_emulateRF); ++proc->instance_cnt_emulateRF; pthread_mutex_unlock(&proc->mutex_emulateRF); @@ -1652,7 +1658,7 @@ static void* ru_thread( void* param ) { // wakeup all eNB processes waiting for this RU if (ru->num_eNB>0) wakeup_eNBs(ru); - if(get_nprocs() <= 4){ + if(get_nprocs() <= 4 || single_thread_flag){ // do TX front-end processing if needed (precoding and/or IDFTs) if (ru->feptx_prec) ru->feptx_prec(ru); @@ -1664,6 +1670,7 @@ static void* ru_thread( void* param ) { if (ru->fh_north_out) ru->fh_north_out(ru); } + proc->emulate_rf_busy = 0; } } diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 90d68349f1..e5ce85a2dd 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -218,7 +218,7 @@ extern void init_eNB_afterRU(void); int transmission_mode=1; int emulate_rf = 0; -int numerology = 0; +int numerology = 2; int codingw = 0; int fepw = 0; -- GitLab