From f8d7ce32761add52de8877b8328110d56598be44 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Wed, 7 Nov 2018 00:37:40 +0100
Subject: [PATCH] regular LTE functional (simulation)

---
 openair1/SCHED/fapi_l1.c                      |   11 +-
 openair2/ENB_APP/enb_config.c                 | 3076 +++++++----------
 openair2/ENB_APP/enb_paramdef.h               |  307 +-
 openair2/ENB_APP/enb_paramdef_emtc.h          |  390 ++-
 openair2/LAYER2/MAC/eNB_scheduler_RA.c        |   21 +-
 openair2/LAYER2/MAC/eNB_scheduler_dlsch.c     |   35 +-
 .../GENERIC-LTE-EPC/CONF/rru.oaisim.conf      |    4 +-
 7 files changed, 1746 insertions(+), 2098 deletions(-)

diff --git a/openair1/SCHED/fapi_l1.c b/openair1/SCHED/fapi_l1.c
index 35e3aed5d6..beab40acab 100755
--- a/openair1/SCHED/fapi_l1.c
+++ b/openair1/SCHED/fapi_l1.c
@@ -950,11 +950,12 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
 
     switch (hi_dci0_req_pdu->pdu_type) {
 
-      case NFAPI_HI_DCI0_DCI_PDU_TYPE:
-
-        handle_nfapi_hi_dci0_dci_pdu(eNB,NFAPI_SFNSF2SFN(HI_DCI0_req->sfn_sf),NFAPI_SFNSF2SF(HI_DCI0_req->sfn_sf),proc,hi_dci0_req_pdu);
-
-
+    case NFAPI_HI_DCI0_DCI_PDU_TYPE:
+      
+      handle_nfapi_hi_dci0_dci_pdu(eNB,NFAPI_SFNSF2SFN(HI_DCI0_req->sfn_sf),NFAPI_SFNSF2SF(HI_DCI0_req->sfn_sf),proc,hi_dci0_req_pdu);
+      eNB->pdcch_vars[NFAPI_SFNSF2SF(HI_DCI0_req->sfn_sf)&1].num_dci++;
+      break;
+      
     case NFAPI_HI_DCI0_MPDCCH_DCI_PDU_TYPE:
       handle_nfapi_hi_dci0_mpdcch_dci_pdu(eNB,proc,hi_dci0_req_pdu);
       eNB->mpdcch_vars[subframe&1].num_dci++;
diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index c59865dd60..4f65d6098e 100755
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -78,34 +78,7 @@ void RCconfig_flexran() {
   int32_t Nid_cell = 0;
   uint16_t Nid_cell_tr = 0;
   uint32_t enb_id = 0;
-  /*
-    the only reason for all these variables is, that they are "hard-encoded"
-    into the CCPARAMS_DESC macro and we need it for the Nid_cell variable ...
-  */
-  char *frame_type, *prefix_type, *pbch_repetition, *prach_high_speed,
-       *pusch_hoppingMode, *pusch_enable64QAM, *pusch_groupHoppingEnabled,
-       *pusch_sequenceHoppingEnabled, *phich_duration, *phich_resource,
-       *srs_enable, *srs_ackNackST, *srs_MaxUpPts, *pusch_alpha,
-       *pucch_deltaF_Format1, *pucch_deltaF_Format1b, *pucch_deltaF_Format2,
-       *pucch_deltaF_Format2a, *pucch_deltaF_Format2b,
-       *rach_preamblesGroupAConfig, *rach_messagePowerOffsetGroupB, *pcch_nB;
-  long long int     downlink_frequency;
-  int32_t tdd_config, tdd_config_s, eutra_band, uplink_frequency_offset,
-          Nid_cell_mbsfn, N_RB_DL, nb_antenna_ports, prach_root, prach_config_index,
-          prach_zero_correlation, prach_freq_offset, pucch_delta_shift,
-          pucch_nRB_CQI, pucch_nCS_AN, pucch_n1_AN, pdsch_referenceSignalPower,
-          pdsch_p_b, pusch_n_SB, pusch_hoppingOffset, pusch_groupAssignment,
-          pusch_nDMRS1, srs_BandwidthConfig, srs_SubframeConfig, pusch_p0_Nominal,
-          pucch_p0_Nominal, msg3_delta_Preamble, rach_numberOfRA_Preambles,
-          rach_sizeOfRA_PreamblesGroupA, rach_messageSizeGroupA,
-          rach_powerRampingStep, rach_preambleInitialReceivedTargetPower,
-          rach_preambleTransMax, rach_raResponseWindowSize,
-          rach_macContentionResolutionTimer, rach_maxHARQ_Msg3Tx,
-          pcch_defaultPagingCycle, bcch_modificationPeriodCoeff,
-          ue_TimersAndConstants_t300, ue_TimersAndConstants_t301,
-          ue_TimersAndConstants_t310, ue_TimersAndConstants_t311,
-          ue_TimersAndConstants_n310, ue_TimersAndConstants_n311,
-          ue_TransmissionMode, ue_multiple_max;
+
   /*
   int32_t     srb1_timer_poll_retransmit    = 0;
   int32_t     srb1_timer_reordering         = 0;
@@ -115,198 +88,7 @@ void RCconfig_flexran() {
   int32_t     srb1_max_retx_threshold       = 0;
   */
 
-  const char       *rxPool_sc_CP_Len;
-  const char       *rxPool_sc_Period;
-  const char       *rxPool_data_CP_Len;
-  libconfig_int     rxPool_ResourceConfig_prb_Num;
-  libconfig_int     rxPool_ResourceConfig_prb_Start;
-  libconfig_int     rxPool_ResourceConfig_prb_End;
-  const char       *rxPool_ResourceConfig_offsetIndicator_present;
-  libconfig_int     rxPool_ResourceConfig_offsetIndicator_choice;
-  const char       *rxPool_ResourceConfig_subframeBitmap_present;
-  char             *rxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-  //SIB19
-  //for discRxPool
-  const char       *discRxPool_cp_Len;
-  const char       *discRxPool_discPeriod;
-  libconfig_int     discRxPool_numRetx;
-  libconfig_int     discRxPool_numRepetition;
-  libconfig_int     discRxPool_ResourceConfig_prb_Num;
-  libconfig_int     discRxPool_ResourceConfig_prb_Start;
-  libconfig_int     discRxPool_ResourceConfig_prb_End;
-  const char       *discRxPool_ResourceConfig_offsetIndicator_present;
-  libconfig_int     discRxPool_ResourceConfig_offsetIndicator_choice;
-  const char       *discRxPool_ResourceConfig_subframeBitmap_present;
-  char             *discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-  //for discRxPoolPS
-  const char       *discRxPoolPS_cp_Len;
-  const char       *discRxPoolPS_discPeriod;
-  libconfig_int     discRxPoolPS_numRetx;
-  libconfig_int     discRxPoolPS_numRepetition;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Num;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Start;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_End;
-  const char       *discRxPoolPS_ResourceConfig_offsetIndicator_present;
-  libconfig_int     discRxPoolPS_ResourceConfig_offsetIndicator_choice;
-  const char       *discRxPoolPS_ResourceConfig_subframeBitmap_present;
-  char             *discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-  //note: Uncomment below when FlexRAN support for eMTC is available
-  /*
-  int32_t     eMTC_configured                    = 0;
-  int32_t     prach_root_emtc                    = 0;
-  int32_t     prach_config_index_emtc            = 0;
-  char        *prach_high_speed_emtc             = NULL;
-  int32_t     prach_zero_correlation_emtc        = 0;
-  int32_t     prach_freq_offset_emtc             = 0;
-  int32_t     pucch_delta_shift_emtc             = 0;
-  int32_t     pucch_nRB_CQI_emtc                 = 0;
-  int32_t     pucch_nCS_AN_emtc                  = 0;
-  //#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-  int32_t     pucch_n1_AN_emtc                   = 0;
-  //#endif
-  int32_t     pdsch_referenceSignalPower_emtc    = 0;
-  int32_t     pdsch_p_b_emtc                     = 0;
-  int32_t     pusch_n_SB_emtc                    = 0;
-  char        *pusch_hoppingMode_emtc            = NULL;
-  int32_t     pusch_hoppingOffset_emtc           = 0;
-  char        *pusch_enable64QAM_emtc            = NULL;
-  char        *pusch_groupHoppingEnabled_emtc    = NULL;
-  int32_t     pusch_groupAssignment_emtc         = 0;
-  char        *pusch_sequenceHoppingEnabled_emtc = NULL;
-  int32_t     pusch_nDMRS1_emtc                  = 0;
-  char       *phich_duration_emtc                = NULL;
-  char       *phich_resource_emtc                = NULL;
-  char       *srs_enable_emtc                    = NULL;
-  int32_t     srs_BandwidthConfig_emtc           = 0;
-  int32_t     srs_SubframeConfig_emtc            = 0;
-  char       *srs_ackNackST_emtc                 = NULL;
-  char       *srs_MaxUpPts_emtc                  = NULL;
-  int32_t     pusch_p0_Nominal_emtc              = 0;
-  char       *pusch_alpha_emtc                   = NULL;
-  int32_t     pucch_p0_Nominal_emtc              = 0;
-  int32_t     msg3_delta_Preamble_emtc           = 0;
-  //int32_t     ul_CyclicPrefixLength_emtc         = 0;
-  char       *pucch_deltaF_Format1_emtc          = NULL;
-  //const char*       pucch_deltaF_Format1a_emtc         = NULL;
-  char       *pucch_deltaF_Format1b_emtc         = NULL;
-  char       *pucch_deltaF_Format2_emtc          = NULL;
-  char       *pucch_deltaF_Format2a_emtc         = NULL;
-  char       *pucch_deltaF_Format2b_emtc         = NULL;
-  int32_t     rach_numberOfRA_Preambles_emtc     = 0;
-  char       *rach_preamblesGroupAConfig_emtc    = NULL;
-  int32_t     rach_sizeOfRA_PreamblesGroupA_emtc = 0;
-  int32_t     rach_messageSizeGroupA_emtc        = 0;
-  char       *rach_messagePowerOffsetGroupB_emtc = NULL;
-  int32_t     rach_powerRampingStep_emtc         = 0;
-  int32_t     rach_preambleInitialReceivedTargetPower_emtc    = 0;
-  int32_t     rach_preambleTransMax_emtc         = 0;
-  int32_t     rach_raResponseWindowSize_emtc     = 10;
-  int32_t     rach_macContentionResolutionTimer_emtc = 0;
-  int32_t     rach_maxHARQ_Msg3Tx_emtc           = 0;
-  int32_t     pcch_defaultPagingCycle_emtc       = 0;
-  char       *pcch_nB_emtc                       = NULL;
-  int32_t     bcch_modificationPeriodCoeff_emtc  = 0;
-  int32_t     ue_TimersAndConstants_t300_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t301_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t310_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t311_emtc    = 0;
-  int32_t     ue_TimersAndConstants_n310_emtc    = 0;
-  int32_t     ue_TimersAndConstants_n311_emtc    = 0;
-  int32_t     ue_TransmissionMode_emtc           = 0;
-
-  int           si_Narrowband_r13             = 0;
-  int           si_TBS_r13                    = 0;
-  
-  int           systemInfoValueTagSi_r13      = 0;
-  
-  int           firstPreamble_r13                     = 0;
-  int           lastPreamble_r13                      = 0;
-  int   ra_ResponseWindowSize_r13             = 0;
-  int   mac_ContentionResolutionTimer_r13     = 0;
-  int   rar_HoppingConfig_r13                 = 0;
-  int           rsrp_range_br                         = 0;
-  int  maxNumPreambleAttemptCE_r13           = 0;
-  int    numRepetitionPerPreambleAttempt_r13   = 0;
-  int   mpdcch_NumRepetition_RA_r13           = 0;
-  int   prach_HoppingConfig_r13               = 0;
-  int           *maxavailablenarrowband               = NULL;
-  int           pucch_info_value                      = 0;
-
-  int           prach_config_index_br                 = 0;
-  int           prach_freq_offset_br                  = 0;
-  int           prach_StartingSubframe_r13            = 0;
-  
-  int           paging_narrowbands_r13                = 0;
-  int           mpdcch_numrepetition_paging_r13       = NULL;
-  int           nb_v1310                              = NULL;
-  
-  
-  char *   pucch_NumRepetitionCE_Msg4_Level0_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level1_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level2_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level3_r13 = NULL;
-  
-  int   sib2_mpdcch_pdsch_hoppingNB_r13                   = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeA_r13      = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeA_r13_val  = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeB_r13      = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeB_r13_val  = 0;
-  
-  int   sib2_interval_ULHoppingConfigCommonModeA_r13      = 0;
-  int   sib2_interval_ULHoppingConfigCommonModeA_r13_val  = 0;
-  int   sib2_interval_ULHoppingConfigCommonModeB_r13      = 0;
-  int   sib2_interval_ULHoppingConfigCommonModeB_r13_val  = 0;
-  int           sib2_mpdcch_pdsch_hoppingOffset_r13               = 0;
-  
-  int           pusch_HoppingOffset_v1310                         = 0;
-  
-  int           hyperSFN_r13                                      = 0;
-  int           eDRX_Allowed_r13                                  = 0;
-  int           q_RxLevMinCE_r13                                  = 0;
-  int           q_QualMinRSRQ_CE_r13                              = 0;
-  char*   si_WindowLength_BR_r13                            = NULL;
-  char*   si_RepetitionPattern_r13                          = NULL;
-  int           startSymbolBR_r13                                 = 0;
-  char*   si_HoppingConfigCommon_r13                        = NULL;
-  char*   si_ValidityTime_r13                               = NULL;
-  char*   mpdcch_pdsch_HoppingNB_r13                        = NULL;
-  int           interval_DLHoppingConfigCommonModeA_r13_val       = 0;
-  int           interval_DLHoppingConfigCommonModeB_r13_val       = 0;
-  int           mpdcch_pdsch_HoppingOffset_r13                    = 0;
-  char*         preambleTransMax_CE_r13                           = NULL;
-  char*         rach_numberOfRA_Preambles_br                      = NULL;
-  
-  int           schedulingInfoSIB1_BR_r13                         = 0;
-  int64_t      fdd_DownlinkOrTddSubframeBitmapBR_val_r13         = 0;
-  
-  char* cellSelectionInfoCE_r13                                       = NULL;
-  char* bandwidthReducedAccessRelatedInfo_r13                         = NULL;
-  char* fdd_DownlinkOrTddSubframeBitmapBR_r13                         = NULL;
-  char* fdd_UplinkSubframeBitmapBR_r13                                = NULL;
-  char* freqHoppingParametersDL_r13                                   = NULL;
-  char* interval_DLHoppingConfigCommonModeA_r13                       = NULL;
-  char* interval_DLHoppingConfigCommonModeB_r13                       = NULL;
-  */
-  char*   prach_ConfigCommon_v1310                          = NULL;
-  char*   mpdcch_startSF_CSS_RA_r13                         = NULL;
-  char*   mpdcch_startSF_CSS_RA_r13_val                     = NULL;
-  char*   pdsch_maxNumRepetitionCEmodeA_r13                 = NULL;
-  char*   pdsch_maxNumRepetitionCEmodeB_r13                 = NULL;
-  
-  char*   pusch_maxNumRepetitionCEmodeA_r13                 = 0;
-  char*   pusch_maxNumRepetitionCEmodeB_r13                 = 0;
-  int     prach_HoppingOffset_r13                           = 0;
-
-  // avoid gcc warnings
-  (void)pdsch_maxNumRepetitionCEmodeB_r13;
-  (void)pusch_maxNumRepetitionCEmodeB_r13;
-  
+
   /* get number of eNBs */
   paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
   config_get(ENBSParams, sizeof(ENBSParams)/sizeof(paramdef_t), NULL);
@@ -316,23 +98,27 @@ void RCconfig_flexran() {
   paramlist_def_t ENBParamList = {ENB_CONFIG_STRING_ENB_LIST, NULL, 0};
   /* for Nid_cell */
   checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
-  paramdef_t CCsParams[] = CCPARAMS_DESC;
+  ccparams_lte_t ccparams_lte;
+  memset((void*)&ccparams_lte,0,sizeof(ccparams_lte_t));
+  paramdef_t CCsParams[] = CCPARAMS_DESC(ccparams_lte);
   paramlist_def_t CCsParamList = {ENB_CONFIG_STRING_COMPONENT_CARRIERS, NULL, 0};
 
   // Note: these should be turned on for EMTC support inside of FlexRAN
-  //paramdef_t brParams[]              = BRPARAMS_DESC;
-  //paramdef_t schedulingInfoBrParams[] = SI_INFO_BR_DESC;
+  // ccparams_emtc_t ccparams_emtc;
+  //paramdef_t brParams[]              = BRPARAMS_DESC(ccparams_emtc);
+  //paramdef_t schedulingInfoBrParams[] = SI_INFO_BR_DESC(ccparams_emtc);
   //paramlist_def_t schedulingInfoBrParamList = {ENB_CONFIG_STRING_SCHEDULING_INFO_BR, NULL, 0};
-  //paramdef_t rachcelevelParams[]     = RACH_CE_LEVELINFOLIST_R13_DESC;
+  //paramdef_t rachcelevelParams[]     = RACH_CE_LEVELINFOLIST_R13_DESC(ccparams_emtc);
   //paramlist_def_t rachcelevellist    = {ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13, NULL, 0};
-  //paramdef_t rsrprangeParams[]       = RSRP_RANGE_LIST_DESC;
+  //paramdef_t rsrprangeParams[]       = RSRP_RANGE_LIST_DESC(ccparams_emtc);
   //paramlist_def_t rsrprangelist      = {ENB_CONFIG_STRING_RSRP_RANGE_LIST, NULL, 0};
-  //paramdef_t prachParams[]           = PRACH_PARAMS_CE_R13_DESC;
+  //paramdef_t prachParams[]           = PRACH_PARAMS_CE_R13_DESC(ccparams_emtc);
   //paramlist_def_t prachParamslist    = {ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13, NULL, 0};
-  //paramdef_t n1PUCCH_ANR13Params[]   = N1PUCCH_AN_INFOLIST_R13_DESC;
+  //paramdef_t n1PUCCH_ANR13Params[]   = N1PUCCH_AN_INFOLIST_R13_DESC(ccparams_emtc);
   //paramlist_def_t n1PUCCHInfoList    = {ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13, NULL, 0};
-  //paramdef_t pcchv1310Params[]       = PCCH_CONFIG_V1310_DESC;
-  //paramdef_t sib2freqhoppingParams[] = SIB2_FREQ_HOPPING_R13_DESC;
+  //paramdef_t pcchv1310Params[]       = PCCH_CONFIG_V1310_DESC(ccparams_emtc);
+  //paramdef_t sib2freqhoppingParams[] = SIB2_FREQ_HOPPING_R13_DESC(ccparams_emtc);
+
   //  paramdef_t SRB1Params[] = SRB1PARAMS_DESC;
 
   /* map parameter checking array instances to parameter definition array instances */
@@ -565,300 +351,44 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 
   int               num_enbs                      = 0;
   int               j,k                           = 0;
-  int32_t     enb_id                        = 0;
+  int32_t           enb_id                        = 0;
   int               nb_cc                         = 0;
-  char       *frame_type                    = NULL;
-  int32_t     tdd_config                    = 0;
-  int32_t     tdd_config_s                  = 0;
-  char       *prefix_type                   = NULL;
-  char       *pbch_repetition               = NULL;
-  int32_t     eutra_band                    = 0;
-  long long int     downlink_frequency            = 0;
-  int32_t     uplink_frequency_offset       = 0;
-  int32_t     Nid_cell                      = 0;
-  int32_t     Nid_cell_mbsfn                = 0;
-  int32_t     N_RB_DL                       = 0;
-  int32_t     nb_antenna_ports              = 0;
-  int32_t     prach_root                    = 0;
-  int32_t     prach_config_index            = 0;
-  char            *prach_high_speed         = NULL;
-  int32_t     prach_zero_correlation        = 0;
-  int32_t     prach_freq_offset             = 0;
-  int32_t     pucch_delta_shift             = 0;
-  int32_t     pucch_nRB_CQI                 = 0;
-  int32_t     pucch_nCS_AN                  = 0;
-  //#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-  int32_t     pucch_n1_AN                   = 0;
-  //#endif
-  int32_t     pdsch_referenceSignalPower    = 0;
-  int32_t     pdsch_p_b                     = 0;
-  int32_t     pusch_n_SB                    = 0;
-  char       *pusch_hoppingMode             = NULL;
-  int32_t     pusch_hoppingOffset           = 0;
-  char          *pusch_enable64QAM          = NULL;
-  char          *pusch_groupHoppingEnabled  = NULL;
-  int32_t     pusch_groupAssignment         = 0;
-  char          *pusch_sequenceHoppingEnabled = NULL;
-  int32_t     pusch_nDMRS1                  = 0;
-  char       *phich_duration                = NULL;
-  char       *phich_resource                = NULL;
-  char       *srs_enable                    = NULL;
-  int32_t     srs_BandwidthConfig           = 0;
-  int32_t     srs_SubframeConfig            = 0;
-  char       *srs_ackNackST                 = NULL;
-  char       *srs_MaxUpPts                  = NULL;
-  int32_t     pusch_p0_Nominal              = 0;
-  char       *pusch_alpha                   = NULL;
-  int32_t     pucch_p0_Nominal              = 0;
-  int32_t     msg3_delta_Preamble           = 0;
-  //int32_t     ul_CyclicPrefixLength         = 0;
-  char       *pucch_deltaF_Format1          = NULL;
-  //const char*       pucch_deltaF_Format1a         = NULL;
-  char       *pucch_deltaF_Format1b         = NULL;
-  char       *pucch_deltaF_Format2          = NULL;
-  char       *pucch_deltaF_Format2a         = NULL;
-  char       *pucch_deltaF_Format2b         = NULL;
-  int32_t     rach_numberOfRA_Preambles     = 0;
-  char       *rach_preamblesGroupAConfig    = NULL;
-  int32_t     rach_sizeOfRA_PreamblesGroupA = 0;
-  int32_t     rach_messageSizeGroupA        = 0;
-  char       *rach_messagePowerOffsetGroupB = NULL;
-  int32_t     rach_powerRampingStep         = 0;
-  int32_t     rach_preambleInitialReceivedTargetPower    = 0;
-  int32_t     rach_preambleTransMax         = 0;
-  int32_t     rach_raResponseWindowSize     = 10;
-  int32_t     rach_macContentionResolutionTimer = 0;
-  int32_t     rach_maxHARQ_Msg3Tx           = 0;
-  int32_t     pcch_defaultPagingCycle       = 0;
-  char       *pcch_nB                       = NULL;
-  int32_t     bcch_modificationPeriodCoeff  = 0;
-  int32_t     ue_TimersAndConstants_t300    = 0;
-  int32_t     ue_TimersAndConstants_t301    = 0;
-  int32_t     ue_TimersAndConstants_t310    = 0;
-  int32_t     ue_TimersAndConstants_t311    = 0;
-  int32_t     ue_TimersAndConstants_n310    = 0;
-  int32_t     ue_TimersAndConstants_n311    = 0;
-  int32_t     ue_TransmissionMode           = 0;
-  int32_t     ue_multiple_max               = 0;
-  //TTN - for D2D
-  //SIB18
-  const char       *rxPool_sc_CP_Len                                        = NULL;
-  const char       *rxPool_sc_Period                                        = NULL;
-  const char       *rxPool_data_CP_Len                                      = NULL;
-  libconfig_int     rxPool_ResourceConfig_prb_Num                           = 0;
-  libconfig_int     rxPool_ResourceConfig_prb_Start                         = 0;
-  libconfig_int     rxPool_ResourceConfig_prb_End                           = 0;
-  const char       *rxPool_ResourceConfig_offsetIndicator_present           = NULL;
-  libconfig_int     rxPool_ResourceConfig_offsetIndicator_choice            = 0;
-  const char       *rxPool_ResourceConfig_subframeBitmap_present            = NULL;
-  char             *rxPool_ResourceConfig_subframeBitmap_choice_bs_buf      = NULL;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_size     = 0;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused     = 0;
-  //SIB19
-  //For discRxPool
-  const char       *discRxPool_cp_Len                                              = NULL;
-  const char       *discRxPool_discPeriod                                          = NULL;
-  libconfig_int     discRxPool_numRetx                                             = 0;
-  libconfig_int     discRxPool_numRepetition                                       = 0;
-  libconfig_int     discRxPool_ResourceConfig_prb_Num                              = 0;
-  libconfig_int     discRxPool_ResourceConfig_prb_Start                            = 0;
-  libconfig_int     discRxPool_ResourceConfig_prb_End                              = 0;
-  const char       *discRxPool_ResourceConfig_offsetIndicator_present              = NULL;
-  libconfig_int     discRxPool_ResourceConfig_offsetIndicator_choice               = 0;
-  const char       *discRxPool_ResourceConfig_subframeBitmap_present               = NULL;
-  char             *discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf         = NULL;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_size        = 0;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
-  //For discRxPoolPS
-  const char       *discRxPoolPS_cp_Len                                              = NULL;
-  const char       *discRxPoolPS_discPeriod                                          = NULL;
-  libconfig_int     discRxPoolPS_numRetx                                             = 0;
-  libconfig_int     discRxPoolPS_numRepetition                                       = 0;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Num                              = 0;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Start                            = 0;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_End                              = 0;
-  const char       *discRxPoolPS_ResourceConfig_offsetIndicator_present              = NULL;
-  libconfig_int     discRxPoolPS_ResourceConfig_offsetIndicator_choice               = 0;
-  const char       *discRxPoolPS_ResourceConfig_subframeBitmap_present               = NULL;
-  char             *discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf         = NULL;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size        = 0;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
-  int32_t     srb1_timer_poll_retransmit    = 0;
-  int32_t     srb1_timer_reordering         = 0;
-  int32_t     srb1_timer_status_prohibit    = 0;
-  int32_t     srb1_poll_pdu                 = 0;
-  int32_t     srb1_poll_byte                = 0;
-  int32_t     srb1_max_retx_threshold       = 0;
-  int32_t     my_int;
 
-  // eMTC definitions
-  int32_t     eMTC_configured                    = 0;
-  int32_t     prach_root_emtc                    = 0;
-  int32_t     prach_config_index_emtc            = 0;
-  char        *prach_high_speed_emtc             = NULL;
-  int32_t     prach_zero_correlation_emtc        = 0;
-  int32_t     prach_freq_offset_emtc             = 0;
-  int32_t     pucch_delta_shift_emtc             = 0;
-  int32_t     pucch_nRB_CQI_emtc                 = 0;
-  int32_t     pucch_nCS_AN_emtc                  = 0;
-  //#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-  int32_t     pucch_n1_AN_emtc                   = 0;
-  //#endif
-  int32_t     pdsch_referenceSignalPower_emtc    = 0;
-  int32_t     pdsch_p_b_emtc                     = 0;
-  int32_t     pusch_n_SB_emtc                    = 0;
-  char        *pusch_hoppingMode_emtc            = NULL;
-  int32_t     pusch_hoppingOffset_emtc           = 0;
-  char        *pusch_enable64QAM_emtc            = NULL;
-  char        *pusch_groupHoppingEnabled_emtc    = NULL;
-  int32_t     pusch_groupAssignment_emtc         = 0;
-  char        *pusch_sequenceHoppingEnabled_emtc = NULL;
-  int32_t     pusch_nDMRS1_emtc                  = 0;
-  char       *phich_duration_emtc                = NULL;
-  char       *phich_resource_emtc                = NULL;
-  char       *srs_enable_emtc                    = NULL;
-  int32_t     srs_BandwidthConfig_emtc           = 0;
-  int32_t     srs_SubframeConfig_emtc            = 0;
-  char       *srs_ackNackST_emtc                 = NULL;
-  char       *srs_MaxUpPts_emtc                  = NULL;
-  int32_t     pusch_p0_Nominal_emtc              = 0;
-  char       *pusch_alpha_emtc                   = NULL;
-  int32_t     pucch_p0_Nominal_emtc              = 0;
-  int32_t     msg3_delta_Preamble_emtc           = 0;
-  //int32_t     ul_CyclicPrefixLength_emtc         = 0;
-  char       *pucch_deltaF_Format1_emtc          = NULL;
-  //const char*       pucch_deltaF_Format1a_emtc         = NULL;
-  char       *pucch_deltaF_Format1b_emtc         = NULL;
-  char       *pucch_deltaF_Format2_emtc          = NULL;
-  char       *pucch_deltaF_Format2a_emtc         = NULL;
-  char       *pucch_deltaF_Format2b_emtc         = NULL;
-  int32_t     rach_numberOfRA_Preambles_emtc     = 0;
-  char       *rach_preamblesGroupAConfig_emtc    = NULL;
-  int32_t     rach_sizeOfRA_PreamblesGroupA_emtc = 0;
-  int32_t     rach_messageSizeGroupA_emtc        = 0;
-  char       *rach_messagePowerOffsetGroupB_emtc = NULL;
-  int32_t     rach_powerRampingStep_emtc         = 0;
-  int32_t     rach_preambleInitialReceivedTargetPower_emtc    = 0;
-  int32_t     rach_preambleTransMax_emtc         = 0;
-  int32_t     rach_raResponseWindowSize_emtc     = 10;
-  int32_t     rach_macContentionResolutionTimer_emtc = 0;
-  int32_t     rach_maxHARQ_Msg3Tx_emtc           = 0;
-  int32_t     pcch_defaultPagingCycle_emtc       = 0;
-  char       *pcch_nB_emtc                       = NULL;
-  int32_t     bcch_modificationPeriodCoeff_emtc  = 0;
-  int32_t     ue_TimersAndConstants_t300_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t301_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t310_emtc    = 0;
-  int32_t     ue_TimersAndConstants_t311_emtc    = 0;
-  int32_t     ue_TimersAndConstants_n310_emtc    = 0;
-  int32_t     ue_TimersAndConstants_n311_emtc    = 0;
-  int32_t     ue_TransmissionMode_emtc           = 0;
-
-  int           si_Narrowband_r13             = 0;
-  int           si_TBS_r13                    = 0;
-  
-  //  int           systemInfoValueTagSi_r13      = 0;
-  
-  int           firstPreamble_r13                     = 0;
-  int           lastPreamble_r13                      = 0;
-  int  ra_ResponseWindowSize_r13              = 0;
-  int   mac_ContentionResolutionTimer_r13     = 0;
-  int   rar_HoppingConfig_r13                 = 0;
-  int           rsrp_range_br                         = 0;
-  int           prach_config_index_br                 = 0;
-  int           prach_freq_offset_br                  = 0;
-  int           prach_StartingSubframe_r13            = 0;
-
-  int   maxNumPreambleAttemptCE_r13           = 0;
-  int   numRepetitionPerPreambleAttempt_r13   = 0;
-  int   mpdcch_NumRepetition_RA_r13           = 0;
-  int   prach_HoppingConfig_r13               = 0;
-  //int           *maxavailablenarrowband               = NULL;
-  int           pucch_info_value                      = 0;
-  
-  int           paging_narrowbands_r13                = 0;
-  int           mpdcch_numrepetition_paging_r13       = NULL;
-  int           nb_v1310                              = NULL;
-  
-  
-  char *   pucch_NumRepetitionCE_Msg4_Level0_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level1_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level2_r13 = NULL;
-  char *   pucch_NumRepetitionCE_Msg4_Level3_r13 = NULL;
-  
-  int   sib2_mpdcch_pdsch_hoppingNB_r13                   = 0;
-  char  *sib2_interval_DLHoppingConfigCommonModeA_r13      = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeA_r13_val  = 0;
-  char  *sib2_interval_DLHoppingConfigCommonModeB_r13      = 0;
-  int   sib2_interval_DLHoppingConfigCommonModeB_r13_val  = 0;
-  
-  char  *sib2_interval_ULHoppingConfigCommonModeA_r13      = 0;
-  int   sib2_interval_ULHoppingConfigCommonModeA_r13_val  = 0;
-  char  *sib2_interval_ULHoppingConfigCommonModeB_r13      = 0;
-  int   sib2_interval_ULHoppingConfigCommonModeB_r13_val  = 0;
-  int   sib2_mpdcch_pdsch_hoppingOffset_r13       = 0;
-  
-
-  //int           pusch_HoppingOffset_v1310                         = 0;
-  
-  //int           hyperSFN_r13                                      = 0;
-  //int           eDRX_Allowed_r13                                  = 0;
-  int           q_RxLevMinCE_r13                                  = 0;
-  //int           q_QualMinRSRQ_CE_r13                              = 0;
-  char   *si_WindowLength_BR_r13                            = NULL;
-  char   *si_RepetitionPattern_r13                          = NULL;
-  int           startSymbolBR_r13                                 = 0;
-  char   *si_HoppingConfigCommon_r13                        = NULL;
-  char   *si_ValidityTime_r13                               = NULL;
-  char   *mpdcch_pdsch_HoppingNB_r13                        = NULL;
-  int           interval_DLHoppingConfigCommonModeA_r13_val       = 0;
-  int           interval_DLHoppingConfigCommonModeB_r13_val       = 0;
-  int           mpdcch_pdsch_HoppingOffset_r13                    = 0;
-  char   *preambleTransMax_CE_r13                           = NULL;
-  
-  int           prach_HoppingOffset_r13                           = 0;
-  int           schedulingInfoSIB1_BR_r13                         = 0;
-  int64_t      fdd_DownlinkOrTddSubframeBitmapBR_val_r13         = 0;
-  
-  char* cellSelectionInfoCE_r13                                       = NULL;
-  char* bandwidthReducedAccessRelatedInfo_r13                         = NULL;
-  char* fdd_DownlinkOrTddSubframeBitmapBR_r13                         = NULL;
-  char* fdd_UplinkSubframeBitmapBR_r13                                = NULL;
-  (void)fdd_UplinkSubframeBitmapBR_r13;
-  char* freqHoppingParametersDL_r13                                   = NULL;
-  char* interval_DLHoppingConfigCommonModeA_r13                       = NULL;
-  char* interval_DLHoppingConfigCommonModeB_r13                       = NULL;
-  char* prach_ConfigCommon_v1310                                = NULL;
-  char* mpdcch_startSF_CSS_RA_r13                               = NULL;
-  char* mpdcch_startSF_CSS_RA_r13_val                           = NULL;
-  char  *pdsch_maxNumRepetitionCEmodeA_r13                 = NULL;
-  char  *pdsch_maxNumRepetitionCEmodeB_r13                 = NULL;
-  char   *pusch_maxNumRepetitionCEmodeA_r13                 = NULL;
-  char   *pusch_maxNumRepetitionCEmodeB_r13                 = NULL;
-  // for no gcc warnings
-  (void)my_int;
-  (void)pdsch_maxNumRepetitionCEmodeB_r13;
-  (void)pusch_maxNumRepetitionCEmodeB_r13;
+  ccparams_lte_t ccparams_lte;
+  ccparams_sidelink_t SLconfig;
+  ccparams_eMTC_t eMTCconfig;
+
+  memset((void*)&ccparams_lte,0,sizeof(ccparams_lte_t));
+  memset((void*)&SLconfig,0,sizeof(ccparams_sidelink_t));
+  memset((void*)&eMTCconfig,0,sizeof(ccparams_eMTC_t));
+
   paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
   paramdef_t ENBParams[]  = ENBPARAMS_DESC;
   paramlist_def_t ENBParamList = {ENB_CONFIG_STRING_ENB_LIST,NULL,0};
   checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
-  paramdef_t CCsParams[] = CCPARAMS_DESC;
+  paramdef_t CCsParams[] = CCPARAMS_DESC(ccparams_lte);
   paramlist_def_t CCsParamList = {ENB_CONFIG_STRING_COMPONENT_CARRIERS,NULL,0};
-  paramdef_t brParams[]              = BRPARAMS_DESC;
-  paramdef_t schedulingInfoBrParams[] = SI_INFO_BR_DESC;
+  paramdef_t brParams[]              = EMTCPARAMS_DESC(eMTCconfig);
+  paramdef_t schedulingInfoBrParams[] = SI_INFO_BR_DESC(eMTCconfig);
   paramlist_def_t schedulingInfoBrParamList = {ENB_CONFIG_STRING_SCHEDULING_INFO_BR, NULL, 0};
-  paramdef_t rachcelevelParams[]     = RACH_CE_LEVELINFOLIST_R13_DESC;
+  paramdef_t rachcelevelParams[]     = RACH_CE_LEVELINFOLIST_R13_DESC(eMTCconfig);
   paramlist_def_t rachcelevellist    = {ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13, NULL, 0};
-  paramdef_t rsrprangeParams[]       = RSRP_RANGE_LIST_DESC;
+  paramdef_t rsrprangeParams[]       = RSRP_RANGE_LIST_DESC(eMTCconfig);
   paramlist_def_t rsrprangelist      = {ENB_CONFIG_STRING_RSRP_RANGE_LIST, NULL, 0};
-  paramdef_t prachParams[]           = PRACH_PARAMS_CE_R13_DESC;
+  paramdef_t prachParams[]           = PRACH_PARAMS_CE_R13_DESC(eMTCconfig);
   paramlist_def_t prachParamslist    = {ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13, NULL, 0};
-  paramdef_t n1PUCCH_ANR13Params[]   = N1PUCCH_AN_INFOLIST_R13_DESC;
+  paramdef_t n1PUCCH_ANR13Params[]   = N1PUCCH_AN_INFOLIST_R13_DESC(eMTCconfig);
   paramlist_def_t n1PUCCHInfoList    = {ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13, NULL, 0};
-  paramdef_t pcchv1310Params[]       = PCCH_CONFIG_V1310_DESC;
-  paramdef_t sib2freqhoppingParams[] = SIB2_FREQ_HOPPING_R13_DESC;
-  paramdef_t SRB1Params[] = SRB1PARAMS_DESC;
+  paramdef_t pcchv1310Params[]       = PCCH_CONFIG_V1310_DESC(eMTCconfig);
+  paramdef_t sib2freqhoppingParams[] = SIB2_FREQ_HOPPING_R13_DESC(eMTCconfig);
+
+  srb1_params_t srb1_params;
+  memset((void*)&srb1_params,0,sizeof(srb1_params_t));
+  paramdef_t SRB1Params[] = SRB1PARAMS_DESC(srb1_params);
+
+
+  paramdef_t SLParams[]              = CCPARAMS_SIDELINK_DESC(SLconfig);
+
 
   /* map parameter checking array instances to parameter definition array instances */
   for (int I=0; I< ( sizeof(CCsParams)/ sizeof(paramdef_t)  ) ; I++) {
@@ -959,399 +489,422 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
             config_get( CCsParams,sizeof(CCsParams)/sizeof(paramdef_t),ccspath);
             //printf("Component carrier %d\n",component_carrier);
             nb_cc++;
-            RRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = tdd_config;
-            AssertFatal (tdd_config <= TDD_Config__subframeAssignment_sa6,
+            RRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = ccparams_lte.tdd_config;
+            AssertFatal (ccparams_lte.tdd_config <= TDD_Config__subframeAssignment_sa6,
                          "Failed to parse eNB configuration file %s, enb %d illegal tdd_config %d (should be 0-%d)!",
-                         RC.config_file_name, i, tdd_config, TDD_Config__subframeAssignment_sa6);
-            RRC_CONFIGURATION_REQ (msg_p).tdd_config_s[j] = tdd_config_s;
-            AssertFatal (tdd_config_s <= TDD_Config__specialSubframePatterns_ssp8,
+                         RC.config_file_name, i, ccparams_lte.tdd_config, TDD_Config__subframeAssignment_sa6);
+            RRC_CONFIGURATION_REQ (msg_p).tdd_config_s[j] = ccparams_lte.tdd_config_s;
+            AssertFatal (ccparams_lte.tdd_config_s <= TDD_Config__specialSubframePatterns_ssp8,
                          "Failed to parse eNB configuration file %s, enb %d illegal tdd_config_s %d (should be 0-%d)!",
-                         RC.config_file_name, i, tdd_config_s, TDD_Config__specialSubframePatterns_ssp8);
+                         RC.config_file_name, i, ccparams_lte.tdd_config_s, TDD_Config__specialSubframePatterns_ssp8);
 
-            if (!prefix_type)
+            if (!ccparams_lte.prefix_type)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: NORMAL,EXTENDED!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
-            else if (strcmp(prefix_type, "NORMAL") == 0) {
+            else if (strcmp(ccparams_lte.prefix_type, "NORMAL") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = NORMAL;
-            } else  if (strcmp(prefix_type, "EXTENDED") == 0) {
+            } else  if (strcmp(ccparams_lte.prefix_type, "EXTENDED") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = EXTENDED;
             } else {
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
-                           RC.config_file_name, i, prefix_type);
+                           RC.config_file_name, i, ccparams_lte.prefix_type);
             }
 
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 
-            if (!pbch_repetition)
+            if (!ccparams_lte.pbch_repetition)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: TRUE,FALSE!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PBCH_REPETITION);
-            else if (strcmp(pbch_repetition, "TRUE") == 0) {
+            else if (strcmp(ccparams_lte.pbch_repetition, "TRUE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).pbch_repetition[j] = 1;
-            } else  if (strcmp(pbch_repetition, "FALSE") == 0) {
+            } else  if (strcmp(ccparams_lte.pbch_repetition, "FALSE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).pbch_repetition[j] = 0;
             } else {
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pbch_repetition choice: TRUE or FALSE !\n",
-                           RC.config_file_name, i, pbch_repetition);
+                           RC.config_file_name, i, ccparams_lte.pbch_repetition);
             }
 
 #endif
-            RRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = eutra_band;
-            RRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) downlink_frequency;
-            RRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) uplink_frequency_offset;
-            RRC_CONFIGURATION_REQ (msg_p).Nid_cell[j]= Nid_cell;
+            RRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = ccparams_lte.eutra_band;
+            RRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) ccparams_lte.downlink_frequency;
+            RRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) ccparams_lte.uplink_frequency_offset;
 
-            if (Nid_cell>503) {
+            if (config_check_band_frequencies(j,
+                                              RRC_CONFIGURATION_REQ (msg_p).eutra_band[j],
+                                              RRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j],
+                                              RRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j],
+                                              RRC_CONFIGURATION_REQ (msg_p).frame_type[j])) {
+              AssertFatal(0, "error calling enb_check_band_frequencies\n");
+            }
+
+
+
+            RRC_CONFIGURATION_REQ (msg_p).Nid_cell[j]= ccparams_lte.Nid_cell;
+
+            if (ccparams_lte.Nid_cell>503) {
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for Nid_cell choice: 0...503 !\n",
-                           RC.config_file_name, i, Nid_cell);
+                           RC.config_file_name, i, ccparams_lte.Nid_cell);
             }
 
-            RRC_CONFIGURATION_REQ (msg_p).N_RB_DL[j]= N_RB_DL;
+            RRC_CONFIGURATION_REQ (msg_p).N_RB_DL[j]= ccparams_lte.N_RB_DL;
 
-            if ((N_RB_DL!=6) && (N_RB_DL!=15) && (N_RB_DL!=25) && (N_RB_DL!=50) && (N_RB_DL!=75) && (N_RB_DL!=100)) {
+            if ((ccparams_lte.N_RB_DL!=6) && 
+		(ccparams_lte.N_RB_DL!=15) && 
+		(ccparams_lte.N_RB_DL!=25) && 
+		(ccparams_lte.N_RB_DL!=50) && 
+		(ccparams_lte.N_RB_DL!=75) && 
+		(ccparams_lte.N_RB_DL!=100)) {
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for N_RB_DL choice: 6,15,25,50,75,100 !\n",
-                           RC.config_file_name, i, N_RB_DL);
+                           RC.config_file_name, i, ccparams_lte.N_RB_DL);
             }
 
-            if (strcmp(frame_type, "FDD") == 0) {
+            if (strcmp(ccparams_lte.frame_type, "FDD") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).frame_type[j] = FDD;
-            } else  if (strcmp(frame_type, "TDD") == 0) {
+            } else  if (strcmp(ccparams_lte.frame_type, "TDD") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).frame_type[j] = TDD;
             } else {
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for frame_type choice: FDD or TDD !\n",
-                           RC.config_file_name, i, frame_type);
-            }
-
-            RRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = tdd_config;
-            AssertFatal (tdd_config <= TDD_Config__subframeAssignment_sa6,
-                         "Failed to parse eNB configuration file %s, enb %d illegal tdd_config %d (should be 0-%d)!",
-                         RC.config_file_name, i, tdd_config, TDD_Config__subframeAssignment_sa6);
-            RRC_CONFIGURATION_REQ (msg_p).tdd_config_s[j] = tdd_config_s;
-            AssertFatal (tdd_config_s <= TDD_Config__specialSubframePatterns_ssp8,
-                         "Failed to parse eNB configuration file %s, enb %d illegal tdd_config_s %d (should be 0-%d)!",
-                         RC.config_file_name, i, tdd_config_s, TDD_Config__specialSubframePatterns_ssp8);
-
-            if (!prefix_type)
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d define %s: NORMAL,EXTENDED!\n",
-                           RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
-            else if (strcmp(prefix_type, "NORMAL") == 0) {
-              RRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = NORMAL;
-            } else  if (strcmp(prefix_type, "EXTENDED") == 0) {
-              RRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = EXTENDED;
-            } else {
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
-                           RC.config_file_name, i, prefix_type);
-            }
-
-            RRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = eutra_band;
-            // printf( "\teutra band:\t%d\n",RRC_CONFIGURATION_REQ (msg_p).eutra_band);
-            RRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) downlink_frequency;
-            //printf( "\tdownlink freq:\t%u\n",RRC_CONFIGURATION_REQ (msg_p).downlink_frequency);
-            RRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) uplink_frequency_offset;
-
-            if (config_check_band_frequencies(j,
-                                              RRC_CONFIGURATION_REQ (msg_p).eutra_band[j],
-                                              RRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j],
-                                              RRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j],
-                                              RRC_CONFIGURATION_REQ (msg_p).frame_type[j])) {
-              AssertFatal(0, "error calling enb_check_band_frequencies\n");
+                           RC.config_file_name, i, ccparams_lte.frame_type);
             }
 
-            if ((nb_antenna_ports <1) || (nb_antenna_ports > 2))
+            if ((ccparams_lte.nb_antenna_ports <1) || (ccparams_lte.nb_antenna_ports > 2))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for nb_antenna_ports choice: 1..2 !\n",
-                           RC.config_file_name, i, nb_antenna_ports);
+                           RC.config_file_name, i, ccparams_lte.nb_antenna_ports);
 
-            RRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = nb_antenna_ports;
+            RRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = ccparams_lte.nb_antenna_ports;
 
 	    // Radio Resource Configuration (SIB2)
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_root =  prach_root;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_root =  ccparams_lte.prach_root;
 
-            if ((prach_root <0) || (prach_root > 1023))
+            if ((ccparams_lte.prach_root <0) || (ccparams_lte.prach_root > 1023))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_root choice: 0..1023 !\n",
-                           RC.config_file_name, i, prach_root);
+                           RC.config_file_name, i, ccparams_lte.prach_root);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_config_index = prach_config_index;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_config_index = ccparams_lte.prach_config_index;
 
-            if ((prach_config_index <0) || (prach_config_index > 63))
+            if ((ccparams_lte.prach_config_index <0) || (ccparams_lte.prach_config_index > 63))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_config_index choice: 0..1023 !\n",
-                           RC.config_file_name, i, prach_config_index);
+                           RC.config_file_name, i, ccparams_lte.prach_config_index);
 
-            if (!prach_high_speed)
+            if (!ccparams_lte.prach_high_speed)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED);
-            else if (strcmp(prach_high_speed, "ENABLE") == 0) {
+            else if (strcmp(ccparams_lte.prach_high_speed, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_high_speed = TRUE;
-            } else if (strcmp(prach_high_speed, "DISABLE") == 0) {
+            } else if (strcmp(ccparams_lte.prach_high_speed, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_high_speed = FALSE;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prach_config choice: ENABLE,DISABLE !\n",
-                           RC.config_file_name, i, prach_high_speed);
+                           RC.config_file_name, i, ccparams_lte.prach_high_speed);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_zero_correlation =prach_zero_correlation;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_zero_correlation = ccparams_lte.prach_zero_correlation;
 
-            if ((prach_zero_correlation <0) || (prach_zero_correlation > 15))
+            if ((ccparams_lte.prach_zero_correlation <0) || 
+		(ccparams_lte.prach_zero_correlation > 15))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_zero_correlation choice: 0..15!\n",
-                           RC.config_file_name, i, prach_zero_correlation);
+                           RC.config_file_name, i, ccparams_lte.prach_zero_correlation);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_freq_offset = prach_freq_offset;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_freq_offset = ccparams_lte.prach_freq_offset;
 
-            if ((prach_freq_offset <0) || (prach_freq_offset > 94))
+            if ((ccparams_lte.prach_freq_offset <0) || 
+		(ccparams_lte.prach_freq_offset > 94))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 0..94!\n",
-                           RC.config_file_name, i, prach_freq_offset);
+                           RC.config_file_name, i, ccparams_lte.prach_freq_offset);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_delta_shift = pucch_delta_shift-1;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_delta_shift = ccparams_lte.pucch_delta_shift-1;
 
-            if ((pucch_delta_shift <1) || (pucch_delta_shift > 3))
+            if ((ccparams_lte.pucch_delta_shift <1) || 
+		(ccparams_lte.pucch_delta_shift > 3))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_delta_shift choice: 1..3!\n",
-                           RC.config_file_name, i, pucch_delta_shift);
+                           RC.config_file_name, i, ccparams_lte.pucch_delta_shift);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_nRB_CQI = pucch_nRB_CQI;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_nRB_CQI = ccparams_lte.pucch_nRB_CQI;
 
-            if ((pucch_nRB_CQI <0) || (pucch_nRB_CQI > 98))
+            if ((ccparams_lte.pucch_nRB_CQI <0) || 
+		(ccparams_lte.pucch_nRB_CQI > 98))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nRB_CQI choice: 0..98!\n",
-                           RC.config_file_name, i, pucch_nRB_CQI);
+                           RC.config_file_name, i, ccparams_lte.pucch_nRB_CQI);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_nCS_AN = pucch_nCS_AN;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_nCS_AN = ccparams_lte.pucch_nCS_AN;
 
-            if ((pucch_nCS_AN <0) || (pucch_nCS_AN > 7))
+            if ((ccparams_lte.pucch_nCS_AN <0) || 
+		(ccparams_lte.pucch_nCS_AN > 7))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nCS_AN choice: 0..7!\n",
-                           RC.config_file_name, i, pucch_nCS_AN);
+                           RC.config_file_name, i, ccparams_lte.pucch_nCS_AN);
 
             //#if (RRC_VERSION < MAKE_VERSION(10, 0, 0))
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_n1_AN = pucch_n1_AN;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_n1_AN = ccparams_lte.pucch_n1_AN;
 
-            if ((pucch_n1_AN <0) || (pucch_n1_AN > 2047))
+            if ((ccparams_lte.pucch_n1_AN <0) || 
+		(ccparams_lte.pucch_n1_AN > 2047))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_n1_AN choice: 0..2047!\n",
-                           RC.config_file_name, i, pucch_n1_AN);
+                           RC.config_file_name, i, ccparams_lte.pucch_n1_AN);
 
             //#endif
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pdsch_referenceSignalPower = pdsch_referenceSignalPower;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pdsch_referenceSignalPower = ccparams_lte.pdsch_referenceSignalPower;
 
-            if ((pdsch_referenceSignalPower <-60) || (pdsch_referenceSignalPower > 50))
+            if ((ccparams_lte.pdsch_referenceSignalPower <-60) || 
+		(ccparams_lte.pdsch_referenceSignalPower > 50))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_referenceSignalPower choice:-60..50!\n",
-                           RC.config_file_name, i, pdsch_referenceSignalPower);
+                           RC.config_file_name, i, ccparams_lte.pdsch_referenceSignalPower);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pdsch_p_b = pdsch_p_b;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pdsch_p_b = ccparams_lte.pdsch_p_b;
 
-            if ((pdsch_p_b <0) || (pdsch_p_b > 3))
+            if ((ccparams_lte.pdsch_p_b <0) || 
+		(ccparams_lte.pdsch_p_b > 3))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_p_b choice: 0..3!\n",
-                           RC.config_file_name, i, pdsch_p_b);
+                           RC.config_file_name, i, ccparams_lte.pdsch_p_b);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_n_SB = pusch_n_SB;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_n_SB = ccparams_lte.pusch_n_SB;
 
-            if ((pusch_n_SB <1) || (pusch_n_SB > 4))
+            if ((ccparams_lte.pusch_n_SB <1) || 
+		(ccparams_lte.pusch_n_SB > 4))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_n_SB choice: 1..4!\n",
-                           RC.config_file_name, i, pusch_n_SB);
+                           RC.config_file_name, i, ccparams_lte.pusch_n_SB);
 
-            if (!pusch_hoppingMode)
+            if (!ccparams_lte.pusch_hoppingMode)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE);
-            else if (strcmp(pusch_hoppingMode,"interSubFrame")==0) {
+            else if (strcmp(ccparams_lte.pusch_hoppingMode,"interSubFrame")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame;
-            }  else if (strcmp(pusch_hoppingMode,"intraAndInterSubFrame")==0) {
+            }  
+	    else if (strcmp(ccparams_lte.pusch_hoppingMode,"intraAndInterSubFrame")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!\n",
-                           RC.config_file_name, i, pusch_hoppingMode);
+                           RC.config_file_name, i, ccparams_lte.pusch_hoppingMode);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_hoppingOffset = pusch_hoppingOffset;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_hoppingOffset = ccparams_lte.pusch_hoppingOffset;
 
-            if ((pusch_hoppingOffset<0) || (pusch_hoppingOffset>98))
+            if ((ccparams_lte.pusch_hoppingOffset<0) || 
+		(ccparams_lte.pusch_hoppingOffset>98))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingOffset choice: 0..98!\n",
-                           RC.config_file_name, i, pusch_hoppingMode);
+                           RC.config_file_name, i, ccparams_lte.pusch_hoppingMode);
 
-            if (!pusch_enable64QAM)
+            if (!ccparams_lte.pusch_enable64QAM)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM);
-            else if (strcmp(pusch_enable64QAM, "ENABLE") == 0) {
+            else if (strcmp(ccparams_lte.pusch_enable64QAM, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_enable64QAM = TRUE;
-            }  else if (strcmp(pusch_enable64QAM, "DISABLE") == 0) {
+            }  
+	    else if (strcmp(ccparams_lte.pusch_enable64QAM, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_enable64QAM = FALSE;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n",
-                           RC.config_file_name, i, pusch_enable64QAM);
+                           RC.config_file_name, i, ccparams_lte.pusch_enable64QAM);
 
-            if (!pusch_groupHoppingEnabled)
+            if (!ccparams_lte.pusch_groupHoppingEnabled)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN);
-            else if (strcmp(pusch_groupHoppingEnabled, "ENABLE") == 0) {
+            else if (strcmp(ccparams_lte.pusch_groupHoppingEnabled, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_groupHoppingEnabled = TRUE;
-            }  else if (strcmp(pusch_groupHoppingEnabled, "DISABLE") == 0) {
+            }  
+	    else if (strcmp(ccparams_lte.pusch_groupHoppingEnabled, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_groupHoppingEnabled= FALSE;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!\n",
-                           RC.config_file_name, i, pusch_groupHoppingEnabled);
+                           RC.config_file_name, i, ccparams_lte.pusch_groupHoppingEnabled);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_groupAssignment = pusch_groupAssignment;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_groupAssignment = ccparams_lte.pusch_groupAssignment;
 
-            if ((pusch_groupAssignment<0)||(pusch_groupAssignment>29))
+            if ((ccparams_lte.pusch_groupAssignment<0)||
+		(ccparams_lte.pusch_groupAssignment>29))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_groupAssignment choice: 0..29!\n",
-                           RC.config_file_name, i, pusch_groupAssignment);
+                           RC.config_file_name, i, ccparams_lte.pusch_groupAssignment);
 
-            if (!pusch_sequenceHoppingEnabled)
+            if (!ccparams_lte.pusch_sequenceHoppingEnabled)
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
                            RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN);
-            else if (strcmp(pusch_sequenceHoppingEnabled, "ENABLE") == 0) {
+            else if (strcmp(ccparams_lte.pusch_sequenceHoppingEnabled, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_sequenceHoppingEnabled = TRUE;
-            }  else if (strcmp(pusch_sequenceHoppingEnabled, "DISABLE") == 0) {
+            }  
+	    else if (strcmp(ccparams_lte.pusch_sequenceHoppingEnabled, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_sequenceHoppingEnabled = FALSE;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!\n",
-                           RC.config_file_name, i, pusch_sequenceHoppingEnabled);
+                           RC.config_file_name, i, ccparams_lte.pusch_sequenceHoppingEnabled);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_nDMRS1= pusch_nDMRS1;  //cyclic_shift in RRC!
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_nDMRS1= ccparams_lte.pusch_nDMRS1;  //cyclic_shift in RRC!
 
-            if ((pusch_nDMRS1 <0) || (pusch_nDMRS1>7))
+            if ((ccparams_lte.pusch_nDMRS1 <0) || 
+		(ccparams_lte.pusch_nDMRS1>7))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_nDMRS1 choice: 0..7!\n",
-                           RC.config_file_name, i, pusch_nDMRS1);
+                           RC.config_file_name, i, ccparams_lte.pusch_nDMRS1);
 
-            if (strcmp(phich_duration,"NORMAL")==0) {
+            if (strcmp(ccparams_lte.phich_duration,"NORMAL")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_duration= PHICH_Config__phich_Duration_normal;
-            } else if (strcmp(phich_duration,"EXTENDED")==0) {
+            } else if (strcmp(ccparams_lte.phich_duration,"EXTENDED")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_duration= PHICH_Config__phich_Duration_extended;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_duration choice: NORMAL,EXTENDED!\n",
-                           RC.config_file_name, i, phich_duration);
+                           RC.config_file_name, i, ccparams_lte.phich_duration);
 
-            if (strcmp(phich_resource,"ONESIXTH")==0) {
+            if (strcmp(ccparams_lte.phich_resource,"ONESIXTH")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource= PHICH_Config__phich_Resource_oneSixth ;
-            } else if (strcmp(phich_resource,"HALF")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.phich_resource,"HALF")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource= PHICH_Config__phich_Resource_half;
-            } else if (strcmp(phich_resource,"ONE")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.phich_resource,"ONE")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource= PHICH_Config__phich_Resource_one;
-            } else if (strcmp(phich_resource,"TWO")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.phich_resource,"TWO")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource= PHICH_Config__phich_Resource_two;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_resource choice: ONESIXTH,HALF,ONE,TWO!\n",
-                           RC.config_file_name, i, phich_resource);
+                           RC.config_file_name, i, ccparams_lte.phich_resource);
 
             printf("phich.resource %ld (%s), phich.duration %ld (%s)\n",
-                   RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource,phich_resource,
-                   RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_duration,phich_duration);
+                   RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_resource,ccparams_lte.phich_resource,
+                   RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].phich_duration,ccparams_lte.phich_duration);
 
-            if (strcmp(srs_enable, "ENABLE") == 0) {
+            if (strcmp(ccparams_lte.srs_enable, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_enable= TRUE;
-            } else if (strcmp(srs_enable, "DISABLE") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.srs_enable, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_enable= FALSE;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
-                           RC.config_file_name, i, srs_enable);
+                           RC.config_file_name, i, ccparams_lte.srs_enable);
 
             if (RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_enable== TRUE) {
-              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_BandwidthConfig= srs_BandwidthConfig;
+              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_BandwidthConfig= ccparams_lte.srs_BandwidthConfig;
 
-              if ((srs_BandwidthConfig < 0) || (srs_BandwidthConfig >7))
+              if ((ccparams_lte.srs_BandwidthConfig < 0) || 
+		  (ccparams_lte.srs_BandwidthConfig >7))
                 AssertFatal (0, "Failed to parse eNB configuration file %s, enb %d unknown value %d for srs_BandwidthConfig choice: 0...7\n",
-                             RC.config_file_name, i, srs_BandwidthConfig);
+                             RC.config_file_name, i, ccparams_lte.srs_BandwidthConfig);
 
-              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_SubframeConfig= srs_SubframeConfig;
+              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_SubframeConfig= ccparams_lte.srs_SubframeConfig;
 
-              if ((srs_SubframeConfig<0) || (srs_SubframeConfig>15))
+              if ((ccparams_lte.srs_SubframeConfig<0) || 
+		  (ccparams_lte.srs_SubframeConfig>15))
                 AssertFatal (0,
                              "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for srs_SubframeConfig choice: 0..15 !\n",
-                             RC.config_file_name, i, srs_SubframeConfig);
+                             RC.config_file_name, i, ccparams_lte.srs_SubframeConfig);
 
-              if (strcmp(srs_ackNackST, "ENABLE") == 0) {
+              if (strcmp(ccparams_lte.srs_ackNackST, "ENABLE") == 0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_ackNackST= TRUE;
-              } else if (strcmp(srs_ackNackST, "DISABLE") == 0) {
+              } 
+	      else if (strcmp(ccparams_lte.srs_ackNackST, "DISABLE") == 0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_ackNackST= FALSE;
               } else
                 AssertFatal (0,
                              "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
-                             RC.config_file_name, i, srs_ackNackST);
+                             RC.config_file_name, i, ccparams_lte.srs_ackNackST);
 
-              if (strcmp(srs_MaxUpPts, "ENABLE") == 0) {
+              if (strcmp(ccparams_lte.srs_MaxUpPts, "ENABLE") == 0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_MaxUpPts= TRUE;
-              } else if (strcmp(srs_MaxUpPts, "DISABLE") == 0) {
+              } 
+	      else if (strcmp(ccparams_lte.srs_MaxUpPts, "DISABLE") == 0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].srs_MaxUpPts= FALSE;
-              } else
+              } 
+	      else
                 AssertFatal (0,
                              "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_MaxUpPts choice: ENABLE,DISABLE !\n",
-                             RC.config_file_name, i, srs_MaxUpPts);
+                             RC.config_file_name, i, ccparams_lte.srs_MaxUpPts);
             }
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_p0_Nominal= pusch_p0_Nominal;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_p0_Nominal= ccparams_lte.pusch_p0_Nominal;
 
-            if ((pusch_p0_Nominal<-126) || (pusch_p0_Nominal>24))
+            if ((ccparams_lte.pusch_p0_Nominal<-126) || 
+		(ccparams_lte.pusch_p0_Nominal>24))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_p0_Nominal choice: -126..24 !\n",
-                           RC.config_file_name, i, pusch_p0_Nominal);
+                           RC.config_file_name, i, ccparams_lte.pusch_p0_Nominal);
 
 #if (RRC_VERSION <= MAKE_VERSION(12, 0, 0))
 
-            if (strcmp(pusch_alpha,"AL0")==0) {
+            if (strcmp(ccparams_lte.pusch_alpha,"AL0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al0;
-            } else if (strcmp(pusch_alpha,"AL04")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL04")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al04;
-            } else if (strcmp(pusch_alpha,"AL05")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL05")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al05;
-            } else if (strcmp(pusch_alpha,"AL06")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL06")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al06;
-            } else if (strcmp(pusch_alpha,"AL07")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL07")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al07;
-            } else if (strcmp(pusch_alpha,"AL08")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL08")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al08;
-            } else if (strcmp(pusch_alpha,"AL09")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL09")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al09;
-            } else if (strcmp(pusch_alpha,"AL1")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL1")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= UplinkPowerControlCommon__alpha_al1;
             }
 
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(12, 0, 0))
 
-            if (strcmp(pusch_alpha,"AL0")==0) {
+            if (strcmp(ccparams_lte.pusch_alpha,"AL0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al0;
-            } else if (strcmp(pusch_alpha,"AL04")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL04")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al04;
-            } else if (strcmp(pusch_alpha,"AL05")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL05")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al05;
-            } else if (strcmp(pusch_alpha,"AL06")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL06")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al06;
-            } else if (strcmp(pusch_alpha,"AL07")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL07")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al07;
-            } else if (strcmp(pusch_alpha,"AL08")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL08")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al08;
-            } else if (strcmp(pusch_alpha,"AL09")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL09")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al09;
-            } else if (strcmp(pusch_alpha,"AL1")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pusch_alpha,"AL1")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pusch_alpha= Alpha_r12_al1;
             }
 
@@ -1359,96 +912,117 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
             else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_Alpha choice: AL0,AL04,AL05,AL06,AL07,AL08,AL09,AL1!\n",
-                           RC.config_file_name, i, pusch_alpha);
+                           RC.config_file_name, i, ccparams_lte.pusch_alpha);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_p0_Nominal= pucch_p0_Nominal;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_p0_Nominal= ccparams_lte.pucch_p0_Nominal;
 
-            if ((pucch_p0_Nominal<-127) || (pucch_p0_Nominal>-96))
+            if ((ccparams_lte.pucch_p0_Nominal<-127) || 
+		(ccparams_lte.pucch_p0_Nominal>-96))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_p0_Nominal choice: -127..-96 !\n",
-                           RC.config_file_name, i, pucch_p0_Nominal);
+                           RC.config_file_name, i, ccparams_lte.pucch_p0_Nominal);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].msg3_delta_Preamble= msg3_delta_Preamble;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].msg3_delta_Preamble= ccparams_lte.msg3_delta_Preamble;
 
-            if ((msg3_delta_Preamble<-1) || (msg3_delta_Preamble>6))
+            if ((ccparams_lte.msg3_delta_Preamble<-1) || 
+		(ccparams_lte.msg3_delta_Preamble>6))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for msg3_delta_Preamble choice: -1..6 !\n",
-                           RC.config_file_name, i, msg3_delta_Preamble);
+                           RC.config_file_name, i, ccparams_lte.msg3_delta_Preamble);
 
-            if (strcmp(pucch_deltaF_Format1,"deltaF_2")==0) {
+            if (strcmp(ccparams_lte.pucch_deltaF_Format1,"deltaF_2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF_2;
-            } else if (strcmp(pucch_deltaF_Format1,"deltaF0")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format1,"deltaF0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF0;
-            } else if (strcmp(pucch_deltaF_Format1,"deltaF2")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format1,"deltaF2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1 choice: deltaF_2,dltaF0,deltaF2!\n",
-                           RC.config_file_name, i, pucch_deltaF_Format1);
+                           RC.config_file_name, i, ccparams_lte.pucch_deltaF_Format1);
 
-            if (strcmp(pucch_deltaF_Format1b,"deltaF1")==0) {
+            if (strcmp(ccparams_lte.pucch_deltaF_Format1b,"deltaF1")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF1;
-            } else if (strcmp(pucch_deltaF_Format1b,"deltaF3")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format1b,"deltaF3")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3;
-            } else if (strcmp(pucch_deltaF_Format1b,"deltaF5")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format1b,"deltaF5")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1b choice: deltaF1,dltaF3,deltaF5!\n",
-                           RC.config_file_name, i, pucch_deltaF_Format1b);
+                           RC.config_file_name, i, ccparams_lte.pucch_deltaF_Format1b);
 
-            if (strcmp(pucch_deltaF_Format2,"deltaF_2")==0) {
+            if (strcmp(ccparams_lte.pucch_deltaF_Format2,"deltaF_2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF_2;
-            } else if (strcmp(pucch_deltaF_Format2,"deltaF0")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2,"deltaF0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0;
-            } else if (strcmp(pucch_deltaF_Format2,"deltaF1")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2,"deltaF1")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF1;
-            } else if (strcmp(pucch_deltaF_Format2,"deltaF2")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2,"deltaF2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2 choice: deltaF_2,dltaF0,deltaF1,deltaF2!\n",
-                           RC.config_file_name, i, pucch_deltaF_Format2);
+                           RC.config_file_name, i, ccparams_lte.pucch_deltaF_Format2);
 
-            if (strcmp(pucch_deltaF_Format2a,"deltaF_2")==0) {
+            if (strcmp(ccparams_lte.pucch_deltaF_Format2a,"deltaF_2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF_2;
-            } else if (strcmp(pucch_deltaF_Format2a,"deltaF0")==0) {
+            }
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2a,"deltaF0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0;
-            } else if (strcmp(pucch_deltaF_Format2a,"deltaF2")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2a,"deltaF2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2a choice: deltaF_2,dltaF0,deltaF2!\n",
-                           RC.config_file_name, i, pucch_deltaF_Format2a);
+                           RC.config_file_name, i, ccparams_lte.pucch_deltaF_Format2a);
 
-            if (strcmp(pucch_deltaF_Format2b,"deltaF_2")==0) {
+            if (strcmp(ccparams_lte.pucch_deltaF_Format2b,"deltaF_2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF_2;
-            } else if (strcmp(pucch_deltaF_Format2b,"deltaF0")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2b,"deltaF0")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0;
-            } else if (strcmp(pucch_deltaF_Format2b,"deltaF2")==0) {
+            } 
+	    else if (strcmp(ccparams_lte.pucch_deltaF_Format2b,"deltaF2")==0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2;
-            } else
+            } 
+	    else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2b choice: deltaF_2,dltaF0,deltaF2!\n",
-                           RC.config_file_name, i, pucch_deltaF_Format2b);
+                           RC.config_file_name, i, ccparams_lte.pucch_deltaF_Format2b);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_numberOfRA_Preambles= (rach_numberOfRA_Preambles/4)-1;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_numberOfRA_Preambles= (ccparams_lte.rach_numberOfRA_Preambles/4)-1;
 
-            if ((rach_numberOfRA_Preambles <4) || (rach_numberOfRA_Preambles>64) || ((rach_numberOfRA_Preambles&3)!=0))
+            if ((ccparams_lte.rach_numberOfRA_Preambles <4) || 
+		(ccparams_lte.rach_numberOfRA_Preambles>64) || 
+		((ccparams_lte.rach_numberOfRA_Preambles&3)!=0))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_numberOfRA_Preambles choice: 4,8,12,...,64!\n",
-                           RC.config_file_name, i, rach_numberOfRA_Preambles);
+                           RC.config_file_name, i, ccparams_lte.rach_numberOfRA_Preambles);
 
-            if (strcmp(rach_preamblesGroupAConfig, "ENABLE") == 0) {
+            if (strcmp(ccparams_lte.rach_preamblesGroupAConfig, "ENABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_preamblesGroupAConfig= TRUE;
-              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_sizeOfRA_PreamblesGroupA= (rach_sizeOfRA_PreamblesGroupA/4)-1;
+              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_sizeOfRA_PreamblesGroupA= (ccparams_lte.rach_sizeOfRA_PreamblesGroupA/4)-1;
 
-              if ((rach_numberOfRA_Preambles <4) || (rach_numberOfRA_Preambles>60) || ((rach_numberOfRA_Preambles&3)!=0))
+              if ((ccparams_lte.rach_numberOfRA_Preambles <4) || 
+		  (ccparams_lte.rach_numberOfRA_Preambles>60) || 
+		  ((ccparams_lte.rach_numberOfRA_Preambles&3)!=0))
                 AssertFatal (0,
                              "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_sizeOfRA_PreamblesGroupA choice: 4,8,12,...,60!\n",
-                             RC.config_file_name, i, rach_sizeOfRA_PreamblesGroupA);
+                             RC.config_file_name, i, ccparams_lte.rach_sizeOfRA_PreamblesGroupA);
 
-              switch (rach_messageSizeGroupA) {
+              switch (ccparams_lte.rach_messageSizeGroupA) {
 	      case 56:
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b56;
 		break;
@@ -1468,52 +1042,64 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      default:
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_messageSizeGroupA choice: 56,144,208,256!\n",
-			     RC.config_file_name, i, rach_messageSizeGroupA);
+			     RC.config_file_name, i, ccparams_lte.rach_messageSizeGroupA);
 		break;
               }
 
-              if (strcmp(rach_messagePowerOffsetGroupB,"minusinfinity")==0) {
+              if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"minusinfinity")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_minusinfinity;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB0")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB0")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB0;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB5")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB5")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB5;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB8")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB8")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB8;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB10")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB10")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB10;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB12")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB12")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB12;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB15")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB15")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB15;
-              } else if (strcmp(rach_messagePowerOffsetGroupB,"dB18")==0) {
+              } 
+	      else if (strcmp(ccparams_lte.rach_messagePowerOffsetGroupB,"dB18")==0) {
                 RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18;
-              } else
+              } 
+	      else
                 AssertFatal (0,
                              "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_messagePowerOffsetGroupB choice: minusinfinity,dB0,dB5,dB8,dB10,dB12,dB15,dB18!\n",
-                             RC.config_file_name, i, rach_messagePowerOffsetGroupB);
-            } else if (strcmp(rach_preamblesGroupAConfig, "DISABLE") == 0) {
+                             RC.config_file_name, i, ccparams_lte.rach_messagePowerOffsetGroupB);
+            } else if (strcmp(ccparams_lte.rach_preamblesGroupAConfig, "DISABLE") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_preamblesGroupAConfig= FALSE;
             } else
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !\n",
-                           RC.config_file_name, i, rach_preamblesGroupAConfig);
+                           RC.config_file_name, i, ccparams_lte.rach_preamblesGroupAConfig);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_preambleInitialReceivedTargetPower= (rach_preambleInitialReceivedTargetPower+120)/2;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_preambleInitialReceivedTargetPower= (ccparams_lte.rach_preambleInitialReceivedTargetPower+120)/2;
 
-            if ((rach_preambleInitialReceivedTargetPower<-120) || (rach_preambleInitialReceivedTargetPower>-90) || ((rach_preambleInitialReceivedTargetPower&1)!=0))
+            if ((ccparams_lte.rach_preambleInitialReceivedTargetPower<-120) || 
+		(ccparams_lte.rach_preambleInitialReceivedTargetPower>-90) || 
+		((ccparams_lte.rach_preambleInitialReceivedTargetPower&1)!=0))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleInitialReceivedTargetPower choice: -120,-118,...,-90 !\n",
-                           RC.config_file_name, i, rach_preambleInitialReceivedTargetPower);
+                           RC.config_file_name, i, ccparams_lte.rach_preambleInitialReceivedTargetPower);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_powerRampingStep= rach_powerRampingStep/2;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_powerRampingStep= ccparams_lte.rach_powerRampingStep/2;
 
-            if ((rach_powerRampingStep<0) || (rach_powerRampingStep>6) || ((rach_powerRampingStep&1)!=0))
+            if ((ccparams_lte.rach_powerRampingStep<0) || 
+		(ccparams_lte.rach_powerRampingStep>6) || 
+		((ccparams_lte.rach_powerRampingStep&1)!=0))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_powerRampingStep choice: 0,2,4,6 !\n",
-                           RC.config_file_name, i, rach_powerRampingStep);
+                           RC.config_file_name, i, ccparams_lte.rach_powerRampingStep);
 
-            switch (rach_preambleTransMax) {
+            switch (ccparams_lte.rach_preambleTransMax) {
 #if (RRC_VERSION < MAKE_VERSION(14, 0, 0))
 
 	    case 3:
@@ -1609,32 +1195,37 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	    default:
 	      AssertFatal (0,
 			   "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleTransMax choice: 3,4,5,6,7,8,10,20,50,100,200!\n",
-			   RC.config_file_name, i, rach_preambleTransMax);
+			   RC.config_file_name, i, ccparams_lte.rach_preambleTransMax);
 	      break;
             }
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_raResponseWindowSize=  (rach_raResponseWindowSize==10)?7:rach_raResponseWindowSize-2;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_raResponseWindowSize=  (ccparams_lte.rach_raResponseWindowSize==10)?7:ccparams_lte.rach_raResponseWindowSize-2;
 
-            if ((rach_raResponseWindowSize<0)||(rach_raResponseWindowSize==9)||(rach_raResponseWindowSize>10))
+            if ((ccparams_lte.rach_raResponseWindowSize<0)||
+		(ccparams_lte.rach_raResponseWindowSize==9)||
+		(ccparams_lte.rach_raResponseWindowSize>10))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_raResponseWindowSize choice: 2,3,4,5,6,7,8,10!\n",
-                           RC.config_file_name, i, rach_preambleTransMax);
+                           RC.config_file_name, i, ccparams_lte.rach_preambleTransMax);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_macContentionResolutionTimer= (rach_macContentionResolutionTimer/8)-1;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_macContentionResolutionTimer= (ccparams_lte.rach_macContentionResolutionTimer/8)-1;
 
-            if ((rach_macContentionResolutionTimer<8) || (rach_macContentionResolutionTimer>64) || ((rach_macContentionResolutionTimer&7)!=0))
+            if ((ccparams_lte.rach_macContentionResolutionTimer<8) || 
+		(ccparams_lte.rach_macContentionResolutionTimer>64) || 
+		((ccparams_lte.rach_macContentionResolutionTimer&7)!=0))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_macContentionResolutionTimer choice: 8,16,...,56,64!\n",
-                           RC.config_file_name, i, rach_preambleTransMax);
+                           RC.config_file_name, i, ccparams_lte.rach_preambleTransMax);
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_maxHARQ_Msg3Tx= rach_maxHARQ_Msg3Tx;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].rach_maxHARQ_Msg3Tx= ccparams_lte.rach_maxHARQ_Msg3Tx;
 
-            if ((rach_maxHARQ_Msg3Tx<0) || (rach_maxHARQ_Msg3Tx>8))
+            if ((ccparams_lte.rach_maxHARQ_Msg3Tx<0) || 
+		(ccparams_lte.rach_maxHARQ_Msg3Tx>8))
               AssertFatal (0,
                            "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_maxHARQ_Msg3Tx choice: 1..8!\n",
-                           RC.config_file_name, i, rach_preambleTransMax);
+                           RC.config_file_name, i, ccparams_lte.rach_preambleTransMax);
 
-            switch (pcch_defaultPagingCycle) {
+            switch (ccparams_lte.pcch_defaultPagingCycle) {
 	    case 32:
 	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf32;
 	      break;
@@ -1654,32 +1245,40 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	    default:
 	      AssertFatal (0,
 			   "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_defaultPagingCycle choice: 32,64,128,256!\n",
-			   RC.config_file_name, i, pcch_defaultPagingCycle);
+			   RC.config_file_name, i, ccparams_lte.pcch_defaultPagingCycle);
 	      break;
             }
 
-            if (strcmp(pcch_nB, "fourT") == 0) {
+            if (strcmp(ccparams_lte.pcch_nB, "fourT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_fourT;
-            } else if (strcmp(pcch_nB, "twoT") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "twoT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_twoT;
-            } else if (strcmp(pcch_nB, "oneT") == 0) {
-              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_oneT;
-            } else if (strcmp(pcch_nB, "halfT") == 0) {
-              RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_halfT;
-            } else if (strcmp(pcch_nB, "quarterT") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "oneT") == 0) {
+ 	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_oneT;
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "halfT") == 0) {
+ 	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_halfT;
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "quarterT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_quarterT;
-            } else if (strcmp(pcch_nB, "oneEighthT") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "oneEighthT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_oneEighthT;
-            } else if (strcmp(pcch_nB, "oneSixteenthT") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "oneSixteenthT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_oneSixteenthT;
-            } else if (strcmp(pcch_nB, "oneThirtySecondT") == 0) {
+            } 
+	    else if (strcmp(ccparams_lte.pcch_nB, "oneThirtySecondT") == 0) {
               RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].pcch_nB= PCCH_Config__nB_oneThirtySecondT;
-            } else
+            } 
+	    else
               AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n",
-                           RC.config_file_name, i, pcch_defaultPagingCycle);
+                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n",
+                           RC.config_file_name, i, ccparams_lte.pcch_nB);
 
-            switch (bcch_modificationPeriodCoeff) {
+            switch (ccparams_lte.bcch_modificationPeriodCoeff) {
 	    case 2:
 	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n2;
 	      break;
@@ -1699,18 +1298,18 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	    default:
 	      AssertFatal (0,
 			   "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for bcch_modificationPeriodCoeff choice: 2,4,8,16",
-			   RC.config_file_name, i, bcch_modificationPeriodCoeff);
+			   RC.config_file_name, i, ccparams_lte.bcch_modificationPeriodCoeff);
 	      break;
             }
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t300= ue_TimersAndConstants_t300;
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t301= ue_TimersAndConstants_t301;
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t310= ue_TimersAndConstants_t310;
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= ue_TimersAndConstants_t311;
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_n310= ue_TimersAndConstants_n310;
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_n311= ue_TimersAndConstants_n311;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t300= ccparams_lte.ue_TimersAndConstants_t300;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t301= ccparams_lte.ue_TimersAndConstants_t301;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t310= ccparams_lte.ue_TimersAndConstants_t310;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= ccparams_lte.ue_TimersAndConstants_t311;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_n310= ccparams_lte.ue_TimersAndConstants_n310;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_n311= ccparams_lte.ue_TimersAndConstants_n311;
 
-            switch (ue_TransmissionMode) {
+            switch (ccparams_lte.ue_TransmissionMode) {
 	    case 1:
 	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm1;
 	      break;
@@ -1742,57 +1341,60 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	    default:
 	      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",
-			   RC.config_file_name, i, ue_TransmissionMode);
+			   RC.config_file_name, i, ccparams_lte.ue_TransmissionMode);
 	      break;
             }
 
-            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_multiple_max= ue_multiple_max;
+            RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_multiple_max= ccparams_lte.ue_multiple_max;
 
-            switch (N_RB_DL) {
+            switch (ccparams_lte.N_RB_DL) {
 	    case 25:
-	      if ((ue_multiple_max < 1) || (ue_multiple_max > 4))
+	      if ((ccparams_lte.ue_multiple_max < 1) || 
+		  (ccparams_lte.ue_multiple_max > 4))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_multiple_max choice: 1..4!\n",
-			     RC.config_file_name, i, ue_multiple_max);
+			     RC.config_file_name, i, ccparams_lte.ue_multiple_max);
 
 	      break;
 
 	    case 50:
-	      if ((ue_multiple_max < 1) || (ue_multiple_max > 8))
+	      if ((ccparams_lte.ue_multiple_max < 1) || 
+		  (ccparams_lte.ue_multiple_max > 8))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_multiple_max choice: 1..8!\n",
-			     RC.config_file_name, i, ue_multiple_max);
+			     RC.config_file_name, i, ccparams_lte.ue_multiple_max);
 
 	      break;
 
 	    case 100:
-	      if ((ue_multiple_max < 1) || (ue_multiple_max > 16))
+	      if ((ccparams_lte.ue_multiple_max < 1) || 
+		  (ccparams_lte.ue_multiple_max > 16))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_multiple_max choice: 1..16!\n",
-			     RC.config_file_name, i, ue_multiple_max);
+			     RC.config_file_name, i, ccparams_lte.ue_multiple_max);
 
 	      break;
 
 	    default:
 	      AssertFatal (0,
 			   "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for N_RB_DL choice: 25,50,100 !\n",
-			   RC.config_file_name, i, N_RB_DL);
+			   RC.config_file_name, i, ccparams_lte.N_RB_DL);
 	      break;
             }
 
 	    char brparamspath[MAX_OPTNAME_SIZE*2 + 16];
-	    sprintf(brparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_COMPONENT_BR_PARAMETERS);
+	    sprintf(brparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_EMTC_PARAMETERS);
 	    config_get( brParams, sizeof(brParams)/sizeof(paramdef_t), brparamspath);
-	    RRC_CONFIGURATION_REQ(msg_p).eMTC_configured = eMTC_configured&1;
+	    RRC_CONFIGURATION_REQ(msg_p).eMTC_configured = eMTCconfig.eMTC_configured&1;
 
-	    if (eMTC_configured > 0) { 
+	    if (eMTCconfig.eMTC_configured > 0) { 
 	      printf("Found parameters for eMTC\n");
-	      RRC_CONFIGURATION_REQ(msg_p).schedulingInfoSIB1_BR_r13[j] = schedulingInfoSIB1_BR_r13;
+	      RRC_CONFIGURATION_REQ(msg_p).schedulingInfoSIB1_BR_r13[j] = eMTCconfig.schedulingInfoSIB1_BR_r13;
 	      
 	      
-	      if (!strcmp(cellSelectionInfoCE_r13, "ENABLE")) {
+	      if (!strcmp(eMTCconfig.cellSelectionInfoCE_r13, "ENABLE")) {
 		RRC_CONFIGURATION_REQ(msg_p).cellSelectionInfoCE_r13[j] = TRUE;
-		RRC_CONFIGURATION_REQ(msg_p).q_RxLevMinCE_r13[j]= q_RxLevMinCE_r13;
+		RRC_CONFIGURATION_REQ(msg_p).q_RxLevMinCE_r13[j]= eMTCconfig.q_RxLevMinCE_r13;
 		//                            RRC_CONFIGURATION_REQ(msg_p).q_QualMinRSRQ_CE_r13[j]= calloc(1, sizeof(long));
 		//                            *RRC_CONFIGURATION_REQ(msg_p).q_QualMinRSRQ_CE_r13[j]= q_QualMinRSRQ_CE_r13;
 	      } else {
@@ -1801,37 +1403,37 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      
 	      
-	      if (!strcmp(bandwidthReducedAccessRelatedInfo_r13, "ENABLE")) {
+	      if (!strcmp(eMTCconfig.bandwidthReducedAccessRelatedInfo_r13, "ENABLE")) {
 		RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = TRUE;
 		
 		
 		
-		if (!strcmp(si_WindowLength_BR_r13, "ms20")) {
+		if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms20")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 0;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms40")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms40")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 1;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms60")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms60")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 2;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms80")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms80")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 3;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms120")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms120")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 4;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms160")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms160")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 5;
-		} else if (!strcmp(si_WindowLength_BR_r13, "ms200")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms200")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 6;
-		} else if (!strcmp(si_WindowLength_BR_r13, "spare")) {
+		} else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "spare")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 7;
 		}
 		
 		
-		if (!strcmp(si_RepetitionPattern_r13, "everyRF")) {
+		if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "everyRF")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 0;
-		} else if (!strcmp(si_RepetitionPattern_r13, "every2ndRF")) {
+		} else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every2ndRF")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 1;
-		} else if (!strcmp(si_RepetitionPattern_r13, "every4thRF")) {
+		} else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every4thRF")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 2;
-		} else if (!strcmp(si_RepetitionPattern_r13, "every8thRF")) {
+		} else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every8thRF")) {
 		  RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 3;
 		}
 		
@@ -1844,10 +1446,10 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      RRC_CONFIGURATION_REQ (msg_p).scheduling_info_br_size[j] = schedulingInfoBrParamList.numelt;
 	      int siInfoindex;
 	      for (siInfoindex = 0; siInfoindex < schedulingInfoBrParamList.numelt; siInfoindex++) {
-		sprintf(schedulingInfoBrPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_SCHEDULING_INFO_LIST, siInfoindex);
+		sprintf(schedulingInfoBrPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_EMTC_PARAMETERS, siInfoindex);
 		config_get(schedulingInfoBrParams, sizeof(schedulingInfoBrParams) / sizeof(paramdef_t), schedulingInfoBrPath);
-		RRC_CONFIGURATION_REQ (msg_p).si_Narrowband_r13[j][siInfoindex] = si_Narrowband_r13;
-		RRC_CONFIGURATION_REQ (msg_p).si_TBS_r13[j][siInfoindex] = si_TBS_r13;
+		RRC_CONFIGURATION_REQ (msg_p).si_Narrowband_r13[j][siInfoindex] = eMTCconfig.si_Narrowband_r13;
+		RRC_CONFIGURATION_REQ (msg_p).si_TBS_r13[j][siInfoindex] = eMTCconfig.si_TBS_r13;
 	      }
 	      
 	      
@@ -1856,26 +1458,26 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = CALLOC(1, sizeof(BOOLEAN_t));
-	      if (!strcmp(fdd_DownlinkOrTddSubframeBitmapBR_r13, "subframePattern40-r13")) {
+	      if (!strcmp(eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_r13, "subframePattern40-r13")) {
 		*RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = FALSE;
-		RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
+		RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
 	      } else {
 		*RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = TRUE;
-		RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
+		RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
 	      }
 	      
-	      RRC_CONFIGURATION_REQ(msg_p).startSymbolBR_r13[j] = startSymbolBR_r13;
+	      RRC_CONFIGURATION_REQ(msg_p).startSymbolBR_r13[j] = eMTCconfig.startSymbolBR_r13;
 	      
 	      
-	      if (!strcmp(si_HoppingConfigCommon_r13, "off")) {
+	      if (!strcmp(eMTCconfig.si_HoppingConfigCommon_r13, "off")) {
 		RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = 1;
-	      } else if (!strcmp(si_HoppingConfigCommon_r13, "on")) {
+	      } else if (!strcmp(eMTCconfig.si_HoppingConfigCommon_r13, "on")) {
 		RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = 0;
 	      }
 	      
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = calloc(1, sizeof(long));
-	      if (!strcmp(si_ValidityTime_r13, "true")) {
+	      if (!strcmp(eMTCconfig.si_ValidityTime_r13, "true")) {
 		*RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = 0;
 	      } else {
 		AssertFatal(0,
@@ -1884,26 +1486,26 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      }
 	      
 	      
-	      if (!strcmp(freqHoppingParametersDL_r13, "ENABLE"))
+	      if (!strcmp(eMTCconfig.freqHoppingParametersDL_r13, "ENABLE"))
 		{
 		  RRC_CONFIGURATION_REQ(msg_p).freqHoppingParametersDL_r13[j] = TRUE;
 		  
-		  if (!strcmp(interval_DLHoppingConfigCommonModeA_r13, "interval-TDD-r13"))
+		  if (!strcmp(eMTCconfig.interval_DLHoppingConfigCommonModeA_r13, "interval-TDD-r13"))
 		    RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13[j] = FALSE;
 		  else
 		    RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13[j] = TRUE;
-		  RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13_val[j] = interval_DLHoppingConfigCommonModeA_r13_val;
+		  RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.interval_DLHoppingConfigCommonModeA_r13_val;
 		  
-		  if (!strcmp(interval_DLHoppingConfigCommonModeB_r13, "interval-TDD-r13"))
+		  if (!strcmp(eMTCconfig.interval_DLHoppingConfigCommonModeB_r13, "interval-TDD-r13"))
 		    RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13[j] = FALSE;
 		  else
 		    RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13[j] = TRUE;
-		  RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13_val[j] = interval_DLHoppingConfigCommonModeB_r13_val;
+		  RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13_val[j] = eMTCconfig.interval_DLHoppingConfigCommonModeB_r13_val;
 		  
 		  RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = calloc(1, sizeof(long));
-		  if (!strcmp(mpdcch_pdsch_HoppingNB_r13, "nb2")) {
+		  if (!strcmp(eMTCconfig.mpdcch_pdsch_HoppingNB_r13, "nb2")) {
 		    *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = 0;
-		  } else if (!strcmp(mpdcch_pdsch_HoppingNB_r13, "nb4")) {
+		  } else if (!strcmp(eMTCconfig.mpdcch_pdsch_HoppingNB_r13, "nb4")) {
 		    *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = 1;
 		  } else {
 		    AssertFatal(0,
@@ -1913,7 +1515,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 
 
 		  RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = calloc(1, sizeof(long));
-		  *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = mpdcch_pdsch_HoppingOffset_r13;
+		  *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = eMTCconfig.mpdcch_pdsch_HoppingOffset_r13;
 		  
 		}
 	      else
@@ -1924,284 +1526,284 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      /** ------------------------------SIB2/3 BR------------------------------------------ */
 	      
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_root =  prach_root_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_root =  eMTCconfig.ccparams.prach_root;
 	      
-	      if ((prach_root_emtc <0) || (prach_root_emtc > 1023))
+	      if ((eMTCconfig.ccparams.prach_root <0) || (eMTCconfig.ccparams.prach_root > 1023))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_root choice: 0..1023 !\n",
-			     RC.config_file_name, i, prach_root_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.prach_root);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_config_index = prach_config_index_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_config_index = eMTCconfig.ccparams.prach_config_index;
 	      
-	      if ((prach_config_index_emtc <0) || (prach_config_index_emtc > 63))
+	      if ((eMTCconfig.ccparams.prach_config_index <0) || (eMTCconfig.ccparams.prach_config_index > 63))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_config_index choice: 0..1023 !\n",
-			     RC.config_file_name, i, prach_config_index);
+			     RC.config_file_name, i, eMTCconfig.ccparams.prach_config_index);
 	      
-	      if (!prach_high_speed_emtc)
+	      if (!eMTCconfig.ccparams.prach_high_speed)
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
 			     RC.config_file_name, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED);
-	      else if (strcmp(prach_high_speed_emtc, "ENABLE") == 0) {
+	      else if (strcmp(eMTCconfig.ccparams.prach_high_speed, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_high_speed = TRUE;
-	      } else if (strcmp(prach_high_speed_emtc, "DISABLE") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.prach_high_speed, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_high_speed = FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prach_config choice: ENABLE,DISABLE !\n",
-			     RC.config_file_name, i, prach_high_speed_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.prach_high_speed);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_zero_correlation =prach_zero_correlation_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_zero_correlation = eMTCconfig.ccparams.prach_zero_correlation;
 	      
-	      if ((prach_zero_correlation_emtc <0) || (prach_zero_correlation_emtc > 15))
+	      if ((eMTCconfig.ccparams.prach_zero_correlation <0) || (eMTCconfig.ccparams.prach_zero_correlation > 15))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_zero_correlation choice: 0..15!\n",
-			     RC.config_file_name, i, prach_zero_correlation_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.prach_zero_correlation);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_freq_offset = prach_freq_offset_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_freq_offset = eMTCconfig.ccparams.prach_freq_offset;
 	      
-	      if ((prach_freq_offset_emtc <0) || (prach_freq_offset_emtc > 94))
+	      if ((eMTCconfig.ccparams.prach_freq_offset <0) || (eMTCconfig.ccparams.prach_freq_offset > 94))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 0..94!\n",
-			     RC.config_file_name, i, prach_freq_offset);
+			     RC.config_file_name, i, eMTCconfig.ccparams.prach_freq_offset);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_delta_shift = pucch_delta_shift_emtc-1;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_delta_shift = eMTCconfig.ccparams.pucch_delta_shift-1;
 	      
-	      if ((pucch_delta_shift_emtc <1) || (pucch_delta_shift_emtc > 3))
+	      if ((eMTCconfig.ccparams.pucch_delta_shift <1) || (eMTCconfig.ccparams.pucch_delta_shift > 3))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_delta_shift choice: 1..3!\n",
-			     RC.config_file_name, i, pucch_delta_shift_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_delta_shift);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nRB_CQI = pucch_nRB_CQI_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nRB_CQI = eMTCconfig.ccparams.pucch_nRB_CQI;
 	      
-	      if ((pucch_nRB_CQI_emtc <0) || (pucch_nRB_CQI_emtc > 98))
+	      if ((eMTCconfig.ccparams.pucch_nRB_CQI <0) || (eMTCconfig.ccparams.pucch_nRB_CQI > 98))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nRB_CQI choice: 0..98!\n",
-			     RC.config_file_name, i, pucch_nRB_CQI_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_nRB_CQI);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nCS_AN = pucch_nCS_AN_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nCS_AN = eMTCconfig.ccparams.pucch_nCS_AN;
 	      
-	      if ((pucch_nCS_AN_emtc <0) || (pucch_nCS_AN_emtc > 7))
+	      if ((eMTCconfig.ccparams.pucch_nCS_AN <0) || (eMTCconfig.ccparams.pucch_nCS_AN > 7))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nCS_AN choice: 0..7!\n",
-			     RC.config_file_name, i, pucch_nCS_AN_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_nCS_AN);
 	      
 	      //#if (RRC_VERSION < MAKE_VERSION(10, 0, 0))
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_n1_AN = pucch_n1_AN_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_n1_AN = eMTCconfig.ccparams.pucch_n1_AN;
 	      
-	      if ((pucch_n1_AN_emtc <0) || (pucch_n1_AN_emtc > 2047))
+	      if ((eMTCconfig.ccparams.pucch_n1_AN <0) || (eMTCconfig.ccparams.pucch_n1_AN > 2047))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_n1_AN choice: 0..2047!\n",
-			     RC.config_file_name, i, pucch_n1_AN_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_n1_AN);
 	      
 	      //#endif
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_referenceSignalPower = pdsch_referenceSignalPower_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_referenceSignalPower = eMTCconfig.ccparams.pdsch_referenceSignalPower;
 	      
-	      if ((pdsch_referenceSignalPower_emtc <-60) || (pdsch_referenceSignalPower_emtc > 50))
+	      if ((eMTCconfig.ccparams.pdsch_referenceSignalPower <-60) || (eMTCconfig.ccparams.pdsch_referenceSignalPower > 50))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_referenceSignalPower choice:-60..50!\n",
-			     RC.config_file_name, i, pdsch_referenceSignalPower);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pdsch_referenceSignalPower);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_p_b = pdsch_p_b_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_p_b = eMTCconfig.ccparams.pdsch_p_b;
 	      
-	      if ((pdsch_p_b_emtc <0) || (pdsch_p_b_emtc > 3))
+	      if ((eMTCconfig.ccparams.pdsch_p_b <0) || (eMTCconfig.ccparams.pdsch_p_b > 3))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_p_b choice: 0..3!\n",
-			     RC.config_file_name, i, pdsch_p_b_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pdsch_p_b);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_n_SB = pusch_n_SB_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_n_SB = eMTCconfig.ccparams.pusch_n_SB;
 	      
-	      if ((pusch_n_SB_emtc <1) || (pusch_n_SB_emtc > 4))
+	      if ((eMTCconfig.ccparams.pusch_n_SB <1) || (eMTCconfig.ccparams.pusch_n_SB > 4))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_n_SB choice: 1..4!\n",
-			     RC.config_file_name, i, pusch_n_SB_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_n_SB);
 	      
-	      if (!pusch_hoppingMode_emtc)
+	      if (!eMTCconfig.ccparams.pusch_hoppingMode)
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!\n",
 			     RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE);
-	      else if (strcmp(pusch_hoppingMode_emtc,"interSubFrame")==0) {
+	      else if (strcmp(eMTCconfig.ccparams.pusch_hoppingMode,"interSubFrame")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame;
-	      }  else if (strcmp(pusch_hoppingMode_emtc,"intraAndInterSubFrame")==0) {
+	      }  else if (strcmp(eMTCconfig.ccparams.pusch_hoppingMode,"intraAndInterSubFrame")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!\n",
-			     RC.config_file_name, i, pusch_hoppingMode_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_hoppingMode);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingOffset = pusch_hoppingOffset_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingOffset = eMTCconfig.ccparams.pusch_hoppingOffset;
 	      
-	      if ((pusch_hoppingOffset_emtc<0) || (pusch_hoppingOffset_emtc>98))
+	      if ((eMTCconfig.ccparams.pusch_hoppingOffset<0) || (eMTCconfig.ccparams.pusch_hoppingOffset>98))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingOffset choice: 0..98!\n",
-			     RC.config_file_name, i, pusch_hoppingMode_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_hoppingMode);
 	      
-	      if (!pusch_enable64QAM_emtc)
+	      if (!eMTCconfig.ccparams.pusch_enable64QAM)
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
 			     RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM);
-	      else if (strcmp(pusch_enable64QAM_emtc, "ENABLE") == 0) {
+	      else if (strcmp(eMTCconfig.ccparams.pusch_enable64QAM, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_enable64QAM = TRUE;
-	      }  else if (strcmp(pusch_enable64QAM_emtc, "DISABLE") == 0) {
+	      }  else if (strcmp(eMTCconfig.ccparams.pusch_enable64QAM, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_enable64QAM = FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n",
-			     RC.config_file_name, i, pusch_enable64QAM_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_enable64QAM);
 	      
-	      if (!pusch_groupHoppingEnabled_emtc)
+	      if (!eMTCconfig.ccparams.pusch_groupHoppingEnabled)
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
 			     RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN);
-	      else if (strcmp(pusch_groupHoppingEnabled_emtc, "ENABLE") == 0) {
+	      else if (strcmp(eMTCconfig.ccparams.pusch_groupHoppingEnabled, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupHoppingEnabled = TRUE;
-	      }  else if (strcmp(pusch_groupHoppingEnabled_emtc, "DISABLE") == 0) {
+	      }  else if (strcmp(eMTCconfig.ccparams.pusch_groupHoppingEnabled, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupHoppingEnabled= FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!\n",
-			     RC.config_file_name, i, pusch_groupHoppingEnabled_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_groupHoppingEnabled);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupAssignment = pusch_groupAssignment_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupAssignment = eMTCconfig.ccparams.pusch_groupAssignment;
 	      
-	      if ((pusch_groupAssignment_emtc<0)||(pusch_groupAssignment_emtc>29))
+	      if ((eMTCconfig.ccparams.pusch_groupAssignment<0)||(eMTCconfig.ccparams.pusch_groupAssignment>29))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_groupAssignment choice: 0..29!\n",
-			     RC.config_file_name, i, pusch_groupAssignment_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_groupAssignment);
 	      
-	      if (!pusch_sequenceHoppingEnabled_emtc)
+	      if (!eMTCconfig.ccparams.pusch_sequenceHoppingEnabled)
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n",
 			     RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN);
-	      else if (strcmp(pusch_sequenceHoppingEnabled_emtc, "ENABLE") == 0) {
+	      else if (strcmp(eMTCconfig.ccparams.pusch_sequenceHoppingEnabled, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_sequenceHoppingEnabled = TRUE;
-	      }  else if (strcmp(pusch_sequenceHoppingEnabled_emtc, "DISABLE") == 0) {
+	      }  else if (strcmp(eMTCconfig.ccparams.pusch_sequenceHoppingEnabled, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_sequenceHoppingEnabled = FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!\n",
-			     RC.config_file_name, i, pusch_sequenceHoppingEnabled_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_sequenceHoppingEnabled);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_nDMRS1= pusch_nDMRS1_emtc;  //cyclic_shift in RRC!
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_nDMRS1= eMTCconfig.ccparams.pusch_nDMRS1;  //cyclic_shift in RRC!
 	      
-	      if ((pusch_nDMRS1_emtc <0) || (pusch_nDMRS1_emtc>7))
+	      if ((eMTCconfig.ccparams.pusch_nDMRS1 <0) || (eMTCconfig.ccparams.pusch_nDMRS1>7))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_nDMRS1 choice: 0..7!\n",
-			     RC.config_file_name, i, pusch_nDMRS1_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_nDMRS1);
 	      
-	      if (strcmp(phich_duration_emtc,"NORMAL")==0) {
+	      if (strcmp(eMTCconfig.ccparams.phich_duration,"NORMAL")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration= PHICH_Config__phich_Duration_normal;
-	      } else if (strcmp(phich_duration_emtc,"EXTENDED")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.phich_duration,"EXTENDED")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration= PHICH_Config__phich_Duration_extended;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_duration choice: NORMAL,EXTENDED!\n",
-			     RC.config_file_name, i, phich_duration_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.phich_duration);
 	      
-	      if (strcmp(phich_resource_emtc,"ONESIXTH")==0) {
+	      if (strcmp(eMTCconfig.ccparams.phich_resource,"ONESIXTH")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_oneSixth ;
-	      } else if (strcmp(phich_resource_emtc,"HALF")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.phich_resource,"HALF")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_half;
-	      } else if (strcmp(phich_resource_emtc,"ONE")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.phich_resource,"ONE")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_one;
-	      } else if (strcmp(phich_resource_emtc,"TWO")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.phich_resource,"TWO")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_two;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_resource choice: ONESIXTH,HALF,ONE,TWO!\n",
-			     RC.config_file_name, i, phich_resource_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.phich_resource);
 	      
 	      printf("phich.resource eMTC %ld (%s), phich.duration eMTC %ld (%s)\n",
-		     RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource,phich_resource_emtc,
-		     RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration,phich_duration_emtc);
+		     RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource,eMTCconfig.ccparams.phich_resource,
+		     RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration,eMTCconfig.ccparams.phich_duration);
 	      
-	      if (strcmp(srs_enable_emtc, "ENABLE") == 0) {
+	      if (strcmp(eMTCconfig.ccparams.srs_enable, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable= TRUE;
-	      } else if (strcmp(srs_enable_emtc, "DISABLE") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.srs_enable, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable= FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
-			     RC.config_file_name, i, srs_enable_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.srs_enable);
 	      
 	      if (RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable== TRUE) {
-		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_BandwidthConfig= srs_BandwidthConfig_emtc;
+		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_BandwidthConfig= eMTCconfig.ccparams.srs_BandwidthConfig;
 		
-		if ((srs_BandwidthConfig_emtc < 0) || (srs_BandwidthConfig_emtc >7))
+		if ((eMTCconfig.ccparams.srs_BandwidthConfig < 0) || (eMTCconfig.ccparams.srs_BandwidthConfig >7))
 		  AssertFatal (0, "Failed to parse eNB configuration file %s, enb %d unknown value %d for srs_BandwidthConfig choice: 0...7\n",
-			       RC.config_file_name, i, srs_BandwidthConfig_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.srs_BandwidthConfig);
 		
-		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_SubframeConfig= srs_SubframeConfig_emtc;
+		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_SubframeConfig= eMTCconfig.ccparams.srs_SubframeConfig;
 		
-		if ((srs_SubframeConfig_emtc<0) || (srs_SubframeConfig_emtc>15))
+		if ((eMTCconfig.ccparams.srs_SubframeConfig<0) || (eMTCconfig.ccparams.srs_SubframeConfig>15))
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for srs_SubframeConfig choice: 0..15 !\n",
-			       RC.config_file_name, i, srs_SubframeConfig_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.srs_SubframeConfig);
 		
-		if (strcmp(srs_ackNackST_emtc, "ENABLE") == 0) {
+		if (strcmp(eMTCconfig.ccparams.srs_ackNackST, "ENABLE") == 0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_ackNackST= TRUE;
-		} else if (strcmp(srs_ackNackST, "DISABLE") == 0) {
+		} else if (strcmp(eMTCconfig.ccparams.srs_ackNackST, "DISABLE") == 0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_ackNackST= FALSE;
 		} else
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
-			       RC.config_file_name, i, srs_ackNackST_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.srs_ackNackST);
 		
-		if (strcmp(srs_MaxUpPts_emtc, "ENABLE") == 0) {
+		if (strcmp(eMTCconfig.ccparams.srs_MaxUpPts, "ENABLE") == 0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_MaxUpPts= TRUE;
-		} else if (strcmp(srs_MaxUpPts_emtc, "DISABLE") == 0) {
+		} else if (strcmp(eMTCconfig.ccparams.srs_MaxUpPts, "DISABLE") == 0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_MaxUpPts= FALSE;
 		} else
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_MaxUpPts choice: ENABLE,DISABLE !\n",
-			       RC.config_file_name, i, srs_MaxUpPts_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.srs_MaxUpPts);
 	      }
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_p0_Nominal= pusch_p0_Nominal_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_p0_Nominal= eMTCconfig.ccparams.pusch_p0_Nominal;
 	      
-	      if ((pusch_p0_Nominal_emtc<-126) || (pusch_p0_Nominal_emtc>24))
+	      if ((eMTCconfig.ccparams.pusch_p0_Nominal<-126) || (eMTCconfig.ccparams.pusch_p0_Nominal>24))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_p0_Nominal choice: -126..24 !\n",
-			     RC.config_file_name, i, pusch_p0_Nominal);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_p0_Nominal);
 	      
 #if (RRC_VERSION <= MAKE_VERSION(12, 0, 0))
 	      
-	      if (strcmp(pusch_alpha_emtc,"AL0")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al0;
-	      } else if (strcmp(pusch_alpha_emtc,"AL04")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL04")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al04;
-	      } else if (strcmp(pusch_alpha_emtc,"AL05")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL05")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al05;
-	      } else if (strcmp(pusch_alpha_emtc,"AL06")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL06")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al06;
-	      } else if (strcmp(pusch_alpha_emtc,"AL07")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL07")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al07;
-	      } else if (strcmp(pusch_alpha_emtc,"AL08")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL08")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al08;
-	      } else if (strcmp(pusch_alpha_emtc,"AL09")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL09")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al09;
-	      } else if (strcmp(pusch_alpha_emtc,"AL1")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL1")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al1;
 	      }
 	      
 #endif
 #if (RRC_VERSION >= MAKE_VERSION(12, 0, 0))
 	      
-	      if (strcmp(pusch_alpha_emtc,"AL0")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al0;
-	      } else if (strcmp(pusch_alpha_emtc,"AL04")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL04")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al04;
-	      } else if (strcmp(pusch_alpha_emtc,"AL05")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL05")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al05;
-	      } else if (strcmp(pusch_alpha_emtc,"AL06")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL06")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al06;
-	      } else if (strcmp(pusch_alpha_emtc,"AL07")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL07")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al07;
-	      } else if (strcmp(pusch_alpha_emtc,"AL08")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL08")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al08;
-	      } else if (strcmp(pusch_alpha_emtc,"AL09")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL09")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al09;
-	      } else if (strcmp(pusch_alpha_emtc,"AL1")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL1")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al1;
 	      }
 	      
@@ -2209,96 +1811,96 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_Alpha choice: AL0,AL04,AL05,AL06,AL07,AL08,AL09,AL1!\n",
-			     RC.config_file_name, i, pusch_alpha);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pusch_alpha);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_p0_Nominal= pucch_p0_Nominal_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_p0_Nominal= eMTCconfig.ccparams.pucch_p0_Nominal;
 	      
-	      if ((pucch_p0_Nominal_emtc<-127) || (pucch_p0_Nominal_emtc>-96))
+	      if ((eMTCconfig.ccparams.pucch_p0_Nominal<-127) || (eMTCconfig.ccparams.pucch_p0_Nominal>-96))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_p0_Nominal choice: -127..-96 !\n",
-			     RC.config_file_name, i, pucch_p0_Nominal_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_p0_Nominal);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].msg3_delta_Preamble= msg3_delta_Preamble_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].msg3_delta_Preamble= eMTCconfig.ccparams.msg3_delta_Preamble;
 	      
-	      if ((msg3_delta_Preamble_emtc<-1) || (msg3_delta_Preamble_emtc>6))
+	      if ((eMTCconfig.ccparams.msg3_delta_Preamble<-1) || (eMTCconfig.ccparams.msg3_delta_Preamble>6))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for msg3_delta_Preamble choice: -1..6 !\n",
-			     RC.config_file_name, i, msg3_delta_Preamble_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.msg3_delta_Preamble);
 	      
-	      if (strcmp(pucch_deltaF_Format1_emtc,"deltaF_2")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF_2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF_2;
-	      } else if (strcmp(pucch_deltaF_Format1_emtc,"deltaF0")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF0;
-	      } else if (strcmp(pucch_deltaF_Format1_emtc,"deltaF2")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1 choice: deltaF_2,dltaF0,deltaF2!\n",
-			     RC.config_file_name, i, pucch_deltaF_Format1_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format1);
 	      
-	      if (strcmp(pucch_deltaF_Format1b_emtc,"deltaF1")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF1")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF1;
-	      } else if (strcmp(pucch_deltaF_Format1b_emtc,"deltaF3")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF3")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3;
-	      } else if (strcmp(pucch_deltaF_Format1b_emtc,"deltaF5")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF5")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1b choice: deltaF1,dltaF3,deltaF5!\n",
-			     RC.config_file_name, i, pucch_deltaF_Format1b_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format1b);
 	      
-	      if (strcmp(pucch_deltaF_Format2_emtc,"deltaF_2")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF_2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF_2;
-	      } else if (strcmp(pucch_deltaF_Format2_emtc,"deltaF0")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0;
-	      } else if (strcmp(pucch_deltaF_Format2_emtc,"deltaF1")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF1")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF1;
-	      } else if (strcmp(pucch_deltaF_Format2_emtc,"deltaF2")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2 choice: deltaF_2,dltaF0,deltaF1,deltaF2!\n",
-			     RC.config_file_name, i, pucch_deltaF_Format2_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2);
 	      
-	      if (strcmp(pucch_deltaF_Format2a_emtc,"deltaF_2")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF_2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF_2;
-	      } else if (strcmp(pucch_deltaF_Format2a_emtc,"deltaF0")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0;
-	      } else if (strcmp(pucch_deltaF_Format2a_emtc,"deltaF2")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2a choice: deltaF_2,dltaF0,deltaF2!\n",
-			     RC.config_file_name, i, pucch_deltaF_Format2a_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2a);
 	      
-	      if (strcmp(pucch_deltaF_Format2b_emtc,"deltaF_2")==0) {
+	      if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF_2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF_2;
-	      } else if (strcmp(pucch_deltaF_Format2b_emtc,"deltaF0")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF0")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0;
-	      } else if (strcmp(pucch_deltaF_Format2b_emtc,"deltaF2")==0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF2")==0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2b choice: deltaF_2,dltaF0,deltaF2!\n",
-			     RC.config_file_name, i, pucch_deltaF_Format2b_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2b);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_numberOfRA_Preambles= (rach_numberOfRA_Preambles_emtc/4)-1;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_numberOfRA_Preambles= (eMTCconfig.ccparams.rach_numberOfRA_Preambles/4)-1;
 	      
-	      if ((rach_numberOfRA_Preambles_emtc <4) || (rach_numberOfRA_Preambles_emtc >64) || ((rach_numberOfRA_Preambles_emtc&3)!=0))
+	      if ((eMTCconfig.ccparams.rach_numberOfRA_Preambles <4) || (eMTCconfig.ccparams.rach_numberOfRA_Preambles >64) || ((eMTCconfig.ccparams.rach_numberOfRA_Preambles&3)!=0))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_numberOfRA_Preambles choice: 4,8,12,...,64!\n",
-			     RC.config_file_name, i, rach_numberOfRA_Preambles_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_numberOfRA_Preambles);
 	      
-	      if (strcmp(rach_preamblesGroupAConfig_emtc, "ENABLE") == 0) {
+	      if (strcmp(eMTCconfig.ccparams.rach_preamblesGroupAConfig, "ENABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preamblesGroupAConfig= TRUE;
-		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_sizeOfRA_PreamblesGroupA= (rach_sizeOfRA_PreamblesGroupA_emtc/4)-1;
+		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_sizeOfRA_PreamblesGroupA= (eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA/4)-1;
 		
-		if ((rach_numberOfRA_Preambles_emtc <4) || (rach_numberOfRA_Preambles_emtc>60) || ((rach_numberOfRA_Preambles_emtc&3)!=0))
+		if ((eMTCconfig.ccparams.rach_numberOfRA_Preambles <4) || (eMTCconfig.ccparams.rach_numberOfRA_Preambles>60) || ((eMTCconfig.ccparams.rach_numberOfRA_Preambles&3)!=0))
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_sizeOfRA_PreamblesGroupA choice: 4,8,12,...,60!\n",
-			       RC.config_file_name, i, rach_sizeOfRA_PreamblesGroupA_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA);
 		
-		switch (rach_messageSizeGroupA_emtc) {
+		switch (eMTCconfig.ccparams.rach_messageSizeGroupA) {
 		case 56:
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b56;
 		  break;
@@ -2318,52 +1920,52 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 		default:
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_messageSizeGroupA choice: 56,144,208,256!\n",
-			       RC.config_file_name, i, rach_messageSizeGroupA_emtc);
+			       RC.config_file_name, i, eMTCconfig.ccparams.rach_messageSizeGroupA);
 		  break;
 		}
 		
-		if (strcmp(rach_messagePowerOffsetGroupB_emtc,"minusinfinity")==0) {
+		if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"minusinfinity")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_minusinfinity;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB0")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB0")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB0;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB5")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB5")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB5;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB8")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB8")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB8;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB10")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB10")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB10;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB12")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB12")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB12;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB15")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB15")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB15;
-		} else if (strcmp(rach_messagePowerOffsetGroupB_emtc,"dB18")==0) {
+		} else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB18")==0) {
 		  RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18;
 		} else
 		  AssertFatal (0,
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_messagePowerOffsetGroupB choice: minusinfinity,dB0,dB5,dB8,dB10,dB12,dB15,dB18!\n",
-			       RC.config_file_name, i, rach_messagePowerOffsetGroupB_emtc);
-	      } else if (strcmp(rach_preamblesGroupAConfig_emtc, "DISABLE") == 0) {
+			       RC.config_file_name, i, eMTCconfig.ccparams.rach_messagePowerOffsetGroupB);
+	      } else if (strcmp(eMTCconfig.ccparams.rach_preamblesGroupAConfig, "DISABLE") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preamblesGroupAConfig= FALSE;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !\n",
-			     RC.config_file_name, i, rach_preamblesGroupAConfig_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_preamblesGroupAConfig);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleInitialReceivedTargetPower= (rach_preambleInitialReceivedTargetPower_emtc+120)/2;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleInitialReceivedTargetPower= (eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower+120)/2;
 	      
-	      if ((rach_preambleInitialReceivedTargetPower_emtc<-120) || (rach_preambleInitialReceivedTargetPower_emtc>-90) || ((rach_preambleInitialReceivedTargetPower_emtc&1)!=0))
+	      if ((eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower<-120) || (eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower>-90) || ((eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower&1)!=0))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleInitialReceivedTargetPower choice: -120,-118,...,-90 !\n",
-			     RC.config_file_name, i, rach_preambleInitialReceivedTargetPower_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_powerRampingStep= rach_powerRampingStep_emtc/2;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_powerRampingStep= eMTCconfig.ccparams.rach_powerRampingStep/2;
 	      
-	      if ((rach_powerRampingStep_emtc<0) || (rach_powerRampingStep_emtc>6) || ((rach_powerRampingStep_emtc&1)!=0))
+	      if ((eMTCconfig.ccparams.rach_powerRampingStep<0) || (eMTCconfig.ccparams.rach_powerRampingStep>6) || ((eMTCconfig.ccparams.rach_powerRampingStep&1)!=0))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_powerRampingStep choice: 0,2,4,6 !\n",
-			     RC.config_file_name, i, rach_powerRampingStep_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_powerRampingStep);
 	      
-	      switch (rach_preambleTransMax_emtc) {
+	      switch (eMTCconfig.ccparams.rach_preambleTransMax) {
 #if (RRC_VERSION < MAKE_VERSION(14, 0, 0))
 		
 	      case 3:
@@ -2459,32 +2061,32 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      default:
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleTransMax choice: 3,4,5,6,7,8,10,20,50,100,200!\n",
-			     RC.config_file_name, i, rach_preambleTransMax_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_preambleTransMax);
 		break;
 	      }
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_raResponseWindowSize=  (rach_raResponseWindowSize_emtc==10)?7:rach_raResponseWindowSize_emtc-2;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_raResponseWindowSize=  (eMTCconfig.ccparams.rach_raResponseWindowSize==10)?7:eMTCconfig.ccparams.rach_raResponseWindowSize-2;
 	      
-	      if ((rach_raResponseWindowSize_emtc<0)||(rach_raResponseWindowSize_emtc==9)||(rach_raResponseWindowSize_emtc>10))
+	      if ((eMTCconfig.ccparams.rach_raResponseWindowSize<0)||(eMTCconfig.ccparams.rach_raResponseWindowSize==9)||(eMTCconfig.ccparams.rach_raResponseWindowSize>10))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_raResponseWindowSize choice: 2,3,4,5,6,7,8,10!\n",
-			     RC.config_file_name, i, rach_raResponseWindowSize_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_raResponseWindowSize);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_macContentionResolutionTimer= (rach_macContentionResolutionTimer_emtc/8)-1;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_macContentionResolutionTimer= (eMTCconfig.ccparams.rach_macContentionResolutionTimer/8)-1;
 	      
-	      if ((rach_macContentionResolutionTimer_emtc<8) || (rach_macContentionResolutionTimer_emtc>64) || ((rach_macContentionResolutionTimer_emtc&7)!=0))
+	      if ((eMTCconfig.ccparams.rach_macContentionResolutionTimer<8) || (eMTCconfig.ccparams.rach_macContentionResolutionTimer>64) || ((eMTCconfig.ccparams.rach_macContentionResolutionTimer&7)!=0))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_macContentionResolutionTimer choice: 8,16,...,56,64!\n",
-			     RC.config_file_name, i, rach_macContentionResolutionTimer_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_macContentionResolutionTimer);
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_maxHARQ_Msg3Tx= rach_maxHARQ_Msg3Tx_emtc;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_maxHARQ_Msg3Tx= eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx;
 	      
-	      if ((rach_maxHARQ_Msg3Tx_emtc<0) || (rach_maxHARQ_Msg3Tx_emtc>8))
+	      if ((eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx<0) || (eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx>8))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_maxHARQ_Msg3Tx choice: 1..8!\n",
-			     RC.config_file_name, i, rach_maxHARQ_Msg3Tx_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx);
 	      
-	      switch (pcch_defaultPagingCycle_emtc) {
+	      switch (eMTCconfig.ccparams.pcch_defaultPagingCycle) {
 	      case 32:
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf32;
 		break;
@@ -2504,32 +2106,32 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      default:
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_defaultPagingCycle choice: 32,64,128,256!\n",
-			     RC.config_file_name, i, pcch_defaultPagingCycle_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pcch_defaultPagingCycle);
 		break;
 	      }
 	      
-	      if (strcmp(pcch_nB_emtc, "fourT") == 0) {
+	      if (strcmp(eMTCconfig.ccparams.pcch_nB, "fourT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_fourT;
-	      } else if (strcmp(pcch_nB_emtc, "twoT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "twoT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_twoT;
-	      } else if (strcmp(pcch_nB_emtc, "oneT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneT;
-	      } else if (strcmp(pcch_nB_emtc, "halfT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "halfT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_halfT;
-	      } else if (strcmp(pcch_nB_emtc, "quarterT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "quarterT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_quarterT;
-	      } else if (strcmp(pcch_nB_emtc, "oneEighthT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneEighthT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneEighthT;
-	      } else if (strcmp(pcch_nB_emtc, "oneSixteenthT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneSixteenthT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneSixteenthT;
-	      } else if (strcmp(pcch_nB_emtc, "oneThirtySecondT") == 0) {
+	      } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneThirtySecondT") == 0) {
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneThirtySecondT;
 	      } else
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n",
-			     RC.config_file_name, i, pcch_nB_emtc);
+			     RC.config_file_name, i, eMTCconfig.ccparams.pcch_nB);
 	      
-	      switch (bcch_modificationPeriodCoeff_emtc) {
+	      switch (eMTCconfig.ccparams.bcch_modificationPeriodCoeff) {
 	      case 2:
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n2;
 		break;
@@ -2549,18 +2151,18 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      default:
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for bcch_modificationPeriodCoeff choice: 2,4,8,16",
-			     RC.config_file_name, i, bcch_modificationPeriodCoeff);
+			     RC.config_file_name, i, eMTCconfig.ccparams.bcch_modificationPeriodCoeff);
 		break;
 	      }
 	      
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t300= ue_TimersAndConstants_t300;
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t301= ue_TimersAndConstants_t301;
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t310= ue_TimersAndConstants_t310;
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= ue_TimersAndConstants_t311;
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n310= ue_TimersAndConstants_n310;
-	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n311= ue_TimersAndConstants_n311;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t300= eMTCconfig.ccparams.ue_TimersAndConstants_t300;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t301= eMTCconfig.ccparams.ue_TimersAndConstants_t301;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t310= eMTCconfig.ccparams.ue_TimersAndConstants_t310;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= eMTCconfig.ccparams.ue_TimersAndConstants_t311;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n310= eMTCconfig.ccparams.ue_TimersAndConstants_n310;
+	      RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n311= eMTCconfig.ccparams.ue_TimersAndConstants_n311;
 	      
-	      switch (ue_TransmissionMode_emtc) {
+	      switch (eMTCconfig.ccparams.ue_TransmissionMode) {
 	      case 1:
 		RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm1;
 		break;
@@ -2592,7 +2194,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      default:
 		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",
-			     RC.config_file_name, i, ue_TransmissionMode);
+			     RC.config_file_name, i, eMTCconfig.ccparams.ue_TransmissionMode);
 		break;
 	      }
 	      
@@ -2600,9 +2202,9 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = CALLOC(1, sizeof(long));
-	      if (!strcmp(pdsch_maxNumRepetitionCEmodeA_r13, "r16")) {
+	      if (!strcmp(eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13, "r16")) {
 		*RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = 0;
-	      } else if (!strcmp(pdsch_maxNumRepetitionCEmodeA_r13, "r32")) {
+	      } else if (!strcmp(eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13, "r32")) {
 		*RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = 1;
 	      } else {
 		AssertFatal (0,
@@ -2612,11 +2214,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] = CALLOC(1, sizeof(long));
-	      if (!strcmp(pusch_maxNumRepetitionCEmodeA_r13, "r8")) {
+	      if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r8")) {
 		*RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] =  0;
-	      } else if (!strcmp(pusch_maxNumRepetitionCEmodeA_r13, "r16")) {
+	      } else if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r16")) {
 		*RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] =  1;
-	      } else if (!strcmp(pusch_maxNumRepetitionCEmodeA_r13, "r32")) {
+	      } else if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r32")) {
 		*RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] =  2;
 	      } else {
 		AssertFatal (0,
@@ -2632,36 +2234,36 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 		sprintf(rachCELevelInfoListPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13, rachCEInfoIndex);
 		config_get(rachcelevelParams, sizeof(rachcelevelParams) / sizeof(paramdef_t), rachCELevelInfoListPath);
 		
-		RRC_CONFIGURATION_REQ (msg_p).firstPreamble_r13[j][rachCEInfoIndex] = firstPreamble_r13;
-		RRC_CONFIGURATION_REQ (msg_p).lastPreamble_r13[j][rachCEInfoIndex]  = lastPreamble_r13;
-		
-		RRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindowSize_r13[j][rachCEInfoIndex] = ra_ResponseWindowSize_r13;
-		AssertFatal(ra_ResponseWindowSize_r13 == 20 ||
-			    ra_ResponseWindowSize_r13 == 50 ||
-			    ra_ResponseWindowSize_r13 == 80 ||
-			    ra_ResponseWindowSize_r13 == 120 ||
-			    ra_ResponseWindowSize_r13 == 180 ||
-			    ra_ResponseWindowSize_r13 == 240 ||
-			    ra_ResponseWindowSize_r13 == 320 ||
-			    ra_ResponseWindowSize_r13 == 400,
-			    "Illegal ra_ResponseWindowSize_r13 %d\n",ra_ResponseWindowSize_r13);
-		
-		RRC_CONFIGURATION_REQ (msg_p).mac_ContentionResolutionTimer_r13[j][rachCEInfoIndex] = mac_ContentionResolutionTimer_r13;
-		AssertFatal(mac_ContentionResolutionTimer_r13 == 80 ||
-			    mac_ContentionResolutionTimer_r13 == 100 ||
-			    mac_ContentionResolutionTimer_r13 == 120 ||
-			    mac_ContentionResolutionTimer_r13 == 80 ||
-			    mac_ContentionResolutionTimer_r13 == 160 ||
-			    mac_ContentionResolutionTimer_r13 == 200 ||
-			    mac_ContentionResolutionTimer_r13 == 240 ||
-			    mac_ContentionResolutionTimer_r13 == 480 ||
-			    mac_ContentionResolutionTimer_r13 == 960,
+		RRC_CONFIGURATION_REQ (msg_p).firstPreamble_r13[j][rachCEInfoIndex] = eMTCconfig.firstPreamble_r13;
+		RRC_CONFIGURATION_REQ (msg_p).lastPreamble_r13[j][rachCEInfoIndex]  = eMTCconfig.lastPreamble_r13;
+		
+		RRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindowSize_r13[j][rachCEInfoIndex] = eMTCconfig.ra_ResponseWindowSize_r13;
+		AssertFatal(eMTCconfig.ra_ResponseWindowSize_r13 == 20 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 50 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 80 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 120 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 180 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 240 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 320 ||
+			    eMTCconfig.ra_ResponseWindowSize_r13 == 400,
+			    "Illegal ra_ResponseWindowSize_r13 %d\n",eMTCconfig.ra_ResponseWindowSize_r13);
+		
+		RRC_CONFIGURATION_REQ (msg_p).mac_ContentionResolutionTimer_r13[j][rachCEInfoIndex] = eMTCconfig.mac_ContentionResolutionTimer_r13;
+		AssertFatal(eMTCconfig.mac_ContentionResolutionTimer_r13 == 80 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 100 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 120 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 80 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 160 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 200 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 240 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 480 ||
+			    eMTCconfig.mac_ContentionResolutionTimer_r13 == 960,
 			    "Illegal mac_ContentionResolutionTimer_r13 %d\n",
-			    mac_ContentionResolutionTimer_r13);
+			    eMTCconfig.mac_ContentionResolutionTimer_r13);
 		
-		RRC_CONFIGURATION_REQ (msg_p).rar_HoppingConfig_r13[j][rachCEInfoIndex] = rar_HoppingConfig_r13;
-		AssertFatal(rar_HoppingConfig_r13 == 0 || rar_HoppingConfig_r13 == 1,
-			    "illegal rar_HoppingConfig_r13 %d\n",rar_HoppingConfig_r13);
+		RRC_CONFIGURATION_REQ (msg_p).rar_HoppingConfig_r13[j][rachCEInfoIndex] = eMTCconfig.rar_HoppingConfig_r13;
+		AssertFatal(eMTCconfig.rar_HoppingConfig_r13 == 0 || eMTCconfig.rar_HoppingConfig_r13 == 1,
+			    "illegal rar_HoppingConfig_r13 %d\n",eMTCconfig.rar_HoppingConfig_r13);
 	      } // end for loop (rach ce level info)
 	      
 	      char rsrpRangeListPath[MAX_OPTNAME_SIZE * 2];
@@ -2673,7 +2275,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      for (rsrprangeindex = 0; rsrprangeindex < rsrprangelist.numelt; rsrprangeindex++) {
 		sprintf(rsrpRangeListPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_RSRP_RANGE_LIST, rsrprangeindex);
 		config_get(rsrprangeParams, sizeof(rsrprangeParams) / sizeof(paramdef_t), rsrpRangeListPath);
-		RRC_CONFIGURATION_REQ (msg_p).rsrp_range[j][rsrprangeindex] = rsrp_range_br;
+		RRC_CONFIGURATION_REQ (msg_p).rsrp_range[j][rsrprangeindex] = eMTCconfig.rsrp_range_br;
 		
 	      }
 	      
@@ -2687,51 +2289,51 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 		sprintf(prachparameterscePath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13, prachparamsindex);
 		config_get(prachParams, sizeof(prachParams) / sizeof(paramdef_t), prachparameterscePath);
 		
-		RRC_CONFIGURATION_REQ (msg_p).prach_config_index[j][prachparamsindex]                  = prach_config_index_br;
-		RRC_CONFIGURATION_REQ (msg_p).prach_freq_offset[j][prachparamsindex]                   = prach_freq_offset_br;
+		RRC_CONFIGURATION_REQ (msg_p).prach_config_index[j][prachparamsindex]                  = eMTCconfig.prach_config_index_br;
+		RRC_CONFIGURATION_REQ (msg_p).prach_freq_offset[j][prachparamsindex]                   = eMTCconfig.prach_freq_offset_br;
 		
 		RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prachparamsindex] = calloc(1, sizeof(long));
-		*RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prachparamsindex] = prach_StartingSubframe_r13;
+		*RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prachparamsindex] = eMTCconfig.prach_StartingSubframe_r13;
 		
 		RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prachparamsindex] = calloc(1, sizeof(long));
