Commit 2cd84890 authored by Sandeep Kumar's avatar Sandeep Kumar

starting to add run options for node_function

parent 2cc779b9
...@@ -2498,7 +2498,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl ...@@ -2498,7 +2498,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
eNB_proc_t *proc = &eNB->proc; eNB_proc_t *proc = &eNB->proc;
int subframe = proc->subframe_rx; int subframe = proc->subframe_rx;
int frame = proc->frame_rx; int frame = proc->frame_rx;
int symbol_number, symbol_mask, symbol_mask_full, prach_rx; int symbol_number, symbol_mask, symbol_mask_full, prach_rx, packet_type;
if (subframe==9) { if (subframe==9) {
subframe=0; subframe=0;
...@@ -2580,23 +2580,23 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl ...@@ -2580,23 +2580,23 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
// get frame/subframe information from IF4 interface // get frame/subframe information from IF4 interface
// timed loop (200 us) // timed loop (200 us)
symbol_mask = 0; //symbol_mask = 0;
symbol_mask_full = (1<<fp->symbols_per_tti)-1; //symbol_mask_full = (1<<fp->symbols_per_tti)-1;
if (is_prach_subframe(fp,frame,subframe)>0) //if (is_prach_subframe(fp,frame,subframe)>0)
prach_rx = 0; //prach_rx = 0;
else //else
prach_rx = 1; //prach_rx = 1;
do { //do {
recv_IF4(eNB, proc, &packet_type, &symbol_number); //recv_IF4(eNB, proc, &packet_type, &symbol_number);
if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) { //if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) {
// wake up prach_rx //// wake up prach_rx
prach_rx = 1; //prach_rx = 1;
} //}
if (packet_type == PULFFT) //if (packet_type == IF4_PULFFT)
symbol_mask = symbol_mask | (1<<symbol_number); //symbol_mask = symbol_mask | (1<<symbol_number);
} while( (symbol_mask != symbol_mask_full) || (prach_rx == 0)); //} while( (symbol_mask != symbol_mask_full) || (prach_rx == 0));
//recv_IF4(eNB,subframe<<1); //recv_IF4(eNB,subframe<<1);
......
...@@ -227,7 +227,7 @@ int otg_enabled; ...@@ -227,7 +227,7 @@ 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;
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;
...@@ -381,6 +381,9 @@ void help (void) { ...@@ -381,6 +381,9 @@ 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(" --RRU run using NGFI RRU node function\n");
printf(" --eNB run using 3GPP eNB node function\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");
...@@ -667,7 +670,10 @@ static void get_options (int argc, char **argv) ...@@ -667,7 +670,10 @@ static void get_options (int argc, char **argv)
LONG_OPTION_MAXPOWER, LONG_OPTION_MAXPOWER,
LONG_OPTION_DUMP_FRAME, LONG_OPTION_DUMP_FRAME,
LONG_OPTION_LOOPMEMORY, LONG_OPTION_LOOPMEMORY,
LONG_OPTION_PHYTEST LONG_OPTION_PHYTEST,
LONG_OPTION_RCC,
LONG_OPTION_RRU,
LONG_OPTION_ENB
}; };
static const struct option long_options[] = { static const struct option long_options[] = {
...@@ -686,6 +692,9 @@ static void get_options (int argc, char **argv) ...@@ -686,6 +692,9 @@ static void get_options (int argc, char **argv)
{"ue-dump-frame", no_argument, NULL, LONG_OPTION_DUMP_FRAME}, {"ue-dump-frame", no_argument, NULL, LONG_OPTION_DUMP_FRAME},
{"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},
{"RCC", no_argument, NULL, LONG_OPTION_RCC},
{"RRU", no_argument, NULL, LONG_OPTION_RRU},
{"eNB", no_argument, NULL, LONG_OPTION_ENB},
{NULL, 0, NULL, 0} {NULL, 0, NULL, 0}
}; };
...@@ -772,6 +781,18 @@ static void get_options (int argc, char **argv) ...@@ -772,6 +781,18 @@ static void get_options (int argc, char **argv)
case LONG_OPTION_PHYTEST: case LONG_OPTION_PHYTEST:
phy_test = 1; phy_test = 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 'A': case 'A':
timing_advance = atoi (optarg); timing_advance = atoi (optarg);
...@@ -993,7 +1014,7 @@ static void get_options (int argc, char **argv) ...@@ -993,7 +1014,7 @@ static void get_options (int argc, char **argv)
if (enb_properties->properties[i]->rrh_gw_config[j].active == 1 ) { if (enb_properties->properties[i]->rrh_gw_config[j].active == 1 ) {
local_remote_radio = BBU_REMOTE_RADIO_HEAD; local_remote_radio = BBU_REMOTE_RADIO_HEAD;
eth_params = (eth_params_t*)malloc(sizeof(eth_params_t)); eth_params = (eth_params_t*)malloc(sizeof(eth_params_t));
memset(eth_params, 0, sizeof(eth_params_t)); memset(eth_params, 0, sizeof(eth_params_t));
eth_params->local_if_name = enb_properties->properties[i]->rrh_gw_if_name; eth_params->local_if_name = enb_properties->properties[i]->rrh_gw_if_name;
...@@ -1120,7 +1141,6 @@ int main( int argc, char **argv ) ...@@ -1120,7 +1141,6 @@ int main( int argc, char **argv )
uint16_t Nid_cell = 0; uint16_t Nid_cell = 0;
uint8_t cooperation_flag=0, abstraction_flag=0; uint8_t cooperation_flag=0, abstraction_flag=0;
uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2; uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2;
eNB_func_t node_function=eNodeB_3GPP;
#if defined (XFORMS) #if defined (XFORMS)
int ret; int ret;
...@@ -1458,13 +1478,20 @@ int main( int argc, char **argv ) ...@@ -1458,13 +1478,20 @@ int main( int argc, char **argv )
else //FDD else //FDD
openair0_cfg[card].duplex_mode = duplex_mode_FDD; openair0_cfg[card].duplex_mode = duplex_mode_FDD;
if (local_remote_radio == BBU_REMOTE_RADIO_HEAD) { if (local_remote_radio == BBU_REMOTE_RADIO_HEAD) {
openair0_cfg[card].remote_addr = eth_params->remote_addr; openair0_cfg[card].remote_addr = eth_params->remote_addr;
openair0_cfg[card].remote_port = eth_params->remote_port; openair0_cfg[card].remote_port = eth_params->remote_port;
openair0_cfg[card].my_addr = eth_params->my_addr; openair0_cfg[card].my_addr = eth_params->my_addr;
openair0_cfg[card].my_port = eth_params->my_port; openair0_cfg[card].my_port = eth_params->my_port;
} }
//if (node_function == NGFI_RCC_IF4 || node_function == NGFI_RRU_IF4) {
//openair0_cfg[card].remote_addr = eth_params->remote_addr;
//openair0_cfg[card].remote_port = eth_params->remote_port;
//openair0_cfg[card].my_addr = eth_params->my_addr;
//openair0_cfg[card].my_port = eth_params->my_port;
//}
printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card, printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
((UE_flag==0) ? PHY_vars_eNB_g[0][0]->frame_parms.nb_antennas_tx : PHY_vars_UE_g[0][0]->frame_parms.nb_antennas_tx), ((UE_flag==0) ? PHY_vars_eNB_g[0][0]->frame_parms.nb_antennas_tx : PHY_vars_UE_g[0][0]->frame_parms.nb_antennas_tx),
...@@ -1562,35 +1589,68 @@ int main( int argc, char **argv ) ...@@ -1562,35 +1589,68 @@ int main( int argc, char **argv )
/* 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;
openair0_cfg[0].log_level = glog_level; openair0_cfg[0].log_level = glog_level;
// 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) {
//}
//}
//printf("Done\n");
int returns=-1; 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 // Load RF device and initialize
if (node_function == eNodeB_3GPP || node_function == NGFI_RRU_IF4) {
if (mode!=loop_through_memory) { if (mode!=loop_through_memory) {
returns=openair0_device_load(&openair0, &openair0_cfg[0]); returns=openair0_device_load(&openair0, &openair0_cfg[0]);
printf("openair0_device_init returns %d\n",returns); printf("openair0_device_init returns %d\n",returns);
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) {
} }
} else { //remote radio head active - load library of transport protocol and initiate it }
// Load transport protocol and initialize
if (node_function == NGFI_RCC_IF4 || node_function == NGFI_RRU_IF4){
if (mode!=loop_through_memory) { if (mode!=loop_through_memory) {
returns=openair0_transport_load(&openair0, &openair0_cfg[0], eth_params); returns=openair0_transport_load(&openair0, &openair0_cfg[0], eth_params);
printf("openair0_transport_init returns %d\n",returns); printf("openair0_transport_init returns %d\n",returns);
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) {
} }
} }
printf("Done\n");
printf("Done\n");
mac_xface = malloc(sizeof(MAC_xface)); mac_xface = malloc(sizeof(MAC_xface));
int eMBMS_active=0; int eMBMS_active=0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment