Commit 6a4abf14 authored by Raymond Knopp's avatar Raymond Knopp

modifications to default configuration files for oaisim and some minor chanes...

modifications to default configuration files for oaisim and some minor chanes to lte-ru.c for simulator target
parent bc0ae0fc
...@@ -193,6 +193,7 @@ RUs = ( ...@@ -193,6 +193,7 @@ RUs = (
att_tx = 0 att_tx = 0
att_rx = 0; att_rx = 0;
eNB_instances = [0]; eNB_instances = [0];
is_slave = "no";
} }
); );
......
...@@ -14,6 +14,7 @@ RUs = ( ...@@ -14,6 +14,7 @@ RUs = (
max_pdschReferenceSignalPower = -29; max_pdschReferenceSignalPower = -29;
max_rxgain = 120; max_rxgain = 120;
bands = [7,13]; bands = [7,13];
is_slave = "no";
} }
); );
......
...@@ -462,7 +462,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) { ...@@ -462,7 +462,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
AssertFatal(proc->symbol_mask[*subframe]==0,"rx_fh_if4p5: proc->symbol_mask[%d] = %x\n",*subframe,proc->symbol_mask[*subframe]); AssertFatal(proc->symbol_mask[*subframe]==0,"rx_fh_if4p5: proc->symbol_mask[%d] = %x\n",*subframe,proc->symbol_mask[*subframe]);
do { do {
recv_IF4p5(ru, &f, &sf, &packet_type, &symbol_number); recv_IF4p5(ru, &f, &sf, &packet_type, &symbol_number);
if (oai_exit == 1) break; if (oai_exit == 1 || ru->cmd== STOP_RU) break;
if (packet_type == IF4p5_PULFFT) proc->symbol_mask[sf] = proc->symbol_mask[sf] | (1<<symbol_number); if (packet_type == IF4p5_PULFFT) proc->symbol_mask[sf] = proc->symbol_mask[sf] | (1<<symbol_number);
else if (packet_type == IF4p5_PULTICK) { else if (packet_type == IF4p5_PULTICK) {
if ((proc->first_rx==0) && (f!=*frame)) LOG_E(PHY,"rx_fh_if4p5: PULTICK received frame %d != expected %d\n",f,*frame); if ((proc->first_rx==0) && (f!=*frame)) LOG_E(PHY,"rx_fh_if4p5: PULTICK received frame %d != expected %d\n",f,*frame);
...@@ -511,8 +511,8 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) { ...@@ -511,8 +511,8 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
proc->symbol_mask[sf] = 0; proc->symbol_mask[sf] = 0;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff );
LOG_D(PHY,"RU %d: fh_if4p5_south_in sleeping ...\n",ru->idx); LOG_D(PHY,"RU %d: fh_if4p5_south_in returning ...\n",ru->idx);
usleep(100); // usleep(100);
} }
// Dummy FH from south for getting synchronization from master RU // Dummy FH from south for getting synchronization from master RU
...@@ -1281,7 +1281,7 @@ void wakeup_eNBs(RU_t *ru) { ...@@ -1281,7 +1281,7 @@ void wakeup_eNBs(RU_t *ru) {
sprintf(string,"Incoming RU %d",ru->idx); sprintf(string,"Incoming RU %d",ru->idx);
pthread_mutex_lock(&proc->mutex_RU); pthread_mutex_lock(&proc->mutex_RU);
LOG_I(PHY,"Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x\n", LOG_D(PHY,"Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x\n",
ru->proc.frame_rx,ru->proc.subframe_rx,ru->idx,ru->wait_cnt,ru->proc.subframe_rx,proc->RU_mask[ru->proc.subframe_rx]); ru->proc.frame_rx,ru->proc.subframe_rx,ru->idx,ru->wait_cnt,ru->proc.subframe_rx,proc->RU_mask[ru->proc.subframe_rx]);
if (proc->RU_mask[ru->proc.subframe_rx] == 0) if (proc->RU_mask[ru->proc.subframe_rx] == 0)
...@@ -1306,7 +1306,7 @@ void wakeup_eNBs(RU_t *ru) { ...@@ -1306,7 +1306,7 @@ void wakeup_eNBs(RU_t *ru) {
} }
pthread_mutex_unlock(&proc->mutex_RU); pthread_mutex_unlock(&proc->mutex_RU);
LOG_I(PHY,"wakeup eNB top for for subframe %d\n", ru->proc.subframe_rx); LOG_D(PHY,"wakeup eNB top for for subframe %d\n", ru->proc.subframe_rx);
ru->eNB_top(eNB_list[0],ru->proc.frame_rx,ru->proc.subframe_rx,string); ru->eNB_top(eNB_list[0],ru->proc.frame_rx,ru->proc.subframe_rx,string);
} }
else { // multiple eNB case for later else { // multiple eNB case for later
...@@ -1820,7 +1820,7 @@ static void* ru_thread( void* param ) { ...@@ -1820,7 +1820,7 @@ static void* ru_thread( void* param ) {
while (!oai_exit) { while (!oai_exit) {
if (ru->if_south != LOCAL_RF) ru->wait_cnt = 100; if (ru->if_south != LOCAL_RF && ru->is_slave==1) ru->wait_cnt = 100;
else ru->wait_cnt = 0; else ru->wait_cnt = 0;
// wait to be woken up // wait to be woken up
...@@ -1840,7 +1840,8 @@ static void* ru_thread( void* param ) { ...@@ -1840,7 +1840,8 @@ static void* ru_thread( void* param ) {
// if an asnych_rxtx thread exists // if an asnych_rxtx thread exists
// wakeup the thread because the devices are ready at this point // wakeup the thread because the devices are ready at this point
LOG_I(PHY,"Locking asynch mutex\n");
if ((ru->fh_south_asynch_in)||(ru->fh_north_asynch_in)) { if ((ru->fh_south_asynch_in)||(ru->fh_north_asynch_in)) {
pthread_mutex_lock(&proc->mutex_asynch_rxtx); pthread_mutex_lock(&proc->mutex_asynch_rxtx);
proc->instance_cnt_asynch_rxtx=0; proc->instance_cnt_asynch_rxtx=0;
...@@ -1853,7 +1854,7 @@ static void* ru_thread( void* param ) { ...@@ -1853,7 +1854,7 @@ static void* ru_thread( void* param ) {
if ((ru->is_slave == 1) && (ru->if_south == LOCAL_RF)) do_ru_synch(ru); if ((ru->is_slave == 1) && (ru->if_south == LOCAL_RF)) do_ru_synch(ru);
LOG_I(PHY,"Starting steady-state operation\n");
// This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices // This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
while (ru->state == RU_RUN) { while (ru->state == RU_RUN) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment