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 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);
|
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;
|
int CC_id;
|
||||||
|
|
||||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++)
|
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||||
PHY_vars_eNB_g[0][CC_id]->node_function = node_function;
|
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();
|
init_eNB_proc();
|
||||||
sleep(1);
|
sleep(1);
|
||||||
LOG_D(HW,"[lte-softmodem.c] eNB threads created\n");
|
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
|
// 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 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 stop_eNB(void);
|
||||||
extern void kill_eNB_proc(void);
|
extern void kill_eNB_proc(void);
|
||||||
|
|
||||||
@@ -229,7 +229,9 @@ int otg_enabled;
|
|||||||
|
|
||||||
|
|
||||||
static LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
|
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_dl_mcs = 28; //maximum allowed mcs
|
||||||
uint32_t target_ul_mcs = 20;
|
uint32_t target_ul_mcs = 20;
|
||||||
@@ -237,8 +239,6 @@ uint32_t timing_advance = 0;
|
|||||||
uint8_t exit_missed_slots=1;
|
uint8_t exit_missed_slots=1;
|
||||||
uint64_t num_missed_slots=0; // counter for the number of missed slots
|
uint64_t num_missed_slots=0; // counter for the number of missed slots
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void reset_opp_meas(void);
|
extern void reset_opp_meas(void);
|
||||||
extern void print_opp_meas(void);
|
extern void print_opp_meas(void);
|
||||||
int transmission_mode=1;
|
int transmission_mode=1;
|
||||||
@@ -387,11 +387,6 @@ void help (void) {
|
|||||||
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(" --mmapped-dma sets flag for improved EXMIMO UE performance\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(" -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");
|
||||||
@@ -688,12 +683,7 @@ static void get_options (int argc, char **argv)
|
|||||||
LONG_OPTION_DUMP_FRAME,
|
LONG_OPTION_DUMP_FRAME,
|
||||||
LONG_OPTION_LOOPMEMORY,
|
LONG_OPTION_LOOPMEMORY,
|
||||||
LONG_OPTION_PHYTEST,
|
LONG_OPTION_PHYTEST,
|
||||||
LONG_OPTION_MMAPPED_DMA,
|
LONG_OPTION_MMAPPED_DMA
|
||||||
LONG_OPTION_RCC,
|
|
||||||
LONG_OPTION_RRU,
|
|
||||||
LONG_OPTION_ENB,
|
|
||||||
LONG_OPTION_ENB_BBU,
|
|
||||||
LONG_OPTION_RRH
|
|
||||||
#if T_TRACER
|
#if T_TRACER
|
||||||
,
|
,
|
||||||
LONG_OPTION_T_PORT,
|
LONG_OPTION_T_PORT,
|
||||||
@@ -718,11 +708,6 @@ static void get_options (int argc, char **argv)
|
|||||||
{"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY},
|
{"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY},
|
||||||
{"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST},
|
{"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST},
|
||||||
{"mmapped-dma", no_argument, NULL, LONG_OPTION_MMAPPED_DMA},
|
{"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
|
#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},
|
||||||
@@ -817,26 +802,6 @@ static void get_options (int argc, char **argv)
|
|||||||
case LONG_OPTION_MMAPPED_DMA:
|
case LONG_OPTION_MMAPPED_DMA:
|
||||||
mmapped_dma = 1;
|
mmapped_dma = 1;
|
||||||
break;
|
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
|
#if T_TRACER
|
||||||
case LONG_OPTION_T_PORT: {
|
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++) {
|
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]->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 = enb_properties->properties[i]->tdd_config[CC_id];
|
||||||
frame_parms[CC_id]->tdd_config_S = enb_properties->properties[i]->tdd_config_s[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) {
|
if (UE_flag == 0) {
|
||||||
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 || 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]->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 {
|
||||||
@@ -1683,69 +1652,39 @@ 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
|
|
||||||
// Load RF device and initialize
|
// 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) {
|
if (mode!=loop_through_memory) {
|
||||||
returns= (UE_flag == 0) ?
|
returns = (UE_flag == 0) ?
|
||||||
openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]) :
|
openair0_device_load(&(PHY_vars_eNB_g[0][CC_id]->rfdevice), &openair0_cfg[0]) :
|
||||||
openair0_device_load(&openair0, &openair0_cfg[0]);
|
openair0_device_load(&openair0, &openair0_cfg[0]);
|
||||||
|
|
||||||
printf("openair0_device_init returns %d for CC_id %d\n",returns,CC_id);
|
printf("openair0_device_init returns %d for CC_id %d\n",returns,CC_id);
|
||||||
if (returns<0) {
|
if (returns<0) {
|
||||||
printf("Exiting, cannot initialize device\n");
|
printf("Exiting, cannot initialize device\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
}
|
} else if (mode==loop_through_memory) {
|
||||||
else if (mode==loop_through_memory) {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load transport protocol and initialize
|
// Load transport protocol and initialize
|
||||||
|
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
if ((UE_flag==0) && (node_function != eNodeB_3GPP)){
|
if ((UE_flag==0) && (node_function[CC_id] != eNodeB_3GPP)) {
|
||||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
|
||||||
if (mode!=loop_through_memory) {
|
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);
|
printf("openair0_transport_init returns %d for CC_id %d\n",returns,CC_id);
|
||||||
if (returns<0) {
|
if (returns<0) {
|
||||||
printf("Exiting, cannot initialize transport protocol\n");
|
printf("Exiting, cannot initialize transport protocol\n");
|
||||||
exit(-1);
|
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;
|
number_of_cards = 1;
|
||||||
|
|
||||||
|
|
||||||
for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
rf_map[CC_id].card=0;
|
rf_map[CC_id].card=0;
|
||||||
rf_map[CC_id].chain=CC_id+chain_offset;
|
rf_map[CC_id].chain=CC_id+chain_offset;
|
||||||
@@ -1905,17 +1843,12 @@ int main( int argc, char **argv )
|
|||||||
|
|
||||||
// start the main thread
|
// start the main thread
|
||||||
if (UE_flag == 1) init_UE();
|
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 to allow all threads to setup
|
||||||
sleep(3);
|
sleep(3);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// *** Handle per CC_id openair0
|
|
||||||
|
|
||||||
|
|
||||||
printf("Sending sync to all threads\n");
|
printf("Sending sync to all threads\n");
|
||||||
|
|
||||||
pthread_mutex_lock(&sync_mutex);
|
pthread_mutex_lock(&sync_mutex);
|
||||||
@@ -1977,7 +1910,6 @@ int main( int argc, char **argv )
|
|||||||
pthread_cond_destroy(&sync_cond);
|
pthread_cond_destroy(&sync_cond);
|
||||||
pthread_mutex_destroy(&sync_mutex);
|
pthread_mutex_destroy(&sync_mutex);
|
||||||
|
|
||||||
// *** Handle per CC_id openair0
|
|
||||||
if (UE_flag==1)
|
if (UE_flag==1)
|
||||||
openair0.trx_end_func(&openair0);
|
openair0.trx_end_func(&openair0);
|
||||||
|
|
||||||
@@ -1998,10 +1930,3 @@ int main( int argc, char **argv )
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user