Commit 03c6604f authored by Matthieu Kanj's avatar Matthieu Kanj

bug fix for configuration part

parent b5a55c13
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
#include "PHY/extern.h" #include "PHY/extern.h"
///////// for NB-IoT ///////////////////////// ///////// for NB-IoT /////////////////////////
//#include "SystemInformationBlockType2-NB-r13.h" #include "SystemInformationBlockType2-NB-r13.h"
//////////////////END///////////////////// //////////////////END/////////////////////
/* those macros are here to help diagnose problems in configuration files /* those macros are here to help diagnose problems in configuration files
...@@ -251,7 +251,7 @@ ...@@ -251,7 +251,7 @@
// //
/////////////////////////////////////////////////NB-IoT parameters /////////////////////////////////////////////// /////////////////////////////////////////////////NB-IoT parameters ///////////////////////////////////////////////
// //
/*
///////////////////////////////////////////////// RRC parameters in the config file of merge branch ///////////////////////////////////////////////// RRC parameters in the config file of merge branch
#define ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP_NB_IOT "rach_powerRampingStep_NB" #define ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP_NB_IOT "rach_powerRampingStep_NB"
#define ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER_NB_IOT "rach_preambleInitialReceivedTargetPower_NB" #define ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER_NB_IOT "rach_preambleInitialReceivedTargetPower_NB"
...@@ -297,7 +297,7 @@ ...@@ -297,7 +297,7 @@
#define ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT "npdcch_NumRepetitions_RA" #define ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT "npdcch_NumRepetitions_RA"
#define ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT "npdcch_StartSF_CSS_RA" #define ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT "npdcch_StartSF_CSS_RA"
#define ENB_CONFIG_STRING_NPDCCH_OFFSET_RA_NB_IOT "npdcch_Offset_RA" #define ENB_CONFIG_STRING_NPDCCH_OFFSET_RA_NB_IOT "npdcch_Offset_RA"
*/
/////////////////////////////////////////////////END/////////////////////////////////////////////// /////////////////////////////////////////////////END///////////////////////////////////////////////
#define KHz (1000UL) #define KHz (1000UL)
...@@ -371,29 +371,29 @@ void enb_config_display(void) ...@@ -371,29 +371,29 @@ void enb_config_display(void)
for (j=0; j< enb_properties.properties[i]->nb_rrh_gw; j++) { for (j=0; j< enb_properties.properties[i]->nb_rrh_gw; j++) {
if (enb_properties.properties[i]->rrh_gw_config[j].active == 1 ){ if (enb_properties.properties[i]->rrh_gw_config[j].active == 1 ){
printf( "\n\tRRH GW %d config for eNB %u:\n\n", j, i); printf( "\n\tRRH GW %d config for eNB %u:\n\n", j, i);
printf( "\tinterface name : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].rrh_gw_if_name); printf( "\tinterface name : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].rrh_gw_if_name);
printf( "\tlocal address : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].local_address); printf( "\tlocal address : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].local_address);
printf( "\tlocal port : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].local_port); printf( "\tlocal port : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].local_port);
printf( "\tremote address : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].remote_address); printf( "\tremote address : \t%s:\n",enb_properties.properties[i]->rrh_gw_config[j].remote_address);
printf( "\tremote port : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].remote_port); printf( "\tremote port : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].remote_port);
printf( "\ttx_scheduling_advance :\t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].tx_scheduling_advance); printf( "\ttx_scheduling_advance :\t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].tx_scheduling_advance);
printf( "\ttx_sample_advance : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].tx_sample_advance); printf( "\ttx_sample_advance : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].tx_sample_advance);
printf( "\tiq_txshift : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].iq_txshift); printf( "\tiq_txshift : \t%d:\n",enb_properties.properties[i]->rrh_gw_config[j].iq_txshift);
printf( "\ttransport : \t%s Ethernet:\n",(enb_properties.properties[i]->rrh_gw_config[j].raw == 1)? "RAW" : (enb_properties.properties[i]->rrh_gw_config[j].rawif4p5 == 1)? "RAW_IF4p5" : (enb_properties.properties[i]->rrh_gw_config[j].udpif4p5 == 1)? "UDP_IF4p5" : (enb_properties.properties[i]->rrh_gw_config[j].rawif5_mobipass == 1)? "RAW_IF5_MOBIPASS" : "UDP"); printf( "\ttransport : \t%s Ethernet:\n",(enb_properties.properties[i]->rrh_gw_config[j].raw == 1)? "RAW" : (enb_properties.properties[i]->rrh_gw_config[j].rawif4p5 == 1)? "RAW_IF4p5" : (enb_properties.properties[i]->rrh_gw_config[j].udpif4p5 == 1)? "UDP_IF4p5" : (enb_properties.properties[i]->rrh_gw_config[j].rawif5_mobipass == 1)? "RAW_IF5_MOBIPASS" : "UDP");
if (enb_properties.properties[i]->rrh_gw_config[j].exmimo == 1) { if (enb_properties.properties[i]->rrh_gw_config[j].exmimo == 1) {
printf( "\tRF target : \tEXMIMO:\n"); printf( "\tRF target : \tEXMIMO:\n");
} else if (enb_properties.properties[i]->rrh_gw_config[j].usrp_b200 == 1) { } else if (enb_properties.properties[i]->rrh_gw_config[j].usrp_b200 == 1) {
printf( "\tRF target : \tUSRP_B200:\n"); printf( "\tRF target : \tUSRP_B200:\n");
} else if (enb_properties.properties[i]->rrh_gw_config[j].usrp_x300 == 1) { } else if (enb_properties.properties[i]->rrh_gw_config[j].usrp_x300 == 1) {
printf( "\tRF target : \tUSRP_X300:\n"); printf( "\tRF target : \tUSRP_X300:\n");
} else if (enb_properties.properties[i]->rrh_gw_config[j].bladerf == 1) { } else if (enb_properties.properties[i]->rrh_gw_config[j].bladerf == 1) {
printf( "\tRF target : \tBLADERF:\n"); printf( "\tRF target : \tBLADERF:\n");
} else if (enb_properties.properties[i]->rrh_gw_config[j].lmssdr == 1) { } else if (enb_properties.properties[i]->rrh_gw_config[j].lmssdr == 1) {
printf( "\tRF target : \tLMSSDR:\n"); printf( "\tRF target : \tLMSSDR:\n");
} else { } else {
printf( "\tRF target : \tNONE:\n"); printf( "\tRF target : \tNONE:\n");
} }
printf( "\tif_compression : \t%s Compression:\n",(enb_properties.properties[i]->rrh_gw_config[j].if_compress == 1)? "ALAW" : "None"); printf( "\tif_compression : \t%s Compression:\n",(enb_properties.properties[i]->rrh_gw_config[j].if_compress == 1)? "ALAW" : "None");
} }
} }
...@@ -551,7 +551,7 @@ static int enb_check_band_frequencies(char* lib_config_file_name_pP, ...@@ -551,7 +551,7 @@ static int enb_check_band_frequencies(char* lib_config_file_name_pP,
if (band == eutra_bands[band_index].band) { if (band == eutra_bands[band_index].band) {
uint32_t uplink_frequency = downlink_frequency + uplink_frequency_offset; uint32_t uplink_frequency = downlink_frequency + uplink_frequency_offset;
/* AssertError (eutra_bands[band_index].dl_min < downlink_frequency, errors ++, AssertError (eutra_bands[band_index].dl_min < downlink_frequency, errors ++,
"Failed to parse eNB configuration file %s, enb %d downlink frequency %u too low (%u) for band %d!", "Failed to parse eNB configuration file %s, enb %d downlink frequency %u too low (%u) for band %d!",
lib_config_file_name_pP, enb_properties_index, downlink_frequency, eutra_bands[band_index].dl_min, band); lib_config_file_name_pP, enb_properties_index, downlink_frequency, eutra_bands[band_index].dl_min, band);
AssertError (downlink_frequency < eutra_bands[band_index].dl_max, errors ++, AssertError (downlink_frequency < eutra_bands[band_index].dl_max, errors ++,
...@@ -564,7 +564,7 @@ static int enb_check_band_frequencies(char* lib_config_file_name_pP, ...@@ -564,7 +564,7 @@ static int enb_check_band_frequencies(char* lib_config_file_name_pP,
AssertError (uplink_frequency < eutra_bands[band_index].ul_max, errors ++, AssertError (uplink_frequency < eutra_bands[band_index].ul_max, errors ++,
"Failed to parse eNB configuration file %s, enb %d uplink frequency %u too high (%u) for band %d!", "Failed to parse eNB configuration file %s, enb %d uplink frequency %u too high (%u) for band %d!",
lib_config_file_name_pP, enb_properties_index, uplink_frequency, eutra_bands[band_index].ul_max, band); lib_config_file_name_pP, enb_properties_index, uplink_frequency, eutra_bands[band_index].ul_max, band);
*/
AssertError (eutra_bands[band_index].frame_type == frame_type, errors ++, AssertError (eutra_bands[band_index].frame_type == frame_type, errors ++,
"Failed to parse eNB configuration file %s, enb %d invalid frame type (%d/%d) for band %d!", "Failed to parse eNB configuration file %s, enb %d invalid frame type (%d/%d) for band %d!",
lib_config_file_name_pP, enb_properties_index, eutra_bands[band_index].frame_type, frame_type, band); lib_config_file_name_pP, enb_properties_index, eutra_bands[band_index].frame_type, frame_type, band);
...@@ -763,7 +763,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -763,7 +763,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
// //
/////////////////////////////////////////////////NB-IoT parameters /////////////////////////////////////////////// /////////////////////////////////////////////////NB-IoT parameters ///////////////////////////////////////////////
// //
/*
libconfig_int rach_raResponseWindowSize_NB = 0; libconfig_int rach_raResponseWindowSize_NB = 0;
libconfig_int rach_macContentionResolutionTimer_NB = 0; libconfig_int rach_macContentionResolutionTimer_NB = 0;
libconfig_int rach_powerRampingStep_NB = 0; libconfig_int rach_powerRampingStep_NB = 0;
...@@ -804,7 +804,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -804,7 +804,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
libconfig_int npdcch_NumRepetitions_RA = 0; libconfig_int npdcch_NumRepetitions_RA = 0;
libconfig_int npdcch_StartSF_CSS_RA = 0; libconfig_int npdcch_StartSF_CSS_RA = 0;
const char* npdcch_Offset_RA = NULL; const char* npdcch_Offset_RA = NULL;
*/
////////////////////////////////////////////////END/////////////////////////////////////////////// ////////////////////////////////////////////////END///////////////////////////////////////////////
...@@ -949,7 +949,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -949,7 +949,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
for (j = 0; j < num_component_carriers /*&& j < MAX_NUM_CCs*/; j++) { for (j = 0; j < num_component_carriers /*&& j < MAX_NUM_CCs*/; j++) {
component_carrier = config_setting_get_elem(setting_component_carriers, j); component_carrier = config_setting_get_elem(setting_component_carriers, j);
//printf("Component carrier %d\n",component_carrier);
if (!(config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_CC_NODE_FUNCTION, &cc_node_function) if (!(config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_CC_NODE_FUNCTION, &cc_node_function)
&& config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_CC_NODE_TIMING, &cc_node_timing) && config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_CC_NODE_TIMING, &cc_node_timing)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_CC_NODE_SYNCH_REF, &cc_node_synch_ref) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_CC_NODE_SYNCH_REF, &cc_node_synch_ref)
...@@ -1020,10 +1020,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -1020,10 +1020,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N310, &ue_TimersAndConstants_n310) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N310, &ue_TimersAndConstants_n310)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N311, &ue_TimersAndConstants_n311) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N311, &ue_TimersAndConstants_n311)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, &ue_TransmissionMode) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, &ue_TransmissionMode)
/*
//
/////////////////////////////////////////////// NB-IoT ///////////////////////////////////////////////
//
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE_NB_IOT, &rach_raResponseWindowSize_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE_NB_IOT, &rach_raResponseWindowSize_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER_NB_IOT, &rach_macContentionResolutionTimer_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER_NB_IOT, &rach_macContentionResolutionTimer_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP_NB_IOT, &rach_powerRampingStep_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP_NB_IOT, &rach_powerRampingStep_NB)
...@@ -1046,14 +1042,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -1046,14 +1042,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPUSCH_P0NOMINALPUSH_NB_IOT, &npusch_p0_NominalNPUSCH) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPUSCH_P0NOMINALPUSH_NB_IOT, &npusch_p0_NominalNPUSCH)
&& config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_NPUSCH_ALPHA_NB_IOT, &npusch_alpha) && config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_NPUSCH_ALPHA_NB_IOT, &npusch_alpha)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_DELTAPREAMBLEMSG3_NB_IOT, &deltaPreambleMsg3) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_DELTAPREAMBLEMSG3_NB_IOT, &deltaPreambleMsg3)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T300_NB_IOT, &ue_TimersAndConstants_t300_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T300_NB_IOT, &ue_TimersAndConstants_t300_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T301_NB_IOT, &ue_TimersAndConstants_t301_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T301_NB_IOT, &ue_TimersAndConstants_t301_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T310_NB_IOT, &ue_TimersAndConstants_t310_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T310_NB_IOT, &ue_TimersAndConstants_t310_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T311_NB_IOT, &ue_TimersAndConstants_t311_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_T311_NB_IOT, &ue_TimersAndConstants_t311_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N310_NB_IOT, &ue_TimersAndConstants_n310_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N310_NB_IOT, &ue_TimersAndConstants_n310_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N311_NB_IOT, &ue_TimersAndConstants_n311_NB) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_UETIMERS_N311_NB_IOT, &ue_TimersAndConstants_n311_NB)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_PERIODICITY_NB_IOT, &nprach_Periodicity) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_PERIODICITY_NB_IOT, &nprach_Periodicity)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_STARTTIME_NB_IOT, &nprach_StartTime) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_STARTTIME_NB_IOT, &nprach_StartTime)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_SUBCARRIEROFFSET_NB_IOT, &nprach_SubcarrierOffset) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPRACH_SUBCARRIEROFFSET_NB_IOT, &nprach_SubcarrierOffset)
...@@ -1064,8 +1058,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -1064,8 +1058,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT, &npdcch_NumRepetitions_RA) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT, &npdcch_NumRepetitions_RA)
&& config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT, &npdcch_StartSF_CSS_RA) && config_setting_lookup_int(component_carrier, ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT, &npdcch_StartSF_CSS_RA)
&& config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_NPDCCH_OFFSET_RA_NB_IOT, &npdcch_Offset_RA) && config_setting_lookup_string(component_carrier, ENB_CONFIG_STRING_NPDCCH_OFFSET_RA_NB_IOT, &npdcch_Offset_RA)
*/
////////////////////////////////////////////////////END///////////////////////////////////////////////
#if defined(Rel10) || defined(Rel14) #if defined(Rel10) || defined(Rel14)
...@@ -2091,35 +2083,35 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -2091,35 +2083,35 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
} }
switch (ue_TransmissionMode) { switch (ue_TransmissionMode) {
case 1: case 1:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm1; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm1;
break; break;
case 2: case 2:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm2; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm2;
break; break;
case 3: case 3:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm3; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm3;
break; break;
case 4: case 4:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm4; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm4;
break; break;
case 5: case 5:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm5; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm5;
break; break;
case 6: case 6:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm6; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm6;
break; break;
case 7: case 7:
enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm7; enb_properties.properties[enb_properties_index]->ue_TransmissionMode[j] = AntennaInfoDedicated__transmissionMode_tm7;
break; break;
default: default:
AssertFatal (0, AssertFatal (0,
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_TransmissionMode choice: 1,2,3,4,5,6,7", "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_TransmissionMode choice: 1,2,3,4,5,6,7",
lib_config_file_name_pP, i, ue_TransmissionMode); lib_config_file_name_pP, i, ue_TransmissionMode);
break; break;
} }
/*
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////// NB-IoT part /////////////////////////////////////////////// /////////////////////////////////////////////// NB-IoT part ///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
...@@ -2433,13 +2425,13 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -2433,13 +2425,13 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
lib_config_file_name_pP, i, nprach_rsrp_range); lib_config_file_name_pP, i, nprach_rsrp_range);
enb_properties.properties[enb_properties_index]->npdsch_nrs_Power[j] = npdsch_nrs_Power; enb_properties.properties[enb_properties_index]->npdsch_nrs_Power[j] = npdsch_nrs_Power;
if ((npdsch_nrs_Power<-60)||(npdsch_nrs_Power>50)) if ((npdsch_nrs_Power<-60)||(npdsch_nrs_Power>50))
AssertFatal (0, AssertFatal (0,
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npdsch_nrs_Power choice: -60..50 !\n", "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npdsch_nrs_Power choice: -60..50 !\n",
lib_config_file_name_pP, i, npdsch_nrs_Power); lib_config_file_name_pP, i, npdsch_nrs_Power);
switch (npusch_ack_nack_numRepetitions_NB) { switch (npusch_ack_nack_numRepetitions_NB) {
case 1: case 1:
enb_properties.properties[enb_properties_index]->npusch_ack_nack_numRepetitions_NB[j] = ACK_NACK_NumRepetitions_NB_r13_r1; enb_properties.properties[enb_properties_index]->npusch_ack_nack_numRepetitions_NB[j] = ACK_NACK_NumRepetitions_NB_r13_r1;
...@@ -2562,7 +2554,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -2562,7 +2554,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
lib_config_file_name_pP, i, npusch_threeTone_CyclicShift_r13); lib_config_file_name_pP, i, npusch_threeTone_CyclicShift_r13);
enb_properties.properties[enb_properties_index]->npusch_sixTone_CyclicShift_r13[j] = npusch_sixTone_CyclicShift_r13; enb_properties.properties[enb_properties_index]->npusch_sixTone_CyclicShift_r13[j] = npusch_sixTone_CyclicShift_r13;
if ((npusch_sixTone_CyclicShift_r13<0)||(npusch_sixTone_CyclicShift_r13>3)) if ((npusch_sixTone_CyclicShift_r13<0)||(npusch_sixTone_CyclicShift_r13>3))
AssertFatal (0, AssertFatal (0,
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npusch_sixTone_CyclicShift_r13 choice: 0..3 !\n", "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npusch_sixTone_CyclicShift_r13 choice: 0..3 !\n",
...@@ -2653,7 +2645,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -2653,7 +2645,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
lib_config_file_name_pP, i, dl_GapDurationCoeff_NB); lib_config_file_name_pP, i, dl_GapDurationCoeff_NB);
enb_properties.properties[enb_properties_index]->npusch_p0_NominalNPUSCH[j] = npusch_p0_NominalNPUSCH; enb_properties.properties[enb_properties_index]->npusch_p0_NominalNPUSCH[j] = npusch_p0_NominalNPUSCH;
if ((npusch_p0_NominalNPUSCH < -126)||(npusch_p0_NominalNPUSCH> 24)) if ((npusch_p0_NominalNPUSCH < -126)||(npusch_p0_NominalNPUSCH> 24))
AssertFatal (0, AssertFatal (0,
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npusch_p0_NominalNPUSCH choice: -126..24 !\n", "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for npusch_p0_NominalNPUSCH choice: -126..24 !\n",
...@@ -2729,6 +2721,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -2729,6 +2721,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break; break;
} }
switch (ue_TimersAndConstants_t301_NB) { switch (ue_TimersAndConstants_t301_NB) {
case 2500: case 2500:
enb_properties.properties[enb_properties_index]->ue_TimersAndConstants_t301_NB[j] = UE_TimersAndConstants_NB_r13__t301_r13_ms2500; enb_properties.properties[enb_properties_index]->ue_TimersAndConstants_t301_NB[j] = UE_TimersAndConstants_NB_r13__t301_r13_ms2500;
...@@ -3010,23 +3003,23 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3010,23 +3003,23 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
} }
switch (nprach_SubcarrierOffset) { switch (nprach_SubcarrierOffset) {
case 40: case 0:
enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n0; enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n0;
break; break;
case 80: case 12:
enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n12; enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n12;
break; break;
case 160: case 24:
enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n24; enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n24;
break; break;
case 240: case 36:
enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n36; enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n36;
break; break;
case 32: case 2:
enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n2; enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n2;
break; break;
...@@ -3074,7 +3067,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3074,7 +3067,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break; break;
} }
if (strcmp(nprach_SubcarrierMSG3_RangeStart, "zero") == 0) { if (strcmp(nprach_SubcarrierMSG3_RangeStart, "zero") == 0) {
enb_properties.properties[enb_properties_index]->nprach_SubcarrierMSG3_RangeStart[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_zero; enb_properties.properties[enb_properties_index]->nprach_SubcarrierMSG3_RangeStart[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_zero;
} else if (strcmp(nprach_SubcarrierMSG3_RangeStart, "oneThird") == 0) { } else if (strcmp(nprach_SubcarrierMSG3_RangeStart, "oneThird") == 0) {
...@@ -3277,7 +3270,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3277,7 +3270,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for npdcch_Offset_RA choice: zero,oneEighth,oneFourth,threeEighth !\n", "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for npdcch_Offset_RA choice: zero,oneEighth,oneFourth,threeEighth !\n",
lib_config_file_name_pP, i, npdcch_Offset_RA); lib_config_file_name_pP, i, npdcch_Offset_RA);
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////END////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////END//////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...@@ -3643,115 +3636,115 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3643,115 +3636,115 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1; enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1;
} }
} }
// RRH Config // RRH Config
setting_rrh_gws = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_RRH_GW_CONFIG); setting_rrh_gws = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_RRH_GW_CONFIG);
if ( setting_rrh_gws != NULL) { if ( setting_rrh_gws != NULL) {
num_rrh_gw = config_setting_length(setting_rrh_gws); num_rrh_gw = config_setting_length(setting_rrh_gws);
enb_properties.properties[enb_properties_index]->nb_rrh_gw = 0; enb_properties.properties[enb_properties_index]->nb_rrh_gw = 0;
for (j = 0; j < num_rrh_gw; j++) { for (j = 0; j < num_rrh_gw; j++) {
setting_rrh_gw = config_setting_get_elem(setting_rrh_gws, j); setting_rrh_gw = config_setting_get_elem(setting_rrh_gws, j);
if ( !( if ( !(
config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_IF_NAME, (const char **)&if_name) config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_IF_NAME, (const char **)&if_name)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_ADDRESS, (const char **)&ipv4) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_ADDRESS, (const char **)&ipv4)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_REMOTE_ADDRESS , (const char **)&ipv4_remote) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_REMOTE_ADDRESS , (const char **)&ipv4_remote)
&& config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_PORT, &local_port) && config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_LOCAL_PORT, &local_port)
&& config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_REMOTE_PORT, &remote_port) && config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_REMOTE_PORT, &remote_port)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_ACTIVE, (const char **)&active) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_ACTIVE, (const char **)&active)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TRANSPORT_PREFERENCE, (const char **)&tr_preference) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TRANSPORT_PREFERENCE, (const char **)&tr_preference)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_RF_TARGET_PREFERENCE, (const char **)&rf_preference) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_RF_TARGET_PREFERENCE, (const char **)&rf_preference)
&& config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_IQ_TXSHIFT, &iq_txshift) && config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_IQ_TXSHIFT, &iq_txshift)
&& config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TX_SAMPLE_ADVANCE, &tx_sample_advance) && config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TX_SAMPLE_ADVANCE, &tx_sample_advance)
&& config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TX_SCHEDULING_ADVANCE, &tx_scheduling_advance) && config_setting_lookup_int(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_TX_SCHEDULING_ADVANCE, &tx_scheduling_advance)
&& config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_IF_COMPRESSION, (const char **)&if_compression) && config_setting_lookup_string(setting_rrh_gw, ENB_CONFIG_STRING_RRH_GW_IF_COMPRESSION, (const char **)&if_compression)
) )
) { ) {
AssertFatal (0, AssertFatal (0,
"Failed to parse eNB configuration file %s, %u th enb %u the RRH GW address !\n", "Failed to parse eNB configuration file %s, %u th enb %u the RRH GW address !\n",
lib_config_file_name_pP, i, j); lib_config_file_name_pP, i, j);
continue; // FIXME will prevent segfaults below, not sure what happens at function exit... continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
} }
enb_properties.properties[enb_properties_index]->nb_rrh_gw += 1; enb_properties.properties[enb_properties_index]->nb_rrh_gw += 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rrh_gw_if_name = strdup(if_name); enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rrh_gw_if_name = strdup(if_name);
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_address = strdup(ipv4); enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_address = strdup(ipv4);
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_address = strdup(ipv4_remote); enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_address = strdup(ipv4_remote);
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_port = local_port; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_port = local_port;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_port = remote_port; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_port = remote_port;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].iq_txshift = iq_txshift; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].iq_txshift = iq_txshift;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_sample_advance = tx_sample_advance; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_sample_advance = tx_sample_advance;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_scheduling_advance= tx_scheduling_advance; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_scheduling_advance= tx_scheduling_advance;
if (strcmp(active, "yes") == 0) { if (strcmp(active, "yes") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].active = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].active = 1;
} }
if (strcmp(tr_preference, "udp") == 0) { if (strcmp(tr_preference, "udp") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 1;
} else if (strcmp(tr_preference, "raw") == 0) { } else if (strcmp(tr_preference, "raw") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 1;
} else if (strcmp(tr_preference, "udp_if4p5") == 0) { } else if (strcmp(tr_preference, "udp_if4p5") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udpif4p5 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udpif4p5 = 1;
} else if (strcmp(tr_preference, "raw_if4p5") == 0) { } else if (strcmp(tr_preference, "raw_if4p5") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rawif4p5 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rawif4p5 = 1;
} else if (strcmp(tr_preference, "raw_if5_mobipass") == 0) { } else if (strcmp(tr_preference, "raw_if5_mobipass") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rawif5_mobipass = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rawif5_mobipass = 1;
} else {//if (strcmp(preference, "no") == 0) } else {//if (strcmp(preference, "no") == 0)
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 1;
} }
if (strcmp(rf_preference, "exmimo") == 0) { if (strcmp(rf_preference, "exmimo") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 1;
} else if (strcmp(rf_preference, "usrp_b200") == 0) { } else if (strcmp(rf_preference, "usrp_b200") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 1;
} else if (strcmp(rf_preference, "usrp_x300") == 0) { } else if (strcmp(rf_preference, "usrp_x300") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 1;
} else if (strcmp(rf_preference, "bladerf") == 0) { } else if (strcmp(rf_preference, "bladerf") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 1;
} else if (strcmp(rf_preference, "lmsdr") == 0) { } else if (strcmp(rf_preference, "lmsdr") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 1;
} else {//if (strcmp(preference, "no") == 0) } else {//if (strcmp(preference, "no") == 0)
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 1;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 1;
} }
if (strcmp(if_compression, "alaw") == 0) { if (strcmp(if_compression, "alaw") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 1; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 1;
} else if (strcmp(if_compression, "none") == 0) { } else if (strcmp(if_compression, "none") == 0) {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0;
} else { } else {
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0;
} }
} }
} else { } else {
enb_properties.properties[enb_properties_index]->nb_rrh_gw = 0; enb_properties.properties[enb_properties_index]->nb_rrh_gw = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rrh_gw_if_name = "none"; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].rrh_gw_if_name = "none";
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_address = "0.0.0.0"; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_address = "0.0.0.0";
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_address = "0.0.0.0"; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_address = "0.0.0.0";
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_port= 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].local_port= 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_port= 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].remote_port= 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].active = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].active = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].udp = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].raw = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_scheduling_advance = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_scheduling_advance = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_sample_advance = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].tx_sample_advance = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].iq_txshift = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].iq_txshift = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].exmimo = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_b200 = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].usrp_x300 = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].bladerf = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].lmssdr = 0;
enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0; enb_properties.properties[enb_properties_index]->rrh_gw_config[j].if_compress = 0;
} }
// SCTP SETTING // SCTP SETTING
enb_properties.properties[enb_properties_index]->sctp_out_streams = SCTP_OUT_STREAMS; enb_properties.properties[enb_properties_index]->sctp_out_streams = SCTP_OUT_STREAMS;
enb_properties.properties[enb_properties_index]->sctp_in_streams = SCTP_IN_STREAMS; enb_properties.properties[enb_properties_index]->sctp_in_streams = SCTP_IN_STREAMS;
...@@ -3760,11 +3753,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3760,11 +3753,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if (subsetting != NULL) { if (subsetting != NULL) {
if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_INSTREAMS, &my_int) )) { if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_INSTREAMS, &my_int) )) {
enb_properties.properties[enb_properties_index]->sctp_in_streams = (uint16_t)my_int; enb_properties.properties[enb_properties_index]->sctp_in_streams = (uint16_t)my_int;
} }
if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_OUTSTREAMS, &my_int) )) { if ( (config_setting_lookup_int( subsetting, ENB_CONFIG_STRING_SCTP_OUTSTREAMS, &my_int) )) {
enb_properties.properties[enb_properties_index]->sctp_out_streams = (uint16_t)my_int; enb_properties.properties[enb_properties_index]->sctp_out_streams = (uint16_t)my_int;
} }
} }
#endif #endif
...@@ -3805,9 +3798,9 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3805,9 +3798,9 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
} }
} }
} }
// Network Controller // Network Controller
subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_NETWORK_CONTROLLER_CONFIG); subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_NETWORK_CONTROLLER_CONFIG);
if (subsetting != NULL) { if (subsetting != NULL) {
if ( ( if ( (
...@@ -3817,23 +3810,23 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -3817,23 +3810,23 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
(const char **)&flexran_agent_ipv4_address) (const char **)&flexran_agent_ipv4_address)
&& config_setting_lookup_int(subsetting, ENB_CONFIG_STRING_FLEXRAN_AGENT_PORT, && config_setting_lookup_int(subsetting, ENB_CONFIG_STRING_FLEXRAN_AGENT_PORT,
&flexran_agent_port) &flexran_agent_port)
&& config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_FLEXRAN_AGENT_CACHE, && config_setting_lookup_string( subsetting, ENB_CONFIG_STRING_FLEXRAN_AGENT_CACHE,
(const char **)&flexran_agent_cache) (const char **)&flexran_agent_cache)
) )
) { ) {
enb_properties.properties[enb_properties_index]->flexran_agent_interface_name = strdup(flexran_agent_interface_name); enb_properties.properties[enb_properties_index]->flexran_agent_interface_name = strdup(flexran_agent_interface_name);
cidr = flexran_agent_ipv4_address; cidr = flexran_agent_ipv4_address;
address = strtok(cidr, "/"); address = strtok(cidr, "/");
//enb_properties.properties[enb_properties_index]->flexran_agent_ipv4_address = strdup(address); //enb_properties.properties[enb_properties_index]->flexran_agent_ipv4_address = strdup(address);
if (address) { if (address) {
IPV4_STR_ADDR_TO_INT_NWBO (address, enb_properties.properties[enb_properties_index]->flexran_agent_ipv4_address, "BAD IP ADDRESS FORMAT FOR eNB Agent !\n" ); IPV4_STR_ADDR_TO_INT_NWBO (address, enb_properties.properties[enb_properties_index]->flexran_agent_ipv4_address, "BAD IP ADDRESS FORMAT FOR eNB Agent !\n" );
} }
enb_properties.properties[enb_properties_index]->flexran_agent_port = flexran_agent_port; enb_properties.properties[enb_properties_index]->flexran_agent_port = flexran_agent_port;
enb_properties.properties[enb_properties_index]->flexran_agent_cache = strdup(flexran_agent_cache); enb_properties.properties[enb_properties_index]->flexran_agent_cache = strdup(flexran_agent_cache);
} }
} }
// OTG _CONFIG //MP: refers to USB On the GO Features ?? (use USB devices as a fleshdrives) // OTG _CONFIG //MP: refers to USB On the GO Features ?? (use USB devices as a fleshdrives)
setting_otg = config_setting_get_member (setting_enb, ENB_CONF_STRING_OTG_CONFIG); setting_otg = config_setting_get_member (setting_enb, ENB_CONF_STRING_OTG_CONFIG);
...@@ -4119,7 +4112,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) ...@@ -4119,7 +4112,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
"Failed to parse eNB configuration file %s, mismatch between %u active eNBs and %u corresponding defined eNBs !\n", "Failed to parse eNB configuration file %s, mismatch between %u active eNBs and %u corresponding defined eNBs !\n",
lib_config_file_name_pP, num_enb_properties, enb_properties_index); lib_config_file_name_pP, num_enb_properties, enb_properties_index);
enb_config_display(); //enb_config_display();
return &enb_properties; return &enb_properties;
} }
......
...@@ -209,7 +209,7 @@ typedef struct Enb_properties_s { ...@@ -209,7 +209,7 @@ typedef struct Enb_properties_s {
#endif #endif
long ue_TransmissionMode[1+MAX_NUM_CCs]; long ue_TransmissionMode[1+MAX_NUM_CCs];
// //
//*************************************** NB-IoT ********************************************** /////////////////////////////////////////// NB-IoT ///////////////////////////////////////////////////
// //
long rach_raResponseWindowSize_NB[1+MAX_NUM_CCs]; long rach_raResponseWindowSize_NB[1+MAX_NUM_CCs];
long rach_macContentionResolutionTimer_NB[1+MAX_NUM_CCs]; long rach_macContentionResolutionTimer_NB[1+MAX_NUM_CCs];
...@@ -220,7 +220,7 @@ typedef struct Enb_properties_s { ...@@ -220,7 +220,7 @@ typedef struct Enb_properties_s {
long pcch_defaultPagingCycle_NB[1+MAX_NUM_CCs]; long pcch_defaultPagingCycle_NB[1+MAX_NUM_CCs];
long nprach_CP_Length[1+MAX_NUM_CCs]; long nprach_CP_Length[1+MAX_NUM_CCs];
long nprach_rsrp_range[1+MAX_NUM_CCs]; long nprach_rsrp_range[1+MAX_NUM_CCs];
char* nprach_SubcarrierMSG3_RangeStart; long nprach_SubcarrierMSG3_RangeStart[1+MAX_NUM_CCs];
long maxNumPreambleAttemptCE_NB[1+MAX_NUM_CCs]; long maxNumPreambleAttemptCE_NB[1+MAX_NUM_CCs];
long npdsch_nrs_Power[1+MAX_NUM_CCs]; long npdsch_nrs_Power[1+MAX_NUM_CCs];
long npusch_ack_nack_numRepetitions_NB[1+MAX_NUM_CCs]; long npusch_ack_nack_numRepetitions_NB[1+MAX_NUM_CCs];
...@@ -231,7 +231,7 @@ typedef struct Enb_properties_s { ...@@ -231,7 +231,7 @@ typedef struct Enb_properties_s {
long npusch_groupAssignmentNPUSCH_r13[1+MAX_NUM_CCs]; long npusch_groupAssignmentNPUSCH_r13[1+MAX_NUM_CCs];
long dl_GapThreshold_NB[1+MAX_NUM_CCs]; long dl_GapThreshold_NB[1+MAX_NUM_CCs];
long dl_GapPeriodicity_NB[1+MAX_NUM_CCs]; long dl_GapPeriodicity_NB[1+MAX_NUM_CCs];
char* dl_GapDurationCoeff_NB; long dl_GapDurationCoeff_NB[1+MAX_NUM_CCs];
long npusch_p0_NominalNPUSCH[1+MAX_NUM_CCs]; long npusch_p0_NominalNPUSCH[1+MAX_NUM_CCs];
long npusch_alpha[1+MAX_NUM_CCs]; long npusch_alpha[1+MAX_NUM_CCs];
long deltaPreambleMsg3[1+MAX_NUM_CCs]; long deltaPreambleMsg3[1+MAX_NUM_CCs];
...@@ -250,9 +250,9 @@ typedef struct Enb_properties_s { ...@@ -250,9 +250,9 @@ typedef struct Enb_properties_s {
long numRepetitionsPerPreambleAttempt[1+MAX_NUM_CCs]; long numRepetitionsPerPreambleAttempt[1+MAX_NUM_CCs];
long npdcch_NumRepetitions_RA[1+MAX_NUM_CCs]; long npdcch_NumRepetitions_RA[1+MAX_NUM_CCs];
long npdcch_StartSF_CSS_RA[1+MAX_NUM_CCs]; long npdcch_StartSF_CSS_RA[1+MAX_NUM_CCs];
char* npdcch_Offset_RA; long npdcch_Offset_RA[1+MAX_NUM_CCs];
//********************************************END****************************************************** /////////////////////////////////////////////END/////////////////////////////////////////////
long srb1_timer_poll_retransmit; long srb1_timer_poll_retransmit;
long srb1_timer_reordering; long srb1_timer_reordering;
long srb1_timer_status_prohibit; long srb1_timer_status_prohibit;
......
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