diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 180d6d5e16..ad5807ba65 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -230,6 +230,8 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type) { int16_t *rxF; + for (int antenna_id=0;antenna_idnb_rx;antenna_id++) { + #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) if (packet_type > IF4p5_PRACH) rxF = &prach_rxsigF_br[packet_type - IF4p5_PRACH - 1][0][0]; diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index 16c3fc55aa..f244ea1775 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -477,6 +477,7 @@ void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string,RU_t int wakeup_txfh(L1_rxtx_proc_t *proc,PHY_VARS_eNB *eNB) { RU_t *ru; RU_proc_t *ru_proc; + LTE_DL_FRAME_PARMS *fp = &ru->frame_parms; struct timespec wait; @@ -894,7 +895,7 @@ void init_eNB_proc(int inst) { proc->first_rx =1; proc->first_tx =1; proc->RU_mask_tx = (1<num_RU)-1; - proc->RU_mask =0; + memset((void*)proc->RU_mask,0,10*sizeof(proc->RU_mask[0])); proc->RU_mask_prach =0; pthread_mutex_init( &eNB->UL_INFO_mutex, NULL); diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 0286ce74e6..065cdbcfd1 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -69,6 +69,7 @@ #include "PHY/LTE_TRANSPORT/if4_tools.h" #include "PHY/LTE_TRANSPORT/if5_tools.h" +#include "PHY/LTE_REFSIG/lte_refsig.h" #include "PHY/phy_extern.h" #include "LAYER2/MAC/mac_extern.h" @@ -1543,7 +1544,6 @@ static void* ru_thread_tx( void* param ) { eNB_proc = &eNB->proc; L1_proc = (get_thread_parallel_conf() == PARALLEL_RU_L1_TRX_SPLIT)? &eNB_proc->L1_proc_tx : &eNB_proc->L1_proc; - char *L1_proc_name = (get_thread_parallel_conf() == PARALLEL_RU_L1_TRX_SPLIT)? "L1_proc_tx" : "L1_proc"; pthread_mutex_lock(&eNB_proc->mutex_RU_tx); for (int j=0;jnum_RU;j++) { if (ru == eNB->RU_list[j]) { @@ -1584,7 +1584,6 @@ static void* ru_thread( void* param ) { int subframe =9; int frame =1023; int resynch_done = 0; - PHY_VARS_eNB **eNB_list = ru->eNB_list; cpu_set_t cpuset; CPU_ZERO(&cpuset); @@ -1865,7 +1864,8 @@ static void* ru_thread( void* param ) { } #endif } // else wait_cnt == 0 - } // ru->state = RU_RU + } // ru->state = RU_RUN + } } // while !oai_exit printf( "Exiting ru_thread \n"); @@ -1888,7 +1888,6 @@ void *ru_thread_synch(void *arg) { RU_t *ru = (RU_t*)arg; LTE_DL_FRAME_PARMS *fp=&ru->frame_parms; - int32_t sync_pos,sync_pos2; int64_t peak_val; int64_t avg; static int ru_thread_synch_status=0; @@ -2171,7 +2170,6 @@ void init_RU_proc(RU_t *ru) { #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) pthread_attr_t *attr_prach_br=NULL; #endif - char name[100]; #ifndef OCP_FRAMEWORK LOG_I(PHY,"Initializing RU proc %d (%s,%s),\n",ru->idx,eNB_functions[ru->function],eNB_timing[ru->if_timing]); diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 58ccfcace2..991a65aa19 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -910,7 +910,7 @@ if (nfapi_mode==2) {// VNF // some initialization is necessary and init_ru_vnf do this. if (RC.nb_RU >0 && nfapi_mode != 2) { printf("Initializing RU threads\n"); - init_RU(get_softmodem_params()->rf_config_file,get_softmodem_params()->clock_source,get_softmodem_params()->send_dmrssync); + init_RU(get_softmodem_params()->rf_config_file,get_softmodem_params()->clock_source,get_softmodem_params()->timing_source,get_softmodem_params()->send_dmrs_sync); for (ru_id=0;ru_idrf_map.card=0; RC.ru[ru_id]->rf_map.chain=CC_id+(get_softmodem_params()->chain_offset); diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h index 103a8bfe78..a2d2b4174c 100644 --- a/targets/RT/USER/lte-softmodem.h +++ b/targets/RT/USER/lte-softmodem.h @@ -68,6 +68,7 @@ #define CONFIG_HLP_EXTS "tells hardware to use an external timing reference\n" #define CONFIG_HLP_DMRSSYNC "tells RU to insert DMRS in subframe 1 slot 0" #define CONFIG_HLP_CLK "tells hardware to use a clock reference (0:internal, 1:external, 2:gpsdo)\n" +#define CONFIG_HLP_TIMING "tells hardware to use an external PPS reference\n" #define CONFIG_HLP_USIM "use XOR autentication algo in case of test usim mode\n" #define CONFIG_HLP_NOSNGLT "Disables single-thread mode in lte-softmodem\n" #define CONFIG_HLP_TADV "Set timing_advance\n" @@ -192,6 +193,8 @@ #define NUMEROLOGY softmodem_params.numerology #define EMULATE_RF softmodem_params.emulate_rf #define CLOCK_SOURCE softmodem_params.clock_source +#define TIMING_SOURCE softmodem_params.timing_source +#define SEND_DMRSSYNC softmodem_params.send_dmrs_sync #define USIM_TEST softmodem_params.usim_test #define CMDLINE_PARAMS_DESC { \ {"rf-config-file", CONFIG_HLP_RFCFGF, 0, strptr:(char **)&RF_CONFIG_FILE, defstrval:NULL, TYPE_STRING, sizeof(RF_CONFIG_FILE)}, \ @@ -200,6 +203,8 @@ {"usim-test", CONFIG_HLP_USIM, PARAMFLAG_BOOL, u8ptr:&USIM_TEST, defintval:0, TYPE_UINT8, 0}, \ {"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&EMULATE_RF, defintval:0, TYPE_INT, 0}, \ {"clock", CONFIG_HLP_CLK, 0, uptr:&CLOCK_SOURCE, defintval:0, TYPE_UINT, 0}, \ +{"timing", CONFIG_HLP_TIMING, 0, uptr:&TIMING_SOURCE, defintval:0, TYPE_UINT, 0}, \ +{"clock", CONFIG_HLP_DMRSSYNC, 0, uptr:&SEND_DMRSSYNC, defintval:0, TYPE_UINT, 0}, \ {"wait-for-sync", NULL, PARAMFLAG_BOOL, iptr:&WAIT_FOR_SYNC, defintval:0, TYPE_INT, 0}, \ {"single-thread-enable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&SINGLE_THREAD_FLAG, defintval:0, TYPE_INT, 0}, \ {"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:2680000000, TYPE_UINT, 0}, \ @@ -259,7 +264,9 @@ typedef struct { unsigned int start_msc; int nonbiotflag; uint32_t clock_source; + uint32_t timing_source; int hw_timing_advance; + uint32_t send_dmrs_sync; } softmodem_params_t; #define SOFTMODEM_NOS1 ( get_softmodem_optmask() & SOFTMODEM_NOS1_BIT) @@ -308,7 +315,7 @@ extern void kill_eNB_proc(int inst); // In lte-ru.c -extern void init_RU(const char*,clock_source_t clock_source,clock_source_t time_source,int send_dmrssync); +extern void init_RU(char*,clock_source_t clock_source,clock_source_t time_source,int send_dmrssync); extern void stop_ru(RU_t *ru); extern void init_ru_vnf(void); extern void init_RU_proc(RU_t *ru);