-		*RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prachparamsindex] = maxNumPreambleAttemptCE_r13-3;
-		AssertFatal(maxNumPreambleAttemptCE_r13 > 2 && maxNumPreambleAttemptCE_r13 <11,
+		*RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prachparamsindex] = eMTCconfig.maxNumPreambleAttemptCE_r13-3;
+		AssertFatal(eMTCconfig.maxNumPreambleAttemptCE_r13 > 2 && eMTCconfig.maxNumPreambleAttemptCE_r13 <11,
 			    "prachparamsindex %d: Illegal maxNumPreambleAttemptCE_r13 %d\n",
-			    prachparamsindex,maxNumPreambleAttemptCE_r13);
-		
-		RRC_CONFIGURATION_REQ (msg_p).numRepetitionPerPreambleAttempt_r13[j][prachparamsindex] = numRepetitionPerPreambleAttempt_r13;
-		AssertFatal(numRepetitionPerPreambleAttempt_r13 == 1 ||
-			    numRepetitionPerPreambleAttempt_r13 == 2 ||
-			    numRepetitionPerPreambleAttempt_r13 == 4 ||
-			    numRepetitionPerPreambleAttempt_r13 == 8 ||
-			    numRepetitionPerPreambleAttempt_r13 == 16 ||
-			    numRepetitionPerPreambleAttempt_r13 == 32 ||
-			    numRepetitionPerPreambleAttempt_r13 == 64 ||
-			    numRepetitionPerPreambleAttempt_r13 == 128,
+			    prachparamsindex,eMTCconfig.maxNumPreambleAttemptCE_r13);
+		
+		RRC_CONFIGURATION_REQ (msg_p).numRepetitionPerPreambleAttempt_r13[j][prachparamsindex] = eMTCconfig.numRepetitionPerPreambleAttempt_r13;
+		AssertFatal(eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 1 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 2 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 4 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 8 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 16 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 32 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 64 ||
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 128,
 			    "illegal numReptitionPerPreambleAttempt %d\n",
-			    numRepetitionPerPreambleAttempt_r13);
-		
-		RRC_CONFIGURATION_REQ (msg_p).mpdcch_NumRepetition_RA_r13[j][prachparamsindex] = mpdcch_NumRepetition_RA_r13;
-		AssertFatal (mpdcch_NumRepetition_RA_r13 == 1 ||
-			     mpdcch_NumRepetition_RA_r13 == 2 ||
-			     mpdcch_NumRepetition_RA_r13 == 4 ||
-			     mpdcch_NumRepetition_RA_r13 == 8 ||
-			     mpdcch_NumRepetition_RA_r13 == 16 ||
-			     mpdcch_NumRepetition_RA_r13 == 32 ||
-			     mpdcch_NumRepetition_RA_r13 == 64 ||
-			     mpdcch_NumRepetition_RA_r13 == 128 ||
-			     mpdcch_NumRepetition_RA_r13 == 256 ||
-			     mpdcch_NumRepetition_RA_r13 == 512 ||
-			     mpdcch_NumRepetition_RA_r13 == 1024 ||
-			     mpdcch_NumRepetition_RA_r13 == 2048,
+			    eMTCconfig.numRepetitionPerPreambleAttempt_r13);
+		
+		RRC_CONFIGURATION_REQ (msg_p).mpdcch_NumRepetition_RA_r13[j][prachparamsindex] = eMTCconfig.mpdcch_NumRepetition_RA_r13;
+		AssertFatal (eMTCconfig.mpdcch_NumRepetition_RA_r13 == 1 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 2 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 4 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 8 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 16 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 32 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 64 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 128 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 256 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 512 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 1024 ||
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13 == 2048,
 			     "illegal mpdcch_NumRepeition_RA_r13 %d\n",
-			     mpdcch_NumRepetition_RA_r13);
+			     eMTCconfig.mpdcch_NumRepetition_RA_r13);
 		
 		
-		RRC_CONFIGURATION_REQ (msg_p).prach_HoppingConfig_r13[j][prachparamsindex] = prach_HoppingConfig_r13;
+		RRC_CONFIGURATION_REQ (msg_p).prach_HoppingConfig_r13[j][prachparamsindex] = eMTCconfig.prach_HoppingConfig_r13;
 		
-		AssertFatal (prach_HoppingConfig_r13 >=0 && prach_HoppingConfig_r13 < 2,
-			     "Illegal prach_HoppingConfig_r13 %d\n",prach_HoppingConfig_r13);
+		AssertFatal (eMTCconfig.prach_HoppingConfig_r13 >=0 && eMTCconfig.prach_HoppingConfig_r13 < 2,
+			     "Illegal prach_HoppingConfig_r13 %d\n",eMTCconfig.prach_HoppingConfig_r13);
 		
 		
 		int maxavailablenarrowband_count = prachParams[7].numelt;
@@ -2751,7 +2353,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      for (n1PUCCHinfolistindex = 0; n1PUCCHinfolistindex < n1PUCCHInfoList.numelt; n1PUCCHinfolistindex++) {
 		sprintf(n1PUCCHInfoParamsPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13, n1PUCCHinfolistindex);
 		config_get(n1PUCCH_ANR13Params, sizeof(n1PUCCH_ANR13Params) / sizeof(paramdef_t), n1PUCCHInfoParamsPath);
-		RRC_CONFIGURATION_REQ (msg_p).pucch_info_value[j][n1PUCCHinfolistindex] = pucch_info_value;
+		RRC_CONFIGURATION_REQ (msg_p).pucch_info_value[j][n1PUCCHinfolistindex] = eMTCconfig.pucch_info_value;
 	      }
 	      
 	      char PCCHConfigv1310Path[MAX_OPTNAME_SIZE*2 + 16];
@@ -2763,19 +2365,19 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      /** PCCH CONFIG V1310 */
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).pcch_config_v1310[j] = TRUE;
-	      RRC_CONFIGURATION_REQ(msg_p).paging_narrowbands_r13[j] = paging_narrowbands_r13;
-	      RRC_CONFIGURATION_REQ(msg_p).mpdcch_numrepetition_paging_r13[j] = mpdcch_numrepetition_paging_r13;
-	      AssertFatal (mpdcch_numrepetition_paging_r13 == 1 ||
-			   mpdcch_numrepetition_paging_r13 == 2 ||
-			   mpdcch_numrepetition_paging_r13 == 4 ||
-			   mpdcch_numrepetition_paging_r13 == 8 ||
-			   mpdcch_numrepetition_paging_r13 == 16 ||
-			   mpdcch_numrepetition_paging_r13 == 32 ||
-			   mpdcch_numrepetition_paging_r13 == 64 ||
-			   mpdcch_numrepetition_paging_r13 == 128 ||
-			   mpdcch_numrepetition_paging_r13 == 256,
+	      RRC_CONFIGURATION_REQ(msg_p).paging_narrowbands_r13[j] = eMTCconfig.paging_narrowbands_r13;
+	      RRC_CONFIGURATION_REQ(msg_p).mpdcch_numrepetition_paging_r13[j] = eMTCconfig.mpdcch_numrepetition_paging_r13;
+	      AssertFatal (eMTCconfig.mpdcch_numrepetition_paging_r13 == 1 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 2 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 4 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 8 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 16 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 32 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 64 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 128 ||
+			   eMTCconfig.mpdcch_numrepetition_paging_r13 == 256,
 			   "illegal mpdcch_numrepetition_paging_r13 %d\n",
-			   mpdcch_numrepetition_paging_r13);
+			   eMTCconfig.mpdcch_numrepetition_paging_r13);
 	      
 	      
 	      //                        RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = CALLOC(1, sizeof(long));
@@ -2795,13 +2397,13 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = CALLOC(1, sizeof(long));
 	      // ++cnt; // check this ,, the conter is up above
-	      if (!strcmp(pucch_NumRepetitionCE_Msg4_Level0_r13, "n1")) {
+	      if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n1")) {
 		*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 0;
-	      } else if (!strcmp(pucch_NumRepetitionCE_Msg4_Level0_r13, "n2")) {
+	      } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n2")) {
 		*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 1;
-	      } else if (!strcmp(pucch_NumRepetitionCE_Msg4_Level0_r13, "n4")) {
+	      } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n4")) {
 		*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 2;
-	      } else if (!strcmp(pucch_NumRepetitionCE_Msg4_Level0_r13, "n8")) {
+	      } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n8")) {
 		*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 3;
 	      } else {
 		AssertFatal (0,
@@ -2820,24 +2422,24 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      
 	      
 	      RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = CALLOC(1, sizeof(long));
-	      if (!strcmp(sib2_interval_ULHoppingConfigCommonModeA_r13, "FDD")) {
+	      if (!strcmp(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13, "FDD")) {
 		*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = 0;
-		RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = sib2_interval_ULHoppingConfigCommonModeA_r13_val;
-		AssertFatal(sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==2 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==4 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==8,
+		RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val;
+		AssertFatal(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==2 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==4 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==8,
 			    "illegal sib2_interval_ULHoppingConfigCommonModeA_r13_val %d\n",
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val);
-	      } else if (!strcmp(sib2_interval_ULHoppingConfigCommonModeA_r13, "TDD")) {
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val);
+	      } else if (!strcmp(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13, "TDD")) {
 		*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = 1;
-		RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = sib2_interval_ULHoppingConfigCommonModeA_r13_val;
-		AssertFatal(sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==5 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==10 ||
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val==20,
+		RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val;
+		AssertFatal(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==5 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==10 ||
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==20,
 			    "illegal sib2_interval_ULHoppingConfigCommonModeA_r13_val %d\n",
-			    sib2_interval_ULHoppingConfigCommonModeA_r13_val);
+			    eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val);
 	      } else {
 		AssertFatal (1==0,
 			     "Failed to parse eNB configuration file %s, sib2_interval_ULHoppingConfigCommonModeA_r13 unknown value !!\n",
@@ -2850,567 +2452,564 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 	      RRC_CONFIGURATION_REQ (msg_p).eMTC_configured=0;
 	    }
 
-	    // Sidelink Resource pool information
-            //SIB18
-            if (strcmp(rxPool_sc_CP_Len,"normal")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_normal;
-            } else if (strcmp(rxPool_sc_CP_Len,"extended")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_extended;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_CP_Len choice: normal,extended!\n",
-                           RC.config_file_name, i, rxPool_sc_CP_Len);
-
-            if (strcmp(rxPool_sc_Period,"sf40")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf40;
-            } else if (strcmp(rxPool_sc_Period,"sf60")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf60;
-            } else if (strcmp(rxPool_sc_Period,"sf70")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf70;
-            } else if (strcmp(rxPool_sc_Period,"sf80")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf80;
-            } else if (strcmp(rxPool_sc_Period,"sf120")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf120;
-            } else if (strcmp(rxPool_sc_Period,"sf140")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf140;
-            } else if (strcmp(rxPool_sc_Period,"sf160")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf160;
-            } else if (strcmp(rxPool_sc_Period,"sf240")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf240;
-            } else if (strcmp(rxPool_sc_Period,"sf280")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf280;
-            } else if (strcmp(rxPool_sc_Period,"sf320")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf320;
-            } else if (strcmp(rxPool_sc_Period,"spare6")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare6;
-            } else if (strcmp(rxPool_sc_Period,"spare5")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare5;
-            } else if (strcmp(rxPool_sc_Period,"spare4")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare4;
-            } else if (strcmp(rxPool_sc_Period,"spare3")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare3;
-            } else if (strcmp(rxPool_sc_Period,"spare2")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare2;
-            } else if (strcmp(rxPool_sc_Period,"spare")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_Period choice: sf40,sf60,sf70,sf80,sf120,sf140,sf160,sf240,sf280,sf320,spare6,spare5,spare4,spare3,spare2,spare!\n",
-                           RC.config_file_name, i, rxPool_sc_Period);
-
-            if (strcmp(rxPool_data_CP_Len,"normal")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_normal;
-            } else if (strcmp(rxPool_data_CP_Len,"extended")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_extended;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_data_CP_Len choice: normal,extended!\n",
-                           RC.config_file_name, i, rxPool_data_CP_Len);
-
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Num[j] = rxPool_ResourceConfig_prb_Num;
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Start[j] = rxPool_ResourceConfig_prb_Start;
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_End[j] = rxPool_ResourceConfig_prb_End;
-
-            if (strcmp(rxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
-            } else if (strcmp(rxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
-            } else if (strcmp(rxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
-                           RC.config_file_name, i, rxPool_ResourceConfig_offsetIndicator_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_choice[j] = rxPool_ResourceConfig_offsetIndicator_choice;
-
-            if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
-            } else if (strcmp(rxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
-                           RC.config_file_name, i, rxPool_ResourceConfig_subframeBitmap_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = rxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = rxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-            RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-
-            //SIB19 - for discRxPool
-            if (strcmp(discRxPool_cp_Len,"normal")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_normal;
-            } else if (strcmp(discRxPool_cp_Len,"extended")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_extended;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_cp_Len choice: normal,extended!\n",
-                           RC.config_file_name, i, discRxPool_cp_Len);
-
-            if (strcmp(discRxPool_discPeriod,"rf32")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32;
-            } else if (strcmp(discRxPool_discPeriod,"rf64")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64;
-            } else if (strcmp(discRxPool_discPeriod,"rf128")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128;
-            } else if (strcmp(discRxPool_discPeriod,"rf256")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256;
-            } else if (strcmp(discRxPool_discPeriod,"rf512")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512;
-            } else if (strcmp(discRxPool_discPeriod,"rf1024")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024;
-            } else if (strcmp(discRxPool_discPeriod,"rf16")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310;
-            } else if (strcmp(discRxPool_discPeriod,"spare")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n",
-                           RC.config_file_name, i, discRxPool_discPeriod);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRetx[j] = discRxPool_numRetx;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRepetition[j] = discRxPool_numRepetition;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Num[j] = discRxPool_ResourceConfig_prb_Num;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Start[j] = discRxPool_ResourceConfig_prb_Start;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_End[j] = discRxPool_ResourceConfig_prb_End;
-
-            if (strcmp(discRxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
-            } else if (strcmp(discRxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
-                           RC.config_file_name, i, discRxPool_ResourceConfig_offsetIndicator_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_choice[j] = discRxPool_ResourceConfig_offsetIndicator_choice;
-
-            if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
-            } else if (strcmp(discRxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
-                           RC.config_file_name, i, discRxPool_ResourceConfig_subframeBitmap_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = discRxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-
-            //SIB19 - For discRxPoolPS
-            if (strcmp(discRxPoolPS_cp_Len,"normal")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_normal;
-            } else if (strcmp(discRxPoolPS_cp_Len,"extended")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_extended;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_cp_Len choice: normal,extended!\n",
-                           RC.config_file_name, i, discRxPoolPS_cp_Len);
-
-            if (strcmp(discRxPoolPS_discPeriod,"rf32")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf64")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf128")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf256")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf512")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf1024")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024;
-            } else if (strcmp(discRxPoolPS_discPeriod,"rf16")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310;
-            } else if (strcmp(discRxPoolPS_discPeriod,"spare")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n",
-                           RC.config_file_name, i, discRxPoolPS_discPeriod);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRetx[j] = discRxPoolPS_numRetx;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRepetition[j] = discRxPoolPS_numRepetition;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Num[j] = discRxPoolPS_ResourceConfig_prb_Num;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Start[j] = discRxPoolPS_ResourceConfig_prb_Start;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_End[j] = discRxPoolPS_ResourceConfig_prb_End;
-
-            if (strcmp(discRxPoolPS_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
-                           RC.config_file_name, i, discRxPoolPS_ResourceConfig_offsetIndicator_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_choice[j] = discRxPoolPS_ResourceConfig_offsetIndicator_choice;
-
-            if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
-            } else if (strcmp(discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
-              RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
-            } else
-              AssertFatal (0,
-                           "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
-                           RC.config_file_name, i, discRxPoolPS_ResourceConfig_subframeBitmap_present);
-
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[j] = discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[j] = discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size;
-            RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-          }
-        }
+	    char SLparamspath[MAX_OPTNAME_SIZE*2 + 16];
+	    sprintf(SLparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_SL_PARAMETERS);
+	    config_get( SLParams, sizeof(SLParams)/sizeof(paramdef_t), SLparamspath);
 
+	    // Sidelink Resource pool information
+	    RRC_CONFIGURATION_REQ (msg_p).SL_configured=SLconfig.sidelink_configured&1;
+	    if (SLconfig.sidelink_configured==1) {
+
+	      //SIB18
+	      if (strcmp(SLconfig.rxPool_sc_CP_Len,"normal")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_normal;
+	      } else if (strcmp(SLconfig.rxPool_sc_CP_Len,"extended")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_extended;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_CP_Len choice: normal,extended!\n",
+			     RC.config_file_name, i, SLconfig.rxPool_sc_CP_Len);
+	      
+	      if (strcmp(SLconfig.rxPool_sc_Period,"sf40")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf40;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf60")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf60;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf70")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf70;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf80")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf80;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf120")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf120;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf140")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf140;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf160")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf160;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf240")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf240;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf280")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf280;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"sf320")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf320;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare6")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare6;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare5")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare5;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare4")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare4;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare3")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare3;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare2")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare2;
+	      } else if (strcmp(SLconfig.rxPool_sc_Period,"spare")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_Period choice: sf40,sf60,sf70,sf80,sf120,sf140,sf160,sf240,sf280,sf320,spare6,spare5,spare4,spare3,spare2,spare!\n",
+			     RC.config_file_name, i, SLconfig.rxPool_sc_Period);
+	      
+	      if (strcmp(SLconfig.rxPool_data_CP_Len,"normal")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_normal;
+	      } else if (strcmp(SLconfig.rxPool_data_CP_Len,"extended")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_extended;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_data_CP_Len choice: normal,extended!\n",
+			     RC.config_file_name, i, SLconfig.rxPool_data_CP_Len);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Num[j] = SLconfig.rxPool_ResourceConfig_prb_Num;
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Start[j] = SLconfig.rxPool_ResourceConfig_prb_Start;
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_End[j] = SLconfig.rxPool_ResourceConfig_prb_End;
+	      
+	      if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
+			     RC.config_file_name, i, SLconfig.rxPool_ResourceConfig_offsetIndicator_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_choice[j] = SLconfig.rxPool_ResourceConfig_offsetIndicator_choice;
+	      
+	      if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
+	      } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
+			     RC.config_file_name, i, SLconfig.rxPool_ResourceConfig_subframeBitmap_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_size;
+	      RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
+	      
+	      //SIB19 - for discRxPool
+	      if (strcmp(SLconfig.discRxPool_cp_Len,"normal")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_normal;
+	      } else if (strcmp(SLconfig.discRxPool_cp_Len,"extended")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_extended;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_cp_Len choice: normal,extended!\n",
+			     RC.config_file_name, i, SLconfig.discRxPool_cp_Len);
+	      
+	      if (strcmp(SLconfig.discRxPool_discPeriod,"rf32")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf64")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf128")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf256")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf512")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf1024")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf16")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310;
+	      } else if (strcmp(SLconfig.discRxPool_discPeriod,"spare")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n",
+			     RC.config_file_name, i, SLconfig.discRxPool_discPeriod);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRetx[j] = SLconfig.discRxPool_numRetx;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRepetition[j] = SLconfig.discRxPool_numRepetition;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Num[j] = SLconfig.discRxPool_ResourceConfig_prb_Num;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Start[j] = SLconfig.discRxPool_ResourceConfig_prb_Start;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_End[j] = SLconfig.discRxPool_ResourceConfig_prb_End;
+	      
+	      if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
+			     RC.config_file_name, i, SLconfig.discRxPool_ResourceConfig_offsetIndicator_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_choice[j] = SLconfig.discRxPool_ResourceConfig_offsetIndicator_choice;
+	      
+	      if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
+	      } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
+			     RC.config_file_name, i, SLconfig.discRxPool_ResourceConfig_subframeBitmap_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_size;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
+	      
+	      //SIB19 - For discRxPoolPS
+	      if (strcmp(SLconfig.discRxPoolPS_cp_Len,"normal")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_normal;
+	      } else if (strcmp(SLconfig.discRxPoolPS_cp_Len,"extended")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_extended;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_cp_Len choice: normal,extended!\n",
+			     RC.config_file_name, i, SLconfig.discRxPoolPS_cp_Len);
+	      
+	      if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf32")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf64")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf128")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf256")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf512")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf1024")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf16")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310;
+	      } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"spare")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n",
+			     RC.config_file_name, i, SLconfig.discRxPoolPS_discPeriod);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRetx[j] = SLconfig.discRxPoolPS_numRetx;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRepetition[j] = SLconfig.discRxPoolPS_numRepetition;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Num[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_Num;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Start[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_Start;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_End[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_End;
+	      
+	      if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prSmall")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prLarge")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n",
+			     RC.config_file_name, i, SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_choice[j] = SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_choice;
+	      
+	      if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prNothing")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs4")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs8")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs12")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs16")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs30")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs40")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12;
+	      } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs42")==0) {
+		RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12;
+	      } else
+		AssertFatal (0,
+			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n",
+			     RC.config_file_name, i, SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present);
+	      
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size;
+	      RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
+	    }
+	  }
+	}
         char srb1path[MAX_OPTNAME_SIZE*2 + 8];
         sprintf(srb1path,"%s.%s",enbpath,ENB_CONFIG_STRING_SRB1);
-        int npar = config_get( SRB1Params,sizeof(SRB1Params)/sizeof(paramdef_t), srb1path);
-
-        if (npar == sizeof(SRB1Params)/sizeof(paramdef_t)) {
-          switch (srb1_max_retx_threshold) {
-	  case 1:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t1;
-	    break;
-
-	  case 2:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t2;
-	    break;
-
-	  case 3:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t3;
-	    break;
-
-	  case 4:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t4;
-	    break;
-
-	  case 6:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t6;
-	    break;
-
-	  case 8:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t8;
-	    break;
-
-	  case 16:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t16;
-	    break;
-
-	  case 32:
-	    rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t32;
-	    break;
-
-	  default:
+        config_get( SRB1Params,sizeof(SRB1Params)/sizeof(paramdef_t), srb1path);
+
+
+	switch (srb1_params.srb1_max_retx_threshold) {
+	case 1:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t1;
+	  break;
+	  
+	case 2:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t2;
+	  break;
+	  
+	case 3:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t3;
+	  break;
+	  
+	case 4:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t4;
+	  break;
+	  
+	case 6:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t6;
+	  break;
+	  
+	case 8:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t8;
+	  break;
+	  
+	case 16:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t16;
+	  break;
+	  
+	case 32:
+	  rrc->srb1_max_retx_threshold = UL_AM_RLC__maxRetxThreshold_t32;
+	  break;
+	  
+	default:
+	  AssertFatal (0,
+		       "Bad config value when parsing eNB configuration file %s, enb %d  srb1_max_retx_threshold %u!\n",
+		       RC.config_file_name, i, srb1_params.srb1_max_retx_threshold);
+	}
+	
+	switch (srb1_params.srb1_poll_pdu) {
+	case 4:
+	  rrc->srb1_poll_pdu = PollPDU_p4;
+	  break;
+	  
+	case 8:
+	  rrc->srb1_poll_pdu = PollPDU_p8;
+	  break;
+	  
+	case 16:
+	  rrc->srb1_poll_pdu = PollPDU_p16;
+	  break;
+	  
+	case 32:
+	  rrc->srb1_poll_pdu = PollPDU_p32;
+	  break;
+	  
+	case 64:
+	  rrc->srb1_poll_pdu = PollPDU_p64;
+	  break;
+	  
+	case 128:
+	  rrc->srb1_poll_pdu = PollPDU_p128;
+	  break;
+	  
+	case 256:
+	  rrc->srb1_poll_pdu = PollPDU_p256;
+	  break;
+	  
+	default:
+	  if (srb1_params.srb1_poll_pdu >= 10000)
+	    rrc->srb1_poll_pdu = PollPDU_pInfinity;
+	  else
 	    AssertFatal (0,
-			 "Bad config value when parsing eNB configuration file %s, enb %d  srb1_max_retx_threshold %u!\n",
-			 RC.config_file_name, i, srb1_max_retx_threshold);
-          }
-
-          switch (srb1_poll_pdu) {
-	  case 4:
-	    rrc->srb1_poll_pdu = PollPDU_p4;
-	    break;
-
-	  case 8:
-	    rrc->srb1_poll_pdu = PollPDU_p8;
-	    break;
-
-	  case 16:
-	    rrc->srb1_poll_pdu = PollPDU_p16;
-	    break;
-
-	  case 32:
-	    rrc->srb1_poll_pdu = PollPDU_p32;
-	    break;
-
-	  case 64:
-	    rrc->srb1_poll_pdu = PollPDU_p64;
-	    break;
-
-	  case 128:
-	    rrc->srb1_poll_pdu = PollPDU_p128;
-	    break;
-
-	  case 256:
-	    rrc->srb1_poll_pdu = PollPDU_p256;
-	    break;
-
-	  default:
-	    if (srb1_poll_pdu >= 10000)
-	      rrc->srb1_poll_pdu = PollPDU_pInfinity;
-	    else
-	      AssertFatal (0,
-			   "Bad config value when parsing eNB configuration file %s, enb %d  srb1_poll_pdu %u!\n",
-			   RC.config_file_name, i, srb1_poll_pdu);
-          }
-
-          rrc->srb1_poll_byte             = srb1_poll_byte;
-
-          switch (srb1_poll_byte) {
-	  case 25:
-	    rrc->srb1_poll_byte = PollByte_kB25;
-	    break;
-
-	  case 50:
-	    rrc->srb1_poll_byte = PollByte_kB50;
-	    break;
-
-	  case 75:
-	    rrc->srb1_poll_byte = PollByte_kB75;
-	    break;
-
-	  case 100:
-	    rrc->srb1_poll_byte = PollByte_kB100;
-	    break;
-
-	  case 125:
-	    rrc->srb1_poll_byte = PollByte_kB125;
-	    break;
-
-	  case 250:
-	    rrc->srb1_poll_byte = PollByte_kB250;
-	    break;
-
-	  case 375:
-	    rrc->srb1_poll_byte = PollByte_kB375;
-	    break;
-
-	  case 500:
-	    rrc->srb1_poll_byte = PollByte_kB500;
-	    break;
-
-	  case 750:
-	    rrc->srb1_poll_byte = PollByte_kB750;
-	    break;
-
-	  case 1000:
-	    rrc->srb1_poll_byte = PollByte_kB1000;
-	    break;
-
-	  case 1250:
-	    rrc->srb1_poll_byte = PollByte_kB1250;
-	    break;
-
-	  case 1500:
-	    rrc->srb1_poll_byte = PollByte_kB1500;
-	    break;
-
-	  case 2000:
-	    rrc->srb1_poll_byte = PollByte_kB2000;
-	    break;
-
-	  case 3000:
-	    rrc->srb1_poll_byte = PollByte_kB3000;
-	    break;
-
-	  default:
-	    if (srb1_poll_byte >= 10000)
-	      rrc->srb1_poll_byte = PollByte_kBinfinity;
-	    else
-	      AssertFatal (0,
-			   "Bad config value when parsing eNB configuration file %s, enb %d  srb1_poll_byte %u!\n",
-			   RC.config_file_name, i, srb1_poll_byte);
-          }
-
-          if (srb1_timer_poll_retransmit <= 250) {
-            rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 5)/5;
-          } else if (srb1_timer_poll_retransmit <= 500) {
-            rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 300)/50 + 50;
-          } else {
-            AssertFatal (0,
-                         "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_poll_retransmit %u!\n",
-                         RC.config_file_name, i, srb1_timer_poll_retransmit);
-          }
-
-          if (srb1_timer_status_prohibit <= 250) {
-            rrc->srb1_timer_status_prohibit = srb1_timer_status_prohibit/5;
-          } else if ((srb1_timer_poll_retransmit >= 300) && (srb1_timer_poll_retransmit <= 500)) {
-            rrc->srb1_timer_status_prohibit = (srb1_timer_status_prohibit - 300)/50 + 51;
-          } else {
-            AssertFatal (0,
-                         "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_status_prohibit %u!\n",
-                         RC.config_file_name, i, srb1_timer_status_prohibit);
-          }
-
-          switch (srb1_timer_reordering) {
-	  case 0:
-	    rrc->srb1_timer_reordering = T_Reordering_ms0;
-	    break;
-
-	  case 5:
-	    rrc->srb1_timer_reordering = T_Reordering_ms5;
-	    break;
-
-	  case 10:
-	    rrc->srb1_timer_reordering = T_Reordering_ms10;
-	    break;
-
-	  case 15:
-	    rrc->srb1_timer_reordering = T_Reordering_ms15;
-	    break;
-
-	  case 20:
-	    rrc->srb1_timer_reordering = T_Reordering_ms20;
-	    break;
-
-	  case 25:
-	    rrc->srb1_timer_reordering = T_Reordering_ms25;
-	    break;
-
-	  case 30:
-	    rrc->srb1_timer_reordering = T_Reordering_ms30;
-	    break;
-
-	  case 35:
-	    rrc->srb1_timer_reordering = T_Reordering_ms35;
-	    break;
-
-	  case 40:
-	    rrc->srb1_timer_reordering = T_Reordering_ms40;
-	    break;
-
-	  case 45:
-	    rrc->srb1_timer_reordering = T_Reordering_ms45;
-	    break;
-
-	  case 50:
-	    rrc->srb1_timer_reordering = T_Reordering_ms50;
-	    break;
-
-	  case 55:
-	    rrc->srb1_timer_reordering = T_Reordering_ms55;
-	    break;
-
-	  case 60:
-	    rrc->srb1_timer_reordering = T_Reordering_ms60;
-	    break;
-
-	  case 65:
-	    rrc->srb1_timer_reordering = T_Reordering_ms65;
-	    break;
-
-	  case 70:
-	    rrc->srb1_timer_reordering = T_Reordering_ms70;
-	    break;
-
-	  case 75:
-	    rrc->srb1_timer_reordering = T_Reordering_ms75;
-	    break;
-
-	  case 80:
-	    rrc->srb1_timer_reordering = T_Reordering_ms80;
-	    break;
-
-	  case 85:
-	    rrc->srb1_timer_reordering = T_Reordering_ms85;
-	    break;
-
-	  case 90:
-	    rrc->srb1_timer_reordering = T_Reordering_ms90;
-	    break;
-
-	  case 95:
-	    rrc->srb1_timer_reordering = T_Reordering_ms95;
-	    break;
-
-	  case 100:
-	    rrc->srb1_timer_reordering = T_Reordering_ms100;
-	    break;
-
-	  case 110:
-	    rrc->srb1_timer_reordering = T_Reordering_ms110;
-	    break;
-
-	  case 120:
-	    rrc->srb1_timer_reordering = T_Reordering_ms120;
-	    break;
-
-	  case 130:
-	    rrc->srb1_timer_reordering = T_Reordering_ms130;
-	    break;
-
-	  case 140:
-	    rrc->srb1_timer_reordering = T_Reordering_ms140;
-	    break;
-
-	  case 150:
-	    rrc->srb1_timer_reordering = T_Reordering_ms150;
-	    break;
-
-	  case 160:
-	    rrc->srb1_timer_reordering = T_Reordering_ms160;
-	    break;
-
-	  case 170:
-	    rrc->srb1_timer_reordering = T_Reordering_ms170;
-	    break;
-
-	  case 180:
-	    rrc->srb1_timer_reordering = T_Reordering_ms180;
-	    break;
-
-	  case 190:
-	    rrc->srb1_timer_reordering = T_Reordering_ms190;
-	    break;
-
-	  case 200:
-	    rrc->srb1_timer_reordering = T_Reordering_ms200;
-	    break;
-
-	  default:
+			 "Bad config value when parsing eNB configuration file %s, enb %d  srb1_poll_pdu %u!\n",
+			 RC.config_file_name, i, srb1_params.srb1_poll_pdu);
+	}
+	
+	rrc->srb1_poll_byte             = srb1_params.srb1_poll_byte;
+	
+	switch (srb1_params.srb1_poll_byte) {
+	case 25:
+	  rrc->srb1_poll_byte = PollByte_kB25;
+	  break;
+	  
+	case 50:
+	  rrc->srb1_poll_byte = PollByte_kB50;
+	  break;
+	  
+	case 75:
+	  rrc->srb1_poll_byte = PollByte_kB75;
+	  break;
+	  
+	case 100:
+	  rrc->srb1_poll_byte = PollByte_kB100;
+	  break;
+	  
+	case 125:
+	  rrc->srb1_poll_byte = PollByte_kB125;
+	  break;
+	  
+	case 250:
+	  rrc->srb1_poll_byte = PollByte_kB250;
+	  break;
+	  
+	case 375:
+	  rrc->srb1_poll_byte = PollByte_kB375;
+	  break;
+	  
+	case 500:
+	  rrc->srb1_poll_byte = PollByte_kB500;
+	  break;
+	  
+	case 750:
+	  rrc->srb1_poll_byte = PollByte_kB750;
+	  break;
+	  
+	case 1000:
+	  rrc->srb1_poll_byte = PollByte_kB1000;
+	  break;
+	  
+	case 1250:
+	  rrc->srb1_poll_byte = PollByte_kB1250;
+	  break;
+	  
+	case 1500:
+	  rrc->srb1_poll_byte = PollByte_kB1500;
+	  break;
+	  
+	case 2000:
+	  rrc->srb1_poll_byte = PollByte_kB2000;
+	  break;
+	  
+	case 3000:
+	  rrc->srb1_poll_byte = PollByte_kB3000;
+	  break;
+	  
+	default:
+	  if (srb1_params.srb1_poll_byte >= 10000)
+	    rrc->srb1_poll_byte = PollByte_kBinfinity;
+	  else
 	    AssertFatal (0,
-			 "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_reordering %u!\n",
-			 RC.config_file_name, i, srb1_timer_reordering);
-          }
-        } else {
-          rrc->srb1_timer_poll_retransmit = T_PollRetransmit_ms80;
-          rrc->srb1_timer_reordering      = T_Reordering_ms35;
-          rrc->srb1_timer_status_prohibit = T_StatusProhibit_ms0;
-          rrc->srb1_poll_pdu              = PollPDU_p4;
-          rrc->srb1_poll_byte             = PollByte_kBinfinity;
-          rrc->srb1_max_retx_threshold    = UL_AM_RLC__maxRetxThreshold_t8;
-        }
-
-        break;
+			 "Bad config value when parsing eNB configuration file %s, enb %d  srb1_poll_byte %u!\n",
+			 RC.config_file_name, i, srb1_params.srb1_poll_byte);
+	}
+	
+	if (srb1_params.srb1_timer_poll_retransmit <= 250) {
+	  rrc->srb1_timer_poll_retransmit = (srb1_params.srb1_timer_poll_retransmit - 5)/5;
+	} else if (srb1_params.srb1_timer_poll_retransmit <= 500) {
+	  rrc->srb1_timer_poll_retransmit = (srb1_params.srb1_timer_poll_retransmit - 300)/50 + 50;
+	} else {
+	  AssertFatal (0,
+		       "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_poll_retransmit %u!\n",
+		       RC.config_file_name, i, srb1_params.srb1_timer_poll_retransmit);
+	}
+	
+	if (srb1_params.srb1_timer_status_prohibit <= 250) {
+	  rrc->srb1_timer_status_prohibit = srb1_params.srb1_timer_status_prohibit/5;
+	} else if ((srb1_params.srb1_timer_poll_retransmit >= 300) && (srb1_params.srb1_timer_poll_retransmit <= 500)) {
+	  rrc->srb1_timer_status_prohibit = (srb1_params.srb1_timer_status_prohibit - 300)/50 + 51;
+	} else {
+	  AssertFatal (0,
+		       "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_status_prohibit %u!\n",
+		       RC.config_file_name, i, srb1_params.srb1_timer_status_prohibit);
+	}
+	
+	switch (srb1_params.srb1_timer_reordering) {
+	case 0:
+	  rrc->srb1_timer_reordering = T_Reordering_ms0;
+	  break;
+	  
+	case 5:
+	  rrc->srb1_timer_reordering = T_Reordering_ms5;
+	  break;
+	  
+	case 10:
+	  rrc->srb1_timer_reordering = T_Reordering_ms10;
+	  break;
+	  
+	case 15:
+	  rrc->srb1_timer_reordering = T_Reordering_ms15;
+	  break;
+	  
+	case 20:
+	  rrc->srb1_timer_reordering = T_Reordering_ms20;
+	  break;
+	  
+	case 25:
+	  rrc->srb1_timer_reordering = T_Reordering_ms25;
+	  break;
+	  
+	case 30:
+	  rrc->srb1_timer_reordering = T_Reordering_ms30;
+	  break;
+	  
+	case 35:
+	  rrc->srb1_timer_reordering = T_Reordering_ms35;
+	  break;
+	  
+	case 40:
+	  rrc->srb1_timer_reordering = T_Reordering_ms40;
+	  break;
+	  
+	case 45:
+	  rrc->srb1_timer_reordering = T_Reordering_ms45;
+	  break;
+	  
+	case 50:
+	  rrc->srb1_timer_reordering = T_Reordering_ms50;
+	  break;
+	  
+	case 55:
+	  rrc->srb1_timer_reordering = T_Reordering_ms55;
+	  break;
+	  
+	case 60:
+	  rrc->srb1_timer_reordering = T_Reordering_ms60;
+	  break;
+	  
+	case 65:
+	  rrc->srb1_timer_reordering = T_Reordering_ms65;
+	  break;
+	  
+	case 70:
+	  rrc->srb1_timer_reordering = T_Reordering_ms70;
+	  break;
+	  
+	case 75:
+	  rrc->srb1_timer_reordering = T_Reordering_ms75;
+	  break;
+	  
+	case 80:
+	  rrc->srb1_timer_reordering = T_Reordering_ms80;
+	  break;
+	  
+	case 85:
+	  rrc->srb1_timer_reordering = T_Reordering_ms85;
+	  break;
+	  
+	case 90:
+	  rrc->srb1_timer_reordering = T_Reordering_ms90;
+	  break;
+	  
+	case 95:
+	  rrc->srb1_timer_reordering = T_Reordering_ms95;
+	  break;
+	  
+	case 100:
+	  rrc->srb1_timer_reordering = T_Reordering_ms100;
+	  break;
+	  
+	case 110:
+	  rrc->srb1_timer_reordering = T_Reordering_ms110;
+	  break;
+	  
+	case 120:
+	  rrc->srb1_timer_reordering = T_Reordering_ms120;
+	  break;
+	  
+	case 130:
+	  rrc->srb1_timer_reordering = T_Reordering_ms130;
+	  break;
+	  
+	case 140:
+	  rrc->srb1_timer_reordering = T_Reordering_ms140;
+	  break;
+	  
+	case 150:
+	  rrc->srb1_timer_reordering = T_Reordering_ms150;
+	  break;
+	  
+	case 160:
+	  rrc->srb1_timer_reordering = T_Reordering_ms160;
+	  break;
+	  
+	case 170:
+	  rrc->srb1_timer_reordering = T_Reordering_ms170;
+	  break;
+	  
+	case 180:
+	  rrc->srb1_timer_reordering = T_Reordering_ms180;
+	  break;
+	  
+	case 190:
+	  rrc->srb1_timer_reordering = T_Reordering_ms190;
+	  break;
+	  
+	case 200:
+	  rrc->srb1_timer_reordering = T_Reordering_ms200;
+	  break;
+	  
+	default:
+	  AssertFatal (0,
+		       "Bad config value when parsing eNB configuration file %s, enb %d  srb1_timer_reordering %u!\n",
+		       RC.config_file_name, i, srb1_params.srb1_timer_reordering);
+	}
       }
     }
   }
@@ -3633,94 +3232,20 @@ int RCconfig_X2(MessageDef *msg_p, uint32_t i) {
   int   enb_id;
   char *address = NULL;
   char *cidr    = NULL;
+
+  ccparams_lte_t ccparams_lte;
+
+  memset((void*)&ccparams_lte,0,sizeof(ccparams_lte_t));
+
+
   paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
   paramdef_t ENBParams[]  = ENBPARAMS_DESC;
   paramlist_def_t ENBParamList = {ENB_CONFIG_STRING_ENB_LIST,NULL,0};
   /* get global parameters, defined outside any section in the config file */
   config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL);
-  /* define CC params */
-  int32_t Nid_cell = 0;
-  char *frame_type, *prefix_type, *pbch_repetition, *prach_high_speed,
-    *pusch_hoppingMode, *pusch_enable64QAM, *pusch_groupHoppingEnabled,
-    *pusch_sequenceHoppingEnabled, *phich_duration, *phich_resource,
-    *srs_enable, *srs_ackNackST, *srs_MaxUpPts, *pusch_alpha,
-    *pucch_deltaF_Format1, *pucch_deltaF_Format1b, *pucch_deltaF_Format2,
-    *pucch_deltaF_Format2a, *pucch_deltaF_Format2b,
-    *rach_preamblesGroupAConfig, *rach_messagePowerOffsetGroupB, *pcch_nB;
-  long long int     downlink_frequency;
-  int32_t tdd_config, tdd_config_s, eutra_band, uplink_frequency_offset,
-    Nid_cell_mbsfn, N_RB_DL, nb_antenna_ports, prach_root, prach_config_index,
-    prach_zero_correlation, prach_freq_offset, pucch_delta_shift,
-    pucch_nRB_CQI, pucch_nCS_AN, pucch_n1_AN, pdsch_referenceSignalPower,
-    pdsch_p_b, pusch_n_SB, pusch_hoppingOffset, pusch_groupAssignment,
-    pusch_nDMRS1, srs_BandwidthConfig, srs_SubframeConfig, pusch_p0_Nominal,
-    pucch_p0_Nominal, msg3_delta_Preamble,rach_numberOfRA_Preambles;
-  int32_t rach_sizeOfRA_PreamblesGroupA, rach_messageSizeGroupA,
-    rach_powerRampingStep, rach_preambleInitialReceivedTargetPower,
-    rach_preambleTransMax, rach_raResponseWindowSize,
-    rach_macContentionResolutionTimer, rach_maxHARQ_Msg3Tx,
-    pcch_defaultPagingCycle, bcch_modificationPeriodCoeff,
-    ue_TimersAndConstants_t300, ue_TimersAndConstants_t301,
-    ue_TimersAndConstants_t310, ue_TimersAndConstants_t311,
-    ue_TimersAndConstants_n310, ue_TimersAndConstants_n311,
-    ue_TransmissionMode, ue_multiple_max;
-  char*   prach_ConfigCommon_v1310                          = NULL;
-  char*   mpdcch_startSF_CSS_RA_r13                         = NULL;
-  char*   mpdcch_startSF_CSS_RA_r13_val                     = NULL;
-  char*   pdsch_maxNumRepetitionCEmodeA_r13                 = NULL;
-  char*   pdsch_maxNumRepetitionCEmodeB_r13                 = NULL;
-  
-  char*   pusch_maxNumRepetitionCEmodeA_r13                 = 0;
-  char*   pusch_maxNumRepetitionCEmodeB_r13                 = 0;
-  int     prach_HoppingOffset_r13                           = 0;
-
-  // avoid gcc warnings
-  (void)pdsch_maxNumRepetitionCEmodeB_r13;
-  (void)pusch_maxNumRepetitionCEmodeB_r13;
-
-  const char       *rxPool_sc_CP_Len;
-  const char       *rxPool_sc_Period;
-  const char       *rxPool_data_CP_Len;
-  libconfig_int     rxPool_ResourceConfig_prb_Num;
-  libconfig_int     rxPool_ResourceConfig_prb_Start;
-  libconfig_int     rxPool_ResourceConfig_prb_End;
-  const char       *rxPool_ResourceConfig_offsetIndicator_present;
-  libconfig_int     rxPool_ResourceConfig_offsetIndicator_choice;
-  const char       *rxPool_ResourceConfig_subframeBitmap_present;
-  char             *rxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-  //SIB19
-  //for discRxPool
-  const char       *discRxPool_cp_Len;
-  const char       *discRxPool_discPeriod;
-  libconfig_int     discRxPool_numRetx;
-  libconfig_int     discRxPool_numRepetition;
-  libconfig_int     discRxPool_ResourceConfig_prb_Num;
-  libconfig_int     discRxPool_ResourceConfig_prb_Start;
-  libconfig_int     discRxPool_ResourceConfig_prb_End;
-  const char       *discRxPool_ResourceConfig_offsetIndicator_present;
-  libconfig_int     discRxPool_ResourceConfig_offsetIndicator_choice;
-  const char       *discRxPool_ResourceConfig_subframeBitmap_present;
-  char             *discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
-  //for discRxPoolPS
-  const char       *discRxPoolPS_cp_Len;
-  const char       *discRxPoolPS_discPeriod;
-  libconfig_int     discRxPoolPS_numRetx;
-  libconfig_int     discRxPoolPS_numRepetition;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Num;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_Start;
-  libconfig_int     discRxPoolPS_ResourceConfig_prb_End;
-  const char       *discRxPoolPS_ResourceConfig_offsetIndicator_present;
-  libconfig_int     discRxPoolPS_ResourceConfig_offsetIndicator_choice;
-  const char       *discRxPoolPS_ResourceConfig_subframeBitmap_present;
-  char             *discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size;
-  libconfig_int     discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
+
   checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
-  paramdef_t CCsParams[] = CCPARAMS_DESC;
+  paramdef_t CCsParams[] = CCPARAMS_DESC(ccparams_lte);
   paramlist_def_t CCsParamList = {ENB_CONFIG_STRING_COMPONENT_CARRIERS, NULL, 0};
 
   /* map parameter checking array instances to parameter definition array instances */
@@ -3828,37 +3353,42 @@ int RCconfig_X2(MessageDef *msg_p, uint32_t i) {
   sprintf(aprefix, "%s.[%i].%s.[%i]", ENB_CONFIG_STRING_ENB_LIST, k, ENB_CONFIG_STRING_COMPONENT_CARRIERS, J);
   printf("X2: Getting %s\n",aprefix);
   config_get(CCsParams, sizeof(CCsParams)/sizeof(paramdef_t), aprefix);
-  X2AP_REGISTER_ENB_REQ (msg_p).eutra_band[J] = eutra_band;
-  X2AP_REGISTER_ENB_REQ (msg_p).downlink_frequency[J] = (uint32_t) downlink_frequency;
-  X2AP_REGISTER_ENB_REQ (msg_p).uplink_frequency_offset[J] = (unsigned int) uplink_frequency_offset;
-  X2AP_REGISTER_ENB_REQ (msg_p).Nid_cell[J]= Nid_cell;
+  X2AP_REGISTER_ENB_REQ (msg_p).eutra_band[J] = ccparams_lte.eutra_band;
+  X2AP_REGISTER_ENB_REQ (msg_p).downlink_frequency[J] = (uint32_t) ccparams_lte.downlink_frequency;
+  X2AP_REGISTER_ENB_REQ (msg_p).uplink_frequency_offset[J] = (unsigned int) ccparams_lte.uplink_frequency_offset;
+  X2AP_REGISTER_ENB_REQ (msg_p).Nid_cell[J]= ccparams_lte.Nid_cell;
 
-  if (Nid_cell>503) {
+  if (ccparams_lte.Nid_cell>503) {
   AssertFatal (0,
     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for Nid_cell choice: 0...503 !\n",
-    RC.config_file_name, k, Nid_cell);
+    RC.config_file_name, k, ccparams_lte.Nid_cell);
 }
 
-  X2AP_REGISTER_ENB_REQ (msg_p).N_RB_DL[J]= N_RB_DL;
+  X2AP_REGISTER_ENB_REQ (msg_p).N_RB_DL[J]= ccparams_lte.N_RB_DL;
 
-  if ((N_RB_DL!=6) && (N_RB_DL!=15) && (N_RB_DL!=25) && (N_RB_DL!=50) && (N_RB_DL!=75) && (N_RB_DL!=100)) {
+  if ((ccparams_lte.N_RB_DL!=6) && 
+      (ccparams_lte.N_RB_DL!=15) && 
+      (ccparams_lte.N_RB_DL!=25) && 
+      (ccparams_lte.N_RB_DL!=50) && 
+      (ccparams_lte.N_RB_DL!=75) && 
+      (ccparams_lte.N_RB_DL!=100)) {
   AssertFatal (0,
     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for N_RB_DL choice: 6,15,25,50,75,100 !\n",
-    RC.config_file_name, k, N_RB_DL);
+    RC.config_file_name, k, ccparams_lte.N_RB_DL);
 }
 
-  if (strcmp(frame_type, "FDD") == 0) {
+  if (strcmp(ccparams_lte.frame_type, "FDD") == 0) {
   X2AP_REGISTER_ENB_REQ (msg_p).frame_type[J] = FDD;
-} else  if (strcmp(frame_type, "TDD") == 0) {
+} else  if (strcmp(ccparams_lte.frame_type, "TDD") == 0) {
   X2AP_REGISTER_ENB_REQ (msg_p).frame_type[J] = TDD;
 } else {
   AssertFatal (0,
     "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for frame_type choice: FDD or TDD !\n",
-    RC.config_file_name, k, frame_type);
+    RC.config_file_name, k, ccparams_lte.frame_type);
 }
 
-  X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_DL[J] = to_earfcn_DL(eutra_band, downlink_frequency, N_RB_DL);
-  X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_UL[J] = to_earfcn_UL(eutra_band, downlink_frequency + uplink_frequency_offset, N_RB_DL);
+  X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_DL[J] = to_earfcn_DL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency, ccparams_lte.N_RB_DL);
+  X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_UL[J] = to_earfcn_UL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency + ccparams_lte.uplink_frequency_offset, ccparams_lte.N_RB_DL);
 }
 }
 
diff --git a/openair2/ENB_APP/enb_paramdef.h b/openair2/ENB_APP/enb_paramdef.h
index 9e43b8c61e..eae4e32482 100755
--- a/openair2/ENB_APP/enb_paramdef.h
+++ b/openair2/ENB_APP/enb_paramdef.h
@@ -19,7 +19,7 @@
  *      contact@openairinterface.org
  */
 
-/*! \file openair2/ENB_APP/enb_paramdef.f
+/*! \file openair2/ENB_APP/enb_paramdef.h
  * \brief definition of configuration parameters for all eNodeB modules 
  * \author Francois TABURET
  * \date 2017
@@ -341,11 +341,6 @@ typedef enum {
 #define ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A                         "pucch_deltaF_Format2a"
 #define ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B                         "pucch_deltaF_Format2b"
 
-#define ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310       "prach_ConfigCommon_v1310"
-#define ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13      "mpdcch_startSF_CSS_RA_r13"
-#define ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL  "mpdcch_startSF_CSS_RA_r13_val"
-#define ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13        "prach_HoppingOffset_r13"
-
 #define ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES                         "rach_numberOfRA_Preambles"
 #define ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG                    "rach_preamblesGroupAConfig"
 #define ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA                 "rach_sizeOfRA_PreamblesGroupA"
@@ -428,6 +423,86 @@ typedef enum {
 /*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /* init for checkedparam_t structure */
 
+typedef struct ccparams_lte_s {
+  char             *frame_type;
+  int32_t           tdd_config;
+  int32_t           tdd_config_s;
+  char             *prefix_type;
+  char             *pbch_repetition;
+  int32_t           eutra_band;
+  long long int     downlink_frequency;
+  int32_t           uplink_frequency_offset;
+  int32_t           Nid_cell;
+  int32_t           Nid_cell_mbsfn;
+  int32_t           N_RB_DL;
+  int32_t           nb_antenna_ports;
+  int32_t           prach_root;
+  int32_t           prach_config_index;
+  char             *prach_high_speed;
+  int32_t           prach_zero_correlation;
+  int32_t           prach_freq_offset;
+  int32_t           pucch_delta_shift;
+  int32_t           pucch_nRB_CQI;
+  int32_t           pucch_nCS_AN;
+  int32_t           pucch_n1_AN;
+  int32_t           pdsch_referenceSignalPower;
+  int32_t           pdsch_p_b;
+  int32_t           pusch_n_SB;
+  char             *pusch_hoppingMode;
+  int32_t           pusch_hoppingOffset;
+  char             *pusch_enable64QAM;
+  char             *pusch_groupHoppingEnabled;
+  int32_t           pusch_groupAssignment;
+  char             *pusch_sequenceHoppingEnabled;
+  int32_t           pusch_nDMRS1;
+  char             *phich_duration;
+  char             *phich_resource;
+  char             *srs_enable;
+  int32_t           srs_BandwidthConfig;
+  int32_t           srs_SubframeConfig;
+  char             *srs_ackNackST;
+  char             *srs_MaxUpPts;
+  int32_t           pusch_p0_Nominal;
+  char             *pusch_alpha;
+  int32_t           pucch_p0_Nominal;
+  int32_t           msg3_delta_Preamble;
+  int32_t           ul_CyclicPrefixLength;
+  char             *pucch_deltaF_Format1;
+  char             *pucch_deltaF_Format1a;
+  char             *pucch_deltaF_Format1b;
+  char             *pucch_deltaF_Format2;
+  char             *pucch_deltaF_Format2a;
+  char             *pucch_deltaF_Format2b;
+  int32_t           rach_numberOfRA_Preambles;
+  char             *rach_preamblesGroupAConfig;
+  int32_t           rach_sizeOfRA_PreamblesGroupA;
+  int32_t           rach_messageSizeGroupA;
+  char             *rach_messagePowerOffsetGroupB;
+  int32_t           rach_powerRampingStep;
+  int32_t           rach_preambleInitialReceivedTargetPower;
+  int32_t           rach_preambleTransMax;
+  int32_t           rach_raResponseWindowSize;
+  int32_t           rach_macContentionResolutionTimer;
+  int32_t           rach_maxHARQ_Msg3Tx;
+  int32_t           pcch_defaultPagingCycle;
+  char             *pcch_nB;
+  int32_t           bcch_modificationPeriodCoeff;
+  int32_t           ue_TimersAndConstants_t300;
+  int32_t           ue_TimersAndConstants_t301;
+  int32_t           ue_TimersAndConstants_t310;
+  int32_t           ue_TimersAndConstants_t311;
+  int32_t           ue_TimersAndConstants_n310;
+  int32_t           ue_TimersAndConstants_n311;
+  int32_t           ue_TransmissionMode;
+  int32_t           ue_multiple_max;
+  int32_t           srb1_timer_poll_retransmit;
+  int32_t           srb1_timer_reordering;
+  int32_t           srb1_timer_status_prohibit;
+  int32_t           srb1_poll_pdu;
+  int32_t           srb1_poll_byte;
+  int32_t           srb1_max_retx_threshold;
+} ccparams_lte_t;
+
 #define CCPARAMS_CHECK                 {                                     \
              { .s5= {NULL }} ,						     \
              { .s5= {NULL }} ,						     \
@@ -535,133 +610,83 @@ typedef enum {
                           { .s5= {NULL }} ,						     \
                           { .s5= {NULL }} ,						     \
                           { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }} ,						     \
-                          { .s5= {NULL }}						     \
+			  { .s5= {NULL }}				\
 }
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                     component carriers configuration parameters                                                                                                                   */
 /*   optname                                                   helpstr   paramflags    XXXptr                                        defXXXval                    type         numelt  checked_param */
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 
-#define CCPARAMS_DESC { \
-{ENB_CONFIG_STRING_FRAME_TYPE,                                   NULL,   0,           strptr:&frame_type,                             defstrval:"FDD",           TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_TDD_CONFIG,                                   NULL,   0,           iptr:&tdd_config,                               defintval:3,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_TDD_CONFIG_S,                                 NULL,   0,           iptr:&tdd_config_s,                             defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PREFIX_TYPE,                                  NULL,   0,           strptr:&prefix_type,                            defstrval:"NORMAL",        TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PBCH_REPETITION,                              NULL,   0,           strptr:&pbch_repetition,                        defstrval:"FALSE",         TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_EUTRA_BAND,                                   NULL,   0,           iptr:&eutra_band,                               defintval:7,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_DOWNLINK_FREQUENCY,                           NULL,   0,           i64ptr:(int64_t *)&downlink_frequency,          defint64val:2680000000,    TYPE_UINT64,     0},  \
-{ENB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET,                      NULL,   0,           iptr:&uplink_frequency_offset,                  defintval:-120000000,      TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_NID_CELL,                                     NULL,   0,           iptr:&Nid_cell,                                 defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_N_RB_DL,                                      NULL,   0,           iptr:&N_RB_DL,                                  defintval:25,              TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_CELL_MBSFN,                                   NULL,   0,           iptr:&Nid_cell_mbsfn,                           defintval:0,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_NB_ANT_PORTS,                                 NULL,   0,           iptr:&nb_antenna_ports,                         defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PRACH_ROOT,                                   NULL,   0,           iptr:&prach_root,                               defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX,                           NULL,   0,           iptr:&prach_config_index,                       defintval:0,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PRACH_HIGH_SPEED,                             NULL,   0,           strptr:&prach_high_speed,                       defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION,                       NULL,   0,           iptr:&prach_zero_correlation,                   defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET,                            NULL,   0,           iptr:&prach_freq_offset,                        defintval:2,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT,                            NULL,   0,           iptr:&pucch_delta_shift,                        defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_NRB_CQI,                                NULL,   0,           iptr:&pucch_nRB_CQI,                            defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_NCS_AN,                                 NULL,   0,           iptr:&pucch_nCS_AN,                             defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_N1_AN,                                  NULL,   0,           iptr:&pucch_n1_AN,                              defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PDSCH_RS_EPRE,                                NULL,   0,           iptr:&pdsch_referenceSignalPower,               defintval:-29,             TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PDSCH_PB,                                     NULL,   0,           iptr:&pdsch_p_b,                                defintval:0,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_N_SB,                                   NULL,   0,           iptr:&pusch_n_SB,                               defintval:1,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE,                            NULL,   0,           strptr:&pusch_hoppingMode,                      defstrval:"interSubFrame", TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET,                          NULL,   0,           iptr:&pusch_hoppingOffset,                      defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM,                            NULL,   0,           strptr:&pusch_enable64QAM,                      defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN,                       NULL,   0,           strptr:&pusch_groupHoppingEnabled,              defstrval:"ENABLE",        TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT,                       NULL,   0,           iptr:&pusch_groupAssignment,                    defintval:0,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN,                    NULL,   0,           strptr:&pusch_sequenceHoppingEnabled,           defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_NDMRS1,                                 NULL,   0,           iptr:&pusch_nDMRS1,                             defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PHICH_DURATION,                               NULL,   0,           strptr:&phich_duration,                         defstrval:"NORMAL",        TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PHICH_RESOURCE,                               NULL,   0,           strptr:&phich_resource,                         defstrval:"ONESIXTH",      TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_ENABLE,                                   NULL,   0,           strptr:&srs_enable,                             defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG,                         NULL,   0,           iptr:&srs_BandwidthConfig,                      defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG,                          NULL,   0,           iptr:&srs_SubframeConfig,                       defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG,                         NULL,   0,           strptr:&srs_ackNackST,                          defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_MAXUPPTS,                                 NULL,   0,           strptr:&srs_MaxUpPts,                           defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL,                             NULL,   0,           iptr:&pusch_p0_Nominal,                         defintval:-90,             TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_ALPHA,                                  NULL,   0,           strptr:&pusch_alpha,                            defstrval:"AL1",           TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL,                             NULL,   0,           iptr:&pucch_p0_Nominal,                         defintval:-96,             TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE,                          NULL,   0,           iptr:&msg3_delta_Preamble,                      defintval:6,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1,                         NULL,   0,           strptr:&pucch_deltaF_Format1,                   defstrval:"DELTAF2",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b,                        NULL,   0,           strptr:&pucch_deltaF_Format1b,                  defstrval:"deltaF3",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2,                         NULL,   0,           strptr:&pucch_deltaF_Format2,                   defstrval:"deltaF0",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A,                        NULL,   0,           strptr:&pucch_deltaF_Format2a,                  defstrval:"deltaF0",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B,                        NULL,   0,           strptr:&pucch_deltaF_Format2b,                  defstrval:"deltaF0",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES,                        NULL,   0,           iptr:&rach_numberOfRA_Preambles,                defintval:4,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                   NULL,   0,           strptr:&rach_preamblesGroupAConfig,             defstrval:"DISABLE",       TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA,                NULL,   0,           iptr:&rach_sizeOfRA_PreamblesGroupA,            defintval:0,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA,                       NULL,   0,           iptr:&rach_messageSizeGroupA,                   defintval:56,              TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB,                NULL,   0,           strptr:&rach_messagePowerOffsetGroupB,          defstrval:"minusinfinity", TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP,                        NULL,   0,           iptr:&rach_powerRampingStep,                    defintval:4,               TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER,      NULL,   0,           iptr:&rach_preambleInitialReceivedTargetPower,  defintval:-100,            TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX,                        NULL,   0,           iptr:&rach_preambleTransMax,                    defintval:10,              TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE,                    NULL,   0,           iptr:&rach_raResponseWindowSize,                defintval:10,              TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER,            NULL,   0,           iptr:&rach_macContentionResolutionTimer,        defintval:48,              TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX,                           NULL,   0,           iptr:&rach_maxHARQ_Msg3Tx,                      defintval:4,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE,                    NULL,   0,           iptr:&pcch_defaultPagingCycle,                  defintval:128,             TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PCCH_NB,                                      NULL,   0,           strptr:&pcch_nB,                                defstrval:"oneT",          TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF,                 NULL,   0,           iptr:&bcch_modificationPeriodCoeff,             defintval:2,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T300,                                NULL,   0,           iptr:&ue_TimersAndConstants_t300,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T301,                                NULL,   0,           iptr:&ue_TimersAndConstants_t301,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T310,                                NULL,   0,           iptr:&ue_TimersAndConstants_t310,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T311,                                NULL,   0,           iptr:&ue_TimersAndConstants_t311,               defintval:10000,           TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_N310,                                NULL,   0,           iptr:&ue_TimersAndConstants_n310,               defintval:20,              TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_N311,                                NULL,   0,           iptr:&ue_TimersAndConstants_n311,               defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE,                         NULL,   0,           iptr:&ue_TransmissionMode,                      defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UE_MULTIPLE_MAX,                              NULL,   0,           iptr:&ue_multiple_max,                          defintval:4,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RXPOOL_SC_CP_LEN,                             NULL,   0,   strptr:(char **)&rxPool_sc_CP_Len,          defstrval:"normal",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_SC_PRIOD,                              NULL,   0,   strptr:(char **)&rxPool_sc_Period,          defstrval:"sf40",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_DATA_CP_LEN,                           NULL,   0,   strptr:(char **)&rxPool_data_CP_Len,          defstrval:"normal",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_PRB_NUM,                            NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_prb_Num,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_PRB_START,                          NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_prb_Start,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_PRB_END,                            NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_prb_End,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_PRESENT,                  NULL,   0,   strptr:(char **)&rxPool_ResourceConfig_offsetIndicator_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_OFFSETIND_CHOICE,                   NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_offsetIndicator_choice,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_PRESENT,                   NULL,   0,   strptr:(char **)&rxPool_ResourceConfig_subframeBitmap_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_BUF,             NULL,   0,   strptr:(char **)&rxPool_ResourceConfig_subframeBitmap_choice_bs_buf,            defstrval:"001001",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE,            NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_subframeBitmap_choice_bs_size,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_RXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED, NULL,   0,   iptr:(int32_t *)&rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_CP_LEN,                            NULL,   0,   strptr:(char **)&discRxPool_cp_Len,          defstrval:"normal",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_DISCPERIOD,                        NULL,   0,   strptr:(char **)&discRxPool_discPeriod,          defstrval:"rf32",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_NUMRETX,                           NULL,   0,   iptr:(int32_t *)&discRxPool_numRetx,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_NUMREPETITION,                     NULL,   0,   iptr:(int32_t *)&discRxPool_numRepetition,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_PRB_NUM,                        NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_prb_Num,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_PRB_START,                      NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_prb_Start,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_PRB_END,                        NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_prb_End,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_OFFSETIND_PRESENT,              NULL,   0,   strptr:(char **)&discRxPool_ResourceConfig_offsetIndicator_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_OFFSETIND_CHOICE,               NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_offsetIndicator_choice,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_PRESENT,               NULL,   0,   strptr:(char **)&discRxPool_ResourceConfig_subframeBitmap_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_BUF,         NULL,   0,   strptr:(char **)&discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf,            defstrval:"001001",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_SIZE,        NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_subframeBitmap_choice_bs_size,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOL_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL,   0,   iptr:(int32_t *)&discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_CP_LEN,                            NULL,   0,   strptr:(char **)&discRxPoolPS_cp_Len,          defstrval:"normal",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_DISCPERIOD,                        NULL,   0,   strptr:(char **)&discRxPoolPS_discPeriod,          defstrval:"rf32",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_NUMRETX,                           NULL,   0,   iptr:(int32_t *)&discRxPoolPS_numRetx,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_NUMREPETITION,                     NULL,   0,   iptr:(int32_t *)&discRxPoolPS_numRepetition,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_NUM,                        NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_prb_Num,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_START,                      NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_prb_Start,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_PRB_END,                        NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_prb_End,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_PRESENT,              NULL,   0,   strptr:(char **)&discRxPoolPS_ResourceConfig_offsetIndicator_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_OFFSETIND_CHOICE,               NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_offsetIndicator_choice,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_PRESENT,               NULL,   0,   strptr:(char **)&discRxPoolPS_ResourceConfig_subframeBitmap_present,            defstrval:"prNothing",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_BUF,         NULL,   0,   strptr:(char **)&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf,            defstrval:"001001",  TYPE_STRING,  0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_SIZE,        NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_DISCRXPOOLPS_RC_SFBITMAP_CHOICE_BS_ASN_BITS_UNUSED,NULL,   0,   iptr:(int32_t *)&discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused,         defintval:1,       TYPE_UINT,    0}, \
-{ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310,                    NULL,   0,           strptr:&prach_ConfigCommon_v1310,               defstrval:"ENABLE",        TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13,                   NULL,   0,           strptr:&mpdcch_startSF_CSS_RA_r13,              defstrval:"fdd-r13",       TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL,               NULL,   0,           strptr:&mpdcch_startSF_CSS_RA_r13_val,          defstrval:"v1",            TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13,                     NULL,   0,           iptr:&prach_HoppingOffset_r13,                  defintval:0,               TYPE_INT,        0}, \
-{ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13,       NULL,   0,           strptr:&pdsch_maxNumRepetitionCEmodeA_r13,      defstrval:"r16",           TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13,       NULL,   0,           strptr:&pusch_maxNumRepetitionCEmodeA_r13,      defstrval:"r8",            TYPE_STRING,     0}  \
+#define CCPARAMS_DESC(ccparams) {					\
+{ENB_CONFIG_STRING_FRAME_TYPE,                                   NULL,   0,           strptr:&ccparams.frame_type,                             defstrval:"FDD",           TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_TDD_CONFIG,                                   NULL,   0,           iptr:&ccparams.tdd_config,                               defintval:3,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_TDD_CONFIG_S,                                 NULL,   0,           iptr:&ccparams.tdd_config_s,                             defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PREFIX_TYPE,                                  NULL,   0,           strptr:&ccparams.prefix_type,                            defstrval:"NORMAL",        TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PBCH_REPETITION,                              NULL,   0,           strptr:&ccparams.pbch_repetition,                        defstrval:"FALSE",         TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_EUTRA_BAND,                                   NULL,   0,           iptr:&ccparams.eutra_band,                               defintval:7,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_DOWNLINK_FREQUENCY,                           NULL,   0,           i64ptr:(int64_t *)&ccparams.downlink_frequency,          defint64val:2680000000,    TYPE_UINT64,     0},  \
+{ENB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET,                      NULL,   0,           iptr:&ccparams.uplink_frequency_offset,                  defintval:-120000000,      TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_NID_CELL,                                     NULL,   0,           iptr:&ccparams.Nid_cell,                                 defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_N_RB_DL,                                      NULL,   0,           iptr:&ccparams.N_RB_DL,                                  defintval:25,              TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_CELL_MBSFN,                                   NULL,   0,           iptr:&ccparams.Nid_cell_mbsfn,                           defintval:0,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_NB_ANT_PORTS,                                 NULL,   0,           iptr:&ccparams.nb_antenna_ports,                         defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PRACH_ROOT,                                   NULL,   0,           iptr:&ccparams.prach_root,                               defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX,                           NULL,   0,           iptr:&ccparams.prach_config_index,                       defintval:0,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PRACH_HIGH_SPEED,                             NULL,   0,           strptr:&ccparams.prach_high_speed,                       defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION,                       NULL,   0,           iptr:&ccparams.prach_zero_correlation,                   defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET,                            NULL,   0,           iptr:&ccparams.prach_freq_offset,                        defintval:2,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT,                            NULL,   0,           iptr:&ccparams.pucch_delta_shift,                        defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_NRB_CQI,                                NULL,   0,           iptr:&ccparams.pucch_nRB_CQI,                            defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_NCS_AN,                                 NULL,   0,           iptr:&ccparams.pucch_nCS_AN,                             defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_N1_AN,                                  NULL,   0,           iptr:&ccparams.pucch_n1_AN,                              defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PDSCH_RS_EPRE,                                NULL,   0,           iptr:&ccparams.pdsch_referenceSignalPower,               defintval:-29,             TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PDSCH_PB,                                     NULL,   0,           iptr:&ccparams.pdsch_p_b,                                defintval:0,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_N_SB,                                   NULL,   0,           iptr:&ccparams.pusch_n_SB,                               defintval:1,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE,                            NULL,   0,           strptr:&ccparams.pusch_hoppingMode,                      defstrval:"interSubFrame", TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET,                          NULL,   0,           iptr:&ccparams.pusch_hoppingOffset,                      defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM,                            NULL,   0,           strptr:&ccparams.pusch_enable64QAM,                      defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN,                       NULL,   0,           strptr:&ccparams.pusch_groupHoppingEnabled,              defstrval:"ENABLE",        TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT,                       NULL,   0,           iptr:&ccparams.pusch_groupAssignment,                    defintval:0,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN,                    NULL,   0,           strptr:&ccparams.pusch_sequenceHoppingEnabled,           defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_NDMRS1,                                 NULL,   0,           iptr:&ccparams.pusch_nDMRS1,                             defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PHICH_DURATION,                               NULL,   0,           strptr:&ccparams.phich_duration,                         defstrval:"NORMAL",        TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PHICH_RESOURCE,                               NULL,   0,           strptr:&ccparams.phich_resource,                         defstrval:"ONESIXTH",      TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_ENABLE,                                   NULL,   0,           strptr:&ccparams.srs_enable,                             defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG,                         NULL,   0,           iptr:&ccparams.srs_BandwidthConfig,                      defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG,                          NULL,   0,           iptr:&ccparams.srs_SubframeConfig,                       defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG,                         NULL,   0,           strptr:&ccparams.srs_ackNackST,                          defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_MAXUPPTS,                                 NULL,   0,           strptr:&ccparams.srs_MaxUpPts,                           defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL,                             NULL,   0,           iptr:&ccparams.pusch_p0_Nominal,                         defintval:-90,             TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_ALPHA,                                  NULL,   0,           strptr:&ccparams.pusch_alpha,                            defstrval:"AL1",           TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL,                             NULL,   0,           iptr:&ccparams.pucch_p0_Nominal,                         defintval:-96,             TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE,                          NULL,   0,           iptr:&ccparams.msg3_delta_Preamble,                      defintval:6,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1,                         NULL,   0,           strptr:&ccparams.pucch_deltaF_Format1,                   defstrval:"DELTAF2",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b,                        NULL,   0,           strptr:&ccparams.pucch_deltaF_Format1b,                  defstrval:"deltaF3",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2,                         NULL,   0,           strptr:&ccparams.pucch_deltaF_Format2,                   defstrval:"deltaF0",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A,                        NULL,   0,           strptr:&ccparams.pucch_deltaF_Format2a,                  defstrval:"deltaF0",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B,                        NULL,   0,           strptr:&ccparams.pucch_deltaF_Format2b,                  defstrval:"deltaF0",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES,                        NULL,   0,           iptr:&ccparams.rach_numberOfRA_Preambles,                defintval:4,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                   NULL,   0,           strptr:&ccparams.rach_preamblesGroupAConfig,             defstrval:"DISABLE",       TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA,                NULL,   0,           iptr:&ccparams.rach_sizeOfRA_PreamblesGroupA,            defintval:0,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA,                       NULL,   0,           iptr:&ccparams.rach_messageSizeGroupA,                   defintval:56,              TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB,                NULL,   0,           strptr:&ccparams.rach_messagePowerOffsetGroupB,          defstrval:"minusinfinity", TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP,                        NULL,   0,           iptr:&ccparams.rach_powerRampingStep,                    defintval:4,               TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER,      NULL,   0,           iptr:&ccparams.rach_preambleInitialReceivedTargetPower,  defintval:-100,            TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX,                        NULL,   0,           iptr:&ccparams.rach_preambleTransMax,                    defintval:10,              TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE,                    NULL,   0,           iptr:&ccparams.rach_raResponseWindowSize,                defintval:10,              TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER,            NULL,   0,           iptr:&ccparams.rach_macContentionResolutionTimer,        defintval:48,              TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX,                           NULL,   0,           iptr:&ccparams.rach_maxHARQ_Msg3Tx,                      defintval:4,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE,                    NULL,   0,           iptr:&ccparams.pcch_defaultPagingCycle,                  defintval:128,             TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PCCH_NB,                                      NULL,   0,           strptr:&ccparams.pcch_nB,                                defstrval:"oneT",          TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF,                 NULL,   0,           iptr:&ccparams.bcch_modificationPeriodCoeff,             defintval:2,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T300,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_t300,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T301,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_t301,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T310,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_t310,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T311,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_t311,               defintval:10000,           TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_N310,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_n310,               defintval:20,              TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_N311,                                NULL,   0,           iptr:&ccparams.ue_TimersAndConstants_n311,               defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE,                         NULL,   0,           iptr:&ccparams.ue_TransmissionMode,                      defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UE_MULTIPLE_MAX,                              NULL,   0,           iptr:&ccparams.ue_multiple_max,                          defintval:4,               TYPE_UINT,       0}  \
 }
 
 
