diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index f81e423cd3..8353a7fbaf 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -307,10 +307,12 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint 0) < 0) { perror("ETHERNET read"); read_cnt++; +/* if (read_cnt == 2) { ru->cmd = STOP_RU; return; - } + }*/ + LOG_E(PHY,"if4p5 read_cnt %d\n",read_cnt); } if (ru->idx<=1) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ_IF0+ru->idx, 0 ); if (eth->flags == ETH_RAW_IF4p5_MODE) { diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c index c6915e2004..2f7cd86a7a 100644 --- a/openair1/SCHED/ru_procedures.c +++ b/openair1/SCHED/ru_procedures.c @@ -97,9 +97,10 @@ void feptx0(RU_t *ru,int slot) { fp->nb_prefix_samples, CYCLIC_PREFIX); else { - AssertFatal(ru->generate_dmrs_sync==1 && (fp->frame_type != TDD || ru->is_slave == 1), - "ru->generate_dmrs_sync should not be set, frame_type %d, is_slave %d\n", - fp->frame_type,ru->is_slave); + AssertFatal(ru->generate_dmrs_sync == 0 || + ru->generate_dmrs_sync==1 && (fp->frame_type != TDD || ru->is_slave == 1), + "ru->generate_dmrs_sync should not be set (%d), frame_type %s, is_slave %d\n", + ru->generate_dmrs_sync,(fp->frame_type==1)?"TDD":"FDD",ru->is_slave); if (ru->generate_dmrs_sync == 1 && slot == 0 && subframe == 1 && aa==0) { generate_drs_pusch((PHY_VARS_UE *)NULL, diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 8fdc276def..ff71cd1196 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -2208,10 +2208,11 @@ void init_RU_proc(RU_t *ru) { if ((ru->if_timing == synch_to_other) || (ru->function == NGFI_RRU_IF5) || - (ru->function == NGFI_RRU_IF4p5)) - { - pthread_create( &proc->pthread_asynch_rxtx, attr_asynch, ru_thread_asynch_rxtx, (void*)ru ); - } + (ru->function == NGFI_RRU_IF4p5)) { + LOG_I(PHY,"Starting ru_thread_asynch_rxtx, ru->is_slave %d, ru->generate_dmrs_sync %d\n", + ru->is_slave,ru->generate_dmrs_sync); + pthread_create( &proc->pthread_asynch_rxtx, attr_asynch, ru_thread_asynch_rxtx, (void*)ru ); + } } @@ -2243,7 +2244,7 @@ void init_RU_proc(RU_t *ru) { if (ru->function == eNodeB_3GPP) { usleep(10000); - LOG_I(PHY, "Signaling main thread that RU %d (is_slave %d) is ready in state %s\n",ru->idx,ru->is_slave,ru_states[ru->state]); + LOG_I(PHY, "Signaling main thread that RU %d (is_slave %d,send_dmrs %d) is ready in state %s\n",ru->idx,ru->is_slave,ru->generate_dmrs_sync,ru_states[ru->state]); pthread_mutex_lock(&RC.ru_mutex); RC.ru_mask &= ~(1<idx); pthread_cond_signal(&RC.ru_cond); @@ -2567,7 +2568,15 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti ru->rf_config_file = rf_config_file; ru->idx = ru_id; ru->ts_offset = 0; - ru->in_synch = (ru->is_slave == 1) ? 0 : 1; + if (ru->is_slave == 1) { + ru->in_synch = 0; + ru->dmrssync = 0; + } + else { + ru->in_synch = 1; + ru->dmrssync = 0; + ru->generate_dmrs_sync=send_dmrssync; + } ru->cmd = EMPTY; // use eNB_list[0] as a reference for RU frame parameters // NOTE: multiple CC_id are not handled here yet! @@ -2598,7 +2607,7 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti // LOG_I(PHY,"Initializing RRU descriptor %d : (%s,%s,%d)\n",ru_id,ru_if_types[ru->if_south],eNB_timing[ru->if_timing],ru->function); set_function_spec_param(ru); - LOG_I(PHY,"Starting ru_thread %d\n",ru_id); + LOG_I(PHY,"Starting ru_thread %d, is_slave %d, send_dmrs %d\n",ru_id,ru->is_slave,ru->dmrssync); init_RU_proc(ru); diff --git a/targets/RT/USER/rru_if4p5_usrp.gtkw b/targets/RT/USER/rru_if4p5_usrp.gtkw index 93bac49812..244d464d94 100644 --- a/targets/RT/USER/rru_if4p5_usrp.gtkw +++ b/targets/RT/USER/rru_if4p5_usrp.gtkw @@ -1,16 +1,16 @@ [*] -[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI -[*] Tue Jun 5 09:36:17 2018 +[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI +[*] Fri Aug 24 12:15:17 2018 [*] -[dumpfile] "/tmp/openair_dump_UE.vcd" -[dumpfile_mtime] "Tue Jun 5 09:22:52 2018" -[dumpfile_size] 23057775 -[savefile] "/home/knopp/oai/openairinterface5g/targets/RT/USER/rru_if4p5_usrp.gtkw" -[timestart] 25050480000 +[dumpfile] "/tmp/openair_rru_dump.vcd" +[dumpfile_mtime] "Fri Aug 24 12:10:15 2018" +[dumpfile_size] 27839039 +[savefile] "/home/libra/oai/openairinterface5g/targets/RT/USER/rru_if4p5_usrp.gtkw" +[timestart] 10300310000 [size] 1301 716 [pos] 309 0 -*-21.793451 29983948856 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -[sst_width] 312 +*-23.793451 29983948856 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +[sst_width] 391 [signals_width] 262 [sst_expanded] 1 [sst_vpaned_height] 294 @@ -20,9 +20,11 @@ functions.trx_write @24 variables.trx_write_flags[63:0] @28 -functions.trx_write_if functions.send_if4 -functions.trx_read_if +@29 +functions.phy_procedures_ru_feprx0 +@28 +functions.phy_procedures_ru_feptx_ofdm0 functions.recv_if4 @24 variables.trx_ts[63:0] @@ -30,7 +32,6 @@ variables.trx_tst[63:0] variables.frame_number_RX0_RU[63:0] variables.subframe_number_RX0_RU[63:0] variables.frame_number_TX0_RU[63:0] -@25 variables.subframe_number_TX0_RU[63:0] [pattern_trace] 1 [pattern_trace] 0