read node fn, timing from config data
This commit is contained in:
@@ -157,7 +157,7 @@ static struct {
|
||||
|
||||
void exit_fun(const char* s);
|
||||
|
||||
void init_eNB(eNB_func_t node_function);
|
||||
void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[]);
|
||||
void stop_eNB(void);
|
||||
|
||||
|
||||
@@ -1577,13 +1577,15 @@ void print_opp_meas(void) {
|
||||
}
|
||||
|
||||
|
||||
void init_eNB(eNB_func_t node_function) {
|
||||
void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[]) {
|
||||
|
||||
int CC_id;
|
||||
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++)
|
||||
PHY_vars_eNB_g[0][CC_id]->node_function = node_function;
|
||||
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||
PHY_vars_eNB_g[0][CC_id]->node_function = node_function[CC_id];
|
||||
PHY_vars_eNB_g[0][CC_id]->node_timing = node_timing[CC_id];
|
||||
}
|
||||
|
||||
init_eNB_proc();
|
||||
sleep(1);
|
||||
LOG_D(HW,"[lte-softmodem.c] eNB threads created\n");
|
||||
|
||||
+28
-103
@@ -119,7 +119,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
||||
|
||||
// In lte-enb.c
|
||||
extern int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_cfg, openair0_rf_map rf_map[MAX_NUM_CCs]);
|
||||
extern void init_eNB(eNB_func_t);
|
||||
extern void init_eNB(eNB_func_t *, eNB_timing_t *);
|
||||
extern void stop_eNB(void);
|
||||
extern void kill_eNB_proc(void);
|
||||
|
||||
@@ -229,7 +229,9 @@ int otg_enabled;
|
||||
|
||||
|
||||
static LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
|
||||
eNB_func_t node_function=eNodeB_3GPP;
|
||||
eNB_func_t node_function[MAX_NUM_CCs];
|
||||
eNB_timing_t node_timing[MAX_NUM_CCs];
|
||||
int16_t node_synch_ref[MAX_NUM_CCs];
|
||||
|
||||
uint32_t target_dl_mcs = 28; //maximum allowed mcs
|
||||
uint32_t target_ul_mcs = 20;
|
||||
@@ -237,8 +239,6 @@ uint32_t timing_advance = 0;
|
||||
uint8_t exit_missed_slots=1;
|
||||
uint64_t num_missed_slots=0; // counter for the number of missed slots
|
||||
|
||||
|
||||
|
||||
extern void reset_opp_meas(void);
|
||||
extern void print_opp_meas(void);
|
||||
int transmission_mode=1;
|
||||
@@ -387,11 +387,6 @@ void help (void) {
|
||||
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(" --mmapped-dma sets flag for improved EXMIMO UE performance\n");
|
||||
printf(" --RCC run using NGFI RCC node function IF4 split\n");
|
||||
printf(" --RRU run using NGFI RRU node function IF4 split\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(" -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");
|
||||
@@ -688,12 +683,7 @@ static void get_options (int argc, char **argv)
|
||||
LONG_OPTION_DUMP_FRAME,
|
||||
LONG_OPTION_LOOPMEMORY,
|
||||
LONG_OPTION_PHYTEST,
|
||||
LONG_OPTION_MMAPPED_DMA,
|
||||
LONG_OPTION_RCC,
|
||||
LONG_OPTION_RRU,
|
||||
LONG_OPTION_ENB,
|
||||
LONG_OPTION_ENB_BBU,
|
||||
LONG_OPTION_RRH
|
||||
LONG_OPTION_MMAPPED_DMA
|
||||
#if T_TRACER
|
||||
,
|
||||
LONG_OPTION_T_PORT,
|
||||
@@ -718,11 +708,6 @@ static void get_options (int argc, char **argv)
|
||||
{"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY},
|
||||
{"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST},
|
||||
{"mmapped-dma", no_argument, NULL, LONG_OPTION_MMAPPED_DMA},
|
||||
{"RCC", no_argument, NULL, LONG_OPTION_RCC},
|
||||
{"RRU", no_argument, NULL, LONG_OPTION_RRU},
|
||||
{"eNB", no_argument, NULL, LONG_OPTION_ENB},
|
||||
{"BBU", no_argument, NULL, LONG_OPTION_ENB_BBU},
|
||||
{"RRH", no_argument, NULL, LONG_OPTION_RRH},
|
||||
#if T_TRACER
|
||||
{"T_port", required_argument, 0, LONG_OPTION_T_PORT},
|
||||
{"T_nowait", no_argument, 0, LONG_OPTION_T_NOWAIT},
|
||||
@@ -817,26 +802,6 @@ static void get_options (int argc, char **argv)
|
||||
case LONG_OPTION_MMAPPED_DMA:
|
||||
mmapped_dma = 1;
|
||||
break;
|
||||
|
||||
case LONG_OPTION_RCC:
|
||||
node_function = NGFI_RCC_IF4;
|
||||
break;
|
||||
|
||||
case LONG_OPTION_RRU:
|
||||
node_function = NGFI_RRU_IF4;
|
||||
break;
|
||||
|
||||
case LONG_OPTION_ENB:
|
||||
node_function = eNodeB_3GPP;
|
||||
break;
|
||||
|
||||
case LONG_OPTION_ENB_BBU:
|
||||
node_function = eNodeB_3GPP_BBU;
|
||||
break;
|
||||
|
||||
case LONG_OPTION_RRH:
|
||||
node_function = NGFI_RRU_IF5;
|
||||
break;
|
||||
|
||||
#if T_TRACER
|
||||
case LONG_OPTION_T_PORT: {
|
||||
@@ -1116,6 +1081,10 @@ static void get_options (int argc, char **argv)
|
||||
}
|
||||
|
||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
node_function[CC_id] = enb_properties->properties[i]->cc_node_function[CC_id];
|
||||
node_timing[CC_id] = enb_properties->properties[i]->cc_node_timing[CC_id];
|
||||
node_synch_ref[CC_id] = enb_properties->properties[i]->cc_node_synch_ref[CC_id];
|
||||
|
||||
frame_parms[CC_id]->frame_type = enb_properties->properties[i]->frame_type[CC_id];
|
||||
frame_parms[CC_id]->tdd_config = enb_properties->properties[i]->tdd_config[CC_id];
|
||||
frame_parms[CC_id]->tdd_config_S = enb_properties->properties[i]->tdd_config_s[CC_id];
|
||||
@@ -1668,7 +1637,7 @@ int main( int argc, char **argv )
|
||||
|
||||
if (UE_flag == 0) {
|
||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
if (node_function == NGFI_RRU_IF4 || node_function == NGFI_RRU_IF5) {
|
||||
if (node_function[CC_id] == NGFI_RRU_IF4 || node_function[CC_id] == NGFI_RRU_IF5) {
|
||||
PHY_vars_eNB_g[0][CC_id]->rfdevice.host_type = RRH_HOST;
|
||||
PHY_vars_eNB_g[0][CC_id]->ifdevice.host_type = RRH_HOST;
|
||||
} else {
|
||||
@@ -1683,69 +1652,39 @@ int main( int argc, char **argv )
|
||||
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 */
|
||||
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;
|
||||
|
||||
// Handle spatially distributed MIMO antenna ports
|
||||
// Load RF device and initialize
|
||||
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 (node_function[CC_id] == NGFI_RRU_IF5 || node_function[CC_id] == NGFI_RRU_IF4 || node_function[CC_id] == eNodeB_3GPP) {
|
||||
if (mode!=loop_through_memory) {
|
||||
returns= (UE_flag == 0) ?
|
||||
openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]) :
|
||||
openair0_device_load(&openair0, &openair0_cfg[0]);
|
||||
|
||||
returns = (UE_flag == 0) ?
|
||||
openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]) :
|
||||
openair0_device_load(&openair0, &openair0_cfg[0]);
|
||||
printf("openair0_device_init returns %d for CC_id %d\n",returns,CC_id);
|
||||
if (returns<0) {
|
||||
printf("Exiting, cannot initialize device\n");
|
||||
exit(-1);
|
||||
printf("Exiting, cannot initialize device\n");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
else if (mode==loop_through_memory) {
|
||||
} else if (mode==loop_through_memory) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Load transport protocol and initialize
|
||||
|
||||
if ((UE_flag==0) && (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 ((UE_flag==0) && (node_function[CC_id] != eNodeB_3GPP)) {
|
||||
if (mode!=loop_through_memory) {
|
||||
returns=openair0_transport_load(&(PHY_vars_eNB_g[0][CC_id]->ifdevice), &openair0_cfg[0], (eth_params+CC_id));
|
||||
returns = openair0_transport_load(&(PHY_vars_eNB_g[0][CC_id]->ifdevice), &openair0_cfg[0], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",returns,CC_id);
|
||||
if (returns<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
exit(-1);
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
else if (mode==loop_through_memory) {
|
||||
} else if (mode==loop_through_memory) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1783,7 +1722,6 @@ int main( int argc, char **argv )
|
||||
|
||||
number_of_cards = 1;
|
||||
|
||||
|
||||
for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
rf_map[CC_id].card=0;
|
||||
rf_map[CC_id].chain=CC_id+chain_offset;
|
||||
@@ -1905,17 +1843,12 @@ int main( int argc, char **argv )
|
||||
|
||||
// start the main thread
|
||||
if (UE_flag == 1) init_UE();
|
||||
else init_eNB(node_function);
|
||||
else init_eNB(node_function, node_timing);
|
||||
|
||||
// Sleep to allow all threads to setup
|
||||
sleep(3);
|
||||
|
||||
|
||||
|
||||
|
||||
// *** Handle per CC_id openair0
|
||||
|
||||
|
||||
printf("Sending sync to all threads\n");
|
||||
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
@@ -1977,7 +1910,6 @@ int main( int argc, char **argv )
|
||||
pthread_cond_destroy(&sync_cond);
|
||||
pthread_mutex_destroy(&sync_mutex);
|
||||
|
||||
// *** Handle per CC_id openair0
|
||||
if (UE_flag==1)
|
||||
openair0.trx_end_func(&openair0);
|
||||
|
||||
@@ -1998,10 +1930,3 @@ int main( int argc, char **argv )
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user