@@ -735,7 +760,6 @@ typedef enum {
 #define ENB_CONFIG_UETIMERS_N311_IDX			     66
 #define ENB_CONFIG_UE_TRANSMISSION_MODE_IDX		     67
 
-/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /* SRB1 configuration parameters section name */
 #define ENB_CONFIG_STRING_SRB1                                          "srb1_parameters"
@@ -752,21 +776,27 @@ typedef enum {
 /*                                            SRB1 configuration parameters                                                                                  */
 /*   optname                                          helpstr   paramflags    XXXptr                             defXXXval         type           numelt     */
 /*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
-#define SRB1PARAMS_DESC {                                                                                                \
-{ENB_CONFIG_STRING_SRB1_TIMER_POLL_RETRANSMIT,         NULL,   0,            iptr:&srb1_timer_poll_retransmit,   defintval:80,     TYPE_UINT,      0},       \
-{ENB_CONFIG_STRING_SRB1_TIMER_REORDERING,              NULL,   0,            iptr:&srb1_timer_reordering,        defintval:35,     TYPE_UINT,      0},       \
-{ENB_CONFIG_STRING_SRB1_TIMER_STATUS_PROHIBIT,         NULL,   0,            iptr:&srb1_timer_status_prohibit,   defintval:0,      TYPE_UINT,      0},       \
-{ENB_CONFIG_STRING_SRB1_POLL_PDU,                      NULL,   0,            iptr:&srb1_poll_pdu,                defintval:4,      TYPE_UINT,      0},       \
-{ENB_CONFIG_STRING_SRB1_POLL_BYTE,                     NULL,   0,            iptr:&srb1_poll_byte,               defintval:99999,  TYPE_UINT,      0},       \
-{ENB_CONFIG_STRING_SRB1_MAX_RETX_THRESHOLD,            NULL,   0,            iptr:&srb1_max_retx_threshold,      defintval:4,      TYPE_UINT,      0}        \
+typedef struct srb1_params_s {
+  int32_t     srb1_timer_poll_retransmit;
+  int32_t     srb1_timer_reordering;
+  int32_t     srb1_timer_status_prohibit;
+  int32_t     srb1_poll_pdu;
+  int32_t     srb1_poll_byte;
+  int32_t     srb1_max_retx_threshold;
+} srb1_params_t;
+
+#define SRB1PARAMS_DESC(srb1_params) {					\
+{ENB_CONFIG_STRING_SRB1_TIMER_POLL_RETRANSMIT,         NULL,   0,            iptr:&srb1_params.srb1_timer_poll_retransmit,   defintval:80,     TYPE_UINT,      0},       \
+{ENB_CONFIG_STRING_SRB1_TIMER_REORDERING,              NULL,   0,            iptr:&srb1_params.srb1_timer_reordering,        defintval:35,     TYPE_UINT,      0},       \
+{ENB_CONFIG_STRING_SRB1_TIMER_STATUS_PROHIBIT,         NULL,   0,            iptr:&srb1_params.srb1_timer_status_prohibit,   defintval:0,      TYPE_UINT,      0},       \
+{ENB_CONFIG_STRING_SRB1_POLL_PDU,                      NULL,   0,            iptr:&srb1_params.srb1_poll_pdu,                defintval:4,      TYPE_UINT,      0},       \
+{ENB_CONFIG_STRING_SRB1_POLL_BYTE,                     NULL,   0,            iptr:&srb1_params.srb1_poll_byte,               defintval:99999,  TYPE_UINT,      0},       \
+{ENB_CONFIG_STRING_SRB1_MAX_RETX_THRESHOLD,            NULL,   0,            iptr:&srb1_params.srb1_max_retx_threshold,      defintval:4,      TYPE_UINT,      0}        \
 }
-/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
 
 /* MME configuration parameters section name */
 #define ENB_CONFIG_STRING_MME_IP_ADDRESS                "mme_ip_address"
 
-/* SRB1 configuration parameters names   */
-
 
 #define ENB_CONFIG_STRING_MME_IPV4_ADDRESS              "ipv4"
 #define ENB_CONFIG_STRING_MME_IPV6_ADDRESS              "ipv6"
@@ -1000,3 +1030,4 @@ typedef enum {
 /*-------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 
 #include "enb_paramdef_emtc.h"
+#include "enb_paramdef_sidelink.h"
diff --git a/openair2/ENB_APP/enb_paramdef_emtc.h b/openair2/ENB_APP/enb_paramdef_emtc.h
index 2ae0a1752d..41205ab63d 100644
--- a/openair2/ENB_APP/enb_paramdef_emtc.h
+++ b/openair2/ENB_APP/enb_paramdef_emtc.h
@@ -33,10 +33,13 @@
 #include "common/config/config_paramdesc.h"
 #include "RRC_paramsvalues.h"
 
-#define ENB_CONFIG_STRING_SCHEDULING_INFO_LIST                   "scheduling_info_br"
-
-
-
+#define ENB_CONFIG_STRING_EMTC_PARAMETERS                                  "emtc_parameters"
+#define ENB_CONFIG_STRING_SCHEDULING_INFO_BR                               "scheduling_info_br"
+#define ENB_CONFIG_STRING_RSRP_RANGE_LIST                                  "rsrp_range_list"
+#define ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310                        "prach_ConfigCommon_v1310"
+#define ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13                       "mpdcch_startSF_CSS_RA_r13"
+#define ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL                   "mpdcch_startSF_CSS_RA_r13_val"
+#define ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13                         "prach_HoppingOffset_r13"
 #define ENB_CONFIG_STRING_SCHEDULING_INFO_SIB1_BR_R13                      "schedulingInfoSIB1_BR_r13"
 #define ENB_CONFIG_STRING_CELL_SELECTION_INFO_CE_R13                       "cellSelectionInfoCE_r13"
 #define ENB_CONFIG_STRING_Q_RX_LEV_MIN_CE_R13                              "q_RxLevMinCE_r13"
@@ -57,175 +60,250 @@
 #define ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13                  "mpdcch_pdsch_HoppingOffset_r13"
 #define ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13                         "preamble_TransMax_ce_r13"
 #define ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13_VAL                     "preamble_TransMax_ce_r13_val"
+#define ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13           "pdsch_maxNumRepetitionCEmodeA_r13"
+#define ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13           "pusch_maxNumRepetitionCEmodeA_r13"
+#define ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST                       "system_info_value_tag_SI"
+#define ENB_CONFIG_STRING_FIRST_PREAMBLE_R13                               "firstPreamble_r13"
+#define ENB_CONFIG_STRING_LAST_PREAMBLE_R13                                "lastPreamble_r13"
+#define ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13                      "ra_ResponseWindowSize_r13"
+#define ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13              "mac_ContentionResolutionTimer_r13"
+#define ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13                           "rar_HoppingConfig_r13  "
+#define ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13                        "rach_CE_LevelInfoList_r13"
+#define ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR                            "prach_config_index_br"
+#define ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR                             "prach_freq_offset_br"
+#define ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13                      "prach_StartingSubframe_r13"
+#define ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13              "maxNumPreambleAttemptCE_r13"
+#define ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13          "numRepetitionPerPreambleAttempt_r13"
+#define ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13                     "mpdcch_NumRepetition_RA_r13"
+#define ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13                         "prach_HoppingConfig_r13"
+#define ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND                         "max_available_narrow_band"
+#define ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13                          "prach_parameters_ce_r13"							
+#define ENB_CONFIG_STRING_PUCCH_INFO_VALUE                                 "pucch_info_value"
+#define ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13                          "n1PUCCH_AN_InfoList_r13"
+#define ENB_CONFIG_STRING_PCCH_CONFIG_V1310                                "pcch_config_v1310"
+#define ENB_CONFIG_STRING_SIB2_FREQ_HOPPINGPARAMETERS_R13                  "sib2_freq_hoppingParameters_r13" 
 
-#define ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13        "pdsch_maxNumRepetitionCEmodeA_r13"
-#define ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13        "pusch_maxNumRepetitionCEmodeA_r13"
-
-
-
-#define ENB_CONFIG_STRING_BR_PARAMETERS                          "br_parameters"
-#define BRPARAMS_DESC { \
-{"eMTC_configured",                                                      NULL,   0,           iptr:&eMTC_configured,                             defintval:0,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_SCHEDULING_INFO_SIB1_BR_R13,                          NULL,   0,           iptr:&schedulingInfoSIB1_BR_r13,                   defintval:4,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_CELL_SELECTION_INFO_CE_R13,                           NULL,   0,           strptr:&cellSelectionInfoCE_r13,                   defstrval:"ENABLE",                TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_Q_RX_LEV_MIN_CE_R13,                                  NULL,   0,           iptr:&q_RxLevMinCE_r13,                            defintval:-70,                     TYPE_INT,          0}, \
-{ENB_CONFIG_STRING_BANDWIDTH_REDUCED_ACCESS_RELATED_INFO_R13,            NULL,   0,           strptr:&bandwidthReducedAccessRelatedInfo_r13,     defstrval:"ENABLE",                TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_SI_WINDOW_LENGTH_BR_R13,                              NULL,   0,           strptr:&si_WindowLength_BR_r13,                    defstrval:"ms20",                  TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_SI_REPETITION_PATTERN_R13,                            NULL,   0,           strptr:&si_RepetitionPattern_r13,                  defstrval:"everyRF",               TYPE_STRING,       0},			\
-{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_R13,           NULL,   0,           strptr:&fdd_DownlinkOrTddSubframeBitmapBR_r13,     defstrval:"subframePattern40-r13", TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_VAL_R13,       NULL,   0,           i64ptr:&fdd_DownlinkOrTddSubframeBitmapBR_val_r13, defint64val:0xFFFFFFFFFF,          TYPE_UINT64,       0}, \
-{ENB_CONFIG_STRING_START_SYMBOL_BR_R13,                                  NULL,   0,           iptr:&startSymbolBR_r13,                           defintval:3,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_SI_HOPPING_CONFIG_COMMON_R13,                         NULL,   0,           strptr:&si_HoppingConfigCommon_r13 ,               defstrval:"off",                   TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_SI_VALIDITY_TIME_R13,                                 NULL,   0,           strptr:&si_ValidityTime_r13,                       defstrval:"true",                  TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_DL_R13,                       NULL,   0,           strptr:&freqHoppingParametersDL_r13,               defstrval:"DISABLE",               TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13,                          NULL,   0,           strptr:&mpdcch_pdsch_HoppingNB_r13,                defstrval:"nb2",                   TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13,         NULL,   0,           strptr:&interval_DLHoppingConfigCommonModeA_r13,   defstrval:"interval-FDD-r13",      TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL,     NULL,   0,           iptr:&interval_DLHoppingConfigCommonModeA_r13_val, defintval:0,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13,         NULL,   0,           strptr:&interval_DLHoppingConfigCommonModeB_r13,   defstrval:"interval-FDD-r13",      TYPE_STRING,       0}, \
-{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL,     NULL,   0,           iptr:&interval_DLHoppingConfigCommonModeB_r13_val, defintval:0,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13,                      NULL,   0,           iptr:&mpdcch_pdsch_HoppingOffset_r13,              defintval:1,                       TYPE_UINT,         0}, \
-{ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13,                             NULL,   0,           strptr:&preambleTransMax_CE_r13,                   defstrval:"n10",                   TYPE_STRING,       0},  \
-{ENB_CONFIG_STRING_PRACH_ROOT,                                           NULL,   0,           iptr:&prach_root_emtc,                                  defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX,                                   NULL,   0,           iptr:&prach_config_index_emtc,                          defintval:0,                       TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PRACH_HIGH_SPEED,                                     NULL,   0,           strptr:&prach_high_speed_emtc,                          defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION,                               NULL,   0,           iptr:&prach_zero_correlation_emtc,                      defintval:1,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET,                                    NULL,   0,           iptr:&prach_freq_offset_emtc,                           defintval:2,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT,                                    NULL,   0,           iptr:&pucch_delta_shift_emtc,                           defintval:1,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_NRB_CQI,                                        NULL,   0,           iptr:&pucch_nRB_CQI_emtc,                               defintval:1,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_NCS_AN,                                         NULL,   0,           iptr:&pucch_nCS_AN_emtc,                                defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_N1_AN,                                          NULL,   0,           iptr:&pucch_n1_AN_emtc,                                 defintval:32,                      TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PDSCH_RS_EPRE,                                        NULL,   0,           iptr:&pdsch_referenceSignalPower_emtc,                  defintval:-29,                     TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PDSCH_PB,                                             NULL,   0,           iptr:&pdsch_p_b_emtc,                                   defintval:0,                       TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_N_SB,                                           NULL,   0,           iptr:&pusch_n_SB_emtc,                                  defintval:1,                       TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE,                                    NULL,   0,           strptr:&pusch_hoppingMode_emtc,                         defstrval:"interSubFrame",         TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET,                                  NULL,   0,           iptr:&pusch_hoppingOffset_emtc,                         defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM,                                    NULL,   0,           strptr:&pusch_enable64QAM_emtc,                         defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN,                               NULL,   0,           strptr:&pusch_groupHoppingEnabled_emtc,                 defstrval:"ENABLE",                TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT,                               NULL,   0,           iptr:&pusch_groupAssignment_emtc,                       defintval:0,                       TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN,                            NULL,   0,           strptr:&pusch_sequenceHoppingEnabled_emtc,              defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_NDMRS1,                                         NULL,   0,           iptr:&pusch_nDMRS1_emtc,                                defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PHICH_DURATION,                                       NULL,   0,           strptr:&phich_duration_emtc,                            defstrval:"NORMAL",                TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PHICH_RESOURCE,                                       NULL,   0,           strptr:&phich_resource_emtc,                            defstrval:"ONESIXTH",              TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_ENABLE,                                           NULL,   0,           strptr:&srs_enable_emtc,                                defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG,                                 NULL,   0,           iptr:&srs_BandwidthConfig_emtc,                         defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG,                                  NULL,   0,           iptr:&srs_SubframeConfig_emtc,                          defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG,                                 NULL,   0,           strptr:&srs_ackNackST_emtc,                             defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_SRS_MAXUPPTS,                                         NULL,   0,           strptr:&srs_MaxUpPts_emtc,                              defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL,                                     NULL,   0,           iptr:&pusch_p0_Nominal_emtc,                            defintval:-90,                     TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_PUSCH_ALPHA,                                          NULL,   0,           strptr:&pusch_alpha_emtc,                               defstrval:"AL1",                   TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL,                                     NULL,   0,           iptr:&pucch_p0_Nominal_emtc,                            defintval:-96,                     TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE,                                  NULL,   0,           iptr:&msg3_delta_Preamble_emtc,                         defintval:6,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1,                                 NULL,   0,           strptr:&pucch_deltaF_Format1_emtc,                      defstrval:"DELTAF2",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b,                                NULL,   0,           strptr:&pucch_deltaF_Format1b_emtc,                     defstrval:"deltaF3",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2,                                 NULL,   0,           strptr:&pucch_deltaF_Format2_emtc,                      defstrval:"deltaF0",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A,                                NULL,   0,           strptr:&pucch_deltaF_Format2a_emtc,                     defstrval:"deltaF0",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B,                                NULL,   0,           strptr:&pucch_deltaF_Format2b_emtc,                     defstrval:"deltaF0",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES,                                NULL,   0,           iptr:&rach_numberOfRA_Preambles_emtc,                   defstrval:"n4",                    TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                           NULL,   0,           strptr:&rach_preamblesGroupAConfig_emtc,                defstrval:"DISABLE",               TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA,                        NULL,   0,           iptr:&rach_sizeOfRA_PreamblesGroupA_emtc,               defintval:0,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA,                               NULL,   0,           iptr:&rach_messageSizeGroupA_emtc,                      defintval:56,                      TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB,                        NULL,   0,           strptr:&rach_messagePowerOffsetGroupB_emtc,             defstrval:"minusinfinity",         TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP,                                NULL,   0,           iptr:&rach_powerRampingStep_emtc,                       defintval:4,                       TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER,              NULL,   0,           iptr:&rach_preambleInitialReceivedTargetPower_emtc,     defintval:-100,                    TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX,                                NULL,   0,           iptr:&rach_preambleTransMax_emtc,                       defintval:10,                      TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE,                            NULL,   0,           iptr:&rach_raResponseWindowSize_emtc,                   defintval:10,                      TYPE_INT,        0},  \
-{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER,                    NULL,   0,           iptr:&rach_macContentionResolutionTimer_emtc,           defintval:48,                      TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX,                                   NULL,   0,           iptr:&rach_maxHARQ_Msg3Tx_emtc,                         defintval:4,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE,                            NULL,   0,           iptr:&pcch_defaultPagingCycle_emtc,                     defintval:128,                 TYPE_INT,     0},  \
-{ENB_CONFIG_STRING_PCCH_NB,                                              NULL,   0,           strptr:&pcch_nB_emtc,                                   defstrval:"oneT",                  TYPE_STRING,     0},  \
-{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF,                         NULL,   0,           iptr:&bcch_modificationPeriodCoeff_emtc,                defintval:2,                       TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T300,                                NULL,   0,           iptr:&ue_TimersAndConstants_t300_emtc,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T301,                                NULL,   0,           iptr:&ue_TimersAndConstants_t301_emtc,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T310,                                NULL,   0,           iptr:&ue_TimersAndConstants_t310_emtc,               defintval:1000,            TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_T311,                                NULL,   0,           iptr:&ue_TimersAndConstants_t311_emtc,               defintval:10000,           TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_N310,                                NULL,   0,           iptr:&ue_TimersAndConstants_n310_emtc,               defintval:20,              TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UETIMERS_N311,                                NULL,   0,           iptr:&ue_TimersAndConstants_n311_emtc,               defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE,                         NULL,   0,           iptr:&ue_TransmissionMode_emtc,                      defintval:1,               TYPE_UINT,       0},  \
-{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0,                  NULL,   0,           strptr:&pucch_NumRepetitionCE_Msg4_Level0_r13,     defstrval:"n1",                    TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1,                  NULL,   0,           strptr:&pucch_NumRepetitionCE_Msg4_Level1_r13,     defstrval:"",                      TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2,                  NULL,   0,           strptr:&pucch_NumRepetitionCE_Msg4_Level2_r13,     defstrval:"",                      TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3,                  NULL,   0,           strptr:&pucch_NumRepetitionCE_Msg4_Level3_r13,     defstrval:"",                      TYPE_STRING,     0}, \
-{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                           NULL,   0,           strptr:&rach_preamblesGroupAConfig_emtc,                defstrval:"",                      TYPE_STRING,     0}, \
-}
+typedef struct ccparams_eMTC_s {
+  /// indicator that eMTC is configured for this cell
+  int32_t        eMTC_configured;
+  /// the SIB2 parameters for eMTC SIB2
+  ccparams_lte_t ccparams;
+  int            si_Narrowband_r13;
+  int            si_TBS_r13;
+  int            systemInfoValueTagSi_r13;
+  int            firstPreamble_r13;
+  int            lastPreamble_r13;
+  int            ra_ResponseWindowSize_r13;
+  int            mac_ContentionResolutionTimer_r13;
+  int            rar_HoppingConfig_r13;
+  int            rsrp_range_br;
+  int            prach_config_index_br;
+  int            prach_freq_offset_br;
+  int            prach_StartingSubframe_r13;
+  int            maxNumPreambleAttemptCE_r13;
+  int            numRepetitionPerPreambleAttempt_r13;
+  int            mpdcch_NumRepetition_RA_r13;
+  int            prach_HoppingConfig_r13;
+  int           *maxavailablenarrowband;
+  int            pucch_info_value;
+  int            paging_narrowbands_r13;
+  int            mpdcch_numrepetition_paging_r13;
+  int            nb_v1310;
+  char          *pucch_NumRepetitionCE_Msg4_Level0_r13;
+  char          *pucch_NumRepetitionCE_Msg4_Level1_r13;
+  char          *pucch_NumRepetitionCE_Msg4_Level2_r13;
+  char          *pucch_NumRepetitionCE_Msg4_Level3_r13;
+  int            sib2_mpdcch_pdsch_hoppingNB_r13;
+  char          *sib2_interval_DLHoppingConfigCommonModeA_r13;
+  int            sib2_interval_DLHoppingConfigCommonModeA_r13_val;
+  char          *sib2_interval_DLHoppingConfigCommonModeB_r13;
+  int            sib2_interval_DLHoppingConfigCommonModeB_r13_val;
+  char          *sib2_interval_ULHoppingConfigCommonModeA_r13;
+  int            sib2_interval_ULHoppingConfigCommonModeA_r13_val;
+  char          *sib2_interval_ULHoppingConfigCommonModeB_r13;
+  int            sib2_interval_ULHoppingConfigCommonModeB_r13_val;
+  int            sib2_mpdcch_pdsch_hoppingOffset_r13;
+  int            pusch_HoppingOffset_v1310;
+  int            hyperSFN_r13;
+  int            eDRX_Allowed_r13;
+  int            q_RxLevMinCE_r13;
+  int            q_QualMinRSRQ_CE_r13;
+  char          *si_WindowLength_BR_r13;
+  char          *si_RepetitionPattern_r13;
+  int            startSymbolBR_r13;
+  char          *si_HoppingConfigCommon_r13;
+  char          *si_ValidityTime_r13;
+  char          *mpdcch_pdsch_HoppingNB_r13;
+  int            interval_DLHoppingConfigCommonModeA_r13_val;
+  int            interval_DLHoppingConfigCommonModeB_r13_val;
+  int            mpdcch_pdsch_HoppingOffset_r13;
+  char          *preambleTransMax_CE_r13;
+  int            prach_HoppingOffset_r13;
+  int            schedulingInfoSIB1_BR_r13;
+  int64_t        fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
+  char          *cellSelectionInfoCE_r13;
+  char          *bandwidthReducedAccessRelatedInfo_r13;
+  char          *fdd_DownlinkOrTddSubframeBitmapBR_r13;
+  char          *fdd_UplinkSubframeBitmapBR_r13;
+  char          *freqHoppingParametersDL_r13;
+  char          *interval_DLHoppingConfigCommonModeA_r13;
+  char          *interval_DLHoppingConfigCommonModeB_r13;
+  char          *prach_ConfigCommon_v1310;
+  char          *mpdcch_startSF_CSS_RA_r13;
+  char          *mpdcch_startSF_CSS_RA_r13_val;
+  char          *pdsch_maxNumRepetitionCEmodeA_r13;
+  char          *pdsch_maxNumRepetitionCEmodeB_r13;
+  char          *pusch_maxNumRepetitionCEmodeA_r13;
+  char          *pusch_maxNumRepetitionCEmodeB_r13;
+} ccparams_eMTC_t;
+
+
+#define EMTCPARAMS_DESC(eMTCconfig) {					\
+  {"eMTC_configured",                                              NULL,   0,           iptr:&eMTCconfig.eMTC_configured,                             defintval:0,                       TYPE_UINT,         0}, \
+{ENB_CONFIG_STRING_PRACH_ROOT,                                           NULL,   0,           iptr:&eMTCconfig.ccparams.prach_root,                                  defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX,                                   NULL,   0,           iptr:&eMTCconfig.ccparams.prach_config_index,                          defintval:0,                       TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PRACH_HIGH_SPEED,                                     NULL,   0,           strptr:&eMTCconfig.ccparams.prach_high_speed,                          defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION,                               NULL,   0,           iptr:&eMTCconfig.ccparams.prach_zero_correlation,                      defintval:1,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET,                                    NULL,   0,           iptr:&eMTCconfig.ccparams.prach_freq_offset,                           defintval:2,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT,                                    NULL,   0,           iptr:&eMTCconfig.ccparams.pucch_delta_shift,                           defintval:1,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_NRB_CQI,                                        NULL,   0,           iptr:&eMTCconfig.ccparams.pucch_nRB_CQI,                               defintval:1,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_NCS_AN,                                         NULL,   0,           iptr:&eMTCconfig.ccparams.pucch_nCS_AN,                                defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_N1_AN,                                          NULL,   0,           iptr:&eMTCconfig.ccparams.pucch_n1_AN,                                 defintval:32,                      TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PDSCH_RS_EPRE,                                        NULL,   0,           iptr:&eMTCconfig.ccparams.pdsch_referenceSignalPower,                  defintval:-29,                     TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PDSCH_PB,                                             NULL,   0,           iptr:&eMTCconfig.ccparams.pdsch_p_b,                                   defintval:0,                       TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_N_SB,                                           NULL,   0,           iptr:&eMTCconfig.ccparams.pusch_n_SB,                                  defintval:1,                       TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE,                                    NULL,   0,           strptr:&eMTCconfig.ccparams.pusch_hoppingMode,                         defstrval:"interSubFrame",         TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET,                                  NULL,   0,           iptr:&eMTCconfig.ccparams.pusch_hoppingOffset,                         defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM,                                    NULL,   0,           strptr:&eMTCconfig.ccparams.pusch_enable64QAM,                         defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN,                               NULL,   0,           strptr:&eMTCconfig.ccparams.pusch_groupHoppingEnabled,                 defstrval:"ENABLE",                TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT,                               NULL,   0,           iptr:&eMTCconfig.ccparams.pusch_groupAssignment,                       defintval:0,                       TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN,                            NULL,   0,           strptr:&eMTCconfig.ccparams.pusch_sequenceHoppingEnabled,              defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_NDMRS1,                                         NULL,   0,           iptr:&eMTCconfig.ccparams.pusch_nDMRS1,                                defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PHICH_DURATION,                                       NULL,   0,           strptr:&eMTCconfig.ccparams.phich_duration,                            defstrval:"NORMAL",                TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PHICH_RESOURCE,                                       NULL,   0,           strptr:&eMTCconfig.ccparams.phich_resource,                            defstrval:"ONESIXTH",              TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_ENABLE,                                           NULL,   0,           strptr:&eMTCconfig.ccparams.srs_enable,                                defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG,                                 NULL,   0,           iptr:&eMTCconfig.ccparams.srs_BandwidthConfig,                         defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG,                                  NULL,   0,           iptr:&eMTCconfig.ccparams.srs_SubframeConfig,                          defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG,                                 NULL,   0,           strptr:&eMTCconfig.ccparams.srs_ackNackST,                             defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_SRS_MAXUPPTS,                                         NULL,   0,           strptr:&eMTCconfig.ccparams.srs_MaxUpPts,                              defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL,                                     NULL,   0,           iptr:&eMTCconfig.ccparams.pusch_p0_Nominal,                            defintval:-90,                     TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_PUSCH_ALPHA,                                          NULL,   0,           strptr:&eMTCconfig.ccparams.pusch_alpha,                               defstrval:"AL1",                   TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL,                                     NULL,   0,           iptr:&eMTCconfig.ccparams.pucch_p0_Nominal,                            defintval:-96,                     TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE,                                  NULL,   0,           iptr:&eMTCconfig.ccparams.msg3_delta_Preamble,                         defintval:6,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1,                                 NULL,   0,           strptr:&eMTCconfig.ccparams.pucch_deltaF_Format1,                      defstrval:"DELTAF2",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b,                                NULL,   0,           strptr:&eMTCconfig.ccparams.pucch_deltaF_Format1b,                     defstrval:"deltaF3",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2,                                 NULL,   0,           strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2,                      defstrval:"deltaF0",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A,                                NULL,   0,           strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2a,                     defstrval:"deltaF0",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B,                                NULL,   0,           strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2b,                     defstrval:"deltaF0",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES,                                NULL,   0,           iptr:&eMTCconfig.ccparams.rach_numberOfRA_Preambles,                   defstrval:"n4",                    TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                           NULL,   0,           strptr:&eMTCconfig.ccparams.rach_preamblesGroupAConfig,                defstrval:"DISABLE",               TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA,                        NULL,   0,           iptr:&eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA,               defintval:0,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA,                               NULL,   0,           iptr:&eMTCconfig.ccparams.rach_messageSizeGroupA,                      defintval:56,                      TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB,                        NULL,   0,           strptr:&eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,             defstrval:"minusinfinity",         TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP,                                NULL,   0,           iptr:&eMTCconfig.ccparams.rach_powerRampingStep,                       defintval:4,                       TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER,              NULL,   0,           iptr:&eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower,     defintval:-100,                    TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX,                                NULL,   0,           iptr:&eMTCconfig.ccparams.rach_preambleTransMax,                       defintval:10,                      TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE,                            NULL,   0,           iptr:&eMTCconfig.ccparams.rach_raResponseWindowSize,                   defintval:10,                      TYPE_INT,        0},  \
+{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER,                    NULL,   0,           iptr:&eMTCconfig.ccparams.rach_macContentionResolutionTimer,           defintval:48,                      TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX,                                   NULL,   0,           iptr:&eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx,                         defintval:4,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE,                            NULL,   0,           iptr:&eMTCconfig.ccparams.pcch_defaultPagingCycle,                     defintval:128,                 TYPE_INT,     0},  \
+{ENB_CONFIG_STRING_PCCH_NB,                                              NULL,   0,           strptr:&eMTCconfig.ccparams.pcch_nB,                                   defstrval:"oneT",                  TYPE_STRING,     0},  \
+{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF,                         NULL,   0,           iptr:&eMTCconfig.ccparams.bcch_modificationPeriodCoeff,                defintval:2,                       TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG,                           NULL,   0,           strptr:&eMTCconfig.ccparams.rach_preamblesGroupAConfig,                defstrval:"",                      TYPE_STRING,     0}, \
+{ENB_CONFIG_STRING_UETIMERS_T300,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t300,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T301,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t301,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T310,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t310,               defintval:1000,            TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_T311,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t311,               defintval:10000,           TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_N310,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_n310,               defintval:20,              TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UETIMERS_N311,                                NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_n311,               defintval:1,               TYPE_UINT,       0},  \
+{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE,                         NULL,   0,           iptr:&eMTCconfig.ccparams.ue_TransmissionMode,                      defintval:1,               TYPE_UINT,       0},  \
+  {ENB_CONFIG_STRING_SCHEDULING_INFO_SIB1_BR_R13,                  NULL,   0,           iptr:&eMTCconfig.schedulingInfoSIB1_BR_r13,                   defintval:4,                       TYPE_UINT,         0}, \
+  {ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310,                    NULL,   0,           strptr:&eMTCconfig.prach_ConfigCommon_v1310,               defstrval:"ENABLE",        TYPE_STRING,     0}, \
+  {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13,                   NULL,   0,           strptr:&eMTCconfig.mpdcch_startSF_CSS_RA_r13,              defstrval:"fdd-r13",       TYPE_STRING,     0}, \
+  {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL,               NULL,   0,           strptr:&eMTCconfig.mpdcch_startSF_CSS_RA_r13_val,          defstrval:"v1",            TYPE_STRING,     0}, \
+  {ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13,                     NULL,   0,           iptr:&eMTCconfig.prach_HoppingOffset_r13,                  defintval:0,               TYPE_INT,        0}, \
+  {ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13,       NULL,   0,           strptr:&eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13,      defstrval:"r16",           TYPE_STRING,     0}, \
+  {ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13,       NULL,   0,           strptr:&eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13,      defstrval:"r8",            TYPE_STRING,     0},	\
+{ENB_CONFIG_STRING_CELL_SELECTION_INFO_CE_R13,                           NULL,   0,           strptr:&eMTCconfig.cellSelectionInfoCE_r13,                   defstrval:"ENABLE",                TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_Q_RX_LEV_MIN_CE_R13,                                  NULL,   0,           iptr:&eMTCconfig.q_RxLevMinCE_r13,                            defintval:-70,                     TYPE_INT,          0}, \
+{ENB_CONFIG_STRING_BANDWIDTH_REDUCED_ACCESS_RELATED_INFO_R13,            NULL,   0,           strptr:&eMTCconfig.bandwidthReducedAccessRelatedInfo_r13,     defstrval:"ENABLE",                TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_SI_WINDOW_LENGTH_BR_R13,                              NULL,   0,           strptr:&eMTCconfig.si_WindowLength_BR_r13,                    defstrval:"ms20",                  TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_SI_REPETITION_PATTERN_R13,                            NULL,   0,           strptr:&eMTCconfig.si_RepetitionPattern_r13,                  defstrval:"everyRF",               TYPE_STRING,       0},			\
+{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_R13,           NULL,   0,           strptr:&eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_r13,     defstrval:"subframePattern40-r13", TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_VAL_R13,       NULL,   0,           i64ptr:&eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13, defint64val:0xFFFFFFFFFF,          TYPE_UINT64,       0}, \
+{ENB_CONFIG_STRING_START_SYMBOL_BR_R13,                                  NULL,   0,           iptr:&eMTCconfig.startSymbolBR_r13,                           defintval:3,                       TYPE_UINT,         0}, \
+{ENB_CONFIG_STRING_SI_HOPPING_CONFIG_COMMON_R13,                         NULL,   0,           strptr:&eMTCconfig.si_HoppingConfigCommon_r13 ,               defstrval:"off",                   TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_SI_VALIDITY_TIME_R13,                                 NULL,   0,           strptr:&eMTCconfig.si_ValidityTime_r13,                       defstrval:"true",                  TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_DL_R13,                       NULL,   0,           strptr:&eMTCconfig.freqHoppingParametersDL_r13,               defstrval:"DISABLE",               TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13,                          NULL,   0,           strptr:&eMTCconfig.mpdcch_pdsch_HoppingNB_r13,                defstrval:"nb2",                   TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13,         NULL,   0,           strptr:&eMTCconfig.interval_DLHoppingConfigCommonModeA_r13,   defstrval:"interval-FDD-r13",      TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL,     NULL,   0,           iptr:&eMTCconfig.interval_DLHoppingConfigCommonModeA_r13_val, defintval:0,                       TYPE_UINT,         0}, \
+{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13,         NULL,   0,           strptr:&eMTCconfig.interval_DLHoppingConfigCommonModeB_r13,   defstrval:"interval-FDD-r13",      TYPE_STRING,       0}, \
+{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL,     NULL,   0,           iptr:&eMTCconfig.interval_DLHoppingConfigCommonModeB_r13_val, defintval:0,                       TYPE_UINT,         0}, \
+{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13,                      NULL,   0,           iptr:&eMTCconfig.mpdcch_pdsch_HoppingOffset_r13,              defintval:1,                       TYPE_UINT,         0}, \
+{ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13,                             NULL,   0,           strptr:&eMTCconfig.preambleTransMax_CE_r13,                   defstrval:"n10",                   TYPE_STRING,       0},  \
+{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0,                  NULL,   0,           strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13,     defstrval:"n1",                    TYPE_STRING,     0}, \
+{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1,                  NULL,   0,           strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level1_r13,     defstrval:"",                      TYPE_STRING,     0}, \
+{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2,                  NULL,   0,           strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level2_r13,     defstrval:"",                      TYPE_STRING,     0}, \
+  {ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3,                  NULL,   0,           strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level3_r13,     defstrval:"",                      TYPE_STRING,     0} \
+ }
 
-#define ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST                    "system_info_value_tag_SI"
-#define SYSTEM_INFO_VALUE_TAG_SI_DESC {							\
-{"systemInfoValueTagSi_r13", NULL,   0,           iptr:&systemInfoValueTagSi_r13,                              defintval:0,              TYPE_UINT,       0} \
+
+#define SYSTEM_INFO_VALUE_TAG_SI_DESC(eMTCconfig) {			\
+{"systemInfoValueTagSi_r13", NULL,   0,           iptr:&eMTCconfig.systemInfoValueTagSi_r13,                              defintval:0,              TYPE_UINT,       0} \
   }
 
 
-#define ENB_CONFIG_STRING_SCHEDULING_INFO_BR                           "scheduling_info_br"
-#define SI_INFO_BR_DESC { \
-{"si_Narrowband_r13", NULL,   0,           iptr:&si_Narrowband_r13,             defintval:5,             TYPE_UINT,       0}, \
-{"si_TBS_r13",        NULL,   0,           iptr:&si_TBS_r13,                    defintval:5,             TYPE_UINT,       0} \
+#define SI_INFO_BR_DESC(eMTCconfig) {					\
+{"si_Narrowband_r13", NULL,   0,           iptr:&eMTCconfig.si_Narrowband_r13,             defintval:5,             TYPE_UINT,       0}, \
+{"si_TBS_r13",        NULL,   0,           iptr:&eMTCconfig.si_TBS_r13,                    defintval:5,             TYPE_UINT,       0} \
 }
 
-#define ENB_CONFIG_STRING_RSRP_RANGE_LIST "rsrp_range_list"
-#define RSRP_RANGE_LIST_DESC { \
-{"rsrp_range_br", NULL,   0,           iptr:&rsrp_range_br,                     defintval:0,     TYPE_UINT,       0} \
+#define RSRP_RANGE_LIST_DESC(eMTCconfig) {				\
+{"rsrp_range_br", NULL,   0,           iptr:&eMTCconfig.rsrp_range_br,                     defintval:0,     TYPE_UINT,       0} \
   }
 
 
-#define ENB_CONFIG_STRING_FIRST_PREAMBLE_R13                      "firstPreamble_r13"
-#define ENB_CONFIG_STRING_LAST_PREAMBLE_R13                       "lastPreamble_r13"
-#define ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13             "ra_ResponseWindowSize_r13"
-#define ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13     "mac_ContentionResolutionTimer_r13"
-#define ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13                  "rar_HoppingConfig_r13  "
-
-#define ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13 "rach_CE_LevelInfoList_r13"
-#define RACH_CE_LEVELINFOLIST_R13_DESC { \
-{ENB_CONFIG_STRING_FIRST_PREAMBLE_R13,                     NULL,   0,           iptr:&firstPreamble_r13,                 defintval:60,            TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_LAST_PREAMBLE_R13,                      NULL,   0,           iptr:&lastPreamble_r13,                  defintval:63,            TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13,            NULL,   0,           iptr:&ra_ResponseWindowSize_r13,         defintval:20,        TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13,    NULL,   0,           iptr:&mac_ContentionResolutionTimer_r13, defintval:80,        TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13,                 NULL,   0,           iptr:&rar_HoppingConfig_r13,             defintval:0,         TYPE_UINT,     0}\
+#define RACH_CE_LEVELINFOLIST_R13_DESC(eMTCconfig) {			\
+{ENB_CONFIG_STRING_FIRST_PREAMBLE_R13,                     NULL,   0,           iptr:&eMTCconfig.firstPreamble_r13,                 defintval:60,            TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_LAST_PREAMBLE_R13,                      NULL,   0,           iptr:&eMTCconfig.lastPreamble_r13,                  defintval:63,            TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13,            NULL,   0,           iptr:&eMTCconfig.ra_ResponseWindowSize_r13,         defintval:20,        TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13,    NULL,   0,           iptr:&eMTCconfig.mac_ContentionResolutionTimer_r13, defintval:80,        TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13,                 NULL,   0,           iptr:&eMTCconfig.rar_HoppingConfig_r13,             defintval:0,         TYPE_UINT,     0}\
 }
 
-#define ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR                     "prach_config_index_br"
-#define ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR                      "prach_freq_offset_br"
-#define ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13               "prach_StartingSubframe_r13"
-#define ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13       "maxNumPreambleAttemptCE_r13"
-#define ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13   "numRepetitionPerPreambleAttempt_r13"
-#define ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13              "mpdcch_NumRepetition_RA_r13"
-#define ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13                  "prach_HoppingConfig_r13"
-#define ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND                  "max_available_narrow_band"
-
-#define ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13 "prach_parameters_ce_r13"							
-#define PRACH_PARAMS_CE_R13_DESC { \
-{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR,                   NULL,   0,           iptr:&prach_config_index_br,                 defintval:3,             TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR,                    NULL,   0,           iptr:&prach_freq_offset_br,                  defintval:1,             TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13,             NULL,   0,           iptr:&prach_StartingSubframe_r13,            defintval:0,             TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13,     NULL,   0,           iptr:&maxNumPreambleAttemptCE_r13,         defintval:10,         TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13, NULL,   0,           iptr:&numRepetitionPerPreambleAttempt_r13, defintval:1,          TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13,            NULL,   0,           iptr:&mpdcch_NumRepetition_RA_r13,         defintval:1,          TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13,                NULL,   0,           iptr:&prach_HoppingConfig_r13,             defintval:0,         TYPE_UINT,     0}, \
+#define PRACH_PARAMS_CE_R13_DESC(eMTCconfig) {				\
+{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR,                   NULL,   0,           iptr:&eMTCconfig.prach_config_index_br,                 defintval:3,             TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR,                    NULL,   0,           iptr:&eMTCconfig.prach_freq_offset_br,                  defintval:1,             TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13,             NULL,   0,           iptr:&eMTCconfig.prach_StartingSubframe_r13,            defintval:0,             TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13,     NULL,   0,           iptr:&eMTCconfig.maxNumPreambleAttemptCE_r13,         defintval:10,         TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13, NULL,   0,           iptr:&eMTCconfig.numRepetitionPerPreambleAttempt_r13, defintval:1,          TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13,            NULL,   0,           iptr:&eMTCconfig.mpdcch_NumRepetition_RA_r13,         defintval:1,          TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13,                NULL,   0,           iptr:&eMTCconfig.prach_HoppingConfig_r13,             defintval:0,         TYPE_UINT,     0}, \
 {ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND,                NULL,   0,           uptr:NULL,                                  defintarrayval:NULL,     TYPE_INTARRAY,   0} \
 }
 
-#define ENB_CONFIG_STRING_PUCCH_INFO_VALUE                      "pucch_info_value"
-
-#define ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13 "n1PUCCH_AN_InfoList_r13"
-#define N1PUCCH_AN_INFOLIST_R13_DESC { \
-{ENB_CONFIG_STRING_PUCCH_INFO_VALUE,                     NULL,   0,           iptr:&pucch_info_value,                    defintval:0,             TYPE_UINT,       0} \
+#define N1PUCCH_AN_INFOLIST_R13_DESC(eMTCconfig) {			\
+{ENB_CONFIG_STRING_PUCCH_INFO_VALUE,                     NULL,   0,           iptr:&eMTCconfig.pucch_info_value,                    defintval:0,             TYPE_UINT,       0} \
 }
 
-#define ENB_CONFIG_STRING_PCCH_CONFIG_V1310 "pcch_config_v1310"
-#define PCCH_CONFIG_V1310_DESC { \
-{ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13,          NULL,   0,           iptr:&paging_narrowbands_r13,                   defintval:1,             TYPE_UINT,       0}, \
-{ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13, NULL,   0,           iptr:&mpdcch_numrepetition_paging_r13,          defintval:1,          TYPE_UINT,     0}, \
-{ENB_CONFIG_STRING_NB_V1310,                        NULL,   0,           iptr:&nb_v1310,                                 defintval:256,   TYPE_UINT,     0} \
+
+#define PCCH_CONFIG_V1310_DESC(eMTCconfig) {				\
+{ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13,          NULL,   0,           iptr:&eMTCconfig.paging_narrowbands_r13,                   defintval:1,             TYPE_UINT,       0}, \
+{ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13, NULL,   0,           iptr:&eMTCconfig.mpdcch_numrepetition_paging_r13,          defintval:1,          TYPE_UINT,     0}, \
+{ENB_CONFIG_STRING_NB_V1310,                        NULL,   0,           iptr:&eMTCconfig.nb_v1310,                                 defintval:256,   TYPE_UINT,     0} \
 }
 
-#define ENB_CONFIG_STRING_SIB2_FREQ_HOPPINGPARAMETERS_R13          "sib2_freq_hoppingParameters_r13" 
-#define SIB2_FREQ_HOPPING_R13_DESC { \
-{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13,                      NULL,   0,           iptr:&sib2_mpdcch_pdsch_hoppingNB_r13,                  defintval:0,            TYPE_UINT,       0}, \
-{"sib2_interval_DLHoppingConfigCommonModeA_r13",                     NULL,   0,           strptr:&sib2_interval_DLHoppingConfigCommonModeA_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
-{"sib2_interval_DLHoppingConfigCommonModeA_r13_val",                 NULL,   0,           iptr:&sib2_interval_DLHoppingConfigCommonModeA_r13_val,   defintval:0,            TYPE_UINT,       0}, \
-{"sib2_interval_DLHoppingConfigCommonModeB_r13",                     NULL,   0,           strptr:&sib2_interval_DLHoppingConfigCommonModeB_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
-{"sib2_interval_DLHoppingConfigCommonModeB_r13_val",                 NULL,   0,           iptr:&sib2_interval_DLHoppingConfigCommonModeB_r13_val,   defintval:0,            TYPE_UINT,       0}, \
-{"sib2_interval_ULHoppingConfigCommonModeA_r13",     NULL,   0,           strptr:&sib2_interval_ULHoppingConfigCommonModeA_r13,     defstrval:"FDD",         TYPE_STRING,       0}, \
-{"sib2_interval_ULHoppingConfigCommonModeA_r13_val", NULL,   0,           iptr:&sib2_interval_ULHoppingConfigCommonModeA_r13_val, defintval:4,        TYPE_UINT,       0}, \
-{"sib2_interval_ULHoppingConfigCommonModeB_r13",                     NULL,   0,           strptr:&sib2_interval_ULHoppingConfigCommonModeB_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
-{"sib2_interval_ULHoppingConfigCommonModeB_r13_val",                 NULL,   0,           iptr:&sib2_interval_ULHoppingConfigCommonModeB_r13_val,   defintval:0,            TYPE_UINT,       0}, \
-{"sib2_mpdcch_pdsch_hoppingOffset_r13",                              NULL,   0,           iptr:&sib2_mpdcch_pdsch_hoppingOffset_r13,                defintval:1,             TYPE_UINT,         0} \
+
+#define SIB2_FREQ_HOPPING_R13_DESC(eMTCconfig) {			\
+{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13,                      NULL,   0,           iptr:&eMTCconfig.sib2_mpdcch_pdsch_hoppingNB_r13,                  defintval:0,            TYPE_UINT,       0}, \
+{"sib2_interval_DLHoppingConfigCommonModeA_r13",                     NULL,   0,           strptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeA_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
+{"sib2_interval_DLHoppingConfigCommonModeA_r13_val",                 NULL,   0,           iptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeA_r13_val,   defintval:0,            TYPE_UINT,       0}, \
+{"sib2_interval_DLHoppingConfigCommonModeB_r13",                     NULL,   0,           strptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeB_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
+{"sib2_interval_DLHoppingConfigCommonModeB_r13_val",                 NULL,   0,           iptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeB_r13_val,   defintval:0,            TYPE_UINT,       0}, \
+{"sib2_interval_ULHoppingConfigCommonModeA_r13",     NULL,   0,           strptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13,     defstrval:"FDD",         TYPE_STRING,       0}, \
+{"sib2_interval_ULHoppingConfigCommonModeA_r13_val", NULL,   0,           iptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val, defintval:4,        TYPE_UINT,       0}, \
+{"sib2_interval_ULHoppingConfigCommonModeB_r13",                     NULL,   0,           strptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeB_r13,       defstrval:"FDD",            TYPE_STRING,       0}, \
+{"sib2_interval_ULHoppingConfigCommonModeB_r13_val",                 NULL,   0,           iptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeB_r13_val,   defintval:0,            TYPE_UINT,       0}, \
+{"sib2_mpdcch_pdsch_hoppingOffset_r13",                              NULL,   0,           iptr:&eMTCconfig.sib2_mpdcch_pdsch_hoppingOffset_r13,                defintval:1,             TYPE_UINT,         0} \
 }
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
index 7f55aa8d23..911289ef7a 100755
--- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
@@ -276,7 +276,8 @@ generate_Msg2(module_id_t module_idP, int CC_idP, frame_t frameP,
   if (absSF > absSF_Msg2)
     return;                     // we're not ready yet, need to be to start ==  
 
-  if (cc[CC_idP].radioResourceConfigCommon_BR) {
+  if (cc[CC_idP].mib->message.schedulingInfoSIB1_BR_r13 > 0 && 
+      cc[CC_idP].radioResourceConfigCommon_BR) {
 
     ext4_prach = cc[CC_idP].radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
     prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13;
@@ -606,7 +607,8 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
   int             pucchreps[4] = { 1, 1, 1, 1 };
   int             n1pucchan[4] = { 0, 0, 0, 0 };
 
-  if (cc[CC_idP].radioResourceConfigCommon_BR) {
+  if (cc[CC_idP].mib->message.schedulingInfoSIB1_BR_r13 > 0 && 
+      cc[CC_idP].radioResourceConfigCommon_BR) {
 
     ext4_prach = cc[CC_idP].radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
     ext4_pucch = cc[CC_idP].radioResourceConfigCommon_BR->ext4->pucch_ConfigCommon_v1310;
@@ -656,7 +658,7 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
     N_RB_DL = to_prb(cc[CC_idP].mib->message.dl_Bandwidth);
 
     UE_id = find_UE_id(module_idP, ra->rnti);
-    AssertFatal(UE_id >= 0, "Can't find UE for t-crnti\n");
+    AssertFatal(UE_id >= 0, "Can't find UE for t-crnti %x\n",ra->rnti);
 
     // set HARQ process round to 0 for this UE
 
@@ -1361,18 +1363,21 @@ initiate_ra_proc(module_id_t module_idP,
     COMMON_channels_t *cc = &RC.mac[module_idP]->common_channels[CC_id];
     RA_t *ra = &cc->ra[0];
 
+    static uint8_t failure_cnt = 0;
 
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 
     struct PRACH_ConfigSIB_v1310 *ext4_prach = NULL;
     PRACH_ParametersListCE_r13_t *prach_ParametersListCE_r13 = NULL;
   
-    static uint8_t failure_cnt = 0;
 
-    if (cc->radioResourceConfigCommon_BR
-	&& cc->radioResourceConfigCommon_BR->ext4) {
-	ext4_prach = cc->radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
-	prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13;
+
+    if (cc->mib->message.schedulingInfoSIB1_BR_r13>0) {
+      AssertFatal(cc->radioResourceConfigCommon_BR != NULL,"radioResourceConfigCommon_BR is null\n");
+      AssertFatal(cc->radioResourceConfigCommon_BR->ext4 != NULL, "radioResourceConfigCommon_BR->ext4 is null\n");
+      ext4_prach = cc->radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
+      AssertFatal(ext4_prach!=NULL,"ext4_prach is null\n");
+      prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13;
     }
 
 #endif /* #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) */
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 7e1ea7be67..1abe817aac 100755
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -2704,7 +2704,7 @@ void dlsch_scheduler_qos_multiplexing(module_id_t Mod_id, int frameP, sub_frame_
 }
 
 
-#ifdef Rel14
+#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 //------------------------------------------------------------------------------
 void
 schedule_ue_spec_br(
@@ -2713,9 +2713,9 @@ schedule_ue_spec_br(
 		    sub_frame_t   subframeP
 		    ) {
   int CC_id = 0,UE_id;
-  eNB_MAC_INST                        *eNB = RC.mac[module_idP];
-  COMMON_channels_t                    *cc = eNB->common_channels;
-  UE_list_t                      *UE_list  = &eNB->UE_list;
+  eNB_MAC_INST                        *mac = RC.mac[module_idP];
+  COMMON_channels_t                    *cc = mac->common_channels;
+  UE_list_t                      *UE_list  = &mac->UE_list;
   UE_TEMPLATE       *UE_template;
   UE_sched_ctrl     *ue_sched_ctl;
   int32_t                        tpc=1;
@@ -2749,11 +2749,13 @@ schedule_ue_spec_br(
   uint32_t        ackNAK_absSF;
   int             first_rb;
 
-  dl_req = &eNB->DL_req[CC_id].dl_config_request_body;
+  dl_req = &mac->DL_req[CC_id].dl_config_request_body;
   dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
 
   if ((frameP&1) == 0) return;
 
+  if (cc[CC_id].mib->message.schedulingInfoSIB1_BR_r13 ==0) return;
+
   if (cc[CC_id].radioResourceConfigCommon_BR) {
 
     ext4_prach = cc[CC_id].radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
@@ -3121,7 +3123,7 @@ schedule_ue_spec_br(
           if (opt_enabled == 1) {
             trace_pdu(1, (uint8_t *)UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
                       TBS, module_idP, 3, UE_RNTI(module_idP,UE_id),
-                      eNB->frame, eNB->subframe,0,0);
+                      mac->frame, mac->subframe,0,0);
             LOG_D(OPT,"[eNB %d][DLSCH] CC_id %d Frame %d  rnti %x  with size %d\n",
                   module_idP, CC_id, frameP, UE_RNTI(module_idP,UE_id), TBS);
           }
@@ -3134,7 +3136,7 @@ schedule_ue_spec_br(
 
           /* TODO: fix how we deal with power, unit is not dBm, it's special from nfapi */
 	  normalized_rx_power = (5*ue_sched_ctl->pucch1_snr[CC_id]-640)/10+30;
-	  target_rx_power = eNB->puCch10xSnr/10+30;
+	  target_rx_power = mac->puCch10xSnr/10+30;
 	    
           // this assumes accumulated tpc
 	  // make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
@@ -3241,7 +3243,7 @@ schedule_ue_spec_br(
 	  memset ((void *) dl_config_pdu, 0, sizeof (nfapi_dl_config_request_pdu_t));
       dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE;
       dl_config_pdu->pdu_size = (uint8_t) (2 + sizeof (nfapi_dl_config_dlsch_pdu));
-      dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = eNB->pdu_index[CC_id];
+      dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = mac->pdu_index[CC_id];
       dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti;
       dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = 2;   // format 1A/1B/1D
       dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = 0;     // localized
@@ -3273,18 +3275,18 @@ schedule_ue_spec_br(
       dl_req->number_pdu++;
 
       // DL request
-      eNB->TX_req[CC_id].sfn_sf = (frameP << 4) + subframeP;
-      TX_req = &eNB->TX_req[CC_id].tx_request_body.tx_pdu_list[eNB->TX_req[CC_id].tx_request_body.number_of_pdus];
+      mac->TX_req[CC_id].sfn_sf = (frameP << 4) + subframeP;
+      TX_req = &mac->TX_req[CC_id].tx_request_body.tx_pdu_list[mac->TX_req[CC_id].tx_request_body.number_of_pdus];
       TX_req->pdu_length = get_TBS_DL(UE_template->mcs[harq_pid],
 				      6);
-      TX_req->pdu_index = eNB->pdu_index[CC_id]++;
+      TX_req->pdu_index = mac->pdu_index[CC_id]++;
       TX_req->num_segments = 1;
       TX_req->segments[0].segment_length = TX_req->pdu_length;
-      TX_req->segments[0].segment_data = eNB->UE_list.DLSCH_pdu[CC_id][0][(unsigned char) UE_id].payload[0];
-      eNB->TX_req[CC_id].tx_request_body.number_of_pdus++;
+      TX_req->segments[0].segment_data = mac->UE_list.DLSCH_pdu[CC_id][0][(unsigned char) UE_id].payload[0];
+      mac->TX_req[CC_id].tx_request_body.number_of_pdus++;
 
       ackNAK_absSF = absSF + 4;
-      ul_req = &eNB->UL_req_tmp[CC_id][ackNAK_absSF % 10].ul_config_request_body;
+      ul_req = &mac->UL_req_tmp[CC_id][ackNAK_absSF % 10].ul_config_request_body;
       ul_config_pdu = &ul_req->ul_config_pdu_list[ul_req->number_of_pdus];
       
       ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE;
@@ -3309,10 +3311,10 @@ schedule_ue_spec_br(
       }
       ul_req->number_of_pdus++;
       T (T_ENB_MAC_UE_DL_PDU_WITH_DATA, T_INT (module_idP), T_INT (CC_id), T_INT (rnti), T_INT (frameP), T_INT (subframeP),
-	 T_INT (0 /*harq_pid always 0? */ ), T_BUFFER (&eNB->UE_list.DLSCH_pdu[CC_id][0][UE_id].payload[0], TX_req->pdu_length));
+	 T_INT (0 /*harq_pid always 0? */ ), T_BUFFER (&mac->UE_list.DLSCH_pdu[CC_id][0][UE_id].payload[0], TX_req->pdu_length));
       
       if (opt_enabled == 1) {
-	trace_pdu (1, (uint8_t *) eNB->UE_list.DLSCH_pdu[CC_id][0][(unsigned char) UE_id].payload[0], TX_req->pdu_length , UE_id, 3, rnti, frameP, subframeP, 0, 0);
+	trace_pdu (1, (uint8_t *) mac->UE_list.DLSCH_pdu[CC_id][0][(unsigned char) UE_id].payload[0], TX_req->pdu_length , UE_id, 3, rnti, frameP, subframeP, 0, 0);
 	LOG_D (OPT, "[eNB %d][DLSCH] CC_id %d Frame %d trace pdu for rnti %x with size %d\n", module_idP, CC_id, frameP, rnti, TX_req->pdu_length );
       }
 
@@ -3818,6 +3820,7 @@ void schedule_PCH(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
 	  // dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector                    = ;
 
 	// Rel10 fields
+
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 	dl_config_pdu->dlsch_pdu.dlsch_pdu_rel10.pdsch_start                           = 3;
 #endif
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
index ba2e7f1ada..750936cfea 100755
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
@@ -31,9 +31,9 @@ log_config = {
       global_log_verbosity                  ="medium";
       hw_log_level                          ="info";
       hw_log_verbosity                      ="medium";
-      phy_log_level                         ="debug";
+      phy_log_level                         ="info";
       phy_log_verbosity                     ="medium";
-      mac_log_level                         ="debug";
+      mac_log_level                         ="info";
       mac_log_verbosity                     ="high";
       rlc_log_level                         ="info";
       rlc_log_verbosity                     ="medium";
-- 
2.26.2