From 2cd848908646746dc8d76fabc5872ed16e3b0428 Mon Sep 17 00:00:00 2001
From: Sandeep Kumar <ee13b1025@iith.ac.in>
Date: Mon, 13 Jun 2016 18:50:05 +0200
Subject: [PATCH] starting to add run options for node_function
---
openair1/SCHED/phy_procedures_lte_eNb.c | 32 ++++-----
targets/RT/USER/lte-softmodem.c | 92 ++++++++++++++++++++-----
2 files changed, 92 insertions(+), 32 deletions(-)
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 785001e8f4..0e1685d266 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -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;
int subframe = proc->subframe_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) {
subframe=0;
@@ -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
// timed loop (200 us)
- symbol_mask = 0;
- symbol_mask_full = (1<<fp->symbols_per_tti)-1;
- if (is_prach_subframe(fp,frame,subframe)>0)
- prach_rx = 0;
- else
- prach_rx = 1;
+ //symbol_mask = 0;
+ //symbol_mask_full = (1<<fp->symbols_per_tti)-1;
+ //if (is_prach_subframe(fp,frame,subframe)>0)
+ //prach_rx = 0;
+ //else
+ //prach_rx = 1;
- do {
- recv_IF4(eNB, proc, &packet_type, &symbol_number);
- if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) {
- // wake up prach_rx
- prach_rx = 1;
- }
- if (packet_type == PULFFT)
- symbol_mask = symbol_mask | (1<<symbol_number);
+ //do {
+ //recv_IF4(eNB, proc, &packet_type, &symbol_number);
+ //if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) {
+ //// wake up prach_rx
+ //prach_rx = 1;
+ //}
+ //if (packet_type == IF4_PULFFT)
+ //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);
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 70769c6957..b8adf5b405 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -227,7 +227,7 @@ int otg_enabled;
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_ul_mcs = 20;
@@ -381,6 +381,9 @@ void help (void) {
printf(" --ue-txgain set UE TX gain\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(" --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(" -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");
@@ -667,7 +670,10 @@ static void get_options (int argc, char **argv)
LONG_OPTION_MAXPOWER,
LONG_OPTION_DUMP_FRAME,
LONG_OPTION_LOOPMEMORY,
- LONG_OPTION_PHYTEST
+ LONG_OPTION_PHYTEST,
+ LONG_OPTION_RCC,
+ LONG_OPTION_RRU,
+ LONG_OPTION_ENB
};
static const struct option long_options[] = {
@@ -686,6 +692,9 @@ static void get_options (int argc, char **argv)
{"ue-dump-frame", no_argument, NULL, LONG_OPTION_DUMP_FRAME},
{"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY},
{"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}
};
@@ -772,6 +781,18 @@ static void get_options (int argc, char **argv)
case LONG_OPTION_PHYTEST:
phy_test = 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 'A':
timing_advance = atoi (optarg);
@@ -993,7 +1014,7 @@ static void get_options (int argc, char **argv)
if (enb_properties->properties[i]->rrh_gw_config[j].active == 1 ) {
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));
eth_params->local_if_name = enb_properties->properties[i]->rrh_gw_if_name;
@@ -1120,7 +1141,6 @@ int main( int argc, char **argv )
uint16_t Nid_cell = 0;
uint8_t cooperation_flag=0, abstraction_flag=0;
uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2;
- eNB_func_t node_function=eNodeB_3GPP;
#if defined (XFORMS)
int ret;
@@ -1458,13 +1478,20 @@ int main( int argc, char **argv )
else //FDD
openair0_cfg[card].duplex_mode = duplex_mode_FDD;
-
+
if (local_remote_radio == BBU_REMOTE_RADIO_HEAD) {
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;
- }
+ }
+
+ //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,
((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 )
/* 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_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;
- /* 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) {
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);
+ 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
+ }
+
+ // Load transport protocol and initialize
+ if (node_function == NGFI_RCC_IF4 || node_function == NGFI_RRU_IF4){
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);
+ printf("Exiting, cannot initialize transport protocol\n");
+ exit(-1);
}
}
else if (mode==loop_through_memory) {
}
}
-
- printf("Done\n");
+ printf("Done\n");
+
mac_xface = malloc(sizeof(MAC_xface));
int eMBMS_active=0;
--
GitLab