added node fn RRU_IF5, split points and vcd logging
This commit is contained in:
+4
-3
@@ -158,10 +158,11 @@ enum transmission_access_mode {
|
|||||||
CBA_ACCESS};
|
CBA_ACCESS};
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
eNodeB_3GPP=0, // classical eNodeB function
|
eNodeB_3GPP=0, // classical eNodeB function
|
||||||
eNodeB_3GPP_BBU, // eNodeB with NGFI IF5
|
eNodeB_3GPP_BBU, // eNodeB with NGFI IF5
|
||||||
NGFI_RRU_IF4, // NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4)
|
NGFI_RRU_IF5, // NGFI_RRU with IF5
|
||||||
NGFI_RCC_IF4 // NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4)
|
NGFI_RRU_IF4, // NGFI_RRU (NGFI remote radio-unit, currently split at common - ue_specific interface, IF4)
|
||||||
|
NGFI_RCC_IF4 // NGFI_RCC (NGFI radio cloud center, currently split at common - ue_specific interface, IF4)
|
||||||
} eNB_func_t;
|
} eNB_func_t;
|
||||||
|
|
||||||
typedef struct UE_SCAN_INFO_s {
|
typedef struct UE_SCAN_INFO_s {
|
||||||
|
|||||||
@@ -2546,7 +2546,8 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
|||||||
|
|
||||||
if (abstraction_flag==0) { // grab signal in chunks of 500 us (1 slot)
|
if (abstraction_flag==0) { // grab signal in chunks of 500 us (1 slot)
|
||||||
|
|
||||||
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
||||||
|
(eNB->node_function == NGFI_RRU_IF5) ||
|
||||||
(eNB->node_function == eNodeB_3GPP)) { // acquisition from RF
|
(eNB->node_function == eNodeB_3GPP)) { // acquisition from RF
|
||||||
|
|
||||||
for (i=0; i<fp->nb_antennas_rx; i++)
|
for (i=0; i<fp->nb_antennas_rx; i++)
|
||||||
@@ -2586,7 +2587,11 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
|||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ, 0 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ, 0 );
|
||||||
|
|
||||||
} else if(eNB->node_function == eNodeB_3GPP_BBU) { // acquisition from IF
|
} else if(eNB->node_function == eNodeB_3GPP_BBU) { // acquisition from IF
|
||||||
/// **** trx_read_func from IF device **** ///
|
/// **** recv_IF5 of rxdata from RRH **** ///
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5, 1 );
|
||||||
|
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5, 0 );
|
||||||
|
|
||||||
nanosleep(&time_req, &time_rem);
|
nanosleep(&time_req, &time_rem);
|
||||||
|
|
||||||
proc->timestamp_rx += fp->samples_per_tti;
|
proc->timestamp_rx += fp->samples_per_tti;
|
||||||
@@ -2598,7 +2603,14 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
|||||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx );
|
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx );
|
||||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx );
|
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (eNB->node_function == NGFI_RRU_IF5) {
|
||||||
|
/// **** send_IF5 of rxdata to BBU **** ///
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5, 1 );
|
||||||
|
//send_IF5(eNB, proc, );
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5, 0 );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
||||||
(eNB->node_function == eNodeB_3GPP) ||
|
(eNB->node_function == eNodeB_3GPP) ||
|
||||||
|
|||||||
@@ -331,9 +331,11 @@ const char* eurecomFunctionsNames[] = {
|
|||||||
"itti_relay_thread",
|
"itti_relay_thread",
|
||||||
"test",
|
"test",
|
||||||
|
|
||||||
/* IF4 signals */
|
/* IF4/IF5 signals */
|
||||||
"send_if4",
|
"send_if4",
|
||||||
"recv_if4"
|
"recv_if4",
|
||||||
|
"send_if5",
|
||||||
|
"recv_if5"
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vcd_module_s vcd_modules[VCD_SIGNAL_DUMPER_MODULE_END] = {
|
struct vcd_module_s vcd_modules[VCD_SIGNAL_DUMPER_MODULE_END] = {
|
||||||
|
|||||||
@@ -308,10 +308,12 @@ typedef enum {
|
|||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_ITTI_RELAY_THREAD,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_ITTI_RELAY_THREAD,
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_TEST,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_TEST,
|
||||||
|
|
||||||
/* IF4 signals */
|
/* IF4/IF5 signals */
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4,
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4,
|
||||||
|
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5,
|
||||||
|
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5,
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_LAST,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_LAST,
|
||||||
VCD_SIGNAL_DUMPER_FUNCTIONS_END = VCD_SIGNAL_DUMPER_FUNCTIONS_LAST,
|
VCD_SIGNAL_DUMPER_FUNCTIONS_END = VCD_SIGNAL_DUMPER_FUNCTIONS_LAST,
|
||||||
} vcd_signal_dump_functions;
|
} vcd_signal_dump_functions;
|
||||||
|
|||||||
@@ -436,7 +436,9 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
if (oai_exit) break;
|
if (oai_exit) break;
|
||||||
|
|
||||||
// UE-specific RX processing for subframe n
|
// UE-specific RX processing for subframe n
|
||||||
if (PHY_vars_eNB_g[0][proc->CC_id]->node_function != NGFI_RRU_IF4) {
|
if ((PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RCC_IF4)) {
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 1 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 1 );
|
||||||
// this is the ue-specific processing for the subframe and can be multi-threaded later
|
// this is the ue-specific processing for the subframe and can be multi-threaded later
|
||||||
phy_procedures_eNB_uespec_RX(PHY_vars_eNB_g[0][proc->CC_id], proc, 0, no_relay );
|
phy_procedures_eNB_uespec_RX(PHY_vars_eNB_g[0][proc->CC_id], proc, 0, no_relay );
|
||||||
@@ -474,7 +476,9 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
|
|
||||||
if (oai_exit) break;
|
if (oai_exit) break;
|
||||||
|
|
||||||
if (PHY_vars_eNB_g[0][proc->CC_id]->node_function != NGFI_RRU_IF4) {
|
if ((PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RCC_IF4)) {
|
||||||
phy_procedures_eNB_TX(PHY_vars_eNB_g[0][proc->CC_id], proc, 0, no_relay, NULL );
|
phy_procedures_eNB_TX(PHY_vars_eNB_g[0][proc->CC_id], proc, 0, no_relay, NULL );
|
||||||
|
|
||||||
/* we're done, let the next one proceed */
|
/* we're done, let the next one proceed */
|
||||||
@@ -491,8 +495,7 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
exit_fun("nothing to add");
|
exit_fun("nothing to add");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4) {
|
||||||
|
|
||||||
/// **** recv_IF4 of txdataF from RCC **** ///
|
/// **** recv_IF4 of txdataF from RCC **** ///
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );
|
||||||
do {
|
do {
|
||||||
@@ -500,11 +503,19 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
} while (symbol_number < PHY_vars_eNB_g[0][proc->CC_id]->frame_parms.symbols_per_tti-1);
|
} while (symbol_number < PHY_vars_eNB_g[0][proc->CC_id]->frame_parms.symbols_per_tti-1);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 );
|
||||||
|
|
||||||
|
} else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF5) {
|
||||||
|
/// **** recv_IF5 of txdata from BBU **** ///
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5, 1 );
|
||||||
|
//recv_IF5();
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5, 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eNodeB_3GPP, _BBU and RRU create txdata
|
// eNodeB_3GPP, _BBU and RRU create txdata
|
||||||
if (PHY_vars_eNB_g[0][proc->CC_id]->node_function != NGFI_RCC_IF4) {
|
if ((PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4)) {
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_SFGEN , 1 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_SFGEN , 1 );
|
||||||
do_OFDM_mod_rt( proc->subframe_tx, PHY_vars_eNB_g[0][proc->CC_id] );
|
do_OFDM_mod_rt( proc->subframe_tx, PHY_vars_eNB_g[0][proc->CC_id] );
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_SFGEN , 0 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_SFGEN , 0 );
|
||||||
@@ -526,8 +537,9 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
|
|
||||||
|
|
||||||
// eNodeB_3GPP, RRU write to RF device
|
// eNodeB_3GPP, RRU write to RF device
|
||||||
if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP ||
|
if ((PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP) ||
|
||||||
PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4) {
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4) ||
|
||||||
|
(PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF5)) {
|
||||||
// Transmit TX buffer based on timestamp from RX
|
// Transmit TX buffer based on timestamp from RX
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 );
|
||||||
// prepare tx buffer pointers
|
// prepare tx buffer pointers
|
||||||
@@ -548,14 +560,17 @@ static void* eNB_thread_rxtx( void* param ) {
|
|||||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-openair0_cfg[0].tx_sample_advance)&0xffffffff );
|
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-openair0_cfg[0].tx_sample_advance)&0xffffffff );
|
||||||
|
|
||||||
} else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) {
|
} else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) {
|
||||||
/// **** trx_write_func to IF device **** ///
|
/// **** send_IF5 of txdata to RRH **** ///
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5, 1 );
|
||||||
send_IF5(PHY_vars_eNB_g[0][proc->CC_id], proc, &seqno, IF5_RRH_GW);
|
send_IF5(PHY_vars_eNB_g[0][proc->CC_id], proc, &seqno, IF5_RRH_GW);
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5, 0 );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/// **** send_IF4 of txdataF to RRU **** ///
|
/// **** send_IF4 of txdataF to RRU **** ///
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 1 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 1 );
|
||||||
send_IF4(PHY_vars_eNB_g[0][proc->CC_id], proc->frame_tx, proc->subframe_tx, IF4_PDLFFT, 0);
|
send_IF4(PHY_vars_eNB_g[0][proc->CC_id], proc->frame_tx, proc->subframe_tx, IF4_PDLFFT, 0);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 );
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthread_mutex_lock(&proc->mutex_rxtx) != 0) {
|
if (pthread_mutex_lock(&proc->mutex_rxtx) != 0) {
|
||||||
@@ -759,7 +774,9 @@ static void* eNB_thread_rx_common( void* param ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start RF device for this CC
|
// Start RF device for this CC
|
||||||
if (eNB->node_function == eNodeB_3GPP || eNB->node_function == NGFI_RRU_IF4) {
|
if ((eNB->node_function == eNodeB_3GPP) ||
|
||||||
|
(eNB->node_function == NGFI_RRU_IF4) ||
|
||||||
|
(eNB->node_function == NGFI_RRU_IF5)) {
|
||||||
if (eNB->rfdevice.trx_start_func(&eNB->rfdevice) != 0 )
|
if (eNB->rfdevice.trx_start_func(&eNB->rfdevice) != 0 )
|
||||||
LOG_E(HW,"Could not start the RF device\n");
|
LOG_E(HW,"Could not start the RF device\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -385,9 +385,11 @@ void help (void) {
|
|||||||
printf(" --ue-txgain set UE TX gain\n");
|
printf(" --ue-txgain set UE TX gain\n");
|
||||||
printf(" --ue-scan_carrier set UE to scan around carrier\n");
|
printf(" --ue-scan_carrier set UE to scan around carrier\n");
|
||||||
printf(" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
|
printf(" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
|
||||||
printf(" --RCC run using NGFI RCC node function\n");
|
printf(" --RCC run using NGFI RCC node function IF4 split\n");
|
||||||
printf(" --RRU run using NGFI RRU node function\n");
|
printf(" --RRU run using NGFI RRU node function IF4 split\n");
|
||||||
printf(" --eNB run using 3GPP eNB node function\n");
|
printf(" --eNB run using 3GPP eNB node function\n");
|
||||||
|
printf(" --BBU run using 3GPP eNB node function with IF5 split\n");
|
||||||
|
printf(" --RRH run using RRH node function with IF5 split\n");
|
||||||
printf(" -C Set the downlink frequency for all component carriers\n");
|
printf(" -C Set the downlink frequency for all component carriers\n");
|
||||||
printf(" -d Enable soft scope and L1 and L2 stats (Xforms)\n");
|
printf(" -d Enable soft scope and L1 and L2 stats (Xforms)\n");
|
||||||
printf(" -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n");
|
printf(" -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n");
|
||||||
@@ -687,7 +689,8 @@ static void get_options (int argc, char **argv)
|
|||||||
LONG_OPTION_RCC,
|
LONG_OPTION_RCC,
|
||||||
LONG_OPTION_RRU,
|
LONG_OPTION_RRU,
|
||||||
LONG_OPTION_ENB,
|
LONG_OPTION_ENB,
|
||||||
LONG_OPTION_ENB_BBU
|
LONG_OPTION_ENB_BBU,
|
||||||
|
LONG_OPTION_RRH
|
||||||
#if T_TRACER
|
#if T_TRACER
|
||||||
,
|
,
|
||||||
LONG_OPTION_T_PORT,
|
LONG_OPTION_T_PORT,
|
||||||
@@ -715,6 +718,7 @@ static void get_options (int argc, char **argv)
|
|||||||
{"RRU", no_argument, NULL, LONG_OPTION_RRU},
|
{"RRU", no_argument, NULL, LONG_OPTION_RRU},
|
||||||
{"eNB", no_argument, NULL, LONG_OPTION_ENB},
|
{"eNB", no_argument, NULL, LONG_OPTION_ENB},
|
||||||
{"BBU", no_argument, NULL, LONG_OPTION_ENB_BBU},
|
{"BBU", no_argument, NULL, LONG_OPTION_ENB_BBU},
|
||||||
|
{"RRH", no_argument, NULL, LONG_OPTION_RRH},
|
||||||
#if T_TRACER
|
#if T_TRACER
|
||||||
{"T_port", required_argument, 0, LONG_OPTION_T_PORT},
|
{"T_port", required_argument, 0, LONG_OPTION_T_PORT},
|
||||||
{"T_nowait", no_argument, 0, LONG_OPTION_T_NOWAIT},
|
{"T_nowait", no_argument, 0, LONG_OPTION_T_NOWAIT},
|
||||||
@@ -821,6 +825,10 @@ static void get_options (int argc, char **argv)
|
|||||||
case LONG_OPTION_ENB_BBU:
|
case LONG_OPTION_ENB_BBU:
|
||||||
node_function = eNodeB_3GPP_BBU;
|
node_function = eNodeB_3GPP_BBU;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LONG_OPTION_RRH:
|
||||||
|
node_function = NGFI_RRU_IF5;
|
||||||
|
break;
|
||||||
|
|
||||||
#if T_TRACER
|
#if T_TRACER
|
||||||
case LONG_OPTION_T_PORT: {
|
case LONG_OPTION_T_PORT: {
|
||||||
@@ -1649,7 +1657,7 @@ int main( int argc, char **argv )
|
|||||||
openair0_cfg[0].log_level = glog_level;
|
openair0_cfg[0].log_level = glog_level;
|
||||||
|
|
||||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
if (node_function == NGFI_RRU_IF4) {
|
if (node_function == NGFI_RRU_IF4 || node_function == NGFI_RRU_IF5) {
|
||||||
PHY_vars_eNB_g[0][CC_id]->rfdevice.host_type = RRH_HOST;
|
PHY_vars_eNB_g[0][CC_id]->rfdevice.host_type = RRH_HOST;
|
||||||
PHY_vars_eNB_g[0][CC_id]->ifdevice.host_type = RRH_HOST;
|
PHY_vars_eNB_g[0][CC_id]->ifdevice.host_type = RRH_HOST;
|
||||||
} else {
|
} else {
|
||||||
@@ -1670,39 +1678,12 @@ int main( int argc, char **argv )
|
|||||||
openair0.type = NONE_DEV;
|
openair0.type = NONE_DEV;
|
||||||
/* transport type is initialized NONE_TP (no transport protocol) when the transport protocol will be initiated transport protocol type will be set */
|
/* transport type is initialized NONE_TP (no transport protocol) when the transport protocol will be initiated transport protocol type will be set */
|
||||||
openair0.transp_type = NONE_TP;
|
openair0.transp_type = NONE_TP;
|
||||||
|
|
||||||
// Legacy BBU - RRH init
|
|
||||||
//int returns=-1;
|
|
||||||
///* BBU can have either a local or a remote radio head */
|
|
||||||
//if (local_remote_radio == BBU_LOCAL_RADIO_HEAD) { //local radio head active - load library of radio head and initiate it
|
|
||||||
//if (mode!=loop_through_memory) {
|
|
||||||
//returns=openair0_device_load(&openair0, &openair0_cfg[0]);
|
|
||||||
//printf("openair0_device_init returns %d\n",returns);
|
|
||||||
//if (returns<0) {
|
|
||||||
//printf("Exiting, cannot initialize device\n");
|
|
||||||
//exit(-1);
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
//else if (mode==loop_through_memory) {
|
|
||||||
//}
|
|
||||||
//} else { //remote radio head active - load library of transport protocol and initiate it
|
|
||||||
//if (mode!=loop_through_memory) {
|
|
||||||
//returns=openair0_transport_load(&openair0, &openair0_cfg[0], eth_params);
|
|
||||||
//printf("openair0_transport_init returns %d\n",returns);
|
|
||||||
//if (returns<0) {
|
|
||||||
//printf("Exiting, cannot initialize transport protocol\n");
|
|
||||||
//exit(-1);
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
//else if (mode==loop_through_memory) {
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
|
|
||||||
int returns=-1;
|
int returns=-1;
|
||||||
|
|
||||||
// Handle spatially distributed MIMO antenna ports
|
// Handle spatially distributed MIMO antenna ports
|
||||||
// Load RF device and initialize
|
// Load RF device and initialize
|
||||||
if (node_function == NGFI_RRU_IF4 || node_function == eNodeB_3GPP) {
|
if (node_function == NGFI_RRU_IF5 || node_function == NGFI_RRU_IF4 || node_function == eNodeB_3GPP) {
|
||||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
if (mode!=loop_through_memory) {
|
if (mode!=loop_through_memory) {
|
||||||
returns=openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]);
|
returns=openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user