Commit f442a7c5 authored by winckel's avatar winckel

Modified -O option used for eNB configuration.

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4961 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 1acf4a6d
...@@ -140,6 +140,7 @@ char UE_flag=0; ...@@ -140,6 +140,7 @@ char UE_flag=0;
u8 eNB_id=0,UE_id=0; u8 eNB_id=0,UE_id=0;
u32 carrier_freq[4]= {1907600000,1907600000,1907600000,1907600000}; u32 carrier_freq[4]= {1907600000,1907600000,1907600000,1907600000};
char *g_conf_config_file_name = NULL;
unsigned int lost_bytes=0; unsigned int lost_bytes=0;
...@@ -699,100 +700,88 @@ int main(int argc, char **argv) { ...@@ -699,100 +700,88 @@ int main(int argc, char **argv) {
#endif #endif
break; break;
case 'O': case 'O':
#if defined(ENABLE_USE_MME) g_conf_config_file_name = optarg;
EPC_MODE_ENABLED = 1;
if (optarg == NULL) /* No IP address provided: use localhost */
{
memcpy(&EPC_MODE_MME_ADDRESS[0], "127.0.0.1", 10);
} else {
u8 ip_length = strlen(optarg) + 1;
memcpy(&EPC_MODE_MME_ADDRESS[0], optarg,
ip_length > 16 ? 16 : ip_length);
}
#else
printf("You enabled mme mode without s1ap compiled...\n");
#endif
break; break;
case 'F': case 'F':
sprintf(rxg_fname,"%srxg.lime",optarg); sprintf(rxg_fname,"%srxg.lime",optarg);
rxg_fd = fopen(rxg_fname,"r"); rxg_fd = fopen(rxg_fname,"r");
if (rxg_fd) { if (rxg_fd) {
printf("Loading RX Gain parameters from %s\n",rxg_fname); printf("Loading RX Gain parameters from %s\n",rxg_fname);
l=0; l=0;
while (fgets(line, sizeof(line), rxg_fd)) { while (fgets(line, sizeof(line), rxg_fd)) {
if ((strlen(line)==0) || (*line == '#')) continue; //ignore empty or comment lines if ((strlen(line)==0) || (*line == '#')) continue; //ignore empty or comment lines
else { else {
if (l==0) sscanf(line,"%d %d %d %d",&rxg_max[0],&rxg_max[1],&rxg_max[2],&rxg_max[3]); if (l==0) sscanf(line,"%d %d %d %d",&rxg_max[0],&rxg_max[1],&rxg_max[2],&rxg_max[3]);
if (l==1) sscanf(line,"%d %d %d %d",&rxg_med[0],&rxg_med[1],&rxg_med[2],&rxg_med[3]); if (l==1) sscanf(line,"%d %d %d %d",&rxg_med[0],&rxg_med[1],&rxg_med[2],&rxg_med[3]);
if (l==2) sscanf(line,"%d %d %d %d",&rxg_byp[0],&rxg_byp[1],&rxg_byp[2],&rxg_byp[3]); if (l==2) sscanf(line,"%d %d %d %d",&rxg_byp[0],&rxg_byp[1],&rxg_byp[2],&rxg_byp[3]);
l++; l++;
} }
} }
} }
else else
printf("%s not found, running with defaults\n",rxg_fname); printf("%s not found, running with defaults\n",rxg_fname);
sprintf(txg_fname,"%stxg.lime",optarg); sprintf(txg_fname,"%stxg.lime",optarg);
txg_fd = fopen(txg_fname,"r"); txg_fd = fopen(txg_fname,"r");
if (txg_fd) { if (txg_fd) {
printf("Loading TX Gain parameters from %s\n",txg_fname); printf("Loading TX Gain parameters from %s\n",txg_fname);
l=0; l=0;
while (fgets(line, sizeof(line), txg_fd)) { while (fgets(line, sizeof(line), txg_fd)) {
if ((strlen(line)==0) || (*line == '#')) { if ((strlen(line)==0) || (*line == '#')) {
continue; //ignore empty or comment lines continue; //ignore empty or comment lines
} }
else { else {
if (l==0) sscanf(line,"%d %d %d %d",&txgain[0],&txgain[1],&txgain[2],&txgain[3]); if (l==0) sscanf(line,"%d %d %d %d",&txgain[0],&txgain[1],&txgain[2],&txgain[3]);
if (l==1) sscanf(line,"%d",&tx_max_power); if (l==1) sscanf(line,"%d",&tx_max_power);
l++; l++;
} }
} }
} }
else else
printf("%s not found, running with defaults\n",txg_fname); printf("%s not found, running with defaults\n",txg_fname);
sprintf(rflo_fname,"%srflo.lime",optarg); sprintf(rflo_fname,"%srflo.lime",optarg);
rflo_fd = fopen(rflo_fname,"r"); rflo_fd = fopen(rflo_fname,"r");
if (rflo_fd) { if (rflo_fd) {
printf("Loading RF LO parameters from %s\n",rflo_fname); printf("Loading RF LO parameters from %s\n",rflo_fname);
fscanf(rflo_fd,"%d %d %d %d",&rf_local[0],&rf_local[1],&rf_local[2],&rf_local[3]); fscanf(rflo_fd,"%d %d %d %d",&rf_local[0],&rf_local[1],&rf_local[2],&rf_local[3]);
} }
else else
printf("%s not found, running with defaults\n",rflo_fname); printf("%s not found, running with defaults\n",rflo_fname);
sprintf(rfdc_fname,"%srfdc.lime",optarg); sprintf(rfdc_fname,"%srfdc.lime",optarg);
rfdc_fd = fopen(rfdc_fname,"r"); rfdc_fd = fopen(rfdc_fname,"r");
if (rfdc_fd) { if (rfdc_fd) {
printf("Loading RF DC parameters from %s\n",rfdc_fname); printf("Loading RF DC parameters from %s\n",rfdc_fname);
fscanf(rfdc_fd,"%d %d %d %d",&rf_rxdc[0],&rf_rxdc[1],&rf_rxdc[2],&rf_rxdc[3]); fscanf(rfdc_fd,"%d %d %d %d",&rf_rxdc[0],&rf_rxdc[1],&rf_rxdc[2],&rf_rxdc[3]);
} }
else else
printf("%s not found, running with defaults\n",rfdc_fname); printf("%s not found, running with defaults\n",rfdc_fname);
break; break;
/* /*
case 256: case 256:
mode = rx_calib_ue; mode = rx_calib_ue;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA max), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA max), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 257: case 257:
mode = rx_calib_ue_med; mode = rx_calib_ue_med;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA med), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA med), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 258: case 258:
mode = rx_calib_ue_byp; mode = rx_calib_ue_byp;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA byp), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA byp), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 259: case 259:
mode = debug_prach; mode = debug_prach;
break; break;
case 260: case 260:
mode = no_L2_connect; mode = no_L2_connect;
break; break;
*/ */
default: default:
break; break;
} }
......
...@@ -168,6 +168,7 @@ char UE_flag=0; ...@@ -168,6 +168,7 @@ char UE_flag=0;
u8 eNB_id=0,UE_id=0; u8 eNB_id=0,UE_id=0;
u32 carrier_freq[4]= {1907600000,1907600000,1907600000,1907600000}; u32 carrier_freq[4]= {1907600000,1907600000,1907600000,1907600000};
char *g_conf_config_file_name = NULL;
struct timing_info_t { struct timing_info_t {
//unsigned int frame, hw_slot, last_slot, next_slot; //unsigned int frame, hw_slot, last_slot, next_slot;
...@@ -1126,100 +1127,88 @@ int main(int argc, char **argv) { ...@@ -1126,100 +1127,88 @@ int main(int argc, char **argv) {
#endif #endif
break; break;
case 'O': case 'O':
#if defined(ENABLE_USE_MME) g_conf_config_file_name = optarg;
EPC_MODE_ENABLED = 1;
if (optarg == NULL) /* No IP address provided: use localhost */
{
memcpy(&EPC_MODE_MME_ADDRESS[0], "127.0.0.1", 10);
} else {
u8 ip_length = strlen(optarg) + 1;
memcpy(&EPC_MODE_MME_ADDRESS[0], optarg,
ip_length > 16 ? 16 : ip_length);
}
#else
printf("You enabled mme mode without s1ap compiled...\n");
#endif
break; break;
case 'F': case 'F':
sprintf(rxg_fname,"%srxg.lime",optarg); sprintf(rxg_fname,"%srxg.lime",optarg);
rxg_fd = fopen(rxg_fname,"r"); rxg_fd = fopen(rxg_fname,"r");
if (rxg_fd) { if (rxg_fd) {
printf("Loading RX Gain parameters from %s\n",rxg_fname); printf("Loading RX Gain parameters from %s\n",rxg_fname);
l=0; l=0;
while (fgets(line, sizeof(line), rxg_fd)) { while (fgets(line, sizeof(line), rxg_fd)) {
if ((strlen(line)==0) || (*line == '#')) continue; //ignore empty or comment lines if ((strlen(line)==0) || (*line == '#')) continue; //ignore empty or comment lines
else { else {
if (l==0) sscanf(line,"%d %d %d %d",&rxg_max[0],&rxg_max[1],&rxg_max[2],&rxg_max[3]); if (l==0) sscanf(line,"%d %d %d %d",&rxg_max[0],&rxg_max[1],&rxg_max[2],&rxg_max[3]);
if (l==1) sscanf(line,"%d %d %d %d",&rxg_med[0],&rxg_med[1],&rxg_med[2],&rxg_med[3]); if (l==1) sscanf(line,"%d %d %d %d",&rxg_med[0],&rxg_med[1],&rxg_med[2],&rxg_med[3]);
if (l==2) sscanf(line,"%d %d %d %d",&rxg_byp[0],&rxg_byp[1],&rxg_byp[2],&rxg_byp[3]); if (l==2) sscanf(line,"%d %d %d %d",&rxg_byp[0],&rxg_byp[1],&rxg_byp[2],&rxg_byp[3]);
l++; l++;
} }
} }
} }
else else
printf("%s not found, running with defaults\n",rxg_fname); printf("%s not found, running with defaults\n",rxg_fname);
sprintf(txg_fname,"%stxg.lime",optarg); sprintf(txg_fname,"%stxg.lime",optarg);
txg_fd = fopen(txg_fname,"r"); txg_fd = fopen(txg_fname,"r");
if (txg_fd) { if (txg_fd) {
printf("Loading TX Gain parameters from %s\n",txg_fname); printf("Loading TX Gain parameters from %s\n",txg_fname);
l=0; l=0;
while (fgets(line, sizeof(line), txg_fd)) { while (fgets(line, sizeof(line), txg_fd)) {
if ((strlen(line)==0) || (*line == '#')) { if ((strlen(line)==0) || (*line == '#')) {
continue; //ignore empty or comment lines continue; //ignore empty or comment lines
} }
else { else {
if (l==0) sscanf(line,"%d %d %d %d",&txgain[0],&txgain[1],&txgain[2],&txgain[3]); if (l==0) sscanf(line,"%d %d %d %d",&txgain[0],&txgain[1],&txgain[2],&txgain[3]);
if (l==1) sscanf(line,"%d",&tx_max_power); if (l==1) sscanf(line,"%d",&tx_max_power);
l++; l++;
} }
} }
} }
else else
printf("%s not found, running with defaults\n",txg_fname); printf("%s not found, running with defaults\n",txg_fname);
sprintf(rflo_fname,"%srflo.lime",optarg); sprintf(rflo_fname,"%srflo.lime",optarg);
rflo_fd = fopen(rflo_fname,"r"); rflo_fd = fopen(rflo_fname,"r");
if (rflo_fd) { if (rflo_fd) {
printf("Loading RF LO parameters from %s\n",rflo_fname); printf("Loading RF LO parameters from %s\n",rflo_fname);
if (fscanf(rflo_fd,"%d %d %d %d",&rf_local[0],&rf_local[1],&rf_local[2],&rf_local[3]) < 4) if (fscanf(rflo_fd,"%d %d %d %d",&rf_local[0],&rf_local[1],&rf_local[2],&rf_local[3]) < 4)
LOG_E(EMU, "Error parsing \"%s\"", rflo_fname); LOG_E(EMU, "Error parsing \"%s\"", rflo_fname);
} }
else else
printf("%s not found, running with defaults\n",rflo_fname); printf("%s not found, running with defaults\n",rflo_fname);
sprintf(rfdc_fname,"%srfdc.lime",optarg); sprintf(rfdc_fname,"%srfdc.lime",optarg);
rfdc_fd = fopen(rfdc_fname,"r"); rfdc_fd = fopen(rfdc_fname,"r");
if (rfdc_fd) { if (rfdc_fd) {
printf("Loading RF DC parameters from %s\n",rfdc_fname); printf("Loading RF DC parameters from %s\n",rfdc_fname);
if (fscanf(rfdc_fd,"%d %d %d %d",&rf_rxdc[0],&rf_rxdc[1],&rf_rxdc[2],&rf_rxdc[3]) < 4) if (fscanf(rfdc_fd,"%d %d %d %d",&rf_rxdc[0],&rf_rxdc[1],&rf_rxdc[2],&rf_rxdc[3]) < 4)
LOG_E(EMU, "Error parsing \"%s\"", rfdc_fname); LOG_E(EMU, "Error parsing \"%s\"", rfdc_fname);
} }
else else
printf("%s not found, running with defaults\n",rfdc_fname); printf("%s not found, running with defaults\n",rfdc_fname);
break; break;
case 256: case 256:
mode = rx_calib_ue; mode = rx_calib_ue;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA max), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA max), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 257: case 257:
mode = rx_calib_ue_med; mode = rx_calib_ue_med;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA med), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA med), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 258: case 258:
mode = rx_calib_ue_byp; mode = rx_calib_ue_byp;
rx_input_level_dBm = atoi(optarg); rx_input_level_dBm = atoi(optarg);
printf("Running with UE calibration on (LNA byp), input level %d dBm\n",rx_input_level_dBm); printf("Running with UE calibration on (LNA byp), input level %d dBm\n",rx_input_level_dBm);
break; break;
case 259: case 259:
mode = debug_prach; mode = debug_prach;
break; break;
case 260: case 260:
mode = no_L2_connect; mode = no_L2_connect;
break; break;
default: default:
break; break;
} }
...@@ -1344,6 +1333,14 @@ int main(int argc, char **argv) { ...@@ -1344,6 +1333,14 @@ int main(int argc, char **argv) {
g_log->log_component[OTG].flag = LOG_HIGH; g_log->log_component[OTG].flag = LOG_HIGH;
g_log->log_component[RRC].level = LOG_INFO; g_log->log_component[RRC].level = LOG_INFO;
g_log->log_component[RRC].flag = LOG_HIGH; g_log->log_component[RRC].flag = LOG_HIGH;
#if defined(ENABLE_ITTI)
g_log->log_component[EMU].level = LOG_INFO;
g_log->log_component[EMU].flag = LOG_HIGH;
# if defined(ENABLE_USE_MME)
g_log->log_component[NAS].level = LOG_INFO;
g_log->log_component[NAS].flag = LOG_HIGH;
# endif
#endif
PHY_vars_UE_g = malloc(sizeof(PHY_VARS_UE*)); PHY_vars_UE_g = malloc(sizeof(PHY_VARS_UE*));
PHY_vars_UE_g[0] = init_lte_UE(frame_parms, UE_id,abstraction_flag,transmission_mode); PHY_vars_UE_g[0] = init_lte_UE(frame_parms, UE_id,abstraction_flag,transmission_mode);
......
...@@ -202,7 +202,7 @@ void help(void) { ...@@ -202,7 +202,7 @@ void help(void) {
printf ("-m Gives a fixed DL mcs\n"); printf ("-m Gives a fixed DL mcs\n");
printf ("-M Set the machine ID for Ethernet-based emulation\n"); printf ("-M Set the machine ID for Ethernet-based emulation\n");
printf ("-n Set the number of frames for the simulation\n"); printf ("-n Set the number of frames for the simulation\n");
printf ("-O [mme ipv4 address] Enable MME mode\n"); printf ("-O [enb_conf_file] eNB configuration file name\n");
printf ("-p Set the total number of machine in emulation - valid if M is set\n"); printf ("-p Set the total number of machine in emulation - valid if M is set\n");
printf ("-P [trace type] Enable protocol analyzer. Possible values for OPT:\n"); printf ("-P [trace type] Enable protocol analyzer. Possible values for OPT:\n");
printf (" - wireshark: Enable tracing of layers above PHY using an UDP socket\n"); printf (" - wireshark: Enable tracing of layers above PHY using an UDP socket\n");
......
...@@ -118,9 +118,9 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -118,9 +118,9 @@ void get_simulation_options(int argc, char *argv[]) {
char c; char c;
int option_index; int option_index;
static struct option long_options[] = { static struct option long_options[] = {
{"config-file", required_argument, 0, 0}, {"enb-conf", required_argument, 0, 0},
{"pdcp_period", 1, 0, 0}, {"pdcp_period", required_argument, 0, 0},
{"omg_period", 1, 0, 0}, {"omg_period", required_argument, 0, 0},
{"enb-ral-listening-port", required_argument, 0, 0}, {"enb-ral-listening-port", required_argument, 0, 0},
{"enb-ral-ip-address", required_argument, 0, 0}, {"enb-ral-ip-address", required_argument, 0, 0},
{"enb-ral-link-id", required_argument, 0, 0}, {"enb-ral-link-id", required_argument, 0, 0},
...@@ -141,10 +141,10 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -141,10 +141,10 @@ void get_simulation_options(int argc, char *argv[]) {
while ((c = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:Q:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, &option_index)) != -1) { while ((c = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:Q:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, &option_index)) != -1) {
switch (c) { switch (c) {
case 0: case 0:
if (! strcmp(long_options[option_index].name, "config-file")) { if (! strcmp(long_options[option_index].name, "enb-conf")) {
if (optarg) { if (optarg) {
g_conf_config_file_name = strdup(optarg); g_conf_config_file_name = strdup(optarg);
printf("config file is %s\n", g_conf_config_file_name); printf("eNB configuration file is %s\n", g_conf_config_file_name);
} }
} else if (! strcmp(long_options[option_index].name, "pdcp_period")) { } else if (! strcmp(long_options[option_index].name, "pdcp_period")) {
if (optarg) { if (optarg) {
...@@ -462,19 +462,7 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -462,19 +462,7 @@ void get_simulation_options(int argc, char *argv[]) {
/* Sebastien ROUX: Reserved for future use (currently used in ltenow branch) */ /* Sebastien ROUX: Reserved for future use (currently used in ltenow branch) */
break; break;
case 'O': case 'O':
#if defined(ENABLE_USE_MME) g_conf_config_file_name = optarg;
EPC_MODE_ENABLED = 1;
if (optarg == NULL) /* No IP address provided: use localhost */
{
memcpy(&EPC_MODE_MME_ADDRESS[0], "127.0.0.1", 10);
} else {
u8 ip_length = strlen(optarg) + 1;
memcpy(&EPC_MODE_MME_ADDRESS[0], optarg,
ip_length > 16 ? 16 : ip_length);
}
#else
printf("You enabled MME mode without compiling using ENABLE_USE_MME=1 ...\n");
#endif
break; break;
case 'o': case 'o':
oai_emulation.info.slot_isr = 1; oai_emulation.info.slot_isr = 1;
......
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