diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index d18a7a40bd7270c1fe2da9dc80699bd330702636..6450e7d7db181016d7400c246f51d2d56c001829 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -333,7 +333,7 @@ add_custom_command (
 add_list2_option(NR_RRC_ASN1_VERSION "Rel15" "ASN.1 version of NR_RRC interface")
 
 if (${NR_RRC_ASN1_VERSION} STREQUAL "Rel15")
-  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/NR/MESSAGES/ans1c/ASN1_files/NR-RRC-Definitions.asn)
+  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn)
 endif  (${NR_RRC_ASN1_VERSION} STREQUAL "Rel15")
 
 set (NR_RRC_FULL_DIR ${asn1_generated_dir}/${NR_RRC_ASN1_VERSION})
diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h
index efb63eb70b97b47c13e63cf969341879a1a7a608..86612d3b5b2eb289e26dd30ed5de532873cacd48 100644
--- a/openair2/COMMON/rrc_messages_types.h
+++ b/openair2/COMMON/rrc_messages_types.h
@@ -64,6 +64,8 @@ typedef UL_DCCH_Message_t       RrcUlDcchMessage;
 
 #define NBIOTRRC_CONFIGURATION_REQ(mSGpTR)   (mSGpTR)->ittiMsg.nbiotrrc_configuration_req
 
+#define NRRRC_CONFIGURATION_REQ(mSGpTR)   (mSGpTR)->ittiMsg.nrrrc_configuration_req
+
 #define NAS_KENB_REFRESH_REQ(mSGpTR)    (mSGpTR)->ittiMsg.nas_kenb_refresh_req
 #define NAS_CELL_SELECTION_REQ(mSGpTR)  (mSGpTR)->ittiMsg.nas_cell_selection_req
 #define NAS_CONN_ESTABLI_REQ(mSGpTR)    (mSGpTR)->ittiMsg.nas_conn_establi_req
@@ -87,13 +89,13 @@ typedef struct RrcStateInd_s {
 
 // eNB: ENB_APP -> RRC messages
 typedef struct RrcConfigurationReq_s {
-  uint32_t            cell_identity;
+  uint32_t                cell_identity;
 
-  uint16_t            tac;
+  uint16_t                tac;
 
-  uint16_t            mcc;
-  uint16_t            mnc;
-  uint8_t             mnc_digit_length;
+  uint16_t                mcc;
+  uint16_t                mnc;
+  uint8_t                 mnc_digit_length;
 
   
   paging_drx_t            default_drx;
@@ -171,159 +173,250 @@ typedef struct RrcConfigurationReq_s {
 } RrcConfigurationReq;
 #define MAX_NUM_NBIOT_CELEVELS    3
 typedef struct NbIoTRrcConfigurationReq_s {
-  uint32_t            cell_identity;
+  uint32_t                cell_identity;
 
-  uint16_t            tac;
+  uint16_t                tac;
 
-  uint16_t	      mcc;
-  uint16_t	      mnc;
-  uint8_t	      mnc_digit_length;
-  lte_frame_type_t	  frame_type;
+  uint16_t                mcc;
+  uint16_t                mnc;
+  uint8_t                 mnc_digit_length;
+  lte_frame_type_t        frame_type;
   uint8_t                 tdd_config;
   uint8_t                 tdd_config_s;
   lte_prefix_type_t       prefix_type;
-  lte_prefix_type_t	  prefix_type_UL;
+  lte_prefix_type_t       prefix_type_UL;
   int16_t                 eutra_band;
   uint32_t                downlink_frequency;
   int32_t                 uplink_frequency_offset;
   int16_t                 Nid_cell;// for testing, change later
   int16_t                 N_RB_DL;// for testing, change later
   //RACH
-  long					  rach_raResponseWindowSize_NB;
-  long					  rach_macContentionResolutionTimer_NB;
-  long					  rach_powerRampingStep_NB;
-  long					  rach_preambleInitialReceivedTargetPower_NB;
-  long					  rach_preambleTransMax_CE_NB;
+  long                    rach_raResponseWindowSize_NB;
+  long                    rach_macContentionResolutionTimer_NB;
+  long                    rach_powerRampingStep_NB;
+  long                    rach_preambleInitialReceivedTargetPower_NB;
+  long                    rach_preambleTransMax_CE_NB;
   //BCCH
-  long					  bcch_modificationPeriodCoeff_NB;
+  long                    bcch_modificationPeriodCoeff_NB;
   //PCCH
-  long					  pcch_defaultPagingCycle_NB;
-  long					  pcch_nB_NB;
-  long					  pcch_npdcch_NumRepetitionPaging_NB;
+  long                    pcch_defaultPagingCycle_NB;
+  long                    pcch_nB_NB;
+  long                    pcch_npdcch_NumRepetitionPaging_NB;
   //NPRACH
-  long					  nprach_CP_Length;
-  long					  nprach_rsrp_range;
-  long					  nprach_Periodicity[MAX_NUM_NBIOT_CELEVELS];
-  long					  nprach_StartTime[MAX_NUM_NBIOT_CELEVELS];
-  long					  nprach_SubcarrierOffset[MAX_NUM_NBIOT_CELEVELS];
-  long					  nprach_NumSubcarriers[MAX_NUM_NBIOT_CELEVELS];
-  long					  numRepetitionsPerPreambleAttempt_NB[MAX_NUM_NBIOT_CELEVELS];
-  long					  nprach_SubcarrierMSG3_RangeStart;
-  long					  maxNumPreambleAttemptCE_NB;
-  long					  npdcch_NumRepetitions_RA[MAX_NUM_NBIOT_CELEVELS];
-  long					  npdcch_StartSF_CSS_RA[MAX_NUM_NBIOT_CELEVELS];
-  long					  npdcch_Offset_RA[MAX_NUM_NBIOT_CELEVELS];
+  long                    nprach_CP_Length;
+  long                    nprach_rsrp_range;
+  long                    nprach_Periodicity[MAX_NUM_NBIOT_CELEVELS];
+  long                    nprach_StartTime[MAX_NUM_NBIOT_CELEVELS];
+  long                    nprach_SubcarrierOffset[MAX_NUM_NBIOT_CELEVELS];
+  long                    nprach_NumSubcarriers[MAX_NUM_NBIOT_CELEVELS];
+  long                    numRepetitionsPerPreambleAttempt_NB[MAX_NUM_NBIOT_CELEVELS];
+  long                    nprach_SubcarrierMSG3_RangeStart;
+  long                    maxNumPreambleAttemptCE_NB;
+  long                    npdcch_NumRepetitions_RA[MAX_NUM_NBIOT_CELEVELS];
+  long                    npdcch_StartSF_CSS_RA[MAX_NUM_NBIOT_CELEVELS];
+  long                    npdcch_Offset_RA[MAX_NUM_NBIOT_CELEVELS];
   //NPDSCH
-  long					  npdsch_nrs_Power;
+  long                    npdsch_nrs_Power;
   //NPUSCH
-  long					  npusch_ack_nack_numRepetitions_NB;
-  long					  npusch_srs_SubframeConfig_NB;
-  long					  npusch_threeTone_CyclicShift_r13;
-  long					  npusch_sixTone_CyclicShift_r13;
-  BOOLEAN_t				  npusch_groupHoppingEnabled;
-  long					  npusch_groupAssignmentNPUSCH_r13;
+  long                    npusch_ack_nack_numRepetitions_NB;
+  long                    npusch_srs_SubframeConfig_NB;
+  long                    npusch_threeTone_CyclicShift_r13;
+  long                    npusch_sixTone_CyclicShift_r13;
+  BOOLEAN_t               npusch_groupHoppingEnabled;
+  long                    npusch_groupAssignmentNPUSCH_r13;
 
   //DL_GapConfig
-  long					  dl_GapThreshold_NB;
-  long	 				  dl_GapPeriodicity_NB;
-  long	 				  dl_GapDurationCoeff_NB;
+  long                    dl_GapThreshold_NB;
+  long                    dl_GapPeriodicity_NB;
+  long                    dl_GapDurationCoeff_NB;
   //Uplink power control Common
-  long					  npusch_p0_NominalNPUSCH;
-  long					  npusch_alpha;
-  long					  deltaPreambleMsg3;
+  long                    npusch_p0_NominalNPUSCH;
+  long                    npusch_alpha;
+  long                    deltaPreambleMsg3;
   //UE timers and constants
-  long					  ue_TimersAndConstants_t300_NB;
-  long					  ue_TimersAndConstants_t301_NB;
-  long					  ue_TimersAndConstants_t310_NB;
-  long					  ue_TimersAndConstants_t311_NB;
-  long					  ue_TimersAndConstants_n310_NB;
-  long					  ue_TimersAndConstants_n311_NB;
+  long                    ue_TimersAndConstants_t300_NB;
+  long                    ue_TimersAndConstants_t301_NB;
+  long                    ue_TimersAndConstants_t310_NB;
+  long                    ue_TimersAndConstants_t311_NB;
+  long                    ue_TimersAndConstants_n310_NB;
+  long                    ue_TimersAndConstants_n311_NB;
 } NbIoTRrcConfigurationReq;
 
-// eNB: ENB_APP -> RRC messages
-typedef struct RrcConfigurationReq_s {
-  uint32_t            cell_identity;
-
-  uint16_t            tac;
-
-  uint16_t            mcc;
-  uint16_t            mnc;
-  uint8_t             mnc_digit_length;
-
-  /*
-  paging_drx_t            default_drx;
+// gNB: GNB_APP -> RRC messages
+typedef struct NRRrcConfigurationReq_s {
+  uint32_t                cell_identity;
+  uint16_t                tac;
+  uint16_t                mcc;
+  uint16_t                mnc;
+  uint8_t                 mnc_digit_length;
   int16_t                 nb_cc;
   lte_frame_type_t        frame_type[MAX_NUM_CCs];
   uint8_t                 tdd_config[MAX_NUM_CCs];
   uint8_t                 tdd_config_s[MAX_NUM_CCs];
   lte_prefix_type_t       prefix_type[MAX_NUM_CCs];
-  uint8_t                 pbch_repetition[MAX_NUM_CCs];
   int16_t                 eutra_band[MAX_NUM_CCs];
   uint32_t                downlink_frequency[MAX_NUM_CCs];
   int32_t                 uplink_frequency_offset[MAX_NUM_CCs];
   int16_t                 Nid_cell[MAX_NUM_CCs];// for testing, change later
   int16_t                 N_RB_DL[MAX_NUM_CCs];// for testing, change later
   int                     nb_antenna_ports[MAX_NUM_CCs];
-  long                    prach_root[MAX_NUM_CCs];
-  long                    prach_config_index[MAX_NUM_CCs];
-  BOOLEAN_t               prach_high_speed[MAX_NUM_CCs];
-  long                    prach_zero_correlation[MAX_NUM_CCs];
-  long                    prach_freq_offset[MAX_NUM_CCs];
-  long                    pucch_delta_shift[MAX_NUM_CCs];
-  long                    pucch_nRB_CQI[MAX_NUM_CCs];
-  long                    pucch_nCS_AN[MAX_NUM_CCs];
-#if !defined(Rel10) && !defined(Rel14)
-  long                    pucch_n1_AN[MAX_NUM_CCs];
-#endif
-  long                    pdsch_referenceSignalPower[MAX_NUM_CCs];
-  long                    pdsch_p_b[MAX_NUM_CCs];
-  long                    pusch_n_SB[MAX_NUM_CCs];
-  long                    pusch_hoppingMode[MAX_NUM_CCs];
-  long                    pusch_hoppingOffset[MAX_NUM_CCs];
-  BOOLEAN_t               pusch_enable64QAM[MAX_NUM_CCs];
-  BOOLEAN_t               pusch_groupHoppingEnabled[MAX_NUM_CCs];
-  long                    pusch_groupAssignment[MAX_NUM_CCs];
-  BOOLEAN_t               pusch_sequenceHoppingEnabled[MAX_NUM_CCs];
-  long                    pusch_nDMRS1[MAX_NUM_CCs];
-  long                    phich_duration[MAX_NUM_CCs];
-  long                    phich_resource[MAX_NUM_CCs];
-  BOOLEAN_t               srs_enable[MAX_NUM_CCs];
-  long                    srs_BandwidthConfig[MAX_NUM_CCs];
-  long                    srs_SubframeConfig[MAX_NUM_CCs];
-  BOOLEAN_t               srs_ackNackST[MAX_NUM_CCs];
-  BOOLEAN_t               srs_MaxUpPts[MAX_NUM_CCs];
-  long                    pusch_p0_Nominal[MAX_NUM_CCs];
-  long                    pusch_alpha[MAX_NUM_CCs];
-  long                    pucch_p0_Nominal[MAX_NUM_CCs];
-  long                    msg3_delta_Preamble[MAX_NUM_CCs];
-  long                    ul_CyclicPrefixLength[MAX_NUM_CCs];
-  e_DeltaFList_PUCCH__deltaF_PUCCH_Format1                    pucch_deltaF_Format1[MAX_NUM_CCs];
-  e_DeltaFList_PUCCH__deltaF_PUCCH_Format1b                   pucch_deltaF_Format1b[MAX_NUM_CCs];
-  e_DeltaFList_PUCCH__deltaF_PUCCH_Format2                    pucch_deltaF_Format2[MAX_NUM_CCs];
-  e_DeltaFList_PUCCH__deltaF_PUCCH_Format2a                   pucch_deltaF_Format2a[MAX_NUM_CCs];
-  e_DeltaFList_PUCCH__deltaF_PUCCH_Format2b                   pucch_deltaF_Format2b[MAX_NUM_CCs];
-  long                    rach_numberOfRA_Preambles[MAX_NUM_CCs];
-  BOOLEAN_t               rach_preamblesGroupAConfig[MAX_NUM_CCs];
-  long                    rach_sizeOfRA_PreamblesGroupA[MAX_NUM_CCs];
-  long                    rach_messageSizeGroupA[MAX_NUM_CCs];
-  e_RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB                    rach_messagePowerOffsetGroupB[MAX_NUM_CCs];
-  long                    rach_powerRampingStep[MAX_NUM_CCs];
-  long                    rach_preambleInitialReceivedTargetPower[MAX_NUM_CCs];
-  long                    rach_preambleTransMax[MAX_NUM_CCs];
-  long                    rach_raResponseWindowSize[MAX_NUM_CCs];
-  long                    rach_macContentionResolutionTimer[MAX_NUM_CCs];
-  long                    rach_maxHARQ_Msg3Tx[MAX_NUM_CCs];
-  long                    bcch_modificationPeriodCoeff[MAX_NUM_CCs];
-  long                    pcch_defaultPagingCycle[MAX_NUM_CCs];
-  long                    pcch_nB[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_t300[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_t301[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_t310[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_t311[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_n310[MAX_NUM_CCs];
-  long                    ue_TimersAndConstants_n311[MAX_NUM_CCs];
-  long                    ue_TransmissionMode[MAX_NUM_CCs];
-   */
+
+  ///NR
+  //NR FrequencyInfoDL
+  long                    absoluteFrequencySSB[MAX_NUM_CCs];
+  uint32_t                ssb_SubcarrierOffset[MAX_NUM_CCs];
+  long                    DL_FreqBandIndicatorNR[MAX_NUM_CCs];
+  long                    DL_absoluteFrequencyPointA[MAX_NUM_CCs];
+
+  //NR DL SCS-SpecificCarrier
+  uint32_t                DL_offsetToCarrier[MAX_NUM_CCs];
+  long                    DL_SubcarrierSpacing[MAX_NUM_CCs];
+  long                    DL_SCS_SpecificCarrier_k0[MAX_NUM_CCs];
+  uint32_t                DL_carrierBandwidth[MAX_NUM_CCs];
+
+  //NR BWP-DownlinkCommon
+  uint32_t                DL_locationAndBandwidth[MAX_NUM_CCs];
+  //NR_prefix_type_t      DL_prefix_type[MAX_NUM_CCs];     
+
+  //NR FrequencyInfoUL
+  long                    UL_FreqBandIndicatorNR[MAX_NUM_CCs];
+  long                    UL_absoluteFrequencyPointA[MAX_NUM_CCs];
+  long                    FrequencyInfoUL_p_Max[MAX_NUM_CCs];
+  long                    frequencyShift7p5khz[MAX_NUM_CCs];
+
+  //NR UL SCS-SpecificCarrier
+  uint32_t                UL_offsetToCarrier[MAX_NUM_CCs];
+  long                    UL_SubcarrierSpacing[MAX_NUM_CCs];
+  long                    UL_SCS_SpecificCarrier_k0[MAX_NUM_CCs];
+  uint32_t                UL_carrierBandwidth[MAX_NUM_CCs];
+
+  // NR BWP-UplinkCommon
+  uint32_t                UL_locationAndBandwidth[MAX_NUM_CCs];
+  //NR_prefix_type_t      UL_prefix_type[MAX_NUM_CCs]; 
+
+
+  long                    ssb_periodicityServingCell[MAX_NUM_CCs];
+  long                    dmrs_TypeA_Position[MAX_NUM_CCs];
+  long                    NIA_SubcarrierSpacing[MAX_NUM_CCs]; ///ServingCellConfigCommon Used only for non-initial access
+  long                    ss_PBCH_BlockPower[MAX_NUM_CCs];
+
+
+  //NR TDD-UL-DL-ConfigCommon
+  long                    referenceSubcarrierSpacing[MAX_NUM_CCs];
+  long                    dl_UL_TransmissionPeriodicity[MAX_NUM_CCs];
+  long                    nrofDownlinkSlots[MAX_NUM_CCs];
+  long                    nrofDownlinkSymbols[MAX_NUM_CCs];
+  long                    nrofUplinkSlots[MAX_NUM_CCs];
+  long                    nrofUplinkSymbols[MAX_NUM_CCs];
+
+  //NR RACH-ConfigCommon
+  long                    rach_totalNumberOfRA_Preambles[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[MAX_NUM_CCs];
+  long                    rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[MAX_NUM_CCs];
+  uint32_t                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four[MAX_NUM_CCs];
+  uint32_t                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight[MAX_NUM_CCs];
+  uint32_t                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen[MAX_NUM_CCs];
+  BOOLEAN_t               rach_groupBconfigured[MAX_NUM_CCs];
+  long                    rach_ra_Msg3SizeGroupA[MAX_NUM_CCs];
+  long                    rach_messagePowerOffsetGroupB[MAX_NUM_CCs];
+  long                    rach_numberOfRA_PreamblesGroupA[MAX_NUM_CCs];
+  long                    rach_ra_ContentionResolutionTimer[MAX_NUM_CCs];
+  long                    rsrp_ThresholdSSB[MAX_NUM_CCs];
+  long                    rsrp_ThresholdSSB_SUL[MAX_NUM_CCs];
+  long                    prach_RootSequenceIndex_choice[MAX_NUM_CCs];
+  uint32_t                prach_RootSequenceIndex_l839[MAX_NUM_CCs];
+  uint32_t                prach_RootSequenceIndex_l139[MAX_NUM_CCs];
+  long                    prach_msg1_SubcarrierSpacing[MAX_NUM_CCs];
+  long                    restrictedSetConfig[MAX_NUM_CCs];
+  long                    msg3_transformPrecoding[MAX_NUM_CCs];
+  //ssb-perRACH-OccasionAndCB-PreamblesPerSSB not sure
+
+  //NR RACH-ConfigGeneric
+  uint32_t                prach_ConfigurationIndex[MAX_NUM_CCs];
+  long                    prach_msg1_FDM[MAX_NUM_CCs];
+  long                    prach_msg1_FrequencyStart[MAX_NUM_CCs];
+  uint32_t                zeroCorrelationZoneConfig[MAX_NUM_CCs];
+  long                    preambleReceivedTargetPower[MAX_NUM_CCs];
+  long                    preambleTransMax[MAX_NUM_CCs];
+  long                    powerRampingStep[MAX_NUM_CCs];
+  long                    ra_ResponseWindow[MAX_NUM_CCs];
+
+  //NR PUSCH-ConfigCommon
+  BOOLEAN_t               groupHoppingEnabledTransformPrecoding[MAX_NUM_CCs];
+  long                    msg3_DeltaPreamble[MAX_NUM_CCs];
+  long                    p0_NominalWithGrant[MAX_NUM_CCs];
+
+  ///NR PUSCH-TimeDomainResourceAllocation
+  uint32_t                PUSCH_TimeDomainResourceAllocation_k2[MAX_NUM_CCs];
+  long                    PUSCH_TimeDomainResourceAllocation_mappingType[MAX_NUM_CCs];
+
+  //NR PUCCH-ConfigCommon
+  long                    pucch_GroupHopping[MAX_NUM_CCs];
+  long                    p0_nominal[MAX_NUM_CCs];
+
+  //NR PDSCH-ConfigCOmmon
+  //NR PDSCH-TimeDomainResourceAllocation
+  uint32_t                PDSCH_TimeDomainResourceAllocation_k0[MAX_NUM_CCs];
+  long                    PDSCH_TimeDomainResourceAllocation_mappingType[MAX_NUM_CCs];
+
+
+  //NR RateMatchPattern  is used to configure one rate matching pattern for PDSCH
+  long                    rateMatchPatternId[MAX_NUM_CCs];
+  long                    RateMatchPattern_patternType[MAX_NUM_CCs];
+  long                    symbolsInResourceBlock[MAX_NUM_CCs];
+  long                    periodicityAndPattern[MAX_NUM_CCs];
+  long                    RateMatchPattern_controlResourceSet[MAX_NUM_CCs]; ///ControlResourceSetId
+  long                    RateMatchPattern_subcarrierSpacing[MAX_NUM_CCs];
+  long                    RateMatchPattern_mode[MAX_NUM_CCs];
+
+  //NR PDCCH-ConfigCommon
+  long                    searchSpaceSIB1[MAX_NUM_CCs];
+  long                    searchSpaceOtherSystemInformation[MAX_NUM_CCs];
+  long                    pagingSearchSpace[MAX_NUM_CCs];
+  long                    ra_SearchSpace[MAX_NUM_CCs];
+  long                    rach_ra_ControlResourceSet[MAX_NUM_CCs];  
+  //NR PDCCH-ConfigCommon commonControlResourcesSets
+  long                    PDCCH_common_controlResourceSetId[MAX_NUM_CCs];
+  long                    PDCCH_common_ControlResourceSet_duration[MAX_NUM_CCs];
+  long                    PDCCH_cce_REG_MappingType[MAX_NUM_CCs];
+  long                    PDCCH_reg_BundleSize[MAX_NUM_CCs];
+  long                    PDCCH_interleaverSize[MAX_NUM_CCs];
+  long                    PDCCH_shiftIndex[MAX_NUM_CCs];  
+  long                    PDCCH_precoderGranularity[MAX_NUM_CCs]; //Corresponds to L1 parameter 'CORESET-precoder-granuality'
+  BOOLEAN_t               tci_PresentInDCI[MAX_NUM_CCs];
+
+  //NR PDCCH-ConfigCommon commonSearchSpaces
+  long                    SearchSpaceId[MAX_NUM_CCs];
+  long                    commonSearchSpaces_controlResourceSetId[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_choice[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl1[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl2[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl4[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl5[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl8[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl10[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl16[MAX_NUM_CCs];
+  long                    SearchSpace_monitoringSlotPeriodicityAndOffset_sl20[MAX_NUM_CCs];
+  long                    SearchSpace_nrofCandidates_aggregationLevel1[MAX_NUM_CCs];
+  long                    SearchSpace_nrofCandidates_aggregationLevel2[MAX_NUM_CCs];
+  long                    SearchSpace_nrofCandidates_aggregationLevel4[MAX_NUM_CCs];
+  long                    SearchSpace_nrofCandidates_aggregationLevel8[MAX_NUM_CCs];
+  long                    SearchSpace_nrofCandidates_aggregationLevel16[MAX_NUM_CCs];
+  long                    SearchSpace_searchSpaceType[MAX_NUM_CCs];
+  long                    Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1[MAX_NUM_CCs];
+  long                    Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2[MAX_NUM_CCs];
+  long                    Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4[MAX_NUM_CCs];
+  long                    Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8[MAX_NUM_CCs];
+  long                    Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16[MAX_NUM_CCs];  
+  long                    Common_dci_Format2_3_monitoringPeriodicity[MAX_NUM_CCs];
+  long                    Common_dci_Format2_3_nrofPDCCH_Candidates[MAX_NUM_CCs];
+  long                    ue_Specific__dci_Formats[MAX_NUM_CCs];
+
+
 
 } gNB_RrcConfigurationReq;
 
diff --git a/openair2/ENB_APP/NRRRC_paramsvalues.h b/openair2/ENB_APP/NRRRC_paramsvalues.h
new file mode 100644
index 0000000000000000000000000000000000000000..2dfe59a7268be6d045a130df0dca363141c7e926
--- /dev/null
+++ b/openair2/ENB_APP/NRRRC_paramsvalues.h
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file openair2/GNB_APP/RRC_paramsvalues.h
+ * \brief macro definitions for RRC authorized and asn1 parameters values, to be used in paramdef_t/chechedparam_t structure initializations 
+ * \author Francois TABURET
+ * \date 2017
+ * \version 0.1
+ * \company NOKIA BellLabs France
+ * \email: francois.taburet@nokia-bell-labs.com
+ * \note
+ * \warning
+ */
+#ifndef __NRRRC_PARAMSVALUES__H__
+#define __NRRRC_PARAMSVALUES__H__
+/*    cell configuration section name */
+#define GNB_CONFIG_STRING_GNB_LIST								"gNBs"
+/* component carriers configuration section name */		
+#define GNB_CONFIG_STRING_COMPONENT_CARRIERS					"component_carriers"		 
+
+#define GNB_CONFIG_STRING_FRAME_TYPE							"frame_type"
+#define GNB_CONFIG_STRING_TDD_CONFIG							"tdd_config"
+#define GNB_CONFIG_STRING_TDD_CONFIG_S							"tdd_config_s"
+#define GNB_CONFIG_STRING_PREFIX_TYPE							"prefix_type"
+#define GNB_CONFIG_STRING_PREFIX_TYPE_UL						"prefix_type_UL"
+#define GNB_CONFIG_STRING_EUTRA_BAND							"eutra_band"
+#define GNB_CONFIG_STRING_DOWNLINK_FREQUENCY					"downlink_frequency"
+#define GNB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET				"uplink_frequency_offset"
+#define GNB_CONFIG_STRING_NID_CELL								"Nid_cell"
+#define GNB_CONFIG_STRING_N_RB_DL								"N_RB_DL"
+#define GNB_CONFIG_STRING_CELL_MBSFN							"Nid_cell_mbsfn"
+
+
+#define FRAMETYPE_OKVALUES                                      {"FDD","TDD"}
+#define FRAMETYPE_MODVALUES                                     { FDD, TDD} 
+
+#define TDDCFG(A)                                               TDD_Config__subframeAssignment_ ## A
+#define TDDCONFIG_OKRANGE                                       { TDDCFG(sa0), TDDCFG(sa6)}   
+
+#define TDDCFGS(A)                                              TDD_Config__specialSubframePatterns_ ## A
+#define TDDCONFIGS_OKRANGE                                      { TDDCFGS(ssp0), TDDCFGS(ssp8)}   
+
+#define PREFIX_OKVALUES                                         {"NORMAL","EXTENDED"}
+#define PREFIX_MODVALUES                                        { NORMAL, EXTENDED} 
+
+#define PREFIXUL_OKVALUES                                       {"NORMAL","EXTENDED"}
+#define PREFIXUL_MODVALUES                                      { NORMAL, EXTENDED} 
+
+#define NRBDL_OKVALUES                                          {6,15,25,50,75,100}
+
+#define UETIMER_T300_OKVALUES                                   {100,200,300,400,600,1000,1500,2000}
+#define UETT300(A)                                              UE_TimersAndConstants__t300_ ## A
+#define UETIMER_T300_MODVALUES                                  { UETT300(ms100), UETT300(ms200),UETT300(ms300),UETT300(ms400),UETT300(ms600),UETT300(ms1000),UETT300(ms1500),UETT300(ms2000)}           		
+
+#define UETIMER_T301_OKVALUES                                   {100,200,300,400,600,1000,1500,2000}
+#define UETT301(A)                                              UE_TimersAndConstants__t301_ ## A
+#define UETIMER_T301_MODVALUES                                  { UETT301(ms100), UETT301(ms200),UETT301(ms300),UETT301(ms400),UETT301(ms600),UETT301(ms1000),UETT301(ms1500),UETT301(ms2000)}
+
+#define UETIMER_T310_OKVALUES                                   {0,50,100,200,500,1000,2000}
+#define UETT310(A)                                              UE_TimersAndConstants__t310_ ## A
+#define UETIMER_T310_MODVALUES                                  { UETT310(ms0), UETT310(ms50),UETT310(ms100),UETT310(ms200),UETT310(ms500),UETT310(ms1000),UETT310(ms2000)}
+
+#define UETIMER_T311_OKVALUES                                   {1000,3110,5000,10000,15000,20000,31100}
+#define UETT311(A)                                              UE_TimersAndConstants__t311_ ## A
+#define UETIMER_T311_MODVALUES                                  { UETT311(ms1000), UETT311(ms3000),UETT311(ms5000),UETT311(ms10000),UETT311(ms15000),UETT311(ms20000),UETT311(ms30000)}
+
+#define UETIMER_N310_OKVALUES                                   {1,2,3,4,6,8,10,20}
+#define UETN310(A)                                              UE_TimersAndConstants__n310_ ## A
+#define UETIMER_N310_MODVALUES                                  { UETN310(n1), UETN310(n2),UETN310(n3),UETN310(n4),UETN310(n6),UETN310(n8),UETN310(n10),UETN310(n20)}
+
+#define UETIMER_N311_OKVALUES                                   {1,2,3,4,5,6,8,10}
+#define UETN311(A)                                              UE_TimersAndConstants__n311_ ## A
+#define UETIMER_N311_MODVALUES                                  { UETN311(n1), UETN311(n2),UETN311(n3),UETN311(n4),UETN311(n5),UETN311(n6),UETN311(n8),UETN311(n10)}
+
+#endif
diff --git a/openair2/ENB_APP/gnb_app.c b/openair2/ENB_APP/gnb_app.c
new file mode 100644
index 0000000000000000000000000000000000000000..ccef5e4663ab789334616e08f0aa49f0d2728a06
--- /dev/null
+++ b/openair2/ENB_APP/gnb_app.c
@@ -0,0 +1,291 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*
+                                gnb_app.c
+                             -------------------
+  AUTHOR  : Laurent Winckel, Sebastien ROUX, Lionel GAUTHIER, Navid Nikaein
+  COMPANY : EURECOM
+  EMAIL   : Lionel.Gauthier@eurecom.fr and Navid Nikaein
+*/
+
+#include <string.h>
+#include <stdio.h>
+
+#include "gnb_app.h"
+#include "gnb_config.h"
+#include "assertions.h"
+#include "common/ran_context.h"
+
+#include "log.h"
+
+#if defined(ENABLE_ITTI)
+# include "intertask_interface.h"
+# include "timer.h"
+# if defined(ENABLE_USE_MME)
+#   include "s1ap_eNB.h"
+#   include "sctp_eNB_task.h"
+#   include "gtpv1u_eNB_task.h"
+# endif
+
+extern unsigned char NB_gNB_INST;
+#endif
+
+extern RAN_CONTEXT_t RC;
+
+#if defined(ENABLE_ITTI)
+
+/*------------------------------------------------------------------------------*/
+# if defined(ENABLE_USE_MME)
+#   define ENB_REGISTER_RETRY_DELAY 10
+# endif
+
+/*------------------------------------------------------------------------------*/
+
+/*
+static void configure_phy(module_id_t enb_id, const Enb_properties_array_t* enb_properties)
+{
+  MessageDef *msg_p;
+  int CC_id;
+
+  msg_p = itti_alloc_new_message (TASK_ENB_APP, PHY_CONFIGURATION_REQ);
+
+  for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
+    PHY_CONFIGURATION_REQ (msg_p).frame_type[CC_id]              = enb_properties->properties[enb_id]->frame_type[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).prefix_type[CC_id]             = enb_properties->properties[enb_id]->prefix_type[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).downlink_frequency[CC_id]      = enb_properties->properties[enb_id]->downlink_frequency[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[CC_id] = enb_properties->properties[enb_id]->uplink_frequency_offset[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).nb_antennas_tx[CC_id]          = enb_properties->properties[enb_id]->nb_antennas_tx[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).nb_antennas_rx[CC_id]          = enb_properties->properties[enb_id]->nb_antennas_rx[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).tx_gain[CC_id]                 = enb_properties->properties[enb_id]->tx_gain[CC_id];
+    PHY_CONFIGURATION_REQ (msg_p).rx_gain[CC_id]                 = enb_properties->properties[enb_id]->rx_gain[CC_id];
+  }
+
+  itti_send_msg_to_task (TASK_PHY_ENB, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
+}
+*/
+
+/*------------------------------------------------------------------------------*/
+static void configure_rrc(uint32_t enb_id)
+{
+  MessageDef *msg_p = NULL;
+  //  int CC_id;
+
+  msg_p = itti_alloc_new_message (TASK_ENB_APP, RRC_CONFIGURATION_REQ);
+
+  if (RC.rrc[enb_id]) {
+    RCconfig_NRRRC(msg_p,enb_id, RC.rrc[enb_id]);
+    
+
+    LOG_I(ENB_APP,"Sending configuration message to RRC task\n");
+    itti_send_msg_to_task (TASK_RRC_GNB, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
+
+  }
+  else AssertFatal(0,"RRC context for eNB %d not allocated\n",enb_id);
+}
+
+/*------------------------------------------------------------------------------*/
+# if defined(ENABLE_USE_MME)
+static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//, const Enb_properties_array_t *enb_properties)
+{
+  uint32_t         enb_id;
+  MessageDef      *msg_p;
+  uint32_t         register_enb_pending = 0;
+
+  for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
+    {
+      s1ap_register_enb_req_t *s1ap_register_eNB;
+
+      /* note:  there is an implicit relationship between the data structure and the message name */
+      msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
+
+      RCconfig_S1(msg_p, enb_id);
+
+      if (enb_id == 0) RCconfig_gtpu();
+
+      s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
+      LOG_I(ENB_APP,"default drx %d\n",s1ap_register_eNB->default_drx);
+
+      LOG_I(ENB_APP,"[eNB %d] eNB_app_register for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
+
+      itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
+
+      register_enb_pending++;
+    }
+  }
+
+  return register_enb_pending;
+}
+# endif
+#endif
+
+/*------------------------------------------------------------------------------*/
+void *eNB_app_task(void *args_p)
+{
+#if defined(ENABLE_ITTI)
+  uint32_t                        enb_nb = RC.nb_inst; 
+  uint32_t                        enb_id_start = 0;
+  uint32_t                        enb_id_end = enb_id_start + enb_nb;
+# if defined(ENABLE_USE_MME)
+  uint32_t                        register_enb_pending;
+  uint32_t                        registered_enb;
+  long                            enb_register_retry_timer_id;
+# endif
+  uint32_t                        enb_id;
+  MessageDef                     *msg_p           = NULL;
+  const char                     *msg_name        = NULL;
+  instance_t                      instance;
+  int                             result;
+  /* for no gcc warnings */
+  (void)instance;
+
+  itti_mark_task_ready (TASK_ENB_APP);
+
+  LOG_I(PHY, "%s() Task ready initialise structures\n", __FUNCTION__);
+
+  RCconfig_L1();
+
+  RCconfig_macrlc();
+
+  LOG_I(PHY, "%s() RC.nb_L1_inst:%d\n", __FUNCTION__, RC.nb_L1_inst);
+
+  if (RC.nb_L1_inst>0) AssertFatal(l1_north_init_eNB()==0,"could not initialize L1 north interface\n");
+
+  AssertFatal (enb_nb <= RC.nb_inst,
+               "Number of eNB is greater than eNB defined in configuration file (%d/%d)!",
+               enb_nb, RC.nb_inst);
+
+  LOG_I(ENB_APP,"Allocating eNB_RRC_INST for %d instances\n",RC.nb_inst);
+
+  RC.rrc = (eNB_RRC_INST **)malloc(RC.nb_inst*sizeof(eNB_RRC_INST *));
+  LOG_I(PHY, "%s() RC.nb_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_inst, RC.rrc);
+
+  for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
+    RC.rrc[enb_id] = (eNB_RRC_INST*)malloc(sizeof(eNB_RRC_INST));
+    LOG_I(PHY, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, enb_id, RC.rrc[enb_id], enb_id+1, enb_id_end);
+    memset((void *)RC.rrc[enb_id],0,sizeof(eNB_RRC_INST));
+    configure_rrc(enb_id);
+  }
+
+# if defined(ENABLE_USE_MME)
+  /* Try to register each eNB */
+  registered_enb = 0;
+  register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+# else
+  /* Start L2L1 task */
+  msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
+  itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
+# endif
+
+  do {
+    // Wait for a message
+    itti_receive_msg (TASK_ENB_APP, &msg_p);
+
+    msg_name = ITTI_MSG_NAME (msg_p);
+    instance = ITTI_MSG_INSTANCE (msg_p);
+
+    switch (ITTI_MSG_ID(msg_p)) {
+    case TERMINATE_MESSAGE:
+      LOG_W(ENB_APP, " *** Exiting ENB_APP thread\n");
+      itti_exit_task ();
+      break;
+
+    case MESSAGE_TEST:
+      LOG_I(ENB_APP, "Received %s\n", ITTI_MSG_NAME(msg_p));
+      break;
+
+# if defined(ENABLE_USE_MME)
+
+    case S1AP_REGISTER_ENB_CNF:
+      LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
+            S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
+
+      DevAssert(register_enb_pending > 0);
+      register_enb_pending--;
+
+      /* Check if at least eNB is registered with one MME */
+      if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
+        registered_enb++;
+      }
+
+      /* Check if all register eNB requests have been processed */
+      if (register_enb_pending == 0) {
+        if (registered_enb == enb_nb) {
+          /* If all eNB are registered, start L2L1 task */
+          MessageDef *msg_init_p;
+
+          msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
+          itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
+
+        } else {
+          uint32_t not_associated = enb_nb - registered_enb;
+
+          LOG_W(ENB_APP, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
+                not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
+
+          /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
+          if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
+                           NULL, &enb_register_retry_timer_id) < 0) {
+            LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
+
+            sleep(ENB_REGISTER_RETRY_DELAY);
+            /* Restart the registration process */
+            registered_enb = 0;
+            register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+          }
+        }
+      }
+
+      break;
+
+    case S1AP_DEREGISTERED_ENB_IND:
+      LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
+            S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
+
+      /* TODO handle recovering of registration */
+      break;
+
+    case TIMER_HAS_EXPIRED:
+      LOG_I(ENB_APP, " Received %s: timer_id %ld\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
+
+      if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
+        /* Restart the registration process */
+        registered_enb = 0;
+        register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+      }
+
+      break;
+# endif
+
+    default:
+      LOG_E(ENB_APP, "Received unexpected message %s\n", msg_name);
+      break;
+    }
+
+    result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
+    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+  } while (1);
+
+#endif
+
+
+  return NULL;
+}
diff --git a/openair2/ENB_APP/gnb_app.h b/openair2/ENB_APP/gnb_app.h
new file mode 100644
index 0000000000000000000000000000000000000000..3fd33f38b62b1dfcb5bbcf9abeb1591973c8d545
--- /dev/null
+++ b/openair2/ENB_APP/gnb_app.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*
+                                gnb_app.h
+                             -------------------
+  AUTHOR  : Laurent Winckel, Sebastien ROUX, Lionel GAUTHIER, Navid Nikaein
+  COMPANY : EURECOM
+  EMAIL   : Lionel.Gauthier@eurecom.fr
+*/
+
+#ifndef GNB_APP_H_
+#define GNB_APP_H_
+
+#include <stdint.h>
+
+void *gNB_app_task(void *args_p);
+
+
+#endif /* GNB_APP_H_ */
diff --git a/openair2/ENB_APP/gnb_config.c b/openair2/ENB_APP/gnb_config.c
new file mode 100644
index 0000000000000000000000000000000000000000..9e341cd7ef136849f9379f86ed875d1bb1b4cb65
--- /dev/null
+++ b/openair2/ENB_APP/gnb_config.c
@@ -0,0 +1,1958 @@
+#include <string.h>
+#include <inttypes.h>
+
+#include "log.h"
+#include "log_extern.h"
+#include "assertions.h"
+#include "gnb_config.h"
+#include "UTIL/OTG/otg.h"
+#include "UTIL/OTG/otg_externs.h"
+#if defined(ENABLE_ITTI)
+# include "intertask_interface.h"
+# if defined(ENABLE_USE_MME)
+#   include "s1ap_eNB.h"
+#   include "sctp_eNB_task.h"
+# endif
+#endif
+#include "sctp_default_values.h"
+// #include "SystemInformationBlockType2.h"
+// #include "LAYER2/MAC/extern.h"
+// #include "LAYER2/MAC/proto.h"
+#include "PHY/extern.h"
+#include "targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "nfapi_vnf.h"
+#include "nfapi_pnf.h"
+
+#include "L1_paramdef.h"
+#include "MACRLC_paramdef.h"
+#include "common/config/config_userapi.h"
+#include "RRC_config_tools.h"
+#include "gnb_paramdef.h"
+
+
+int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
+
+  int                 num_gnbs                                                      = 0;
+  int                 num_component_carriers                                        = 0;
+  int                 j,k                                                           = 0;
+  int32_t             gnb_id                                                        = 0;
+
+  int                 nb_cc                                                         = 0;
+  char*       		    frame_type                                                    = NULL;
+  char*               prefix_type                                                   = 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;
+
+  ///NR
+  //NR FrequencyInfoDL
+  long                absoluteFrequencySSB                                          = 0;
+  uint32_t            ssb_SubcarrierOffset                                          = 0;
+  long                DL_FreqBandIndicatorNR                                        = 0;
+  long                DL_absoluteFrequencyPointA                                    = 0;
+
+  //NR DL SCS-SpecificCarrier
+  uint32_t            DL_offsetToCarrier                                            = 0;
+  long                DL_SubcarrierSpacing                                          = 0;
+  long                DL_SCS_SpecificCarrier_k0                                     = 0;
+  uint32_t            DL_carrierBandwidth                                           = 0;
+
+  // NR BWP-DownlinkCommon
+  uint32_t            DL_locationAndBandwidth                                       = 0;
+  //NR_prefix_type_t    DL_prefix_type[MAX_NUM_CCs];     
+
+  //NR FrequencyInfoUL
+  long                UL_FreqBandIndicatorNR                                        = 0;
+  long                UL_absoluteFrequencyPointA                                    = 0;
+  long                FrequencyInfoUL_p_Max                                         = 0;
+  long                frequencyShift7p5khz                                          = 0;
+
+  //NR UL SCS-SpecificCarrier
+  uint32_t            UL_offsetToCarrier                                            = 0;
+  long                UL_SubcarrierSpacing                                          = 0;
+  long                UL_SCS_SpecificCarrier_k0                                     = 0;
+  uint32_t            UL_carrierBandwidth                                           = 0;
+
+  // NR BWP-UplinkCommon
+  uint32_t            UL_locationAndBandwidth                                       = 0;
+  //NR_prefix_type_t    UL_prefix_type; 
+
+
+  long                ssb_periodicityServingCell                                    = 0;
+  long                dmrs_TypeA_Position                                           = 0;
+  long                NIA_SubcarrierSpacing                                         = 0; 
+  long                ss_PBCH_BlockPower                                            = 0;
+
+  //NR TDD-UL-DL-ConfigCommon
+  long                referenceSubcarrierSpacing                                    = 0;
+  long                dl_UL_TransmissionPeriodicity                                 = 0;
+  long                nrofDownlinkSlots                                             = 0;
+  long                nrofDownlinkSymbols                                           = 0;
+  long                nrofUplinkSlots                                               = 0;
+  long                nrofUplinkSymbols                                             = 0;
+
+  //NR RACH-ConfigCommon
+  long                rach_totalNumberOfRA_Preambles                                = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice         = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth      = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth      = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf        = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one            = 0;
+  long                rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two            = 0;
+  uint32_t            rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four           = 0;
+  uint32_t            rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight          = 0;
+  uint32_t            rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen        = 0;
+  char*               rach_groupBconfigured                                         = NULL;
+  long                rach_ra_Msg3SizeGroupA                                        = 0;
+  long                rach_messagePowerOffsetGroupB                                 = 0;
+  long                rach_numberOfRA_PreamblesGroupA                               = 0;
+  long                rach_ra_ContentionResolutionTimer                             = 0;
+  long                rsrp_ThresholdSSB                                             = 0;
+  long                rsrp_ThresholdSSB_SUL                                         = 0;
+  long                prach_RootSequenceIndex_choice                                = 0;
+  uint32_t            prach_RootSequenceIndex_l839                                  = 0;
+  uint32_t            prach_RootSequenceIndex_l139                                  = 0;
+  long                prach_msg1_SubcarrierSpacing                                  = 0;
+  long                restrictedSetConfig                                           = 0;
+  long                msg3_transformPrecoding                                       = 0;
+  //ssb-perRACH-OccasionAndCB-PreamblesPerSSB not sure
+
+  //NR RACH-ConfigGeneric
+  long                prach_ConfigurationIndex                                      = 0;
+  long                prach_msg1_FDM                                                = 0;
+  long                prach_msg1_FrequencyStart                                     = 0;
+  long                zeroCorrelationZoneConfig                                     = 0;
+  long                preambleReceivedTargetPower                                   = 0;
+  long                preambleTransMax                                              = 0;
+  long                powerRampingStep                                              = 0;
+  long                ra_ResponseWindow                                             = 0;
+
+  //PUSCH-ConfigCommon
+  char*               groupHoppingEnabledTransformPrecoding                         = NULL;
+  long                msg3_DeltaPreamble                                            = 0;
+  long                p0_NominalWithGrant                                           = 0;
+
+  ///PUSCH-TimeDomainResourceAllocation
+  long                PUSCH_TimeDomainResourceAllocation_k2                         = 0;
+  long                PUSCH_TimeDomainResourceAllocation_mappingType                = 0;
+
+  //PUCCH-ConfigCommon
+  long                pucch_GroupHopping                                            = 0;
+  long                p0_nominal                                                    = 0;
+
+  //PDSCH-ConfigCOmmon
+  //PDSCH-TimeDomainResourceAllocation
+  long                PDSCH_TimeDomainResourceAllocation_k0                         = 0;
+  long                PDSCH_TimeDomainResourceAllocation_mappingType                = 0;
+
+  //RateMatchPattern  is used to configure one rate matching pattern for PDSCH
+  long                rateMatchPatternId                                            = 0;
+  long                RateMatchPattern_patternType                                  = 0;
+  long                symbolsInResourceBlock                                        = 0;
+  long                periodicityAndPattern                                         = 0;
+  long                RateMatchPattern_controlResourceSet                           = 0;
+  long                RateMatchPattern_subcarrierSpacing                            = 0;
+  long                RateMatchPattern_mode                                         = 0;
+
+  //PDCCH-ConfigCommon
+  long                searchSpaceSIB1                                               = 0;
+  long                searchSpaceOtherSystemInformation                             = 0;
+  long                pagingSearchSpace                                             = 0;
+  long                ra_SearchSpace                                                = 0;
+  long                rach_ra_ControlResourceSet                                    = 0;
+  //NR PDCCH-ConfigCommon commonControlResourcesSets
+  long                PDCCH_common_controlResourceSetId                             = 0;
+  long                PDCCH_common_ControlResourceSet_duration                      = 0;
+  long                PDCCH_cce_REG_MappingType                                     = 0;
+  long                PDCCH_reg_BundleSize                                          = 0;
+  long                PDCCH_interleaverSize                                         = 0;
+  long                PDCCH_shiftIndex                                              = 0;  
+  long                PDCCH_precoderGranularity                                     = 0;
+  char*               tci_PresentInDCI                                              = NULL;
+
+  //NR PDCCH-ConfigCommon commonSearchSpaces
+  long                SearchSpaceId                                                 = 0;
+  long                commonSearchSpaces_controlResourceSetId                       = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_choice         = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl1            = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl2            = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl4            = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl5            = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl8            = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl10           = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl16           = 0;
+  long                SearchSpace_monitoringSlotPeriodicityAndOffset_sl20           = 0;
+  long                SearchSpace_nrofCandidates_aggregationLevel1                  = 0;
+  long                SearchSpace_nrofCandidates_aggregationLevel2                  = 0;
+  long                SearchSpace_nrofCandidates_aggregationLevel4                  = 0;
+  long                SearchSpace_nrofCandidates_aggregationLevel8                  = 0;
+  long                SearchSpace_nrofCandidates_aggregationLevel16                 = 0;
+  long                SearchSpace_searchSpaceType                                   = 0;
+  long                Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1     = 0;
+  long                Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2     = 0;
+  long                Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4     = 0;
+  long                Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8     = 0;
+  long                Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16    = 0; 
+  long                Common_dci_Format2_3_monitoringPeriodicity                    = 0;
+  long                Common_dci_Format2_3_nrofPDCCH_Candidates                     = 0;
+  long                ue_Specific__dci_Formats                                      = 0;
+
+
+  int32_t     		my_int;
+
+  paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
+  
+  paramdef_t GNBParams[]  = GNBPARAMS_DESC;
+  paramlist_def_t GNBParamList = {GNB_CONFIG_STRING_GNB_LIST,NULL,0};
+
+  checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
+  paramdef_t CCsParams[] = CCPARAMS_DESC;
+  paramlist_def_t CCsParamList = {GNB_CONFIG_STRING_COMPONENT_CARRIERS,NULL,0};
+  
+  paramdef_t SRB1Params[] = SRB1PARAMS_DESC;  
+
+  /* get global parameters, defined outside any section in the config file */
+  
+  config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL); 
+  num_gnbs = GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt;
+  AssertFatal (i<num_gnbs,"Failed to parse config file no %ith element in %s \n",i, GNB_CONFIG_STRING_ACTIVE_GNBS);
+  
+  #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
+
+    if (strcasecmp( *(GNBSParams[GNB_ASN1_VERBOSITY_IDX].strptr), GNB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
+      asn_debug      = 0;
+      asn1_xer_print = 0;
+    } else if (strcasecmp( *(GNBSParams[GNB_ASN1_VERBOSITY_IDX].strptr), GNB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
+      asn_debug      = 1;
+      asn1_xer_print = 1;
+    } else if (strcasecmp(*(GNBSParams[GNB_ASN1_VERBOSITY_IDX].strptr) , GNB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
+      asn_debug      = 1;
+      asn1_xer_print = 2;
+    } else {
+      asn_debug      = 0;
+      asn1_xer_print = 0;
+    }
+
+  #endif
+
+  if (num_gnbs>0) {
+    // Output a list of all gNBs.
+    config_getlist( &GNBParamList,GNBParams,sizeof(GNBParams)/sizeof(paramdef_t),NULL); 
+
+    if (GNBParamList.paramarray[i][GNB_GNB_ID_IDX].uptr == NULL) {
+    // Calculate a default gNB ID
+      # if defined(ENABLE_USE_MME)
+        uint32_t hash;
+        hash = s1ap_generate_eNB_id ();
+        gnb_id = i + (hash & 0xFFFF8);
+      # else
+        gnb_id = i;
+      # endif
+    } else {
+        gnb_id = *(GNBParamList.paramarray[i][GNB_GNB_ID_IDX].uptr);
+    }
+
+    printf("NRRRC %d: Southbound Transport %s\n",i,*(GNBParamList.paramarray[i][GNB_TRANSPORT_S_PREFERENCE_IDX].strptr));
+
+    if (strcmp(*(GNBParamList.paramarray[i][GNB_TRANSPORT_S_PREFERENCE_IDX].strptr), "local_mac") == 0) {
+  
+    } else if (strcmp(*(GNBParamList.paramarray[i][GNB_TRANSPORT_S_PREFERENCE_IDX].strptr), "cudu") == 0) {
+      rrc->eth_params_s.local_if_name            = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_IF_NAME_IDX].strptr));
+      rrc->eth_params_s.my_addr                  = strdup(*(GNBParamList.paramarray[i][GNB_LOCAL_S_ADDRESS_IDX].strptr));
+      rrc->eth_params_s.remote_addr              = strdup(*(GNBParamList.paramarray[i][GNB_REMOTE_S_ADDRESS_IDX].strptr));
+      rrc->eth_params_s.my_portc                 = *(GNBParamList.paramarray[i][GNB_LOCAL_S_PORTC_IDX].uptr);
+      rrc->eth_params_s.remote_portc             = *(GNBParamList.paramarray[i][GNB_REMOTE_S_PORTC_IDX].uptr);
+      rrc->eth_params_s.my_portd                 = *(GNBParamList.paramarray[i][GNB_LOCAL_S_PORTD_IDX].uptr);
+      rrc->eth_params_s.remote_portd             = *(GNBParamList.paramarray[i][GNB_REMOTE_S_PORTD_IDX].uptr);
+      rrc->eth_params_s.transp_preference        = ETH_UDP_MODE;
+    } else { // other midhaul
+    }       
+
+    // search if in active list
+
+    for (k=0; k <num_gnbs ; k++) {
+      if (strcmp(GNBSParams[GNB_ACTIVE_GNBS_IDX].strlistptr[k], *(GNBParamList.paramarray[i][GNB_GNB_NAME_IDX].strptr) )== 0) {
+        
+        char gnbpath[MAX_OPTNAME_SIZE + 8];
+
+        NRRRC_CONFIGURATION_REQ (msg_p).cell_identity     = gnb_id;
+        NRRRC_CONFIGURATION_REQ (msg_p).tac               = (uint16_t)atoi( *(GNBParamList.paramarray[i][GNB_TRACKING_AREA_CODE_IDX].strptr) );
+        NRRRC_CONFIGURATION_REQ (msg_p).mcc               = (uint16_t)atoi( *(GNBParamList.paramarray[i][GNB_MOBILE_COUNTRY_CODE_IDX].strptr) );
+        NRRRC_CONFIGURATION_REQ (msg_p).mnc               = (uint16_t)atoi( *(GNBParamList.paramarray[i][GNB_MOBILE_NETWORK_CODE_IDX].strptr) );
+        NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length  = strlen(*(GNBParamList.paramarray[i][GNB_MOBILE_NETWORK_CODE_IDX].strptr));
+        AssertFatal((NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length == 2) ||
+                    (NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length == 3),"BAD MNC DIGIT LENGTH %d",
+                     NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length);
+
+        // Parse optional physical parameters
+        sprintf(gnbpath,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,k),
+        config_getlist( &CCsParamList,NULL,0,gnbpath); 
+    
+        LOG_I(NRRRC,"num component carriers %d \n", num_component_carriers); 
+
+        if ( CCsParamList.numelt> 0) {
+          
+          char ccspath[MAX_OPTNAME_SIZE*2 + 16];
+
+          for (j = 0; j < CCsParamList.numelt ;j++) {
+            
+            sprintf(ccspath,"%s.%s.[%i]",gnbpath,GNB_CONFIG_STRING_COMPONENT_CARRIERS,j);
+            config_get( CCsParams,sizeof(CCsParams)/sizeof(paramdef_t),ccspath);        
+ 
+            nb_cc++;
+
+            // NRRRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = tdd_config;
+            // AssertFatal (tdd_config <= TDD_Config__subframeAssignment_sa6,
+            //             "Failed to parse gNB configuration file %s, gnb %d illegal tdd_config %d (should be 0-%d)!",
+            //             RC.config_file_name, i, tdd_config, TDD_Config__subframeAssignment_sa6);
+        
+            // NRRRC_CONFIGURATION_REQ (msg_p).tdd_config_s[j] = tdd_config_s;
+            // AssertFatal (tdd_config_s <= TDD_Config__specialSubframePatterns_ssp8,
+            //             "Failed to parse gNB configuration file %s, gnb %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 gNB configuration file %s, gnb %d define %s: NORMAL,EXTENDED!\n",
+                           RC.config_file_name, i, GNB_CONFIG_STRING_PREFIX_TYPE);
+            }else if (strcmp(prefix_type, "NORMAL") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = NORMAL;
+            }else if (strcmp(prefix_type, "EXTENDED") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = EXTENDED;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
+                           RC.config_file_name, i, prefix_type);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = eutra_band;
+            NRRRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) downlink_frequency;
+            NRRRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) uplink_frequency_offset;
+            NRRRC_CONFIGURATION_REQ (msg_p).Nid_cell[j]= Nid_cell;
+
+            if (Nid_cell>503) {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Nid_cell choice: 0...503 !\n",
+                           RC.config_file_name, i, Nid_cell);
+            }
+        
+            NRRRC_CONFIGURATION_REQ (msg_p).N_RB_DL[j]= 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)) {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for N_RB_DL choice: 6,15,25,50,75,100 !\n",
+                           RC.config_file_name, i, N_RB_DL);
+            }
+        
+            if (strcmp(frame_type, "FDD") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).frame_type[j] = FDD;
+            }else  if (strcmp(frame_type, "TDD") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).frame_type[j] = TDD;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for frame_type choice: FDD or TDD !\n",
+                           RC.config_file_name, i, frame_type);
+            }
+
+            if (!prefix_type){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d define %s: NORMAL,EXTENDED!\n",
+                           RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
+            }else if (strcmp(prefix_type, "NORMAL") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = NORMAL;
+            }else  if (strcmp(prefix_type, "EXTENDED") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = EXTENDED;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
+                           RC.config_file_name, i, prefix_type);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = eutra_band;
+            NRRRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) downlink_frequency;
+            NRRRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) uplink_frequency_offset;
+        
+            if (config_check_band_frequencies(j,
+              NRRRC_CONFIGURATION_REQ (msg_p).eutra_band[j],
+              NRRRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j],
+              NRRRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j],
+              NRRRC_CONFIGURATION_REQ (msg_p).frame_type[j])) {
+               AssertFatal(0, "error calling enb_check_band_frequencies\n");
+            }
+
+            if ((nb_antenna_ports <1) || (nb_antenna_ports > 2)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, enb %d unknown value \"%d\" for nb_antenna_ports choice: 1..2 !\n",
+                           RC.config_file_name, i, nb_antenna_ports);
+            }
+            NRRRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = nb_antenna_ports;
+
+
+            ////////////////////////////////////////////////////////////////////////////////
+            //---------------------------NR--------Configuration--------------------------//
+            ////////////////////////////////////////////////////////////////////////////////
+
+            ////////////////////////////////NR FrequencyInfoDL//////////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).absoluteFrequencySSB[j] = absoluteFrequencySSB;
+            if ((absoluteFrequencySSB <0) || (absoluteFrequencySSB > 3279165)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for FreqBandIndicatorNR choice: 0..3279165 !\n",
+                           RC.config_file_name, i, absoluteFrequencySSB);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).ssb_SubcarrierOffset[j] = ssb_SubcarrierOffset;
+            if ((ssb_SubcarrierOffset <1) || (ssb_SubcarrierOffset > 23)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ssb_SubcarrierOffset choice: 1..23 !\n",
+                           RC.config_file_name, i, ssb_SubcarrierOffset);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).DL_FreqBandIndicatorNR[j] = DL_FreqBandIndicatorNR;
+            if ((DL_FreqBandIndicatorNR <1) || (DL_FreqBandIndicatorNR > 1024)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_FreqBandIndicatorNR choice: 1..1024 !\n",
+                           RC.config_file_name, i, DL_FreqBandIndicatorNR);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).DL_absoluteFrequencyPointA[j] = DL_absoluteFrequencyPointA;
+            if ((DL_absoluteFrequencyPointA <0) || (DL_absoluteFrequencyPointA > 3279165)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_absoluteFrequencyPointA choice: 0..3279165 !\n",
+                           RC.config_file_name, i, DL_absoluteFrequencyPointA);
+            }            
+            
+
+            /////////////////////////////////NR DL SCS-SpecificCarrier///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).DL_offsetToCarrier[j] = DL_offsetToCarrier;
+            if ((DL_offsetToCarrier <0) || (DL_offsetToCarrier > 2199)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_offsetToCarrier choice: 0..11 !\n",
+                           RC.config_file_name, i, DL_offsetToCarrier);
+            }
+
+            if (strcmp(DL_SubcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).DL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).DL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).DL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).DL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).DL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for DL_SubcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+                           RC.config_file_name, i, DL_SubcarrierSpacing);
+            }
+
+            switch (DL_SCS_SpecificCarrier_k0) {
+              case -6:
+                NRRRC_CONFIGURATION_REQ (msg_p).DL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n_6;
+                break;
+
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).DL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n0;
+                break;
+
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).DL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n6;
+                break;
+
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_SCS_SpecificCarrier_k0 choice: -6,0,6 !\n",
+                             RC.config_file_name, i, DL_SCS_SpecificCarrier_k0);
+                break;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).DL_carrierBandwidth[j] = DL_carrierBandwidth;
+            if ((DL_carrierBandwidth <1) || (DL_carrierBandwidth > 275)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_carrierBandwidth choice: 1..275 !\n",
+              RC.config_file_name, i, DL_carrierBandwidth);
+            }
+
+            /////////////////////////////////NR BWP-DownlinkCommon///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).DL_locationAndBandwidth[j] = DL_locationAndBandwidth;
+            if ((DL_locationAndBandwidth <0) || (DL_locationAndBandwidth > 37949)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for DL_locationAndBandwidth choice: 0..11 !\n",
+              RC.config_file_name, i, DL_locationAndBandwidth);
+            }
+
+            /////////////////////////////////NR FrequencyInfoUL//////////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).UL_FreqBandIndicatorNR[j] = UL_FreqBandIndicatorNR;
+            if ((UL_FreqBandIndicatorNR <1) || (UL_FreqBandIndicatorNR > 1024)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_FreqBandIndicatorNR choice: 1..1024 !\n",
+                           RC.config_file_name, i, UL_FreqBandIndicatorNR);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).UL_absoluteFrequencyPointA[j] = UL_absoluteFrequencyPointA;
+            if ((UL_absoluteFrequencyPointA <0) || (UL_absoluteFrequencyPointA > 3279165)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_absoluteFrequencyPointA choice: 0..3279165 !\n",
+                           RC.config_file_name, i, UL_absoluteFrequencyPointA);
+            }       
+
+            NRRRC_CONFIGURATION_REQ (msg_p).FrequencyInfoUL_p_Max[j] = FrequencyInfoUL_p_Max;
+            if ((FrequencyInfoUL_p_Max <-30) || (FrequencyInfoUL_p_Max > 33)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for FrequencyInfoUL_p_Max choice: -30..33 !\n",
+              RC.config_file_name, i, FrequencyInfoUL_p_Max);
+            }
+
+            if (strcmp(frequencyShift7p5khz, "TRUE") == 0) {
+              RRC_CONFIGURATION_REQ (msg_p).frequencyShift7p5khz[j] = FrequencyInfoUL__frequencyShift7p5khz_true;
+            } 
+
+            /////////////////////////////////NR UL SCS-SpecificCarrier///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).UL_offsetToCarrier[j] = UL_offsetToCarrier;
+            if ((UL_offsetToCarrier <0) || (UL_offsetToCarrier > 2199)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_offsetToCarrier choice: 0..11 !\n",
+              RC.config_file_name, i, UL_offsetToCarrier);
+            }
+
+            if (strcmp(UL_SubcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).UL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).UL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).UL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).UL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).UL_SubcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for UL_SubcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+              RC.config_file_name, i, UL_SubcarrierSpacing);
+            }
+
+            switch (UL_SCS_SpecificCarrier_k0) {
+              case -6:
+                NRRRC_CONFIGURATION_REQ (msg_p).UL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n_6;
+                break;
+
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).UL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n0;
+                break;
+
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).UL_SCS_SpecificCarrier_k0[j] =  SCS_SpecificCarrier__k0_n6;
+                break;
+
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_SCS_SpecificCarrier_k0 choice: -6,0,6 !\n",
+                             RC.config_file_name, i, UL_SCS_SpecificCarrier_k0);
+                break;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).UL_carrierBandwidth[j] = UL_carrierBandwidth;
+            if ((UL_carrierBandwidth <1) || (UL_carrierBandwidth > 275)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_carrierBandwidth choice: 1..275 !\n",
+              RC.config_file_name, i, UL_carrierBandwidth);
+            }
+
+
+
+            //Not Sure the value selection
+            NRRRC_CONFIGURATION_REQ (msg_p).absoluteFrequencyPointA[j] = absoluteFrequencyPointA;
+                        
+            NRRRC_CONFIGURATION_REQ (msg_p).ControlResourceSetId[j] = ControlResourceSetId;
+            if ((ControlResourceSetId <0) || (ControlResourceSetId > 11)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ControlResourceSetId choice: 0..11 !\n",
+              RC.config_file_name, i, ControlResourceSetId);
+            }
+
+            /////////////////////////////////NR BWP-UplinkCommon///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).UL_locationAndBandwidth[j] = UL_locationAndBandwidth;
+            if ((UL_locationAndBandwidth <0) || (UL_locationAndBandwidth > 37949)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for UL_locationAndBandwidth choice: 0..11 !\n",
+              RC.config_file_name, i, UL_locationAndBandwidth);
+            }
+
+            switch (ssb_periodicityServingCell) {
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms5;
+                break;
+
+              case 10:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms10;
+                break;
+
+              case 20:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms20;
+                break;
+              
+              case 40:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms40;
+                break;
+                          
+              case 80:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms80;
+                break;
+
+              case 160:
+                NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] =  ServingCellConfigCommon__ssb_periodicityServingCell_ms160;
+                break;
+
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ssb_periodicityServingCell choice: -6,0,6 !\n",
+                             RC.config_file_name, i, ssb_periodicityServingCell);
+                break;
+            }
+
+            switch (dmrs_TypeA_Position) {
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).dmrs_TypeA_Position[j] =  ServingCellConfigCommon__dmrs_TypeA_Position_pos2;
+                break;
+
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).dmrs_TypeA_Position[j] =  ServingCellConfigCommon__dmrs_TypeA_Position_pos3;
+                break;
+
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for dmrs_TypeA_Position choice: -6,0,6 !\n",
+                             RC.config_file_name, i, dmrs_TypeA_Position);
+                break;
+            }
+
+            if (strcmp(NIA_SubcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).NIA_SubcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).NIA_SubcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).NIA_SubcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).NIA_SubcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).NIA_SubcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for NIA_SubcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+              RC.config_file_name, i, NIA_SubcarrierSpacing);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).ss_PBCH_BlockPower[j] = ss_PBCH_BlockPower;
+            if ((ss_PBCH_BlockPower < -60) || (ss_PBCH_BlockPower > 50)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ss_PBCH_BlockPower choice: 0..11 !\n",
+              RC.config_file_name, i, ss_PBCH_BlockPower);
+            }
+
+            /////////////////////////////////NR TDD-UL-DL-ConfigCommon///////////////////////////
+            if (strcmp(referenceSubcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).referenceSubcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).referenceSubcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).referenceSubcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).referenceSubcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).referenceSubcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for referenceSubcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+                  RC.config_file_name, i, referenceSubcarrierSpacing);
+            }
+
+            if (strcmp(dl_UL_TransmissionPeriodicity,"ms0p5")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms0p5;
+            }else if (strcmp(pusch_alpha,"ms0p625")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms0p625;
+            }else if (strcmp(pusch_alpha,"ms1")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms1;
+            }else if (strcmp(pusch_alpha,"ms1p25")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms1p25;
+            }else if (strcmp(pusch_alpha,"ms2")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms2;
+            }else if (strcmp(pusch_alpha,"ms2p5")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms2p5;
+            }else if (strcmp(pusch_alpha,"ms5")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms5;
+            }else if (strcmp(pusch_alpha,"ms10")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).dl_UL_TransmissionPeriodicity[j] = TDD_UL_DL_ConfigCommon__dl_UL_TransmissionPeriodicity_ms10;    
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for dl_UL_TransmissionPeriodicity choice: minusinfinity,ms0p5,ms0p625,ms1,ms1p25,ms2,ms2p5,ms5,ms10 !\n",
+                           RC.config_file_name, i, dl_UL_TransmissionPeriodicity);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).nrofDownlinkSlots[j] = nrofDownlinkSlots;
+            if ((nrofDownlinkSlots < 0) || (nrofDownlinkSlots > 320)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for nrofDownlinkSlots choice: 0..320 !\n",
+                           RC.config_file_name, i, nrofDownlinkSlots);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).nrofDownlinkSymbols[j] = nrofDownlinkSymbols;
+            if ((nrofDownlinkSymbols < 0) || (nrofDownlinkSymbols > 13)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for nrofDownlinkSymbols choice: 0..13 !\n",
+                           RC.config_file_name, i, nrofDownlinkSymbols);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).nrofUplinkSlots[j] = nrofUplinkSlots;
+            if ((nrofUplinkSlots < 0) || (nrofUplinkSlots > 320)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for nrofUplinkSlots choice: 0..320 !\n",
+                           RC.config_file_name, i, nrofUplinkSlots);
+            }
+ 
+            NRRRC_CONFIGURATION_REQ (msg_p).nrofUplinkSymbols[j] = nrofUplinkSymbols;
+            if ((nrofUplinkSymbols < 0) || (nrofUplinkSymbols > 13)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for nrofUplinkSymbols choice: 0..13 !\n",
+                           RC.config_file_name, i, nrofUplinkSymbols);
+            }
+
+            /////////////////////////////////NR RACH-ConfigCommon///////////////////////////
+
+            NRRRC_CONFIGURATION_REQ (msg_p).rach_totalNumberOfRA_Preambles[j] = rach_totalNumberOfRA_Preambles;
+            if ((rach_totalNumberOfRA_Preambles <1) || (rach_totalNumberOfRA_Preambles>63)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_numberOfRA_Preambles choice: 1..63 !\n",
+                           RC.config_file_name, i, rach_totalNumberOfRA_Preambles);
+            }
+
+            if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"oneEighth")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneEighth;
+              switch (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth){
+                case 4:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n4;
+                  break;
+                case 8:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n8;
+                  break;
+                case 12:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n12;
+                  break;
+                case 16:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n16;
+                  break;
+                case 20:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n20;
+                  break;
+                case 24:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n24;
+                  break;
+                case 28:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n28;
+                  break;
+                case 32:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n32;
+                  break;
+                case 36:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n36;
+                  break;
+                case 40:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n40;
+                  break;
+                case 44:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n44;
+                  break;
+                case 48:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n48;
+                  break;
+                case 52:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n52;
+                  break;
+                case 56:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n56;
+                  break;
+                case 60:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n60;
+                  break;
+                case 64:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n64;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth choice: 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64!\n",
+                               RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth);
+                  break;
+              }//End oneEighth
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"oneFourth")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneFourth;
+              switch (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth){
+                case 4:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n4;
+                  break;
+                case 8:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n8;
+                  break;
+                case 12:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n12;
+                  break;
+                case 16:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n16;
+                  break;
+                case 20:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n20;
+                  break;
+                case 24:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n24;
+                  break;
+                case 28:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n28;
+                  break;
+                case 32:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n32;
+                  break;
+                case 36:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n36;
+                  break;
+                case 40:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n40;
+                  break;
+                case 44:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n44;
+                  break;
+                case 48:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n48;
+                  break;
+                case 52:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n52;
+                  break;
+                case 56:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n56;
+                  break;
+                case 60:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n60;
+                  break;
+                case 64:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n64;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth choice: 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64!\n",
+                               RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth);
+                  break;
+              }//End oneFourth
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"oneHalf")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneHalf;
+              switch (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf){
+                case 4:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n4;
+                  break;
+                case 8:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n8;
+                  break;
+                case 12:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n12;
+                  break;
+                case 16:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n16;
+                  break;
+                case 20:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n20;
+                  break;
+                case 24:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n24;
+                  break;
+                case 28:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n28;
+                  break;
+                case 32:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n32;
+                  break;
+                case 36:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n36;
+                  break;
+                case 40:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n40;
+                  break;
+                case 44:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n44;
+                  break;
+                case 48:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n48;
+                  break;
+                case 52:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n52;
+                  break;
+                case 56:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n56;
+                  break;
+                case 60:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n60;
+                  break;
+                case 64:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n64;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf choice: 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64!\n",
+                               RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf);
+                  break;
+              }//End oneHalf
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"one")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one;
+              switch (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one){
+                case 4:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n4;
+                  break;
+                case 8:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n8;
+                  break;
+                case 12:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n12;
+                  break;
+                case 16:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n16;
+                  break;
+                case 20:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n20;
+                  break;
+                case 24:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n24;
+                  break;
+                case 28:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n28;
+                  break;
+                case 32:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n32;
+                  break;
+                case 36:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n36;
+                  break;
+                case 40:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n40;
+                  break;
+                case 44:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n44;
+                  break;
+                case 48:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n48;
+                  break;
+                case 52:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n52;
+                  break;
+                case 56:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n56;
+                  break;
+                case 60:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n60;
+                  break;
+                case 64:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n64;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one choice: 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64!\n",
+                               RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one);
+                  break;
+              }//End one
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"two")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_two;
+              switch (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one){
+                case 4:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n4;
+                  break;
+                case 8:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n8;
+                  break;
+                case 12:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n12;
+                  break;
+                case 16:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n16;
+                  break;
+                case 20:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n20;
+                  break;
+                case 24:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n24;
+                  break;
+                case 28:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n28;
+                  break;
+                case 32:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n32;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two choice: 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64!\n",
+                               RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two);
+                  break;
+              }//End two
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"four")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_four;
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four[j] = rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four;
+              if ((rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four < 1) || (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four > 16)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four choice: 1..16 !\n",
+                             RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four);
+              }//End four
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"eight")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_eight;
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight[j] = rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight;
+              if ((rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight < 1) || (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight > 8)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight choice: 1..8 !\n",
+                             RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight);
+              }//End eight 
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"sixteen")==0) {
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_sixteen;    
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen[j] = rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen;
+              if ((rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen < 1) || (rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen > 4)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen choice: 1..4 !\n",
+                             RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen);
+              }//End sixteen
+
+            }else if (strcmp(rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice,"NOTHING")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[j] = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_NOTHING;    
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice: oneEighth,oneFourth,oneHalf,one,two,four,eight,sixteen !\n",
+                           RC.config_file_name, i, rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice);
+            }
+
+            if (strcmp(rach_groupBconfigured , "ENABLE") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_groupBconfigured [j] = TRUE;
+
+              switch (rach_ra_Msg3SizeGroupA) {
+                case 56:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b56;
+                  break;
+                case 144:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b144;
+                  break;
+                case 208:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b208;
+                  break;
+                case 256:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b256;
+                  break;
+                case 282:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b282;
+                  break;
+                case 480:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b480;
+                  break;
+                case 640:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b640;
+                  break;
+                case 800:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b800;
+                  break;
+                case 1000:
+                  NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_Msg3SizeGroupA[j] = RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b1000;
+                  break;
+                default:
+                  AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ra_Msg3SizeGroupA choice: 56,144,208,256,282,480,640,800,1000!\n",
+                               RC.config_file_name, i, rach_ra_Msg3SizeGroupA);
+                  break;
+              }// End switch (rach_ra_Msg3SizeGroupA)
+
+              if (strcmp(rach_messagePowerOffsetGroupB,"minusinfinity")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_minusinfinity;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB0")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB0;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB5")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB5;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB8")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB8;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB10")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB10;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB12")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB12;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB15")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB15;
+              }else if (strcmp(rach_messagePowerOffsetGroupB,"dB18")==0) {
+                RRC_CONFIGURATION_REQ (msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB18;
+              }else{
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for rach_messagePowerOffsetGroupB choice: minusinfinity,dB0,dB5,dB8,dB10,dB12,dB15,dB18!\n",
+                             RC.config_file_name, i, rach_messagePowerOffsetGroupB);
+              }// End if (strcmp(rach_messagePowerOffsetGroupB,"minusinfinity")==0)
+
+              NRRRC_CONFIGURATION_REQ (msg_p).rach_numberOfRA_PreamblesGroupA[j] = rach_numberOfRA_PreamblesGroupA;
+              if ((rach_numberOfRA_PreamblesGroupA <1) || (rach_numberOfRA_PreamblesGroupA>64)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_numberOfRA_PreamblesGroupA choice: 1..63 !\n",
+                             RC.config_file_name, i, rach_numberOfRA_PreamblesGroupA);
+              }
+
+            }// End if (strcmp(rach_groupBconfigured , "ENABLE") == 0) 
+
+            switch (rach_ra_ContentionResolutionTimer) {
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf8;
+                break;
+              case 16:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf16;
+                break;
+              case 24:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf24;
+                break;
+              case 32:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf32;
+                break;
+              case 40:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf40;
+                break;
+              case 48:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf48;
+                break;
+              case 56:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf56;
+                break;
+              case 64:
+                NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ContentionResolutionTimer[j] = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf64;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ra_ContentionResolutionTimer choice: 8,16,24,32,40,48,56,64!\n",
+                             RC.config_file_name, i, rach_ra_ContentionResolutionTimer);
+                break;
+            }// End switch (rach_ra_ContentionResolutionTimer)
+
+            
+            NRRRC_CONFIGURATION_REQ (msg_p).rsrp_ThresholdSSB[j] = rsrp_ThresholdSSB;
+            if ((rsrp_ThresholdSSB <0) || (rsrp_ThresholdSSB>124)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rsrp_ThresholdSSB choice: 0..124 !\n",
+                           RC.config_file_name, i, rsrp_ThresholdSSB);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).rsrp_ThresholdSSB_SUL[j] = rsrp_ThresholdSSB_SUL;
+            if ((rsrp_ThresholdSSB_SUL <0) || (rsrp_ThresholdSSB_SUL>124)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rsrp_ThresholdSSB_SUL choice: 0..124 !\n",
+                           RC.config_file_name, i, rsrp_ThresholdSSB_SUL);
+            }
+
+            if (strcmp(prach_RootSequenceIndex_choice , "l839") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_RootSequenceIndex_choice[j] = RACH_ConfigCommon__prach_RootSequenceIndex_PR_l839;
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_RootSequenceIndex_l839[j] = prach_RootSequenceIndex_l839;              
+            }else if (strcmp(prach_RootSequenceIndex_choice , "l139") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_RootSequenceIndex_choice[j] = RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139;
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_RootSequenceIndex_l139[j] = prach_RootSequenceIndex_l139;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for prach_RootSequenceIndex !\n",
+                           RC.config_file_name, i, prach_RootSequenceIndex);
+            }
+
+            if (strcmp(prach_msg1_SubcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_SubcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_SubcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_SubcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_SubcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_SubcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for prach_msg1_SubcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+                           RC.config_file_name, i, prach_msg1_SubcarrierSpacing);
+            }
+
+            if (strcmp(restrictedSetConfig , "unrestrictedSet") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).restrictedSetConfig[j] = RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet;                    
+            }else if (strcmp(restrictedSetConfig , "restrictedSetTypeA") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).restrictedSetConfig[j] = RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeA;
+            }else if (strcmp(restrictedSetConfig , "restrictedSetTypeB") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).restrictedSetConfig[j] = RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeB;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for restrictedSetConfig !\n",
+                           RC.config_file_name, i, restrictedSetConfig);
+            }
+
+            if (strcmp(msg3_transformPrecoding , "ENABLE") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).msg3_transformPrecoding[j] = RACH_ConfigCommon__msg3_transformPrecoding_enabled;
+            }
+
+            ////////////////////////////////NR RACH-ConfigGeneric//////////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).prach_ConfigurationIndex[j] = prach_ConfigurationIndex;
+            if ((prach_ConfigurationIndex <0) || (prach_ConfigurationIndex>255)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for prach_ConfigurationIndex choice: 0..255 !\n",
+                           RC.config_file_name, i, prach_ConfigurationIndex);
+            }
+
+            if (strcmp(prach_msg1_FDM , "one") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_FDM[j] = RACH_ConfigGeneric__msg1_FDM_one;                    
+            }else if (strcmp(prach_msg1_FDM , "two") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_FDM[j] = RACH_ConfigGeneric__msg1_FDM_two;
+            }else if (strcmp(prach_msg1_FDM , "four") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_FDM[j] = RACH_ConfigGeneric__msg1_FDM_four;
+            }else if (strcmp(prach_msg1_FDM , "eight") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_FDM[j] = RACH_ConfigGeneric__msg1_FDM_eight;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for prach_msg1_FDM !\n",
+                           RC.config_file_name, i, prach_msg1_FDM);
+            }            
+            
+            NRRRC_CONFIGURATION_REQ (msg_p).prach_msg1_FrequencyStart[j] = prach_msg1_FrequencyStart;
+            if ((prach_msg1_FrequencyStart <0) || (prach_msg1_FrequencyStart>274)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for prach_msg1_FrequencyStart choice: 0..274 !\n",
+                           RC.config_file_name, i, prach_msg1_FrequencyStart);
+            }           
+
+            NRRRC_CONFIGURATION_REQ (msg_p).zeroCorrelationZoneConfig[j] = zeroCorrelationZoneConfig;
+            if ((zeroCorrelationZoneConfig <0) || (zeroCorrelationZoneConfig>15)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for zeroCorrelationZoneConfig choice: 0..15 !\n",
+                           RC.config_file_name, i, zeroCorrelationZoneConfig);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).preambleReceivedTargetPower[j] = preambleReceivedTargetPower;
+            if ((preambleReceivedTargetPower <-200) || (preambleReceivedTargetPower>-74)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for preambleReceivedTargetPower choice: -200..-74 !\n",
+                           RC.config_file_name, i, preambleReceivedTargetPower);
+            }
+
+            switch (preambleTransMax) {
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n6;
+                break;
+              case 7:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n7;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n8;
+                break;
+              case 10:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n10;
+                break;
+              case 20:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n20;
+                break;
+              case 50:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n50;
+                break;
+              case 100:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n100;
+                break;
+              case 200:
+                NRRRC_CONFIGURATION_REQ (msg_p).preambleTransMax[j] =  RACH_ConfigGeneric__preambleTransMax_n200;
+                break;
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for preambleTransMax choice: 3,4,5,6,7,8,10,20,50,100,200 !\n",
+                             RC.config_file_name, i, preambleTransMax);
+                break;
+            }            
+
+            if (strcmp(powerRampingStep , "dB0") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).powerRampingStep[j] = RACH_ConfigGeneric__powerRampingStep_dB0;                    
+            }else if (strcmp(powerRampingStep , "dB2") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).powerRampingStep[j] = RACH_ConfigGeneric__powerRampingStep_dB2;
+            }else if (strcmp(powerRampingStep , "dB4") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).powerRampingStep[j] = RACH_ConfigGeneric__powerRampingStep_dB4;
+            }else if (strcmp(powerRampingStep , "dB6") == 0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).powerRampingStep[j] = RACH_ConfigGeneric__powerRampingStep_dB6;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for powerRampingStep !\n",
+                           RC.config_file_name, i, powerRampingStep);
+            }
+
+            switch (ra_ResponseWindow) {
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl2;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl4;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl8;
+                break;
+              case 10:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl10;
+                break;
+              case 20:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl20;
+                break;
+              case 40:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl40;
+                break;
+              case 80:
+                NRRRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindow[j] =  RACH_ConfigGeneric__ra_ResponseWindow_sl80;
+                break;
+               default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ra_ResponseWindow choice: 1,2,4,8,10,20,40,80 !\n",
+                             RC.config_file_name, i, ra_ResponseWindow);
+                break;
+            }  
+
+            /////////////////////////////////NR PUSCH-ConfigCommon///////////////////////////
+            if (strcmp(groupHoppingEnabledTransformPrecoding , "ENABLE") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).groupHoppingEnabledTransformPrecoding[j] =  PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding_enabled;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).msg3_DeltaPreamble[j] = msg3_DeltaPreamble;
+            if ((msg3_DeltaPreamble <-1) || (msg3_DeltaPreamble>6)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for msg3_DeltaPreamble choice: -1..6 !\n",
+                           RC.config_file_name, i, msg3_DeltaPreamble);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).p0_NominalWithGrant[j] = p0_NominalWithGrant;
+            if ((p0_NominalWithGrant <-202) || (p0_NominalWithGrant>24)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for p0_NominalWithGrant choice: -202..24 !\n",
+                           RC.config_file_name, i, p0_NominalWithGrant);
+            }
+
+            /////////////////////////////////NR PUSCH-TimeDomainResourceAllocation///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).PUSCH_TimeDomainResourceAllocation_k2[j] = PUSCH_TimeDomainResourceAllocation_k2;
+            if ((PUSCH_TimeDomainResourceAllocation_k2 <0) || (PUSCH_TimeDomainResourceAllocation_k2>7)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PUSCH_TimeDomainResourceAllocation_k2 choice: 0..7 !\n",
+                           RC.config_file_name, i, PUSCH_TimeDomainResourceAllocation_k2);
+            }
+
+            if (strcmp(PUSCH_TimeDomainResourceAllocation_mappingType , "typeA") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PUSCH_TimeDomainResourceAllocation_mappingType[j] =  PUSCH_TimeDomainResourceAllocation__mappingType_typeA;
+            }else if (strcmp(PUSCH_TimeDomainResourceAllocation_mappingType , "typeB") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PUSCH_TimeDomainResourceAllocation_mappingType[j] =  PUSCH_TimeDomainResourceAllocation__mappingType_typeB;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PUSCH_TimeDomainResourceAllocation_mappingType !\n",
+                           RC.config_file_name, i, PUSCH_TimeDomainResourceAllocation_mappingType);
+            }
+
+            /////////////////////////////////NR PUCCH-ConfigCommon///////////////////////////
+            if (strcmp(pucch_GroupHopping , "neither") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).pucch_GroupHopping[j] =  PUCCH_ConfigCommon__pucch_GroupHopping_neither;
+            }else if (strcmp(pucch_GroupHopping , "enable") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).pucch_GroupHopping[j] =  PUCCH_ConfigCommon__pucch_GroupHopping_enable;
+            }else if (strcmp(pucch_GroupHopping , "disable") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).pucch_GroupHopping[j] =  PUCCH_ConfigCommon__pucch_GroupHopping_disable;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for pucch_GroupHopping !\n",
+                           RC.config_file_name, i, pucch_GroupHopping);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).p0_nominal[j] = p0_nominal;
+            if ((p0_nominal <-202) || (p0_nominal>24)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for p0_nominal choice: -202..24 !\n",
+                           RC.config_file_name, i, p0_nominal);
+            }
+
+            //////////////////////////////////NR PDSCH-TimeDomainResourceAllocation///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).PDSCH_TimeDomainResourceAllocation_k0[j] = PDSCH_TimeDomainResourceAllocation_k0;
+            if ((PDSCH_TimeDomainResourceAllocation_k0 <1) || (PDSCH_TimeDomainResourceAllocation_k0>3)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDSCH_TimeDomainResourceAllocation_k0 choice: 0..7 !\n",
+                           RC.config_file_name, i, PDSCH_TimeDomainResourceAllocation_k0);
+            }
+
+            if (strcmp(PDSCH_TimeDomainResourceAllocation_mappingType , "typeA") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDSCH_TimeDomainResourceAllocation_mappingType[j] =  PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
+            }else if (strcmp(PDSCH_TimeDomainResourceAllocation_mappingType , "typeB") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDSCH_TimeDomainResourceAllocation_mappingType[j] =  PDSCH_TimeDomainResourceAllocation__mappingType_typeB;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDSCH_TimeDomainResourceAllocation_mappingType !\n",
+                           RC.config_file_name, i, PDSCH_TimeDomainResourceAllocation_mappingType);
+            }
+
+            //////////////////////////////////NR RateMatchPattern///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).rateMatchPatternId[j] = rateMatchPatternId;
+            if ((rateMatchPatternId <0) || (rateMatchPatternId>3)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rateMatchPatternId choice: 0..3 !\n",
+                           RC.config_file_name, i, rateMatchPatternId);
+            }
+
+            if (strcmp(RateMatchPattern_patternType , "NOTHING") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_patternType[j] =  RateMatchPattern__patternType_PR_NOTHING;
+            }else if (strcmp(RateMatchPattern_patternType , "bitmaps") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_patternType[j] =  RateMatchPattern__patternType_PR_bitmaps;
+            }else if (strcmp(RateMatchPattern_patternType , "controlResourceSet") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_patternType[j] =  RateMatchPattern__patternType_PR_controlResourceSet;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPattern_patternType !\n",
+                           RC.config_file_name, i, RateMatchPattern_patternType);
+            }
+
+            if (strcmp(symbolsInResourceBlock , "NOTHING") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).symbolsInResourceBlock[j] =  RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_NOTHING;
+            }else if (strcmp(symbolsInResourceBlock , "oneSlot") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).symbolsInResourceBlock[j] =  RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_oneSlot;
+            }else if (strcmp(symbolsInResourceBlock , "twoSlots") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).symbolsInResourceBlock[j] =  RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_twoSlots;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for symbolsInResourceBlock !\n",
+                           RC.config_file_name, i, symbolsInResourceBlock);
+            }
+
+            switch(periodicityAndPattern){
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n2;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n5;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n8;
+                break;
+              case 10:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n10;
+                break;
+              case 20:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n20;
+                break;
+              case 40:
+                NRRRC_CONFIGURATION_REQ (msg_p).periodicityAndPattern[j] =  RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n40;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for periodicityAndPattern choice: 2,4,5,8,10,20,40 !\n",
+                             RC.config_file_name, i, periodicityAndPattern);
+                break;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_controlResourceSet[j] = RateMatchPattern_controlResourceSet;
+            if ((RateMatchPattern_controlResourceSet <0) || (RateMatchPattern_controlResourceSet>11)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPattern_controlResourceSet choice: 0..3 !\n",
+                           RC.config_file_name, i, RateMatchPattern_controlResourceSet);
+            }
+
+            if (strcmp(RateMatchPattern_subcarrierSpacing,"kHz15")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_subcarrierSpacing[j] = SubcarrierSpacing_kHz15;
+            }else if (strcmp(pusch_alpha,"kHz30")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_subcarrierSpacing[j] = SubcarrierSpacing_kHz30;
+            }else if (strcmp(pusch_alpha,"kHz60")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_subcarrierSpacing[j] = SubcarrierSpacing_kHz60;
+            }else if (strcmp(pusch_alpha,"kHz120")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_subcarrierSpacing[j] = SubcarrierSpacing_kHz120;
+            }else if (strcmp(pusch_alpha,"kHz240")==0) {
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_subcarrierSpacing[j] = SubcarrierSpacing_kHz240;
+            }else { 
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for RateMatchPattern_subcarrierSpacing choice: minusinfinity,kHz15,kHz30,kHz60,kHz120,kHz240!\n",
+                           RC.config_file_name, i, RateMatchPattern_subcarrierSpacing);
+            }            
+            
+            if (strcmp(RateMatchPattern_mode , "dynamic") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_mode[j] =  RateMatchPattern__mode_dynamic;
+            }else if (strcmp(RateMatchPattern_mode , "semiStatic") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPattern_mode[j] =  RateMatchPattern__mode_semiStatic;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPattern_mode !\n",
+                           RC.config_file_name, i, RateMatchPattern_mode);
+            }
+
+            //////////////////////////////////NR PDCCH-ConfigCommon///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).searchSpaceSIB1[j] = searchSpaceSIB1;
+            if ((searchSpaceSIB1 <0) || (searchSpaceSIB1>39)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for searchSpaceSIB1 choice: 0..39 !\n",
+                           RC.config_file_name, i, searchSpaceSIB1);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).searchSpaceOtherSystemInformation[j] = searchSpaceOtherSystemInformation;
+            if ((searchSpaceOtherSystemInformation <0) || (searchSpaceOtherSystemInformation>39)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for searchSpaceOtherSystemInformation choice: 0..39 !\n",
+                           RC.config_file_name, i, searchSpaceOtherSystemInformation);
+            }            
+
+            NRRRC_CONFIGURATION_REQ (msg_p).pagingSearchSpace[j] = pagingSearchSpace;
+            if ((pagingSearchSpace <0) || (pagingSearchSpace>39)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for pagingSearchSpace choice: 0..39 !\n",
+                           RC.config_file_name, i, pagingSearchSpace);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).ra_SearchSpace[j] = ra_SearchSpace;
+            if ((ra_SearchSpace <0) || (ra_SearchSpace>39)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ra_SearchSpace choice: 0..39 !\n",
+                           RC.config_file_name, i, ra_SearchSpace);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).rach_ra_ControlResourceSet[j] = rach_ra_ControlResourceSet;
+            if ((rach_ra_ControlResourceSet <0) || (rach_ra_ControlResourceSet>11)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for rach_ra_ControlResourceSet choice: 0..11 !\n",
+                           RC.config_file_name, i, rach_ra_ControlResourceSet);
+            }
+
+            //////////////////////////////////NR PDCCH commonControlResourcesSets///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_common_controlResourceSetId[j] = PDCCH_common_controlResourceSetId;
+            if ((PDCCH_common_controlResourceSetId <0) || (PDCCH_common_controlResourceSetId>11)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_common_controlResourceSetId choice: 0..11 !\n",
+                           RC.config_file_name, i, PDCCH_common_controlResourceSetId);
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_common_ControlResourceSet_duration[j] = PDCCH_common_ControlResourceSet_duration;
+            if ((PDCCH_common_ControlResourceSet_duration <0) || (PDCCH_common_ControlResourceSet_duration>3)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_common_ControlResourceSet_duration choice: 0..11 !\n",
+                           RC.config_file_name, i, PDCCH_common_ControlResourceSet_duration);
+            }            
+            
+            if (strcmp(PDCCH_cce_REG_MappingType , "NOTHING") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_cce_REG_MappingType[j] =  ControlResourceSet__cce_REG_MappingType_PR_NOTHING;
+            }else if (strcmp(PDCCH_cce_REG_MappingType , "interleaved") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_cce_REG_MappingType[j] =  ControlResourceSet__cce_REG_MappingType_PR_interleaved;
+            }else if (strcmp(PDCCH_cce_REG_MappingType , "nonInterleaved") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_cce_REG_MappingType[j] =  ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_cce_REG_MappingType !\n",
+                           RC.config_file_name, i, PDCCH_cce_REG_MappingType);
+            }
+
+            switch(PDCCH_reg_BundleSize){
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_reg_BundleSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_reg_BundleSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n3;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_reg_BundleSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_reg_BundleSize choice: 2,3,6 !\n",
+                             RC.config_file_name, i, PDCCH_reg_BundleSize);
+                break;
+            }            
+
+            switch(PDCCH_interleaverSize){
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_interleaverSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_interleaverSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n3;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_interleaverSize[j] =  ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_interleaverSize choice: 2,3,6 !\n",
+                             RC.config_file_name, i, PDCCH_interleaverSize);
+                break;
+            }               
+
+            NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_shiftIndex[j] = PDCCH_shiftIndex;
+            if ((PDCCH_shiftIndex <0) || (PDCCH_shiftIndex>274)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_shiftIndex choice: 0..274 !\n",
+                           RC.config_file_name, i, PDCCH_shiftIndex);
+            }
+
+            if (strcmp(PDCCH_precoderGranularity , "sameAsREG-bundle") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_precoderGranularity[j] =  ControlResourceSet__precoderGranularity_sameAsREG_bundle;
+            }else if (strcmp(PDCCH_precoderGranularity , "allContiguousRBs") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).PDCCH_precoderGranularity[j] =  ControlResourceSet__precoderGranularity_allContiguousRBs;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for PDCCH_precoderGranularity !\n",
+                           RC.config_file_name, i, PDCCH_precoderGranularity);
+            }            
+
+            if (strcmp(tci_PresentInDCI , "ENABLE") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).tci_PresentInDCI[j] = ControlResourceSet__tci_PresentInDCI_enabled;
+            }
+
+            //////////////////////////////////NR PDCCH commonControlResourcesSets///////////////////////////
+            NRRRC_CONFIGURATION_REQ (msg_p).SearchSpaceId[j] = SearchSpaceId;
+            if ((SearchSpaceId <0) || (SearchSpaceId>39)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpaceId choice: 0..39 !\n",
+                           RC.config_file_name, i, SearchSpaceId);
+            }            
+
+            NRRRC_CONFIGURATION_REQ (msg_p).commonSearchSpaces_controlResourceSetId[j] = commonSearchSpaces_controlResourceSetId;
+            if ((commonSearchSpaces_controlResourceSetId <0) || (commonSearchSpaces_controlResourceSetId>11)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for commonSearchSpaces_controlResourceSetId choice: 0..11 !\n",
+                           RC.config_file_name, i, commonSearchSpaces_controlResourceSetId);
+            }
+
+            if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl1") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl1[j] = NULL;                 
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl2") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2;
+              
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl2[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl2;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl2 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl2>1)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl2 choice: 0..1 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl2);
+              }   
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl4") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl4[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl4;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl4 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl4>3)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl4 choice: 0..3 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl4);
+              }                 
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl5") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl5[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl5;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl5 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl5>4)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl5 choice: 0..4 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl5);
+              }   
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl8") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl8[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl8;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl8 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl8>7)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl8 choice: 0..7 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl8);
+              }   
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl10") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl10[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl10;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl10 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl10>9)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl10 choice: 0..9 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl10);
+              } 
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl16") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl16[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl16;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl16 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl16>15)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl16 choice: 0..15 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl16);
+              } 
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl20") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20;
+            
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_sl20[j] = SearchSpace_monitoringSlotPeriodicityAndOffset_sl20;
+              if ((SearchSpace_monitoringSlotPeriodicityAndOffset_sl20 <0) || (SearchSpace_monitoringSlotPeriodicityAndOffset_sl20>19)){
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_sl20 choice: 0..19 !\n",
+                             RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_sl20);
+              } 
+
+            }else if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "UNABLE") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_monitoringSlotPeriodicityAndOffset_choice[j] =  SearchSpace__monitoringSlotPeriodicityAndOffset_PR_NOTHING;
+            
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_monitoringSlotPeriodicityAndOffset_choice !\n",
+                           RC.config_file_name, i, SearchSpace_monitoringSlotPeriodicityAndOffset_choice);
+            }// End if (strcmp(SearchSpace_monitoringSlotPeriodicityAndOffset_choice , "sl1")
+
+            
+            switch(SearchSpace_nrofCandidates_aggregationLevel1){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n6;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel1[j] =  SearchSpace__nrofCandidates__aggregationLevel1_n8;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_nrofCandidates_aggregationLevel1 choice: 0,1,2,3,4,5,6,8 !\n",
+                             RC.config_file_name, i, SearchSpace_nrofCandidates_aggregationLevel1);
+                break;
+            }  
+
+            switch(SearchSpace_nrofCandidates_aggregationLevel2){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n6;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel2[j] =  SearchSpace__nrofCandidates__aggregationLevel2_n8;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_nrofCandidates_aggregationLevel2 choice: 0,1,2,3,4,5,6,8 !\n",
+                             RC.config_file_name, i, SearchSpace_nrofCandidates_aggregationLevel2);
+                break;
+            }  
+
+            switch(SearchSpace_nrofCandidates_aggregationLevel4){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n6;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel4[j] =  SearchSpace__nrofCandidates__aggregationLevel4_n8;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_nrofCandidates_aggregationLevel4 choice: 0,1,2,3,4,5,6,8 !\n",
+                             RC.config_file_name, i, SearchSpace_nrofCandidates_aggregationLevel4);
+                break;
+            }
+
+            switch(SearchSpace_nrofCandidates_aggregationLevel8){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n6;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel8[j] =  SearchSpace__nrofCandidates__aggregationLevel8_n8;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_nrofCandidates_aggregationLevel8 choice: 0,1,2,3,4,5,6,8 !\n",
+                             RC.config_file_name, i, SearchSpace_nrofCandidates_aggregationLevel8);
+                break;
+            }
+
+            switch(SearchSpace_nrofCandidates_aggregationLevel16){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n5;
+                break;
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n6;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_nrofCandidates_aggregationLevel16[j] =  SearchSpace__nrofCandidates__aggregationLevel16_n8;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_nrofCandidates_aggregationLevel16 choice: 0,1,2,3,4,5,6,8 !\n",
+                             RC.config_file_name, i, SearchSpace_nrofCandidates_aggregationLevel16);
+                break;
+            }
+
+            if (strcmp(SearchSpace_searchSpaceType , "NOTHING") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_searchSpaceType[j] =  SearchSpace__searchSpaceType_PR_NOTHING;
+            }else if (strcmp(SearchSpace_searchSpaceType , "common") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_searchSpaceType[j] =  SearchSpace__searchSpaceType_PR_common;
+            }else if (strcmp(SearchSpace_searchSpaceType , "ue_Specific") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).SearchSpace_searchSpaceType[j] =  SearchSpace__searchSpaceType_PR_ue_Specific;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SearchSpace_searchSpaceType !\n",
+                           RC.config_file_name, i, SearchSpace_searchSpaceType);
+            }
+
+            switch(Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1);
+                break;
+            }
+
+            switch(Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2);
+                break;
+            }
+
+            switch(Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4);
+                break;
+            }
+
+            switch(Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8);
+                break;
+            }
+
+            switch(Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16[j] =  SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16);
+                break;
+            }
+
+            switch(Common_dci_Format2_3_monitoringPeriodicity){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n2;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n5;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n8;
+                break;
+              case 10:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n10;
+                break;
+              case 16:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n16;
+                break;
+              case 20:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_monitoringPeriodicity[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__monitoringPeriodicity_n20;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_3_monitoringPeriodicity choice: 1,2,4,5,8,10,16,20 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_3_monitoringPeriodicity);
+                break;
+            }
+
+            switch(Common_dci_Format2_3_nrofPDCCH_Candidates){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_nrofPDCCH_Candidates[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__nrofPDCCH_Candidates_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).Common_dci_Format2_3_nrofPDCCH_Candidates[j] =  SearchSpace__searchSpaceType__common__dci_Format2_3__nrofPDCCH_Candidates_n2;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for Common_dci_Format2_3_nrofPDCCH_Candidates choice: 1,2 !\n",
+                             RC.config_file_name, i, Common_dci_Format2_3_nrofPDCCH_Candidates);
+                break;
+            }
+
+            if (strcmp(ue_Specific__dci_Formats , "formats0-0-And-1-0") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).ue_Specific__dci_Formats[j] =  SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0;
+            }else if (strcmp(ue_Specific__dci_Formats , "formats0-1-And-1-1") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).ue_Specific__dci_Formats[j] =  SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_1_And_1_1;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ue_Specific__dci_Formats !\n",
+                           RC.config_file_name, i, ue_Specific__dci_Formats);
+            }
+
+
+          }//End for (j = 0; j < CCsParamList.numelt ;j++)
+
+        }//End if ( CCsParamList.numelt> 0) 
+
+      }//End for (k=0; k <num_gnbs ; k++)
+
+    }//End for (k=0; k <num_gnbs ; k++)
+
+
+  }//End if (num_gnbs>0)
+
+
+}//End RCconfig_NRRRC function
+
+void NRRCConfig(void) {
+
+  // paramlist_def_t MACRLCParamList = {CONFIG_STRING_MACRLC_LIST,NULL,0};
+  // paramlist_def_t L1ParamList = {CONFIG_STRING_L1_LIST,NULL,0};
+  // paramlist_def_t RUParamList = {CONFIG_STRING_RU_LIST,NULL,0};
+  paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
+  paramlist_def_t CCsParamList = {GNB_CONFIG_STRING_COMPONENT_CARRIERS,NULL,0};
+  
+  char aprefix[MAX_OPTNAME_SIZE*2 + 8];  
+  
+
+
+/* get global parameters, defined outside any section in the config file */
+ 
+  printf("Getting GNBSParams\n");
+ 
+  config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL); 
+  RC.nb_nr_inst = GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt;
+ 
+  if (RC.nb_nr_inst > 0) {
+    RC.nb_CC = (int *)malloc((1+RC.nb_nr_inst)*sizeof(int));
+    for (int i=0;i<RC.nb_nr_inst;i++) {
+      sprintf(aprefix,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,i);
+      config_getlist( &CCsParamList,NULL,0, aprefix);
+      RC.nb_CC[i]		 = CCsParamList.numelt;
+    }
+  }
+
+/*    
+	// Get num MACRLC instances
+    config_getlist( &MACRLCParamList,NULL,0, NULL);
+    RC.nb_macrlc_inst  = MACRLCParamList.numelt;
+    // Get num L1 instances
+    config_getlist( &L1ParamList,NULL,0, NULL);
+    RC.nb_L1_inst = L1ParamList.numelt;
+
+    // Get num RU instances
+    config_getlist( &RUParamList,NULL,0, NULL);  
+    RC.nb_RU     = RUParamList.numelt; 
+ */
+ 
+
+}
diff --git a/openair2/ENB_APP/gnb_config.h b/openair2/ENB_APP/gnb_config.h
new file mode 100644
index 0000000000000000000000000000000000000000..179f7ac03d6b390fa6a46c46a21e4968e5b3c2d8
--- /dev/null
+++ b/openair2/ENB_APP/gnb_config.h
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*
+                                gnb_config.h
+                             -------------------
+  AUTHOR  : Lionel GAUTHIER, Navid Nikaein, Laurent Winckel
+  COMPANY : EURECOM
+  EMAIL   : Lionel.Gauthier@eurecom.fr, navid.nikaein@eurecom.fr
+*/
+
+#ifndef GNB_CONFIG_H_
+#define GNB_CONFIG_H_
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <libconfig.h>
+
+#include "commonDef.h"
+#include "platform_types.h"
+#include "platform_constants.h"
+#include "PHY/impl_defs_lte.h"
+#include "PHY/defs.h"
+#include "s1ap_messages_types.h"
+//#ifdef CMAKER
+//#include "SystemInformationBlockType2.h"
+//#include "rrc_messages_types.h"
+//#else
+//#include "RRC/LITE/MESSAGES/SystemInformationBlockType2.h"
+//#endif
+#include "intertask_interface_types.h"
+#include "RRC/NR/defs_NR.h"
+
+#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
+            struct in_addr inp;\
+            if ( inet_aton(AdDr_StR, &inp ) < 0 ) {\
+                AssertFatal (0, MeSsAgE);\
+            } else {\
+                NwBo = inp.s_addr;\
+            }\
+        } while (0);
+
+/** @defgroup _enb_app ENB APP 
+ * @ingroup _oai2
+ * @{
+ */
+
+// Hard to find a defined value for max enb...
+#define MAX_ENB 16
+
+/*
+typedef struct mme_ip_address_s {
+  unsigned  ipv4:1;
+  unsigned  ipv6:1;
+  unsigned  active:1;
+  char     *ipv4_address;
+  char     *ipv6_address;
+} mme_ip_address_t;
+
+typedef struct ru_config_s {
+  // indicates if local or remote rf is used (1 == LOCAL)
+  unsigned  local_rf:1;
+  // indicates if UDP socket is used
+  unsigned  udp:1;
+  // indicates if RAW socket is used
+  unsigned  raw:1;
+  char      *ru_if_name;
+  char     *local_address;
+  char     *remote_address;
+  uint16_t  local_port;
+  uint16_t  remote_port;
+  uint8_t   udpif4p5;
+  uint8_t   rawif4p5;
+  uint8_t   rawif5_mobipass;
+  uint8_t   if_compress;
+} ru_config_t;
+*/
+//extern void RCconfig_RU(void);
+//extern void RCconfig_flexran(void);
+//extern void RCconfig_L1(void);
+//extern void RCconfig_macrlc(void);
+//extern int  RCconfig_gtpu(void );
+extern void NRRCConfig(void);
+
+//void                          enb_config_display(void);
+//void                          ru_config_display(void);
+
+int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc);
+//int RCconfig_S1(MessageDef *msg_p, uint32_t i);
+
+#endif /* GNB_CONFIG_H_ */
+/** @} */
diff --git a/openair2/ENB_APP/gnb_paramdef.h b/openair2/ENB_APP/gnb_paramdef.h
new file mode 100644
index 0000000000000000000000000000000000000000..e909da3ce5b3ed890e3e3747174e33f6a7c4d5e4
--- /dev/null
+++ b/openair2/ENB_APP/gnb_paramdef.h
@@ -0,0 +1,404 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file openair2/GNB_APP/gnb_paramdef.f
+ * \brief definition of configuration parameters for all eNodeB modules 
+ * \author Francois TABURET
+ * \date 2017
+ * \version 0.1
+ * \company NOKIA BellLabs France
+ * \email: francois.taburet@nokia-bell-labs.com
+ * \note
+ * \warning
+ */
+
+#include "common/config/config_paramdesc.h"
+#include "NRRRC_paramsvalues.h"
+
+
+#define GNB_CONFIG_STRING_CC_NODE_FUNCTION                              "node_function"
+#define GNB_CONFIG_STRING_CC_NODE_TIMING                                "node_timing"   
+#define GNB_CONFIG_STRING_CC_NODE_SYNCH_REF                             "node_synch_ref"   
+
+
+// OTG config per GNB-UE DL
+#define GNB_CONF_STRING_OTG_CONFIG                         "otg_config"
+#define GNB_CONF_STRING_OTG_UE_ID                          "ue_id"
+#define GNB_CONF_STRING_OTG_APP_TYPE                       "app_type"
+#define GNB_CONF_STRING_OTG_BG_TRAFFIC                     "bg_traffic"
+
+#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
+extern int asn_debug;
+extern int asn1_xer_print;
+#endif
+
+#ifdef LIBCONFIG_LONG
+#define libconfig_int long
+#else
+#define libconfig_int int
+#endif
+
+typedef enum {
+  RU     = 0,
+  L1     = 1,
+  L2     = 2,
+  L3     = 3,
+  S1     = 4,
+  lastel = 5
+} NRRC_config_functions_t;
+
+#define CONFIG_STRING_ACTIVE_RUS                   "Active_RUs"
+/*------------------------------------------------------------------------------------------------------------------------------------------*/
+/*    RUs  configuration section name */
+#define CONFIG_STRING_RU_LIST                      "RUs"
+#define CONFIG_STRING_RU_CONFIG                   "ru_config"
+
+/*    RUs configuration parameters name   */
+#define CONFIG_STRING_RU_LOCAL_IF_NAME            "local_if_name"
+#define CONFIG_STRING_RU_LOCAL_ADDRESS            "local_address"
+#define CONFIG_STRING_RU_REMOTE_ADDRESS           "remote_address"
+#define CONFIG_STRING_RU_LOCAL_PORTC              "local_portc"
+#define CONFIG_STRING_RU_REMOTE_PORTC             "remote_portc"
+#define CONFIG_STRING_RU_LOCAL_PORTD              "local_portd"
+#define CONFIG_STRING_RU_REMOTE_PORTD             "remote_portd"
+#define CONFIG_STRING_RU_LOCAL_RF                 "local_rf"
+#define CONFIG_STRING_RU_TRANSPORT_PREFERENCE     "tr_preference"
+#define CONFIG_STRING_RU_BAND_LIST                "bands"
+#define CONFIG_STRING_RU_GNB_LIST                 "gNB_instances"
+#define CONFIG_STRING_RU_NB_TX                    "nb_tx"
+#define CONFIG_STRING_RU_NB_RX                    "nb_rx"
+#define CONFIG_STRING_RU_ATT_TX                   "att_tx"
+#define CONFIG_STRING_RU_ATT_RX                   "att_rx"
+#define CONFIG_STRING_RU_MAX_RS_EPRE              "max_pdschReferenceSignalPower"
+#define CONFIG_STRING_RU_MAX_RXGAIN               "max_rxgain"
+#define CONFIG_STRING_RU_IF_COMPRESSION           "if_compression"
+#define CONFIG_STRING_RU_NBIOTRRC_LIST            "NbIoT_RRC_instances"
+
+#define RU_LOCAL_IF_NAME_IDX          0
+#define RU_LOCAL_ADDRESS_IDX          1
+#define RU_REMOTE_ADDRESS_IDX         2
+#define RU_LOCAL_PORTC_IDX            3
+#define RU_REMOTE_PORTC_IDX           4
+#define RU_LOCAL_PORTD_IDX            5
+#define RU_REMOTE_PORTD_IDX           6
+#define RU_TRANSPORT_PREFERENCE_IDX   7
+#define RU_LOCAL_RF_IDX               8
+#define RU_NB_TX_IDX                  9
+#define RU_NB_RX_IDX                  10
+#define RU_MAX_RS_EPRE_IDX            11
+#define RU_MAX_RXGAIN_IDX             12
+#define RU_BAND_LIST_IDX              13
+#define RU_GNB_LIST_IDX               14
+#define RU_ATT_TX_IDX                 15
+#define RU_ATT_RX_IDX                 16
+#define RU_NBIOTRRC_LIST_IDX          17
+
+
+
+/*-----------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            RU configuration parameters                                                                  */
+/*   optname                                   helpstr   paramflags    XXXptr        defXXXval                   type           numelt     */
+/*-----------------------------------------------------------------------------------------------------------------------------------------*/
+#define RUPARAMS_DESC { \
+{CONFIG_STRING_RU_LOCAL_IF_NAME,            	 NULL,       0,       strptr:NULL,     defstrval:"lo",  	TYPE_STRING,	  0}, \
+{CONFIG_STRING_RU_LOCAL_ADDRESS,            	 NULL,       0,       strptr:NULL,     defstrval:"127.0.0.2",	TYPE_STRING,	  0}, \
+{CONFIG_STRING_RU_REMOTE_ADDRESS,           	 NULL,       0,       strptr:NULL,     defstrval:"127.0.0.1",	TYPE_STRING,	  0}, \
+{CONFIG_STRING_RU_LOCAL_PORTC,              	 NULL,       0,       uptr:NULL,       defuintval:50000,	TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_REMOTE_PORTC,             	 NULL,       0,       uptr:NULL,       defuintval:50000,	TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_LOCAL_PORTD,              	 NULL,       0,       uptr:NULL,       defuintval:50001,	TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_REMOTE_PORTD,             	 NULL,       0,       uptr:NULL,       defuintval:50001,	TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_TRANSPORT_PREFERENCE,     	 NULL,       0,       strptr:NULL,     defstrval:"udp_if5",	TYPE_STRING,	  0}, \
+{CONFIG_STRING_RU_LOCAL_RF,                 	 NULL,       0,       strptr:NULL,     defstrval:"yes", 	TYPE_STRING,	  0}, \
+{CONFIG_STRING_RU_NB_TX,                    	 NULL,       0,       uptr:NULL,       defuintval:1,		TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_NB_RX,                    	 NULL,       0,       uptr:NULL,       defuintval:1,		TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_MAX_RS_EPRE,              	 NULL,       0,       iptr:NULL,       defintval:-29,		TYPE_INT,	  0}, \
+{CONFIG_STRING_RU_MAX_RXGAIN,               	 NULL,       0,       iptr:NULL,       defintval:120,		TYPE_INT,	  0}, \
+{CONFIG_STRING_RU_BAND_LIST,                	 NULL,       0,       uptr:NULL,       defintarrayval:DEFBANDS, TYPE_INTARRAY,    1}, \
+{CONFIG_STRING_RU_GNB_LIST,                 	 NULL,       0,       uptr:NULL,       defintarrayval:DEFGNBS,  TYPE_INTARRAY,    1}, \
+{CONFIG_STRING_RU_ATT_TX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_ATT_RX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
+{CONFIG_STRING_RU_NBIOTRRC_LIST,                 NULL,       0,       uptr:NULL,       defintarrayval:DEFGNBS,  TYPE_INTARRAY,    1}, \
+}
+
+/*---------------------------------------------------------------------------------------------------------------------------------------*/
+/*---------------------------------------------------------------------------------------------------------------------------------------*/
+/* value definitions for ASN1 verbosity parameter */
+#define GNB_CONFIG_STRING_ASN1_VERBOSITY_NONE              "none"
+#define GNB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING          "annoying"
+#define GNB_CONFIG_STRING_ASN1_VERBOSITY_INFO              "info"
+ 
+
+/* global parameters, not under a specific section   */
+#define GNB_CONFIG_STRING_ASN1_VERBOSITY           "Asn1_verbosity"
+#define GNB_CONFIG_STRING_ACTIVE_GNBS              "Active_gNBs"
+/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            global configuration parameters                                                                                   */
+/*   optname                                   helpstr   paramflags    XXXptr        defXXXval                                        type           numelt     */
+/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+#define GNBSPARAMS_DESC {                                                                                             \
+{GNB_CONFIG_STRING_ASN1_VERBOSITY,             NULL,     0,        uptr:NULL,   defstrval:GNB_CONFIG_STRING_ASN1_VERBOSITY_NONE,   TYPE_STRING,      0},   \
+{GNB_CONFIG_STRING_ACTIVE_GNBS,                NULL,     0,        uptr:NULL,   defstrval:NULL, 				   TYPE_STRINGLIST,  0}    \
+}
+#define GNB_ASN1_VERBOSITY_IDX                     0
+#define GNB_ACTIVE_GNBS_IDX                        1
+
+/*------------------------------------------------------------------------------------------------------------------------------------------*/
+/*------------------------------------------------------------------------------------------------------------------------------------------*/
+
+
+/* cell configuration parameters names */
+#define GNB_CONFIG_STRING_GNB_ID                        "gNB_ID"
+#define GNB_CONFIG_STRING_CELL_TYPE                     "cell_type"
+#define GNB_CONFIG_STRING_GNB_NAME                      "gNB_name"
+#define GNB_CONFIG_STRING_TRACKING_AREA_CODE            "tracking_area_code"
+#define GNB_CONFIG_STRING_MOBILE_COUNTRY_CODE           "mobile_country_code"
+#define GNB_CONFIG_STRING_MOBILE_NETWORK_CODE           "mobile_network_code"
+#define GNB_CONFIG_STRING_TRANSPORT_S_PREFERENCE        "tr_s_preference"
+#define GNB_CONFIG_STRING_LOCAL_S_IF_NAME               "local_s_if_name"
+#define GNB_CONFIG_STRING_LOCAL_S_ADDRESS               "local_s_address"
+#define GNB_CONFIG_STRING_REMOTE_S_ADDRESS              "remote_s_address"
+#define GNB_CONFIG_STRING_LOCAL_S_PORTC                 "local_s_portc"
+#define GNB_CONFIG_STRING_REMOTE_S_PORTC                "remote_s_portc"
+#define GNB_CONFIG_STRING_LOCAL_S_PORTD                 "local_s_portd"
+#define GNB_CONFIG_STRING_REMOTE_S_PORTD                "remote_s_portd"
+
+/*-----------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            cell configuration parameters                                                                */
+/*   optname                                   helpstr   paramflags    XXXptr        defXXXval                   type           numelt     */
+/*-----------------------------------------------------------------------------------------------------------------------------------------*/
+#define GNBPARAMS_DESC {\
+{GNB_CONFIG_STRING_GNB_ID,                       NULL,   0,            uptr:NULL,   defintval:0,                 TYPE_UINT,      0},  \
+{GNB_CONFIG_STRING_CELL_TYPE,                    NULL,   0,            strptr:NULL, defstrval:"CELL_MACRO_GNB",  TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_GNB_NAME,                     NULL,   0,            strptr:NULL, defstrval:"OAIeNodeB",       TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_TRACKING_AREA_CODE,           NULL,   0,            strptr:NULL, defstrval:"0",               TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_MOBILE_COUNTRY_CODE,          NULL,   0,            strptr:NULL, defstrval:"0",               TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_MOBILE_NETWORK_CODE,          NULL,   0,            strptr:NULL, defstrval:"0",               TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_TRANSPORT_S_PREFERENCE,       NULL,   0,            strptr:NULL, defstrval:"local_mac",       TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_LOCAL_S_IF_NAME,              NULL,   0,            strptr:NULL, defstrval:"lo",              TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_LOCAL_S_ADDRESS,              NULL,   0,            strptr:NULL, defstrval:"127.0.0.1",       TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_REMOTE_S_ADDRESS,             NULL,   0,            strptr:NULL, defstrval:"127.0.0.2",       TYPE_STRING,    0},  \
+{GNB_CONFIG_STRING_LOCAL_S_PORTC,                NULL,   0,            uptr:NULL,   defuintval:50000,            TYPE_UINT,      0},  \
+{GNB_CONFIG_STRING_REMOTE_S_PORTC,               NULL,   0,            uptr:NULL,   defuintval:50000,            TYPE_UINT,      0},  \
+{GNB_CONFIG_STRING_LOCAL_S_PORTD,                NULL,   0,            uptr:NULL,   defuintval:50001,            TYPE_UINT,      0},  \
+{GNB_CONFIG_STRING_REMOTE_S_PORTD,               NULL,   0,            uptr:NULL,   defuintval:50001,            TYPE_UINT,      0},  \
+}															     	
+#define GNB_GNB_ID_IDX                  0
+#define GNB_CELL_TYPE_IDX               1
+#define GNB_GNB_NAME_IDX                2
+#define GNB_TRACKING_AREA_CODE_IDX      3
+#define GNB_MOBILE_COUNTRY_CODE_IDX     4
+#define GNB_MOBILE_NETWORK_CODE_IDX     5
+#define GNB_TRANSPORT_S_PREFERENCE_IDX  6
+#define GNB_LOCAL_S_IF_NAME_IDX         7
+#define GNB_LOCAL_S_ADDRESS_IDX         8
+#define GNB_REMOTE_S_ADDRESS_IDX        9
+#define GNB_LOCAL_S_PORTC_IDX           10
+#define GNB_REMOTE_S_PORTC_IDX          11
+#define GNB_LOCAL_S_PORTD_IDX           12
+#define GNB_REMOTE_S_PORTD_IDX          13
+/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*-------------------------------------------------------------------------------------------------------------------------------------------------*/		  
+
+
+/* component carries configuration parameters name */
+
+#define GNB_CONFIG_STRING_NB_ANT_PORTS													"nb_antenna_ports"
+#define GNB_CONFIG_STRING_NB_ANT_TX														"nb_antennas_tx"
+#define GNB_CONFIG_STRING_NB_ANT_RX														"nb_antennas_rx"
+#define GNB_CONFIG_STRING_TX_GAIN														"tx_gain"
+#define GNB_CONFIG_STRING_RX_GAIN														"rx_gain"
+
+  ///NR
+  //NR FREQUENCYINFODL
+#define GNB_CONFIG_STRING_ABSOLUTEFREQUENCYSSB											"absoluteFrequencySSB"
+#define GNB_CONFIG_STRING_SSB_SUBCARRIEROFFSET											"SubcarrierSpacing"
+#define GNB_CONFIG_STRING_DL_FREQBANDINDICATORNR										"DL_FreqBandIndicatorNR"
+#define GNB_CONFIG_STRING_DL_ABSOLUTEFREQUENCYPOINTA									"DL_absoluteFrequencyPointA"
+
+  //NR DL SCS-SPECIFICCARRIER
+#define GNB_CONFIG_STRING_DL_OFFSETTOCARRIER											"DL_offsetToCarrier"
+#define GNB_CONFIG_STRING_DL_SUBCARRIERSPACING											"DL_SubcarrierSpacing"
+#define GNB_CONFIG_STRING_DL_SCS_SPECIFICCARRIER_K0										"DL_SCS_SpecificCarrier_k0"
+#define GNB_CONFIG_STRING_DL_CARRIERBANDWIDTH											"DL_carrierBandwidth"
+
+  // NR BWP-DOWNLINKCOMMON
+#define GNB_CONFIG_STRING_DL_LOCATIONANDBANDWIDTH										"DL_locationAndBandwidth"
+///#define GNB_CONFIG_STRING_DL_PREFIX_TYPE;     
+
+  //NR FREQUENCYINFOUL
+#define GNB_CONFIG_STRING_UL_FREQBANDINDICATORNR										"UL_FreqBandIndicatorNR"
+#define GNB_CONFIG_STRING_UL_ABSOLUTEFREQUENCYPOINTA									"UL_absoluteFrequencyPointA"
+#define GNB_CONFIG_STRING_FREQUENCYINFOUL_P_MAX											"FrequencyInfoUL_p_Max"
+#define GNB_CONFIG_STRING_FREQUENCYSHIFT7P5KHZ											"frequencyShift7p5khz"
+
+  //NR UL SCS-SPECIFICCARRIER
+#define GNB_CONFIG_STRING_UL_OFFSETTOCARRIER											"UL_offsetToCarrier"
+#define GNB_CONFIG_STRING_UL_SUBCARRIERSPACING											"UL_SubcarrierSpacing"
+#define GNB_CONFIG_STRING_UL_SCS_SPECIFICCARRIER_K0										"UL_SCS_SpecificCarrier_k0"
+#define GNB_CONFIG_STRING_UL_CARRIERBANDWIDTH											"UL_carrierBandwidth"
+
+  // NR BWP-UPLINKCOMMON
+#define GNB_CONFIG_STRING_UL_LOCATIONANDBANDWIDTH										"UL_locationAndBandwidth"
+  //NR_PREFIX_TYPE_T      UL_PREFIX_TYPE[MAX_NUM_CCS]; 
+
+
+#define GNB_CONFIG_STRING_SSB_PERIODICITYSERVINGCELL									"ssb_periodicityServingCell"
+#define GNB_CONFIG_STRING_DMRS_TYPEA_POSITION											"dmrs_TypeA_Position"
+#define GNB_CONFIG_STRING_NIA_SUBCARRIERSPACING											"NIA_SubcarrierSpacing"
+#define GNB_CONFIG_STRING_SS_PBCH_BLOCKPOWER											"ss_PBCH_BlockPower"
+
+
+  //NR TDD-UL-DL-CONFIGCOMMON
+#define GNB_CONFIG_STRING_REFERENCESUBCARRIERSPACING									"referenceSubcarrierSpacing"
+#define GNB_CONFIG_STRING_DL_UL_TRANSMISSIONPERIODICITY									"dl_UL_TransmissionPeriodicity"
+#define GNB_CONFIG_STRING_NROFDOWNLINKSLOTS												"nrofDownlinkSlots"
+#define GNB_CONFIG_STRING_NROFDOWNLINKSYMBOLS											"nrofDownlinkSymbols"
+#define GNB_CONFIG_STRING_NROFUPLINKSLOTS												"nrofUplinkSlots"
+#define GNB_CONFIG_STRING_NROFUPLINKSYMBOLS												"nrofUplinkSymbols"
+
+  //NR RACH-CONFIGCOMMON
+#define GNB_CONFIG_STRING_RACH_TOTALNUMBEROFRA_PREAMBLES								"rach_totalNumberOfRA_Preambles"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_CHOICE			"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEEIGHTH		"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEFOURTH		"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEHALF		"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONE			"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_TWO			"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_FOUR			"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_EIGHT			"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight"
+#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_SIXTEEN		"rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen"
+#define GNB_CONFIG_STRING_RACH_GROUPBCONFIGURED											"rach_groupBconfigured "
+#define GNB_CONFIG_STRING_RACH_RA_MSG3SIZEGROUPA										"rach_ra_Msg3SizeGroupA"
+#define GNB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB									"rach_messagePowerOffsetGroupB"
+#define GNB_CONFIG_STRING_RACH_NUMBEROFRA_PREAMBLESGROUPA								"rach_numberOfRA_PreamblesGroupA"
+#define GNB_CONFIG_STRING_RACH_RA_CONTENTIONRESOLUTIONTIMER								"rach_ra_ContentionResolutionTimer"
+#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB												"rsrp_ThresholdSSB"
+#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB_SUL											"rsrp_ThresholdSSB_SUL"
+#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_CHOICE								"prach_RootSequenceIndex_choice"
+#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L839									"prach_RootSequenceIndex_l839"
+#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L139									"prach_RootSequenceIndex_l139"
+#define GNB_CONFIG_STRING_PRACH_MSG1_SUBCARRIERSPACING									"prach_msg1_SubcarrierSpacing"
+#define GNB_CONFIG_STRING_RESTRICTEDSETCONFIG											"restrictedSetConfig"
+#define GNB_CONFIG_STRING_MSG3_TRANSFORMPRECODING										"msg3_transformPrecoding"
+  //SSB-PERRACH-OCCASIONANDCB-PREAMBLESPERSSB NOT SURE
+
+  //NR RACH-CONFIGGENERIC
+#define GNB_CONFIG_STRING_PRACH_CONFIGURATIONINDEX										"prach_ConfigurationIndex"
+#define GNB_CONFIG_STRING_PRACH_MSG1_FDM												"prach_msg1_FDM"
+#define GNB_CONFIG_STRING_PRACH_MSG1_FREQUENCYSTART										"prach_msg1_FrequencyStart"
+#define GNB_CONFIG_STRING_ZEROCORRELATIONZONECONFIG										"zeroCorrelationZoneConfig"
+#define GNB_CONFIG_STRING_PREAMBLERECEIVEDTARGETPOWER									"preambleReceivedTargetPower"
+#define GNB_CONFIG_STRING_PREAMBLETRANSMAX												"preambleTransMax"
+#define GNB_CONFIG_STRING_POWERRAMPINGSTEP												"powerRampingStep"
+#define GNB_CONFIG_STRING_RA_RESPONSEWINDOW												"ra_ResponseWindow"
+
+  //PUSCH-CONFIGCOMMON
+#define GNB_CONFIG_STRING_GROUPHOPPINGENABLEDTRANSFORMPRECODING							"groupHoppingEnabledTransformPrecoding"
+#define GNB_CONFIG_STRING_MSG3_DELTAPREAMBLE											"msg3_DeltaPreamble"
+#define GNB_CONFIG_STRING_P0_NOMINALWITHGRANT											"p0_NominalWithGrant"
+
+  ///PUSCH-TIMEDOMAINRESOURCEALLOCATION
+#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_K2							"PUSCH_TimeDomainResourceAllocation_k2"
+#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE				"PUSCH_TimeDomainResourceAllocation_mappingType"
+
+  //PUCCH-CONFIGCOMMON
+#define GNB_CONFIG_STRING_PUCCH_GROUPHOPPING											"pucch_GroupHopping"
+#define GNB_CONFIG_STRING_P0_NOMINAL													"p0_nominal"
+
+  //PDSCH-CONFIGCOMMON
+  //PDSCH-TIMEDOMAINRESOURCEALLOCATION
+#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_K0							"PDSCH_TimeDomainResourceAllocation_k0"
+#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE				"PDSCH_TimeDomainResourceAllocation_mappingType"
+
+  //RATEMATCHPATTERN  IS USED TO CONFIGURE ONE RATE MATCHING PATTERN FOR PDSCH
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNID											"rateMatchPatternId"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERN_PATTERNTYPE									"RateMatchPattern_patternType"
+#define GNB_CONFIG_STRING_SYMBOLSINRESOURCEBLOCK										"symbolsInResourceBlock"
+#define GNB_CONFIG_STRING_PERIODICITYANDPATTERN											"periodicityAndPattern"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERN_CONTROLRESOURCESET							"RateMatchPattern_controlResourceSet"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERN_SUBCARRIERSPACING							"RateMatchPattern_subcarrierSpacing"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERN_MODE											"RateMatchPattern_mode"
+
+  //PDCCH-CONFIGCOMMON
+#define GNB_CONFIG_STRING_SEARCHSPACESIB1												"searchSpaceSIB1"
+#define GNB_CONFIG_STRING_SEARCHSPACEOTHERSYSTEMINFORMATION								"searchSpaceOtherSystemInformation"
+#define GNB_CONFIG_STRING_PAGINGSEARCHSPACE												"pagingSearchSpace"
+#define GNB_CONFIG_STRING_RA_SEARCHSPACE												"ra_SearchSpace"
+#define GNB_CONFIG_STRING_RACH_RA_CONTROLRESOURCESET									"rach_ra_ControlResourceSet"
+  //NR PDCCH-CONFIGCOMMON COMMONCONTROLRESOURCESSETS
+#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESETID								"PDCCH_common_controlResourceSetId"
+#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESET_DURATION						"PDCCH_common_ControlResourceSet_duration"
+#define GNB_CONFIG_STRING_PDCCH_CCE_REG_MAPPINGTYPE										"PDCCH_cce_REG_MappingType"
+#define GNB_CONFIG_STRING_PDCCH_REG_BUNDLESIZE											"PDCCH_reg_BundleSize"
+#define GNB_CONFIG_STRING_PDCCH_INTERLEAVERSIZE											"PDCCH_interleaverSize"
+#define GNB_CONFIG_STRING_PDCCH_SHIFTINDEX												"PDCCH_shiftIndex"
+#define GNB_CONFIG_STRING_PDCCH_PRECODERGRANULARITY										"PDCCH_precoderGranularity"
+#define GNB_CONFIG_STRING_TCI_PRESENTINDCI												"tci_PresentInDCI"
+
+  //NR PDCCH-ConfigCommon commonSearchSpaces
+#define GNB_CONFIG_STRING_SEARCHSPACEID													"SearchSpaceId"
+#define GNB_CONFIG_STRING_COMMONSEARCHSPACES_CONTROLRESOURCESETID						"commonSearchSpaces_controlResourceSetId"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_CHOICE			"SearchSpace_monitoringSlotPeriodicityAndOffset_choice"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL1			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl1"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL2			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl2"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL4			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl4"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL5			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl5"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL8			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl8"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL10			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl10"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL16			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl16"
+#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL20			"SearchSpace_monitoringSlotPeriodicityAndOffset_sl20"
+#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL1					"SearchSpace_nrofCandidates_aggregationLevel1"
+#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL2					"SearchSpace_nrofCandidates_aggregationLevel2"
+#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL4					"SearchSpace_nrofCandidates_aggregationLevel4"
+#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL8					"SearchSpace_nrofCandidates_aggregationLevel8"
+#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL16					"SearchSpace_nrofCandidates_aggregationLevel16"
+#define GNB_CONFIG_STRING_SEARCHSPACE_SEARCHSPACETYPE									"SearchSpace_searchSpaceType"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL1		"Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL2		"Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL4		"Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL8		"Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL16	"Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY					"Common_dci_Format2_3_monitoringPeriodicity"
+#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES						"Common_dci_Format2_3_nrofPDCCH_Candidates"
+#define GNB_CONFIG_STRING_UE_SPECIFIC__DCI_FORMATS										"ue_Specific__dci_Formats"
+
+
+  //PDCCH-CONFIGCOMMON
+
+  //CONTROLRESOURCESET
+#define GNB_CONFIG_STRING_CONTROLRESOURCESETID                                    = 0;
+#define GNB_CONFIG_STRING_FREQUENCYDOMAINRESOURCES                                = 0;
+#define GNB_CONFIG_STRING_CONTROLRESOURCESET_DURATION                             = 0;
+#define GNB_CONFIG_STRING_PRECODERGRANULARITY                                     = 0; //CORRESPONDS TO L1 PARAMETER 'CORESET-PRECODER-GRANUALITY'
+#define GNB_CONFIG_STRING_TCI_PRESENTINDCI                                        = NULL;
+
+  //SEARCHSPACE
+#define GNB_CONFIG_STRING_SEARCHSPACEID                                           = 0;
+#define GNB_CONFIG_STRING_DCI_FORMAT2_3_MONITORINGPERIODICITY                     = 0;
+#define GNB_CONFIG_STRING_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES                      = 0;
+
+
+  // NR SYNCHRONIZATION SIGNAL BLOCK
+  
+#define GNB_CONFIG_STRING_SSB_PERIODICITYSERVINGCELL                              = 0;
+#define GNB_CONFIG_STRING_SS_PBCH_BLOCKPOWER                                      = 0;
+
+
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index a05b27ddc361f93e62c6bb6bac70803b662ac152..ab5d69fba33486e6aa7765173693ca52e67dc25d 100644
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -48,41 +48,42 @@
 #include <asn_internal.h> /* for _ASN_DEFAULT_STACK_MAX */
 #include <per_encoder.h>
 
+#include "RRC/NR/defs_NR.h"
+//#include "RRC/LITE/extern.h"
+
+#if defined(Rel15)
 #include "assertions.h"
-#include "RRCConnectionRequest.h"
-#include "UL-CCCH-Message.h"
+//#include "RRCConnectionRequest.h"
+//#include "UL-CCCH-Message.h"
 #include "UL-DCCH-Message.h"
-#include "DL-CCCH-Message.h"
+//#include "DL-CCCH-Message.h"
 #include "DL-DCCH-Message.h"
-#include "EstablishmentCause.h"
-#include "RRCConnectionSetup.h"
+//#include "EstablishmentCause.h"
+//#include "RRCConnectionSetup.h"
 #include "SRB-ToAddModList.h"
 #include "DRB-ToAddModList.h"
-#if defined(Rel10) || defined(Rel14)
-#include "MCCH-Message.h"
+//#include "MCCH-Message.h"
 //#define MRB1 1
-#endif
 
-#include "RRC/LITE/defs.h"
-#include "RRC/LITE/extern.h"
-#include "RRCConnectionSetupComplete.h"
-#include "RRCConnectionReconfigurationComplete.h"
-#include "RRCConnectionReconfiguration.h"
-#include "MasterInformationBlock.h"
-#include "SystemInformation.h"
+//#include "RRCConnectionSetupComplete.h"
+//#include "RRCConnectionReconfigurationComplete.h"
+//#include "RRCConnectionReconfiguration.h"
+#include "MIB.h"
+//#include "SystemInformation.h"
 
-#include "SystemInformationBlockType1.h"
+#include "SIB1.h"
 
-#include "SIB-Type.h"
+//#include "SIB-Type.h"
 
-#include "BCCH-DL-SCH-Message.h"
+//#include "BCCH-DL-SCH-Message.h"
 
-#include "PHY/defs.h"
+//#include "PHY/defs.h"
 
 #include "MeasObjectToAddModList.h"
 #include "ReportConfigToAddModList.h"
 #include "MeasIdToAddModList.h"
 #include "enb_config.h"
+#endif
 
 #if defined(ENABLE_ITTI)
 # include "intertask_interface.h"
@@ -110,7 +111,9 @@ typedef struct xer_sprint_string_s {
   size_t string_index;
 } xer_sprint_string_t;
 
-extern unsigned char NB_eNB_INST;
+//repplace LTE
+//extern unsigned char NB_eNB_INST;
+extern unsigned char NB_gNB_INST;
 extern uint8_t usim_test;
 
 extern RAN_CONTEXT_t RC;
@@ -129,7 +132,7 @@ uint16_t two_tier_hexagonal_adjacent_cellIds[7][6] = {{1,2,4,5,7,8},    // CellI
  * This is a helper function for xer_sprint, which directs all incoming data
  * into the provided string.
  */
-static int xer__print2s (const void *buffer, size_t size, void *app_key)
+static int xer__print2s_NR (const void *buffer, size_t size, void *app_key)
 {
   xer_sprint_string_t *string_buffer = (xer_sprint_string_t *) app_key;
   size_t string_remaining = string_buffer->string_size - string_buffer->string_index;
@@ -146,7 +149,7 @@ static int xer__print2s (const void *buffer, size_t size, void *app_key)
   return 0;
 }
 
-int xer_sprint (char *string, size_t string_size, asn_TYPE_descriptor_t *td, void *sptr)
+int xer_sprint_NR (char *string, size_t string_size, asn_TYPE_descriptor_t *td, void *sptr)
 {
   asn_enc_rval_t er;
   xer_sprint_string_t string_buffer;
@@ -170,13 +173,13 @@ int xer_sprint (char *string, size_t string_size, asn_TYPE_descriptor_t *td, voi
   return er.encoded;
 }
 
-uint16_t get_adjacent_cell_id(uint8_t Mod_id,uint8_t index)
+uint16_t get_adjacent_cell_id_NR(uint8_t Mod_id,uint8_t index)
 {
   return(two_tier_hexagonal_adjacent_cellIds[Mod_id][index]);
 }
 /* This only works for the hexagonal topology...need a more general function for other topologies */
 
-uint8_t get_adjacent_cell_mod_id(uint16_t phyCellId)
+uint8_t get_adjacent_cell_mod_id_NR(uint16_t phyCellId)
 {
   uint8_t i;
 
@@ -190,94 +193,89 @@ uint8_t get_adjacent_cell_mod_id(uint16_t phyCellId)
   return 0xFF; //error!
 }
 
-uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich_Resource, uint32_t phich_duration, uint32_t frame)
+//------------------------------------------------------------------------------
+
+uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier, 
+                  uint32_t frame, 
+                  uint32_t ssb_SubcarrierOffset, 
+                  uint32_t pdcch_ConfigSIB1, 
+                  uint32_t subCarrierSpacingCommon, 
+                  uint32_t dmrs_TypeA_Position)
 {
 
   asn_enc_rval_t enc_rval;
-  BCCH_BCH_Message_t *mib=&carrier->mib ;
-  uint8_t sfn = (uint8_t)((frame>>2)&0xff);
-  uint16_t *spare= calloc(1, sizeof(uint16_t));
+
+  BCCH_BCH_Message_t *mib=&carrier->mib_NR ;
+  memset(mib,0,sizeof(BCCH_BCH_Message_t));
+  mib->message.present = BCCH_BCH_MessageType_PR_mib;
+  
+  //36.331 SFN BIT STRING (SIZE (8)  , 38.331 SFN BIT STRING (SIZE (6))
+  uint8_t sfn = (uint8_t)((frame>>4)&0x3f);
+  mib->message.choice.mib.systemFrameNumber.buf = &sfn;
+  mib->message.choice.mib.systemFrameNumber.size = 1;
+  mib->message.choice.mib.systemFrameNumber.bits_unused=0;
+
+  //38.331 spare BIT STRING (SIZE (1))
+  uint8_t *spare= calloc(1, sizeof(uint8_t));
   if (spare == NULL) abort();
+  mib->message.choice.mib.spare.buf = (uint8_t *)spare;
+  mib->message.choice.mib.spare.size = 1;
+  mib->message.choice.mib.spare.bits_unused = 7;  // This makes a spare of 1 bits
 
-  switch (N_RB_DL) {
+  mib->message.choice.mib.ssb_SubcarrierOffset = ssb_SubcarrierOffset;
+  mib->message.choice.mib.pdcch_ConfigSIB1 = pdcch_ConfigSIB1;
+  
+  switch (subCarrierSpacingCommon) {
+    case 15:
+      mib->message.choice.mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs15or60;
+      break;
 
-  case 6:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n6;
-    break;
+    case 30:
+      mib->message.choice.mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs30or120;
+      break;
 
-  case 15:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n15;
-    break;
+    case 60:
+      mib->message.choice.mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs15or60;
+      break;
 
-  case 25:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n25;
-    break;
+    case 120:
+      mib->message.choice.mib.subCarrierSpacingCommon = MIB__subCarrierSpacingCommon_scs30or120;
+      break;
 
-  case 50:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n50;
-    break;
+    default:
+    AssertFatal(1==0,"Unknown subCarrierSpacingCommon %d\n",subCarrierSpacingCommon);
+  }
 
-  case 75:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n75;
-    break;
+    switch (dmrs_TypeA_Position) {
+    case 2:
+      mib->message.choice.mib.dmrs_TypeA_Position = MIB__dmrs_TypeA_Position_pos2;
+      break;
+
+    case 3:
+      mib->message.choice.mib.dmrs_TypeA_Position = MIB__dmrs_TypeA_Position_pos3;
+      break;
+
+    default:
+    AssertFatal(1==0,"Unknown dmrs_TypeA_Position %d\n",dmrs_TypeA_Position);
 
-  case 100:
-    mib->message.dl_Bandwidth = MasterInformationBlock__dl_Bandwidth_n100;
-    break;
-  default:
-    AssertFatal(1==0,"Unknown dl_Bandwidth %d\n",N_RB_DL);
   }
 
-  AssertFatal(phich_Resource <= PHICH_Config__phich_Resource_two,"Illegal phich_Resource\n");
-  mib->message.phich_Config.phich_Resource = phich_Resource;
-  AssertFatal(phich_Resource <= PHICH_Config__phich_Duration_extended,"Illegal phich_Duration\n");
-  mib->message.phich_Config.phich_Duration = phich_duration;
-  LOG_I(RRC,"[MIB] systemBandwidth %x, phich_duration %x, phich_resource %x,sfn %x\n",
-         (uint32_t)mib->message.dl_Bandwidth,
-         (uint32_t)phich_duration,
-         (uint32_t)phich_Resource,
-         (uint32_t)sfn);
-
-  mib->message.systemFrameNumber.buf = &sfn;
-  mib->message.systemFrameNumber.size = 1;
-  mib->message.systemFrameNumber.bits_unused=0;
-  mib->message.spare.buf = (uint8_t *)spare;
-#ifndef Rel14
-  mib->message.spare.size = 2;
-  mib->message.spare.bits_unused = 6;  // This makes a spare of 10 bits
-#else
-  mib->message.spare.size = 1;
-  mib->message.spare.bits_unused = 3;  // This makes a spare of 5 bits
-  mib->message.schedulingInfoSIB1_BR_r13 = 0; // turn off eMTC
-#endif
+  //  assign_enum
+  mib->message.choice.mib.cellBarred = MIB__cellBarred_notBarred;
+  //  assign_enum
+  mib->message.choice.mib.intraFreqReselection = MIB__intraFreqReselection_notAllowed;
 
+  
+
+  //encode MIB to data
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message,
                                    (void*)mib,
-                                   carrier->MIB,
+                                   carrier->MIB_NR,
                                    24);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
 
-  /*
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[20000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_BCCH_BCH_Message, (void *) &mib)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_BCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_bcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_bcch.text, message_string, message_string_size);
 
-      itti_send_msg_to_task(TASK_UNKNOWN, enb_module_idP, msg_p);
-    }
-  }
-# endif
-#endif
-  */
   if (enc_rval.encoded==-1) {
     return(-1);
   }
@@ -285,12 +283,15 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich
   return((enc_rval.encoded+7)/8);
 }
 
-uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
-		int Mod_id,int CC_id
-#if defined(ENABLE_ITTI)
-                , RrcConfigurationReq *configuration
-#endif
-               )
+//------------------------------------------------------------------------------
+
+uint8_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
+		              int Mod_id,
+                  int CC_id
+                  #if defined(ENABLE_ITTI)
+                  , gNB_RrcConfigurationReq *configuration
+                  #endif
+                  )
 {
 
   //  SystemInformation_t systemInformation;
@@ -302,7 +303,7 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
 
   uint8_t *buffer                      = carrier->SIB1;
   BCCH_DL_SCH_Message_t *bcch_message  = &carrier->siblock1;
-  SystemInformationBlockType1_t **sib1 = &carrier->sib1;
+  SIB1_t **sib1 = &carrier->sib1;
 
   
   memset(bcch_message,0,sizeof(BCCH_DL_SCH_Message_t));
@@ -494,6 +495,8 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
   return((enc_rval.encoded+7)/8);
 }
 
+//------------------------------------------------------------------------------
+/*
 uint8_t do_SIB23(uint8_t Mod_id,
 
                  int CC_id
@@ -960,9 +963,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
   bcch_message->message.present = BCCH_DL_SCH_MessageType_PR_c1;
   bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType__c1_PR_systemInformation;
 
-  /*  memcpy((void*)&bcch_message.message.choice.c1.choice.systemInformation,
-   (void*)systemInformation,
-   sizeof(SystemInformation_t));*/
+  //memcpy((void*)&bcch_message.message.choice.c1.choice.systemInformation,(void*)systemInformation,sizeof(SystemInformation_t));
 
   bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.present = SystemInformation__criticalExtensions_PR_systemInformation_r8;
 
@@ -1024,7 +1025,11 @@ uint8_t do_SIB23(uint8_t Mod_id,
 
   return((enc_rval.encoded+7)/8);
 }
+*/
+
+//------------------------------------------------------------------------------
 
+/*
 uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
 {
 
@@ -1109,7 +1114,11 @@ uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
   return((enc_rval.encoded+7)/8);
 
 }
+*/
 
+//------------------------------------------------------------------------------
+
+/*
 uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS)
 {
 
@@ -1140,24 +1149,24 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin
 
   rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME =
     NULL;//calloc(1,sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME));
-  /*
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->plmn_Identity=NULL;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf = calloc(2,1);
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf[0] = 0x0;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf[1] = 0x1;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.size=2;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.bits_unused=0;
-  */
+  
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->plmn_Identity=NULL;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf = calloc(2,1);
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf[0] = 0x0;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.buf[1] = 0x1;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.size=2;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmegi.bits_unused=0;
+  
   memset(&rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.dedicatedInfoNAS,0,sizeof(OCTET_STRING_t));
   OCTET_STRING_fromBuf(&rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.dedicatedInfoNAS,
                        dedicatedInfoNAS, dedicatedInfoNASLength);
 
-  /*
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf = calloc(1,1);
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf[0] = 0x98;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.size=1;
-    rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.bits_unused=0;
-  */
+  
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf = calloc(1,1);
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.buf[0] = 0x98;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.size=1;
+    //rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.bits_unused=0;
+  
 
   enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
                                    (void*)&ul_dcch_msg,
@@ -1192,8 +1201,11 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin
   return((enc_rval.encoded+7)/8);
 
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_RRCConnectionReconfigurationComplete(
   const protocol_ctxt_t* const ctxt_pP,
@@ -1253,9 +1265,11 @@ do_RRCConnectionReconfigurationComplete(
 
   return((enc_rval.encoded+7)/8);
 }
-
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_RRCConnectionSetup(
   const protocol_ctxt_t*     const ctxt_pP,
@@ -1444,16 +1458,16 @@ do_RRCConnectionSetup(
   
   physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic=CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
   physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_release;
-    /*
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_setup;
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex = 0;  // n2_pucch
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex = 0;  // Icqi/pmi
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present = CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_subbandCQI;  // subband CQI
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.choice.subbandCQI.k=4;
-
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex=NULL;
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI=0;
-    */
+    
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->present =  CQI_ReportPeriodic_PR_setup;
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex = 0;  // n2_pucch
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex = 0;  // Icqi/pmi
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present = CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_subbandCQI;  // subband CQI
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.choice.subbandCQI.k=4;
+
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex=NULL;
+    //physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI=0;
+    
 
   //soundingRS-UL-ConfigDedicated
   if (rrc->srs_enable[CC_id]==1) {
@@ -1516,36 +1530,36 @@ do_RRCConnectionSetup(
   case 2:
     physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm2;
     break;
-    /*
-  case 3:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm3;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     CALLOC(1,
-        sizeof(*physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction));
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
-      AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
-
-    break;
-
-  case 4:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm4;
-    break;
-
-  case 5:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm5;
-    break;
-
-  case 6:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm6;
-    break;
-
-  case 7:
-    physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm7;
-    break;
-    */
+    
+  //case 3:
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm3;
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction=     CALLOC(1,
+  //      sizeof(*physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction));
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->present =
+  //    AntennaInfoDedicated__codebookSubsetRestriction_PR_n2TxAntenna_tm3;
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf= MALLOC(1);
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.buf[0] = 0xc0;
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.size=1;
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.codebookSubsetRestriction->choice.n2TxAntenna_tm3.bits_unused=6;
+
+  //  break;
+
+  //case 4:
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm4;
+  //  break;
+
+  //case 5:
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm5;
+  //  break;
+
+  //case 6:
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm6;
+  //  break;
+
+  //case 7:
+  //  physicalConfigDedicated2->antennaInfo->choice.explicitValue.transmissionMode=     AntennaInfoDedicated__transmissionMode_tm7;
+  //  break;
+    
   }
 
 
@@ -1649,8 +1663,11 @@ do_RRCConnectionSetup(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_SecurityModeCommand(
   const protocol_ctxt_t* const ctxt_pP,
@@ -1728,8 +1745,11 @@ do_SecurityModeCommand(
   //  exit(-1);
   return((enc_rval.encoded+7)/8);
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_UECapabilityEnquiry(
   const protocol_ctxt_t* const ctxt_pP,
@@ -1804,8 +1824,11 @@ do_UECapabilityEnquiry(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint16_t
 do_RRCConnectionReconfiguration(
   const protocol_ctxt_t*        const ctxt_pP,
@@ -1963,8 +1986,11 @@ do_RRCConnectionReconfiguration(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_RRCConnectionReestablishmentReject(
   uint8_t                    Mod_id,
@@ -2021,8 +2047,11 @@ do_RRCConnectionReestablishmentReject(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
 //------------------------------------------------------------------------------
+
+/*
 uint8_t
 do_RRCConnectionReject(
   uint8_t                    Mod_id,
@@ -2043,7 +2072,7 @@ do_RRCConnectionReject(
   // RRCConnectionReject
   rrcConnectionReject->criticalExtensions.present = RRCConnectionReject__criticalExtensions_PR_c1;
   rrcConnectionReject->criticalExtensions.choice.c1.present = RRCConnectionReject__criticalExtensions__c1_PR_rrcConnectionReject_r8;
-  /* let's put a wait time of 1s for the moment */
+  /// let's put a wait time of 1s for the moment 
   rrcConnectionReject->criticalExtensions.choice.c1.choice.rrcConnectionReject_r8.waitTime = 1;
 
 #ifdef XER_PRINT
@@ -2082,7 +2111,11 @@ do_RRCConnectionReject(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
+//------------------------------------------------------------------------------
+
+/*
 uint8_t do_RRCConnectionRelease(
   uint8_t                             Mod_id,
   uint8_t                            *buffer,
@@ -2120,10 +2153,15 @@ uint8_t do_RRCConnectionRelease(
 
   return((enc_rval.encoded+7)/8);
 }
+*/
 
+/*
 uint8_t TMGI[5] = {4,3,2,1,0};//TMGI is a string of octet, ref. TS 24.008 fig. 10.5.4a
+*/
 
+//------------------------------------------------------------------------------
 
+/*
 #if defined(Rel10) || defined(Rel14)
 uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
                            uint8_t sync_area,
@@ -2190,10 +2228,10 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   pmch_Info_1 = CALLOC(1,sizeof(PMCH_Info_r9_t));
   memset((void*)pmch_Info_1,0,sizeof(PMCH_Info_r9_t));
 
-  /*
-   * take the value of last mbsfn subframe in this CSA period because there is only one PMCH in this mbsfn area
-   * Note: this has to be set based on the subframeAllocation and CSA
-   */
+  
+   ///take the value of last mbsfn subframe in this CSA period because there is only one PMCH in this mbsfn area
+   ///Note: this has to be set based on the subframeAllocation and CSA
+   
   pmch_Info_1->pmch_Config_r9.sf_AllocEnd_r9= 3;
   pmch_Info_1->pmch_Config_r9.dataMCS_r9= 7;
   pmch_Info_1->pmch_Config_r9.mch_SchedulingPeriod_r9= PMCH_Config_r9__mch_SchedulingPeriod_r9_rf16;
@@ -2218,23 +2256,23 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   mbms_Session_1->logicalChannelIdentity_r9= MTCH;
   ASN_SEQUENCE_ADD(&pmch_Info_1->mbms_SessionInfoList_r9.list,mbms_Session_1);
 
-  /*    //  Session 2
+      ///  Session 2
   //mbms_Session_2 = CALLOC(1,sizeof(MBMS_SessionInfo_r9_t));
-  memset(mbms_Session_2,0,sizeof(MBMS_SessionInfo_r9_t));
-  // TMGI value
-  mbms_Session_2->tmgi_r9.plmn_Id_r9.present= TMGI_r9__plmn_Id_r9_PR_plmn_Index_r9;
-  mbms_Session_2->tmgi_r9.plmn_Id_r9.choice.plmn_Index_r9= 1;
-  // Service ID
-  memset(&mbms_Session_2->tmgi_r9.serviceId_r9,0,sizeof(OCTET_STRING_t));// need to check
-  OCTET_STRING_fromBuf(&mbms_Session_2->tmgi_r9.serviceId_r9,(const char*)&TMGI[3],3);
-  // Session ID is still missing here
-  mbms_Session_2->sessionID_r9->buf= MALLOC(1);
-  mbms_Session_2->sessionID_r9->size= 1;
-  mbms_Session_2->sessionID_r9->buf[0]= 0x11;
-  // Logical Channel ID
-  mbms_Session_2->logicalChannelIdentity_r9= 2;
-  ASN_SEQUENCE_ADD(&pmch_Info_1->mbms_SessionInfoList_r9.list,mbms_Session_2);
-  */
+  //memset(mbms_Session_2,0,sizeof(MBMS_SessionInfo_r9_t));
+  /// TMGI value
+  //mbms_Session_2->tmgi_r9.plmn_Id_r9.present= TMGI_r9__plmn_Id_r9_PR_plmn_Index_r9;
+  //mbms_Session_2->tmgi_r9.plmn_Id_r9.choice.plmn_Index_r9= 1;
+  /// Service ID
+  //memset(&mbms_Session_2->tmgi_r9.serviceId_r9,0,sizeof(OCTET_STRING_t));// need to check
+  //OCTET_STRING_fromBuf(&mbms_Session_2->tmgi_r9.serviceId_r9,(const char*)&TMGI[3],3);
+  /// Session ID is still missing here
+  //mbms_Session_2->sessionID_r9->buf= MALLOC(1);
+  //mbms_Session_2->sessionID_r9->size= 1;
+  //mbms_Session_2->sessionID_r9->buf[0]= 0x11;
+  /// Logical Channel ID
+  //mbms_Session_2->logicalChannelIdentity_r9= 2;
+  //ASN_SEQUENCE_ADD(&pmch_Info_1->mbms_SessionInfoList_r9.list,mbms_Session_2);
+  
   ASN_SEQUENCE_ADD(&(*mbsfnAreaConfiguration)->pmch_InfoList_r9.list,pmch_Info_1);
 
 #ifdef XER_PRINT
@@ -2278,7 +2316,11 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   return((enc_rval.encoded+7)/8);
 }
 #endif
+*/
+
+//------------------------------------------------------------------------------
 
+/*
 uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,long rsrp_s,long rsrq_s,long rsrp_t,long rsrq_t)
 {
 
@@ -2406,7 +2448,11 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_
 
   return((enc_rval.encoded+7)/8);
 }
+*/
+
+//------------------------------------------------------------------------------
 
+/*
 uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t transaction_id, uint32_t pdu_length, uint8_t *pdu_buffer)
 {
   ssize_t encoded;
@@ -2427,30 +2473,34 @@ uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t trans
 
   encoded = uper_encode_to_new_buffer (&asn_DEF_DL_DCCH_Message, NULL, (void*) &dl_dcch_msg, (void **) buffer);
 
-  /*
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[10000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message, (void *)&dl_dcch_msg)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
-    }
-  }
-# endif
-#endif
-  */
+  
+// #if defined(ENABLE_ITTI)
+// # if !defined(DISABLE_XER_SPRINT)
+//   {
+//     char        message_string[10000];
+//     size_t      message_string_size;
+
+//     if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_DCCH_Message, (void *)&dl_dcch_msg)) > 0) {
+//       MessageDef *msg_p;
+
+//       msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
+//       msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
+//       memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
+
+//       itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
+//     }
+//   }
+// # endif
+// #endif
+  
 
   return encoded;
 }
+*/
 
+//------------------------------------------------------------------------------
+
+/*
 uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t *pdu_buffer)
 {
   ssize_t encoded;
@@ -2472,10 +2522,14 @@ uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t
 
   return encoded;
 }
+*/
+
+//------------------------------------------------------------------------------
 
+/*
 OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
 {
-  static OAI_UECapability_t UECapability; /* TODO declared static to allow returning this has an address should be allocated in a cleaner way. */
+  static OAI_UECapability_t UECapability; /// TODO declared static to allow returning this has an address should be allocated in a cleaner way. 
   static SupportedBandEUTRA_t Bandlist[4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
   static InterFreqBandInfo_t InterFreqBandInfo[4][4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
   static BandInfoEUTRA_t BandInfoEUTRA[4]; // the macro ASN_SEQUENCE_ADD() does not copy the source, but only stores a reference to it
@@ -2652,7 +2706,7 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
         UECapability.sdu_size, enc_rval.encoded + 7);
   {
     char *sdu;
-    sdu = malloc (3 * UECapability.sdu_size + 1 /* For '\0' */);
+    //sdu = malloc (3 * UECapability.sdu_size + 1 ); ///* For '\0' 
 
     for (i = 0; i < UECapability.sdu_size; i++) {
       sprintf (&sdu[3 * i], "%02x.", UECapability.sdu[i]);
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.h b/openair2/RRC/NR/MESSAGES/asn1_msg.h
new file mode 100644
index 0000000000000000000000000000000000000000..640c86dade3cbb788ae3f1fc3e09abd3b78d0c56
--- /dev/null
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.h
@@ -0,0 +1,274 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file asn1_msg.h
+* \brief primitives to build the asn1 messages
+* \author Raymond Knopp and Navid Nikaein
+* \date 2011
+* \version 1.0
+* \company Eurecom
+* \email: raymond.knopp@eurecom.fr and  navid.nikaein@eurecom.fr
+*/
+
+#ifdef USER_MODE
+#include <stdio.h>
+#include <sys/types.h>
+#include <stdlib.h> /* for atoi(3) */
+#include <unistd.h> /* for getopt(3) */
+#include <string.h> /* for strerror(3) */
+#include <sysexits.h> /* for EX_* exit codes */
+#include <errno.h>  /* for errno */
+#else
+#include <linux/module.h>  /* Needed by all modules */
+#endif
+
+#include <asn_application.h>
+#include <asn_internal.h> /* for _ASN_DEFAULT_STACK_MAX */
+
+#include "RRC/NR/defs_NR.h"
+
+/*
+ * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC)
+ * output into the chosen string buffer.
+ * RETURN VALUES:
+ *       0: The structure is printed.
+ *      -1: Problem printing the structure.
+ * WARNING: No sensible errno value is returned.
+ */
+int xer_sprint_NR(char *string, size_t string_size, struct asn_TYPE_descriptor_s *td, void *sptr);
+
+uint16_t get_adjacent_cell_id_NR(uint8_t Mod_id,uint8_t index);
+
+uint8_t get_adjacent_cell_mod_id_NR(uint16_t phyCellId);
+
+/**
+\brief Generate configuration for SIB1 (eNB).
+@param carrier pointer to Carrier information
+@param N_RB_DL Number of downlink PRBs
+@param phich_Resource PHICH resoure parameter
+@param phich_duration PHICH duration parameter
+@param frame radio frame number
+@return size of encoded bit stream in bytes*/
+uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier, 
+                  uint32_t frame, 
+                  uint32_t ssb_SubcarrierOffset, 
+                  uint32_t pdcch_ConfigSIB1, 
+                  uint32_t subCarrierSpacingCommon, 
+                  uint32_t dmrs_TypeA_Position);
+/**
+\brief Generate configuration for SIB1 (eNB).
+@param carrier pointer to Carrier information
+@param Mod_id Instance of eNB
+@param Component carrier Component carrier to configure
+@param configuration Pointer Configuration Request structure  
+@return size of encoded bit stream in bytes*/
+
+uint8_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,int Mod_id,int CC_id, gNB_RrcConfigurationReq *configuration
+               );
+
+/**
+\brief Generate a default configuration for SIB2/SIB3 in one System Information PDU (eNB).
+@param Mod_id Index of eNB (used to derive some parameters)
+@param buffer Pointer to PER-encoded ASN.1 description of SI PDU
+@param systemInformation Pointer to asn1c C representation of SI PDU
+@param sib2 Pointer (returned) to sib2 component withing SI PDU
+@param sib3 Pointer (returned) to sib3 component withing SI PDU
+@param sib13 Pointer (returned) to sib13 component withing SI PDU
+@param MBMS_flag Indicates presence of MBMS system information (when 1)
+@return size of encoded bit stream in bytes*/
+
+/*uint8_t do_SIB23(uint8_t Mod_id,
+                 int CC_id
+#if defined(ENABLE_ITTI)
+                 , RrcConfigurationReq *configuration
+#endif
+                );
+
+/**
+\brief Generate an RRCConnectionRequest UL-CCCH-Message (UE) based on random string or S-TMSI.  This
+routine only generates an mo-data establishment cause.
+@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
+@param rv 5 byte random string or S-TMSI
+@returns Size of encoded bit stream in bytes*/
+
+/*uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv);
+
+/** \brief Generate an RRCConnectionSetupComplete UL-DCCH-Message (UE)
+@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
+@returns Size of encoded bit stream in bytes*/
+
+/*uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t* buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength,
+                                      const char* dedicatedInfoNAS);
+
+/** \brief Generate an RRCConnectionReconfigurationComplete UL-DCCH-Message (UE)
+@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
+@returns Size of encoded bit stream in bytes*/
+
+/*uint8_t
+do_RRCConnectionReconfigurationComplete(
+  const protocol_ctxt_t* const ctxt_pP,
+  uint8_t* buffer,
+  const uint8_t Transaction_id
+);
+
+/**
+\brief Generate an RRCConnectionSetup DL-CCCH-Message (eNB).  This routine configures SRB_ToAddMod (SRB1/SRB2) and
+PhysicalConfigDedicated IEs.  The latter does not enable periodic CQI reporting (PUCCH format 2/2a/2b) or SRS.
+@param ctxt_pP Running context
+@param ue_context_pP UE context
+@param CC_id         Component Carrier ID
+@param buffer Pointer to PER-encoded ASN.1 description of DL-CCCH-Message PDU
+@param transmission_mode Transmission mode for UE (1-9)
+@param UE_id UE index for this message
+@param Transaction_id Transaction_ID for this message
+@param SRB_configList Pointer (returned) to SRB1_config/SRB2_config(later) IEs for this UE
+@param physicalConfigDedicated Pointer (returned) to PhysicalConfigDedicated IE for this UE
+@returns Size of encoded bit stream in bytes*/
+/*uint8_t
+do_RRCConnectionSetup(
+  const protocol_ctxt_t*     const ctxt_pP,
+  rrc_eNB_ue_context_t*      const ue_context_pP,
+  int                              CC_id,
+  uint8_t*                   const buffer,
+  const uint8_t                    transmission_mode,
+  const uint8_t                    Transaction_id,
+  SRB_ToAddModList_t**             SRB_configList,
+  struct PhysicalConfigDedicated** physicalConfigDedicated
+);
+
+/**
+\brief Generate an RRCConnectionReconfiguration DL-DCCH-Message (eNB).  This routine configures SRBToAddMod (SRB2) and one DRBToAddMod
+(DRB3).  PhysicalConfigDedicated is not updated.
+@param ctxt_pP Running context
+@param buffer Pointer to PER-encoded ASN.1 description of DL-CCCH-Message PDU
+@param Transaction_id Transaction_ID for this message
+@param SRB_list Pointer to SRB List to be added/modified (NULL if no additions/modifications)
+@param DRB_list Pointer to DRB List to be added/modified (NULL if no additions/modifications)
+@param DRB_list2 Pointer to DRB List to be released      (NULL if none to be released)
+@param sps_Config Pointer to sps_Config to be modified (NULL if no modifications, or default if initial configuration)
+@param physicalConfigDedicated Pointer to PhysicalConfigDedicated to be modified (NULL if no modifications)
+@param MeasObj_list Pointer to MeasObj List to be added/modified (NULL if no additions/modifications)
+@param ReportConfig_list Pointer to ReportConfig List (NULL if no additions/modifications)
+@param QuantityConfig Pointer to QuantityConfig to be modified (NULL if no modifications)
+@param MeasId_list Pointer to MeasID List (NULL if no additions/modifications)
+@param mobilityInfo mobility control information for handover
+@param speedStatePars speed state parameteres for handover
+@param mac_MainConfig Pointer to Mac_MainConfig(NULL if no modifications)
+@param measGapConfig Pointer to MeasGapConfig (NULL if no modifications)
+@param cba_rnti RNTI for the cba transmission
+@returns Size of encoded bit stream in bytes*/
+
+/*uint16_t
+do_RRCConnectionReconfiguration(
+  const protocol_ctxt_t*        const ctxt_pP,
+    uint8_t                            *buffer,
+    uint8_t                             Transaction_id,
+    SRB_ToAddModList_t                 *SRB_list,
+    DRB_ToAddModList_t                 *DRB_list,
+    DRB_ToReleaseList_t                *DRB_list2,
+    struct SPS_Config                  *sps_Config,
+    struct PhysicalConfigDedicated     *physicalConfigDedicated,
+    MeasObjectToAddModList_t           *MeasObj_list,
+    ReportConfigToAddModList_t         *ReportConfig_list,
+    QuantityConfig_t                   *quantityConfig,
+    MeasIdToAddModList_t               *MeasId_list,
+    MAC_MainConfig_t                   *mac_MainConfig,
+    MeasGapConfig_t                    *measGapConfig,
+    MobilityControlInfo_t              *mobilityInfo,
+    struct MeasConfig__speedStatePars  *speedStatePars,
+    RSRP_Range_t                       *rsrp,
+    C_RNTI_t                           *cba_rnti,
+  struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList* dedicatedInfoNASList
+#if defined(Rel10) || defined(Rel14)
+    , SCellToAddMod_r10_t  *SCell_config
+#endif
+                                        );
+
+/**
+\brief Generate an RRCConnectionReestablishmentReject DL-CCCH-Message (eNB).
+@param Mod_id Module ID of eNB
+@param buffer Pointer to PER-encoded ASN.1 description of DL-CCCH-Message PDU
+@returns Size of encoded bit stream in bytes*/
+/*uint8_t
+do_RRCConnectionReestablishmentReject(
+    uint8_t                    Mod_id,
+    uint8_t*                   const buffer);
+
+/**
+\brief Generate an RRCConnectionReject DL-CCCH-Message (eNB).
+@param Mod_id Module ID of eNB
+@param buffer Pointer to PER-encoded ASN.1 description of DL-CCCH-Message PDU
+@returns Size of encoded bit stream in bytes*/
+/*uint8_t
+do_RRCConnectionReject(
+    uint8_t                    Mod_id,
+    uint8_t*                   const buffer);
+
+/**
+\brief Generate an RRCConnectionRequest UL-CCCH-Message (UE) based on random string or S-TMSI.  This
+routine only generates an mo-data establishment cause.
+@param Mod_id Module ID of eNB
+@param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU
+@param transaction_id Transaction index
+@returns Size of encoded bit stream in bytes*/
+
+/*uint8_t do_RRCConnectionRelease(uint8_t Mod_id, uint8_t *buffer,int Transaction_id);
+
+/***
+ * \brief Generate an MCCH-Message (eNB). This routine configures MBSFNAreaConfiguration (PMCH-InfoList and Subframe Allocation for MBMS data)
+ * @param buffer Pointer to PER-encoded ASN.1 description of MCCH-Message PDU
+ * @returns Size of encoded bit stream in bytes
+*/
+/*uint8_t do_MCCHMessage(uint8_t *buffer);
+#if defined(Rel10) || defined(Rel14)
+/***
+ * \brief Generate an MCCH-Message (eNB). This routine configures MBSFNAreaConfiguration (PMCH-InfoList and Subframe Allocation for MBMS data)
+ * @param buffer Pointer to PER-encoded ASN.1 description of MCCH-Message PDU
+ * @returns Size of encoded bit stream in bytes
+*/
+/*uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
+                           uint8_t sync_area,
+                           uint8_t *buffer,
+                           MCCH_Message_t *mcch_message,
+                           MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration);
+#endif
+
+uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,long rsrp_s,long rsrq_s,long rsrp_t,long rsrq_t);
+
+uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t transaction_id, uint32_t pdu_length, uint8_t *pdu_buffer);
+
+uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t *pdu_buffer);
+
+OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer);
+
+uint8_t
+do_UECapabilityEnquiry(
+  const protocol_ctxt_t* const ctxt_pP,
+  uint8_t*               const buffer,
+  const uint8_t                Transaction_id
+);
+
+uint8_t do_SecurityModeCommand(
+  const protocol_ctxt_t* const ctxt_pP,
+  uint8_t* const buffer,
+  const uint8_t Transaction_id,
+  const uint8_t cipheringAlgorithm,
+  const uint8_t integrityProtAlgorithm);
diff --git a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn
new file mode 100755
index 0000000000000000000000000000000000000000..13cbb9258444b5cc4477adc5a1a9078e871aed0d
--- /dev/null
+++ b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn
@@ -0,0 +1,282 @@
+NR-InterNodeDefinitions DEFINITIONS AUTOMATIC TAGS ::=
+ 
+BEGIN
+
+-- TAG-HANDOVER-COMMAND-START
+
+HandoverCommand ::=					SEQUENCE {
+	criticalExtensions					CHOICE {
+		c1									CHOICE{
+			handoverCommand					HandoverCommand-IEs,
+			spare3 NULL, spare2 NULL, spare1 NULL
+		},
+		criticalExtensionsFuture			SEQUENCE {}
+	}
+}
+
+HandoverCommand-IEs ::=				SEQUENCE {
+	handoverCommandMessage				OCTET STRING (CONTAINING RRCReconfiguration),
+	nonCriticalExtension				SEQUENCE {}							OPTIONAL
+}
+
+-- TAG-HANDOVER-COMMAND-STOP
+-- TAG-HANDOVER-PREPARATION-INFORMATION-START
+
+HandoverPreparationInformation ::=	SEQUENCE {
+	criticalExtensions					CHOICE {
+		c1									CHOICE{
+			handoverPreparationInformation		HandoverPreparationInformation-IEs,
+			spare3 NULL, spare2 NULL, spare1 NULL
+		},
+		criticalExtensionsFuture			SEQUENCE {}
+	}
+}
+
+HandoverPreparationInformation-IEs ::= SEQUENCE {
+	ue-CapabilityRAT-List				UE-CapabilityRAT-ContainerList,
+	sourceConfig						OCTET STRING (CONTAINING RRCReconfiguration),
+	rrm-Config							RRM-Config				OPTIONAL,
+	as-Context							AS-Context				OPTIONAL,
+	nonCriticalExtension				SEQUENCE {}				OPTIONAL
+}
+
+AS-Context ::=							SEQUENCE {
+	reestablishmentInfo						SEQUENCE {
+		sourcePhysCellId					PhysCellId,
+		targetCellShortMAC-I				ShortMAC-I,
+		additionalReestabInfoList			ReestabNCellInfoList					OPTIONAL
+	}																				OPTIONAL,
+	-- FFS Whether to change e.g. move all re-establishment info to Xx
+	configRestrictInfo					ConfigRestrictInfoSCG						OPTIONAL,
+	...
+}
+
+ReestabNCellInfoList ::=		SEQUENCE ( SIZE (1..maxCellPrep) ) OF ReestabNCellInfo
+
+ReestabNCellInfo::=	SEQUENCE{
+	cellIdentity							CellIdentity,
+	key-gNodeB-Star							BIT STRING (SIZE (256)),
+	shortMAC-I								ShortMAC-I
+}
+
+RRM-Config ::=				SEQUENCE {
+	ue-InactiveTime				ENUMERATED {
+									s1, s2, s3, s5, s7, s10, s15, s20,
+									s25, s30, s40, s50, min1, min1s20c, min1s40,
+									min2, min2s30, min3, min3s30, min4, min5, min6,
+									min7, min8, min9, min10, min12, min14, min17, min20,
+									min24, min28, min33, min38, min44, min50, hr1,
+									hr1min30, hr2, hr2min30, hr3, hr3min30, hr4, hr5, hr6,
+									hr8, hr10, hr13, hr16, hr20, day1, day1hr12, day2,
+									day2hr12, day3, day4, day5, day7, day10, day14, day19,
+									day24, day30, dayMoreThan30}		OPTIONAL ,
+	candidateCellInfoList		CandidateCellInfoList		OPTIONAL,
+	...
+}
+
+-- TAG-HANDOVER-PREPARATION-INFORMATION-STOP
+-- TAG-CG-CONFIG-START
+
+CG-Config ::=					SEQUENCE {
+	criticalExtensions					CHOICE {
+		c1									CHOICE{
+			cg-Config					CG-Config-IEs,
+			spare3 NULL, spare2 NULL, spare1 NULL
+		},
+		criticalExtensionsFuture			SEQUENCE {}
+	}
+}
+
+CG-Config-IEs ::=			SEQUENCE {
+	scg-CellGroupConfig					OCTET STRING (CONTAINING RRCReconfiguration)	OPTIONAL,
+	scg-RB-Config						OCTET STRING (CONTAINING RadioBearerConfig)		OPTIONAL,
+	configRestrictModReq				ConfigRestrictModReqSCG							OPTIONAL,
+	drx-InfoSCG							DRX-Info										OPTIONAL,
+	candidateCellInfoListSN				OCTET STRING (CONTAINING CandidateCellInfoList)	OPTIONAL,
+	measConfigSN						MeasConfigSN									OPTIONAL,
+	selectedBandCombinationNR			BandCombinationIndex							OPTIONAL,
+	nonCriticalExtension				SEQUENCE {}										OPTIONAL
+}
+
+MeasConfigSN ::= SEQUENCE {
+	measuredFrequenciesFR1				SEQUENCE (SIZE (1..maxMeasFreqsMN))	OF NR-FreqInfo	OPTIONAL,
+	...
+}
+
+NR-FreqInfo ::= SEQUENCE {
+	measuredFrequency 					ARFCN-ValueNR									OPTIONAL,
+	...
+}
+
+ConfigRestrictModReqSCG ::=			SEQUENCE {
+	requestedBC-MRDC					BandCombinationIndex							OPTIONAL,
+	requestedBPC-ListMRDC				BPC-IndexList									OPTIONAL,
+	requestedP-MaxFR1				P-Max												OPTIONAL,
+	...
+}
+
+BandCombinationIndex ::= INTEGER (1..maxBandComb)
+
+-- TAG-CG-CONFIG-STOP
+-- TAG-CG-CONFIG-INFO-START
+
+CG-ConfigInfo ::=				SEQUENCE {
+	criticalExtensions				CHOICE {
+		c1								CHOICE{
+			cg-ConfigInfo				CG-ConfigInfo-IEs,
+			spare3 NULL, spare2 NULL, spare1 NULL
+		},
+		criticalExtensionsFuture		SEQUENCE {}
+	}
+}
+
+CG-ConfigInfo-IEs ::=		SEQUENCE {
+	ue-CapabilityInfo			OCTET STRING (CONTAINING UE-CapabilityRAT-ContainerList)		OPTIONAL,-- Cond SN-Addition
+	candidateCellInfoListMN			CandidateCellInfoList									OPTIONAL,
+	candidateCellInfoListSN			OCTET STRING (CONTAINING CandidateCellInfoList)			OPTIONAL,
+	measResultCellListSFTD			MeasResultCellListSFTD									OPTIONAL,
+	scgFailureInfo					SEQUENCE {
+		failureType						ENUMERATED { t310-Expiry, randomAccessProblem,
+														rlc-MaxNumRetx, scg-ChangeFailure, 
+														scg-reconfigFailure,
+														srb3-IntegrityFailure},
+		measResultSCG					OCTET STRING (CONTAINING MeasResultSCG-Failure)
+	}																						OPTIONAL,
+	configRestrictInfo			ConfigRestrictInfoSCG										OPTIONAL,
+	drx-InfoMCG					DRX-Info													OPTIONAL,
+	measConfigMN				MeasConfigMN												OPTIONAL,
+	sourceConfigSCG				OCTET STRING (CONTAINING RRCReconfiguration)				OPTIONAL,
+	scg-RB-Config             	OCTET STRING (CONTAINING RadioBearerConfig)        			OPTIONAL,
+	mcg-RB-Config				OCTET STRING (CONTAINING RadioBearerConfig)					OPTIONAL,
+	nonCriticalExtension		SEQUENCE {}													OPTIONAL
+}
+
+ConfigRestrictInfoSCG ::=		SEQUENCE {
+	allowedBC-ListMRDC				BandCombinationIndexList								OPTIONAL,
+	allowedBPC-ListMRDC				BPC-IndexList											OPTIONAL,
+	powerCoordination-FR1				SEQUENCE {
+		p-maxNR							P-Max												OPTIONAL,
+		p-maxEUTRA						P-Max												OPTIONAL
+	}																						OPTIONAL,
+	servCellIndexRangeSCG			SEQUENCE {
+		lowBound						ServCellIndex,
+		upBound							ServCellIndex
+	}																						OPTIONAL,   -- Cond SN-Addition
+	maxMeasFreqsSCG-NR					INTEGER(1..maxMeasFreqsMN)								OPTIONAL,
+	...
+}
+
+BandCombinationIndexList ::= SEQUENCE (SIZE (1..maxBandComb)) OF BandCombinationIndex
+
+BPC-IndexList ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BPC-Index
+BPC-Index ::= INTEGER (1..maxBasebandProcComb)
+
+DRX-Info ::=					SEQUENCE {
+	drx-LongCycleStartOffset		CHOICE {
+		ms10							INTEGER(0..9),
+		ms20							INTEGER(0..19),
+		ms32							INTEGER(0..31),
+		ms40							INTEGER(0..39),
+		ms60							INTEGER(0..59),
+		ms64							INTEGER(0..63),
+		ms70							INTEGER(0..69),
+		ms80							INTEGER(0..79),
+		ms128							INTEGER(0..127),
+		ms160							INTEGER(0..159),
+		ms256							INTEGER(0..255),
+		ms320							INTEGER(0..319),
+		ms512							INTEGER(0..511),
+		ms640							INTEGER(0..639),
+		ms1024							INTEGER(0..1023),
+		ms1280							INTEGER(0..1279),
+		ms2048							INTEGER(0..2047),
+		ms2560							INTEGER(0..2559),
+		ms5120							INTEGER(0..5119),
+		ms10240							INTEGER(0..10239)
+	},
+	shortDRX							SEQUENCE {
+		drx-ShortCycle						ENUMERATED	{
+												ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32,
+												ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9,
+												spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+		drx-ShortCycleTimer					INTEGER (1..16)
+	}																					OPTIONAL
+}
+
+MeasConfigMN ::= SEQUENCE {
+	measuredFrequenciesMN				SEQUENCE (SIZE (1..maxMeasFreqsMN))	OF NR-FreqInfo	OPTIONAL,
+	measGapConfigFR1					GapConfig											OPTIONAL,
+	gapPurpose							ENUMERATED {perUE, perFR1}							OPTIONAL,
+	...
+}
+
+
+-- TAG-CG-CONFIG-INFO-STOP
+-- TAG-MEASUREMENT-TIMING-CONFIGURATION-START
+
+MeasurementTimingConfiguration ::=				SEQUENCE {
+	criticalExtensions				CHOICE {
+		c1								CHOICE{
+			measTimingConf					MeasurementTimingConfiguration-IEs,
+			spare3 NULL, spare2 NULL, spare1 NULL
+		},
+		criticalExtensionsFuture		SEQUENCE {}
+	}
+}
+
+MeasurementTimingConfiguration-IEs ::=	SEQUENCE {
+	measTiming								MeasTimingList							OPTIONAL,
+	nonCriticalExtension					SEQUENCE {}								OPTIONAL
+}
+
+MeasTimingList ::= SEQUENCE (SIZE (1..maxMeasFreqsMN)) OF MeasTiming  
+
+MeasTiming ::= SEQUENCE {
+	carrierFreq								ARFCN-ValueNR							OPTIONAL,         
+	ssb-MeasurementTimingConfiguration		ENUMERATED {ffsTypeAndValue}		OPTIONAL,
+	...
+}
+
+-- TAG-MEASUREMENT-TIMING-CONFIGURATION-STOP
+-- TAG-CANDIDATE-CELL-INFO-LIST-START
+
+CandidateCellInfoList ::=	SEQUENCE (SIZE (1.. maxNrofSCells)) OF CandidateCellInfo
+
+CandidateCellInfo ::=			SEQUENCE {
+	cellIdentification				SEQUENCE {
+		physCellId						PhysCellId,
+		dl-CarrierFreq					ARFCN-ValueNR
+	},
+	measResultCell					MeasQuantityResults											OPTIONAL,
+	candidateRS-IndexListSSB		CandidateRS-IndexInfoListSSB								OPTIONAL,
+	candidateRS-IndexListCSI-RS		CandidateRS-IndexInfoListCSI-RS								OPTIONAL,
+	...
+}
+
+CandidateRS-IndexInfoListSSB ::=	SEQUENCE (SIZE (1..maxNrofIndexesToReport)) OF CandidateRS-IndexInfoSSB
+
+CandidateRS-IndexInfoSSB ::=	SEQUENCE {
+	ssb-Index						SSB-Index,
+	measResultSSB					MeasQuantityResults											OPTIONAL,
+	...
+}
+
+CandidateRS-IndexInfoListCSI-RS ::=	SEQUENCE (SIZE (1..maxNrofIndexesToReport)) OF CandidateRS-IndexInfoCSI-RS
+
+CandidateRS-IndexInfoCSI-RS ::=		SEQUENCE {
+	csi-RS-Index							CSI-RS-Index,
+	measResultCSI-RS						MeasQuantityResults									OPTIONAL,
+	...
+}
+
+-- TAG-CANDIDATE-CELL-INFO-LIST-STOP
+-- TAG_NR-MULTIPLICITY-AND-CONSTRAINTS-START
+
+maxMeasFreqsMN				INTEGER ::= 32	-- Maximum number of MN-configured measurement frequencies
+maxCellPrep					INTEGER ::= 32	-- Maximum number of cells prepared for handover
+
+-- TAG_NR-MULTIPLICITY-AND-CONSTRAINTS-STOP
+-- TAG_NR-INTER-NODE-DEFINITIONS-END-START
+
+END
+
diff --git a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn
new file mode 100755
index 0000000000000000000000000000000000000000..84426f50bb5ed9112bb03da3050b28217d19f3c7
--- /dev/null
+++ b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn
@@ -0,0 +1,5480 @@
+NR-RRC-Definitions DEFINITIONS AUTOMATIC TAGS ::=
+ 
+BEGIN
+
+-- TAG-BCCH-BCH-MESSAGE-START
+
+BCCH-BCH-Message ::= SEQUENCE {
+	message											BCCH-BCH-MessageType
+}
+
+BCCH-BCH-MessageType ::= CHOICE {
+	mib												MIB,
+	messageClassExtension	SEQUENCE {}
+}
+
+-- TAG-BCCH-BCH-MESSAGE-STOP
+-- TAG-DL-DCCH-MESSAGE-START
+
+DL-DCCH-Message ::= SEQUENCE {
+	message											DL-DCCH-MessageType
+}
+
+DL-DCCH-MessageType ::= CHOICE {
+	c1						CHOICE {
+		rrcReconfiguration							RRCReconfiguration,
+		spare15 NULL, spare14 NULL, spare13 NULL,
+		spare12 NULL, spare11 NULL, spare10 NULL,
+		spare9 NULL, spare8 NULL, spare7 NULL,
+		spare6 NULL, spare5 NULL, spare4 NULL,
+		spare3 NULL, spare2 NULL, spare1 NULL
+	},
+	messageClassExtension	SEQUENCE {}
+}
+
+-- TAG-DL-DCCH-MESSAGE-STOP
+-- TAG-UL-DCCH-MESSAGE-START
+
+UL-DCCH-Message ::= SEQUENCE {
+	message											UL-DCCH-MessageType
+}
+
+UL-DCCH-MessageType ::= CHOICE {
+	c1						CHOICE {
+		measurementReport							MeasurementReport,
+		rrcReconfigurationComplete					RRCReconfigurationComplete,
+		spare14 NULL, spare13 NULL, spare12 NULL,
+		spare11 NULL, spare10 NULL, spare9 NULL,
+		spare8 NULL, spare7 NULL, spare6 NULL,
+		spare5 NULL, spare4 NULL, spare3 NULL,
+		spare2 NULL, spare1 NULL
+	},
+	messageClassExtension	SEQUENCE {}
+}
+
+-- TAG-UL-DCCH-MESSAGE-STOP
+-- TAG-MIB-START
+
+MIB ::= SEQUENCE {
+	-- The 6 most significant bit (MSB) of the 10 bit System Frame Number. The 4 LSB of the SFN are conveyed in the PBCH transport block 
+	-- as well but outside the MIB. 
+	systemFrameNumber					BIT STRING (SIZE (6)),
+
+	-- Subcarrier spacing for SIB1, Msg.2/4 for initial access and broadcast SI-messages.
+	-- If the UE acquires this MIB on a carrier frequency <6GHz, the values 15 and 30 kHz are applicable. 
+	-- If the UE acquires this MIB on a carrier frequency >6GHz, the values 60 and 120 kHz are applicable. 
+	subCarrierSpacingCommon				ENUMERATED {scs15or60, scs30or120},
+
+	-- The frequency domain offset between SSB and the overall resource block grid in number of subcarriers. (See 38.211, section 7.4.3.1)
+	-- Note: For frequencies <6 GHz a fith, this field may comprise only the 4 least significant bits of the ssb-SubcarrierOffset.
+	-- The codepoint "FFS_RAN1" indicates that this cell does not provide SIB1 and that there is hence no common CORESET.
+	ssb-SubcarrierOffset				INTEGER (0..15),
+
+	-- Position of (first) DL DM-RS. Corresponds to L1 parameter 'DL-DMRS-typeA-pos' (see 38.211, section 7.4.1.1.1)
+	dmrs-TypeA-Position					ENUMERATED {pos2, pos3},
+
+	-- Determines a bandwidth for PDCCH/SIB, a common ControlResourceSet (CORESET) a common search space and necessary PDCCH parameters.
+	-- Corresponds to L1 parameter 'RMSI-PDCCH-Config' (see FFS_Specification, section FFS_Section)
+	pdcch-ConfigSIB1					INTEGER (0..255), 
+
+	-- Indicates that UE shall not camp on this cell
+	cellBarred							ENUMERATED {barred, notBarred}, 
+	
+	-- Controls cell reselection to intra-frequency cells when the highest ranked cell is barred, or treated as barred by the UE, 
+	-- as specified in TS 38.304.
+	intraFreqReselection				ENUMERATED {allowed, notAllowed},
+	spare								BIT STRING (SIZE (1))
+}
+
+-- TAG-MIB-STOP
+-- TAG-MEASUREMENTREPORT-START
+
+MeasurementReport ::=				SEQUENCE {
+	criticalExtensions					CHOICE {
+		measurementReport							MeasurementReport-IEs,
+		criticalExtensionsFuture					SEQUENCE {}
+	}
+}
+
+MeasurementReport-IEs ::=		SEQUENCE {
+	measResults						MeasResults,
+
+	lateNonCriticalExtension				OCTET STRING															OPTIONAL,
+	nonCriticalExtension					SEQUENCE{}																OPTIONAL
+}
+
+-- TAG-MEASUREMENTREPORT-STOP
+-- TAG-RRCRECONFIGURATION-START
+
+RRCReconfiguration ::= 				SEQUENCE {
+	rrc-TransactionIdentifier			RRC-TransactionIdentifier,
+	criticalExtensions					CHOICE {
+		rrcReconfiguration					RRCReconfiguration-IEs,
+		criticalExtensionsFuture			SEQUENCE {}
+	}
+}
+
+RRCReconfiguration-IEs ::= 			SEQUENCE {
+	-- Configuration of Radio Bearers (DRBs, SRBs) including SDAP/PDCP. 
+    -- In EN-DC this field may only be present if the RRCReconfiguration
+	-- is transmitted over SRB3. 
+	radioBearerConfig						RadioBearerConfig 														OPTIONAL, -- Need M
+
+	-- Configuration of secondary cell group (EN-DC):
+	secondaryCellGroup						OCTET STRING (CONTAINING CellGroupConfig)								OPTIONAL, -- Need M
+
+	measConfig								MeasConfig																OPTIONAL, -- Need M
+
+	lateNonCriticalExtension				OCTET STRING															OPTIONAL,
+	nonCriticalExtension					SEQUENCE {}																OPTIONAL 
+}
+
+-- TAG-RRCRECONFIGURATION-STOP
+-- TAG-RRCRECONFIGURATIONCOMPLETE-START
+
+RRCReconfigurationComplete ::= 			SEQUENCE {
+	rrc-TransactionIdentifier				RRC-TransactionIdentifier,
+	criticalExtensions						CHOICE {
+		rrcReconfigurationComplete				RRCReconfigurationComplete-IEs,
+		criticalExtensionsFuture				SEQUENCE {}
+	}
+}
+
+RRCReconfigurationComplete-IEs ::= SEQUENCE {
+	lateNonCriticalExtension				OCTET STRING															OPTIONAL,
+	nonCriticalExtension					SEQUENCE {}																OPTIONAL 
+}
+
+-- TAG-RRCRECONFIGURATIONCOMPLETE-STOP
+-- TAG-SIB1-START
+
+SIB1 ::=		SEQUENCE {
+
+	-- FFS / TODO: Add other parameters. 
+
+	-- Frequency offset for the SSB of -5kHz (M=-1) or +5kHz (M=1). When the field is absent, the UE applies no offset (M=0).
+	-- The offset is only applicable for the frequency range 0-2.65GHz. Corresponds to parameter 'M' (see 38.101, section FFS_Section)
+	frequencyOffsetSSB				ENUMERATED {khz-5, khz5}																OPTIONAL,	-- Need R
+
+	-- Time domain positions of the transmitted SS-blocks in an SS-Burst-Set (see 38.213, section 4.1)
+	ssb-PositionsInBurst				SEQUENCE {
+		-- Indicates the presence of the up to 8 SSBs in one group
+		inOneGroup							BIT STRING (SIZE (8)),
+		-- For above 6 GHz: indicates which groups of SSBs is present
+		groupPresence						BIT STRING (SIZE (8))										OPTIONAL -- Cond above6GHzOnly
+	},
+
+	-- The SSB periodicity in msec for the rate matching purpose (see 38.211, section [7.4.3.1])
+	ssb-PeriodicityServingCell			ENUMERATED {ms5, ms10, ms20, ms40, ms80, ms160, spare1, spare2},
+
+	-- TX power that the NW used for SSB transmission. The UE uses it to estimate the RA preamble TX power. 
+	-- (see 38.213, section 7.4)
+	ss-PBCH-BlockPower					INTEGER (-60..50),
+
+	uplinkConfigCommon						UplinkConfigCommon											OPTIONAL,
+	-- FFS: How to indicate the FrequencyInfoUL for the SUL
+	supplementaryUplink					SEQUENCE {
+		uplinkConfigCommon					UplinkConfigCommon											OPTIONAL 
+		-- FFS: Add additional (selection) criteria determining when/whether the UE shall use the SUL frequency 
+	}																									OPTIONAL, -- Cond SUL
+
+	tdd-UL-DL-Configuration				TDD-UL-DL-ConfigCommon											OPTIONAL, -- Cond TDD
+	tdd-UL-DL-configurationCommon2		TDD-UL-DL-ConfigCommon											OPTIONAL, -- Cond TDD
+
+	pdcch-ConfigCommon					PDCCH-ConfigCommon												OPTIONAL,
+	pucch-ConfigCommon					PUCCH-ConfigCommon												OPTIONAL,
+
+	lateNonCriticalExtension				OCTET STRING															OPTIONAL,
+	nonCriticalExtension					SEQUENCE{}																OPTIONAL 
+}
+
+-- TAG-SIB1-STOP
+-- TAG-SETUP-RELEASE-START
+
+SetupRelease { ElementTypeParam } ::= CHOICE {
+	release			NULL,
+	setup			ElementTypeParam
+}
+
+-- TAG-SETUP-RELEASE-STOP
+-- TAG-ADDITIONALSPECTRUMEMISSION-START
+
+AdditionalSpectrumEmission ::=				INTEGER (0..7)
+
+-- TAG-ADDITIONALSPECTRUMEMISSION-STOP
+-- TAG-ALPHA-START
+
+Alpha ::=						ENUMERATED {alpha0, alpha04, alpha05, alpha06, alpha07, alpha08, alpha09, alpha1}
+
+-- TAG-ALPHA-STOP
+-- TAG-ARFCN-VALUE-NR-START
+
+ARFCN-ValueNR ::=				INTEGER (0..3279165)
+
+-- TAG-ARFCN-VALUE-NR-STOP
+-- TAG-BANDWIDTH-PART-START
+
+
+-- Generic parameters used in Uplink- and Downlink bandwidth parts
+BWP ::= 					SEQUENCE {
+	-- Frequency domain location and bandwidth of this bandwidth part defined commonly in a table (FFS_Section). The location is given as 
+	-- distance (in number of PRBs) to point A (absoluteFrequencyPointA in FrequencyInfoDL). 
+	-- Corresponds to L1 parameter 'DL-BWP-loc'. (see 38.211, section FFS_Section).		
+	-- In case of TDD, a BWP-pair (UL BWP and DL BWP with the same bwp-Id) must have the same location (see 38.211, section REF)
+	locationAndBandwidth			INTEGER (0..37949),
+	-- Subcarrier spacing to be used in this BWP for all channels and 
+	-- reference signals unless explicitly configured elsewhere.
+	-- Corresponds to subcarrier spacing according to 38.211, Table 4.2-1. 
+	-- The value kHz15 corresponds to µ=0, kHz30 to µ=1, and so on. Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are 
+	-- applicable.
+	subcarrierSpacing				SubcarrierSpacing,
+	-- Indicates whether to use the extended cyclic prefix for this bandwidth part. If not set, the UE uses the normal cyclic prefix. 
+	-- Normal CP is supported for all numerologies and slot formats. Extended CP is supported only for 60 kHz subcarrier spacing. 
+	-- (see 38.211, section 4.2.2)
+	cyclicPrefix					ENUMERATED { extended }														OPTIONAL	-- Need R
+}
+
+BWP-Uplink ::= 			SEQUENCE {
+	-- An identifier for this bandwidth part. Other parts of the RRC configuration use the BWP-Id to associate themselves with a particular
+	-- bandwidth part. The BWP ID=0 is always associated with the initial BWP and may hence not be used here (in other bandwidth parts).
+	-- The NW may trigger the UE to swtich UL or DL BWP using a DCI field. The four code points in that DCI field map to the RRC-configured 
+	-- BWP-ID as follows: For up to 3 configured BWPs (in addition to the initial BWP) the DCI code point is equivalent to the BWP ID 
+	-- (initial = 0, first dedicated = 1, ...). If the NW configures 4 dedicated bandwidth parts, they are identified by DCI code 
+	-- points 0 to 3. In this case it is not possible to switch to the initial BWP using the DCI field.
+	-- Corresponds to L1 parameter 'UL-BWP-index'. (see 38.211, 38.213, section 12)
+	bwp-Id								BWP-Id,
+	bwp-Common							BWP-UplinkCommon														OPTIONAL,	-- Need M
+	bwp-Dedicated						BWP-UplinkDedicated														OPTIONAL,	-- Need M
+	...
+}
+
+BWP-UplinkCommon ::=				SEQUENCE {
+	genericParameters					BWP,
+	-- Configuration of cell specific random access parameters which the UE uses for contention based and contention free random access
+	-- as well as for contention based beam failure recovery. 
+	rach-ConfigCommon					SetupRelease { RACH-ConfigCommon }										OPTIONAL, 	-- Need M
+	-- Cell specific parameters for the PUSCH
+	pusch-ConfigCommon					SetupRelease { PUSCH-ConfigCommon }										OPTIONAL, 	-- Need M
+	
+	-- Cell specific parameters for the PUCCH
+	pucch-ConfigCommon					SetupRelease { PUCCH-ConfigCommon }										OPTIONAL, 	-- Need M
+	...
+}
+
+BWP-UplinkDedicated ::= 	SEQUENCE {
+	-- PUCCH configuration for one BWP of the regular UL or SUL of a serving cell. If the UE is configured with SUL, the network 
+	-- configures PUCCH only on the BWPs of one of the uplinks (UL or SUL).
+	pucch-Config						SetupRelease { PUCCH-Config }											OPTIONAL, 	-- Need M
+	-- PUSCH configuration for one BWP of the regular UL or SUL of a serving cell. If the UE is configured with SUL and
+	-- if it has a PUSCH-Config for both UL and SUL, a carrier indicator field in DCI indicates for which of the two to use an UL grant.
+	-- See also L1 parameter 'dynamicPUSCHSUL' (see 38.213, section FFS_Section)
+	pusch-Config						SetupRelease { PUSCH-Config }											OPTIONAL, 	-- Need M
+	-- A Configured-Grant of typ1 or type2. It may be configured for Ul or SUL but in case of type1 [FFS also type2] not for both at a time.
+	configuredGrantConfig				SetupRelease { ConfiguredGrantConfig }									OPTIONAL, 	-- Need M
+	-- Uplink sounding reference signal configuration
+	srs-Config							SetupRelease { SRS-Config }												OPTIONAL, 	-- Need M
+	-- Determines how the UE performs Beam Failure Recovery upon detection of a Beam Failure (see RadioLinkMonitoringConfig)
+	beamFailureRecoveryConfig			SetupRelease { BeamFailureRecoveryConfig }								OPTIONAL,	-- Need M
+	...
+}
+
+
+BWP-Downlink ::= 					SEQUENCE {
+	-- An identifier for this bandwidth part. Other parts of the RRC configuration use the BWP-Id to associate themselves with a particular
+	-- bandwidth part. The BWP ID=0 is always associated with the initial BWP and may hence not be used here. (in other bandwidth parts).
+	-- The NW may trigger the UE to swtich UL or DL BWP using a DCI field. The four code points in that DCI field map to the RRC-configured 
+	-- BWP-ID as follows: For up to 3 configured BWPs (in addition to the initial BWP) the DCI code point is equivalent to the BWP ID 
+	-- (initial = 0, first dedicated = 1, ...). If the NW configures 4 dedicated bandwidth parts, they are identified by DCI code 
+	-- points 0 to 3. In this case it is not possible to switch to the initial BWP using the DCI field.
+	-- Corresponds to L1 parameter 'DL-BWP-index'. (see 38.211, 38.213, section 12)
+	bwp-Id								BWP-Id,
+	bwp-Common							BWP-DownlinkCommon														OPTIONAL,	-- Need M
+	bwp-Dedicated						BWP-DownlinkDedicated													OPTIONAL,	-- Need M
+	...
+}
+
+
+BWP-DownlinkCommon ::=				SEQUENCE {
+	genericParameters					BWP,
+	pdcch-ConfigCommon					SetupRelease { PDCCH-ConfigCommon }										OPTIONAL,	-- Need M
+	pdsch-ConfigCommon					SetupRelease { PDSCH-ConfigCommon }										OPTIONAL,	-- Need M
+	...
+}
+
+BWP-DownlinkDedicated ::= 			SEQUENCE {
+	pdcch-Config						SetupRelease { PDCCH-Config }											OPTIONAL,	-- Need M
+	pdsch-Config						SetupRelease { PDSCH-Config }											OPTIONAL,	-- Need M 
+	sps-Config							SetupRelease { SPS-Config }												OPTIONAL, 	-- Need M
+	radioLinkMonitoringConfig			SetupRelease { RadioLinkMonitoringConfig }								OPTIONAL,	-- Need M
+	...
+}
+
+
+-- TAG-BANDWIDTH-PART-STOP 
+-- TAG-BWP-ID-START
+
+BWP-Id ::=							INTEGER (0..maxNrofBWPs)
+
+-- TAG-BWP-ID-STOP
+-- TAG-BEAM-FAILURE-RECOVERY-CONFIG-START
+
+BeamFailureRecoveryConfig ::= 		SEQUENCE {
+	rootSequenceIndex-BFR				INTEGER (0..137)															OPTIONAL,	--	Need M
+	-- Configuration of contention free random access occasions for BFR
+	rach-ConfigBFR						RACH-ConfigGeneric															OPTIONAL,	--	Need M
+	-- L1-RSRP threshold used for determining whether a candidate beam may be used by the UE to attempt contention free 
+	-- Random Access to recover from beam failure. The signalled threshold is applied directly for SSB, a threshold for 
+	-- CSI-RS is determined by linearly scaling singalled value based on Pc_ss corresponding to the CSI-RS resource.
+	-- (see FFS_Specification, FFS_Section)
+	candidateBeamThreshold		RSRP-Range																			OPTIONAL,	--	Need M
+	-- A list of reference signals (CSI-RS and/or SSB) identifying the candidate beams for recover and the associated RA parameters
+	candidateBeamRSList					SEQUENCE (SIZE(1..maxNrofCandidateBeams)) OF PRACH-ResourceDedicatedBFR		OPTIONAL,	--	Need M
+	-- Explicitly signalled PRACH Mask Index for RA Resource selection in TS 36.321. The mask is valid for all SSB resources
+	ra-ssb-OccasionMaskIndex			INTEGER (0..15)																OPTIONAL, 	--	Need M
+	-- Control Resource Set that the UE uses to receive the random access response for beam failure recovery. 
+	-- If the field is absent the UE uses the initial CORESET (ControlResourceSetId = 0)
+	recoveryControlResourceSetId		ControlResourceSetId														OPTIONAL	,	-- Need S
+	-- Search space to use for BFR RAR. If the field is absent, the UE uses the initial Serach Space (SearchSpaceId = 0).
+	recoverySearchSpaceId				SearchSpaceId																OPTIONAL,	-- Need S
+	...
+}
+
+PRACH-ResourceDedicatedBFR ::= 		CHOICE {
+	ssb									BFR-SSB-Resource,
+	csi-RS								BFR-CSIRS-Resource
+}
+
+BFR-SSB-Resource ::= 			SEQUENCE {
+	-- The ID of an SSB transmitted by this serving cell. It determines a candidate beam for beam failure recovery (BFR)
+	ssb								SSB-Index,
+	-- The preamble index that the UE shall use when performing BFR upon selecting the candidate beams identified by this SSB.
+	ra-PreambleIndex				INTEGER (0..63),
+	...
+}
+
+BFR-CSIRS-Resource ::=			SEQUENCE {
+	-- The ID of a NZP-CSI-RS-Resource configured in the CSI-MeasConfig of this serving cell. This reference signal determines a candidate beam
+	-- for beam failure recovery (BFR).
+	csi-RS							NZP-CSI-RS-ResourceId,
+	-- RA occasions that the UE shall use when performing BFR upon selecting the candidate beam identified by this CSI-RS. If the field is absent
+	-- the UE uses the RA occasion associated with the SSB that is QCLed with this CSI-RS. 
+	-- The RA preamble index to use in the RA occasions associated with this CSI-RS. If the field is absent, the UE uses the preamble index
+	-- associated with the SSB that is QCLed with this CSI-RS. 
+	ra-PreambleIndex				INTEGER (0..63)																	OPTIONAL,	-- Need R
+	...
+}
+
+-- TAG-BEAM-FAILURE-RECOVERY-CONFIG-STOP
+-- TAG-CELL-GROUP-CONFIG-START
+
+-- Configuration of one Cell-Group:
+CellGroupConfig	::= 						SEQUENCE {
+	cellGroupId									CellGroupId,
+
+	-- Logical Channel configuration and association with radio bearers:
+	rlc-BearerToAddModList 						SEQUENCE (SIZE(1..maxLC-ID)) OF RLC-Bearer-Config				OPTIONAL,   -- Need N
+	rlc-BearerToReleaseList						SEQUENCE (SIZE(1..maxLC-ID)) OF LogicalChannelIdentity			OPTIONAL,   -- Need N
+
+	-- Parameters applicable for the entire cell group:
+	mac-CellGroupConfig							MAC-CellGroupConfig												OPTIONAL,	-- Need M
+	physicalCellGroupConfig						PhysicalCellGroupConfig											OPTIONAL,	-- Need M
+
+	-- Serving Cell specific parameters (SpCell and SCells)
+	spCellConfig								SpCellConfig													OPTIONAL, 	-- Need M
+	sCellToAddModList							SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellConfig				OPTIONAL,	-- Need N
+	-- List of seconary serving cells to be released (not applicable for SpCells)
+	sCellToReleaseList							SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellIndex				OPTIONAL,	-- Need N
+	...
+}
+
+-- The ID of a cell group. 0 identifies the master cell group. Other values identify secondary cell groups.
+-- In this version of the specification only values 0 and 1 are supported.
+-- FFS: This should be moved to be own IE section
+CellGroupId ::=									INTEGER (0.. maxSecondaryCellGroups)
+
+
+RLC-Bearer-Config ::=								SEQUENCE {
+	-- ID used commonly for the MAC logical channel and for the RLC bearer.
+	logicalChannelIdentity						LogicalChannelIdentity,
+
+	-- Associates the RLC Bearer with an SRB or a DRB. The UE shall deliver DL RLC SDUs received via the RLC entity of this
+	-- RLC bearer to the PDCP entity of the servedRadioBearer. Furthermore, the UE shall advertise and deliver uplink PDCP PDUs of the 
+	-- uplink PDCP entity of the servedRadioBearer to the uplink RLC entity of this RLC bearer unless the uplink scheduling 
+	-- restrictions ('moreThanOneRLC' in PDCP-Config and the restrictions in LogicalChannelConfig) forbid it to do so.
+	servedRadioBearer							CHOICE {
+		srb-Identity                           SRB-Identity,
+		drb-Identity                           DRB-Identity
+	}																											OPTIONAL,	-- Cond LCH-SetupOnly
+
+	reestablishRLC								ENUMERATED {true}												OPTIONAL, 	-- Need N
+	rlc-Config									RLC-Config														OPTIONAL,	-- Cond LCH-Setup
+
+	mac-LogicalChannelConfig					LogicalChannelConfig											OPTIONAL,	-- Cond LCH-Setup
+	...	
+}
+
+LogicalChannelIdentity ::= 					INTEGER (1..maxLC-ID)
+
+-- Cell-Group specific L1 parameters
+PhysicalCellGroupConfig ::=					SEQUENCE {
+	-- Enables spatial bundling of HARQ ACKs. It is configured per cell group (i.e. for all the cells within the cell group) for PUCCH 
+	-- reporting of HARQ-ACK. It is only applicable when more than 4 layers are possible to schedule.
+	-- Corresponds to L1 parameter 'HARQ-ACK-spatial-bundling' (see 38.213, section FFS_Section)
+	-- Absence indicates that spatial bundling is disabled.
+	harq-ACK-SpatialBundlingPUCCH				ENUMERATED {true}												OPTIONAL,	-- Need R
+
+	-- Enables spatial bundling of HARQ ACKs. It is configured per cell group (i.e. for all the cells within the cell group) for PUSCH 
+	-- reporting of HARQ-ACK. It is only applicable when more than 4 layers are possible to schedule.
+	-- Corresponds to L1 parameter 'HARQ-ACK-spatial-bundling' (see 38.213, section FFS_Section)
+	-- Absence indicates that spatial bundling is disabled.
+	harq-ACK-SpatialBundlingPUSCH				ENUMERATED {true}												OPTIONAL,	-- Need R
+	-- The maximum transmit power to be used by the UE in this NR cell group. 
+	p-NR										P-Max															OPTIONAL,	-- Need R
+	-- The PDSCH HARQ-ACK codebook is either semi-static of dynamic. This is applicable to both CA and none CA operation.
+	-- Corresponds to L1 parameter 'HARQ-ACK-codebook' (see 38.213, section FFS_Section)
+	pdsch-HARQ-ACK-Codebook						ENUMERATED {semiStatic, dynamic},
+	-- RNTI used for SRS TPC commands on DCI. Corresponds to L1 parameter 'TPC-SRS-RNTI' (see 38.213, section 10)
+	tpc-SRS-RNTI								RNTI-Value														OPTIONAL,	-- Need R
+	-- RNTI used for PUCCH TPC commands on DCI. Corresponds to L1 parameter 'TPC-PUCCH-RNTI' (see 38.213, section 10).
+	tpc-PUCCH-RNTI								RNTI-Value														OPTIONAL,	-- Need R
+	-- RNTI used for PUSCH TPC commands on DCI. Corresponds to L1 parameter 'TPC-PUSCH-RNTI' (see 38.213, section 10)
+	tpc-PUSCH-RNTI	RNTI-Value																					OPTIONAL,-- Need R
+	...
+}
+
+
+-- Serving cell specific MAC and PHY parameters for a SpCell:
+SpCellConfig ::=						SEQUENCE {
+	-- Serving cell ID of a PSCell (the PCell of the Master Cell Group uses ID = 0)
+	servCellIndex						ServCellIndex															OPTIONAL,	-- Cond SCG
+	-- Parameters for the synchronous reconfiguration to the target SpCell:
+	reconfigurationWithSync 			ReconfigurationWithSync 												OPTIONAL,	-- Cond ReconfWithSync
+	rlf-TimersAndConstants				SetupRelease { RLF-TimersAndConstants }									OPTIONAL,	-- Need M
+	rlmInSyncOutOfSyncThreshold         INTEGER (0..1)                         									OPTIONAL,	-- Need M
+	spCellConfigDedicated				ServingCellConfig														OPTIONAL,	-- Need M
+	...
+}
+
+ReconfigurationWithSync ::=			SEQUENCE {
+	spCellConfigCommon					ServingCellConfigCommon													OPTIONAL,	-- Need M
+	newUE-Identity						RNTI-Value,
+	t304								ENUMERATED {ms50, ms100, ms150, ms200, ms500, ms1000, ms2000, ms10000},
+		rach-ConfigDedicated				CHOICE {
+			uplink								RACH-ConfigDedicated,
+			supplementaryUplink					RACH-ConfigDedicated
+	}																											OPTIONAL,	-- Need N
+	...
+}			
+
+SCellConfig ::=						SEQUENCE {
+	sCellIndex							SCellIndex,
+	sCellConfigCommon					ServingCellConfigCommon													OPTIONAL,	-- Cond SCellAdd
+	sCellConfigDedicated				ServingCellConfig														OPTIONAL,	-- Cond SCellAddMod
+	...
+}
+
+-- TAG-CELL-GROUP-CONFIG-STOP 
+-- TAG-CODEBOOKCONFIG-START
+CodebookConfig ::= 									SEQUENCE {
+	-- CodebookType including possibly sub-types and the corresponding parameters for each. Corresponds to L1 parameter 'CodebookType'
+	-- (see 38.214, section 5.2.2.2)
+	codebookType 										CHOICE {
+		type1 												SEQUENCE {
+			subType										CHOICE {
+				typeI-SinglePanel									SEQUENCE {
+					nrOfAntennaPorts									CHOICE {
+						two													SEQUENCE {
+							-- Codebook subset restriction for 2TX codebook 
+							-- Corresponds to L1 parameter ' TypeI-SinglePanel-2Tx-CodebookSubsetRestriction' (see 38.214 section 5.2.2.2.1)
+							twoTX-CodebookSubsetRestriction						BIT STRING (SIZE (6))
+						},
+						moreThanTwo											SEQUENCE {
+							-- Number of antenna ports in first (n1) and second (n2) dimension and codebook subset restriction
+							-- Corresponds to L1 parameters 'CodebookConfig-N1', 'CodebookConfig-N2'
+							-- 'TypeI-SinglePanel-CodebookSubsetRestriction ' (see 38.214 section 5.2.2.2.1)
+							n1-n2												CHOICE {
+								two-one-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (8)),
+								two-two-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (64)),
+								four-one-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (16)),
+								three-two-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (96)),
+								six-one-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (24)),
+								four-two-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (128)),
+								eight-one-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (32)),
+								four-three-TypeI-SinglePanel-Restriction			BIT STRING (SIZE (192)),
+								six-two-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (192)),
+								twelve-one-TypeI-SinglePanel-Restriction			BIT STRING (SIZE (48)),
+								four-four-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (256)),
+								eight-two-TypeI-SinglePanel-Restriction				BIT STRING (SIZE (256)),
+								sixteen-one-TypeI-SinglePanel-Restriction			BIT STRING (SIZE (64))
+							},
+							-- i2 codebook subset restriction for Type I Single-panel codebook used when reportQuantity is CRI/Ri/i1/CQI
+							-- Corresponds to L1 parameter 'TypeI-SinglePanel-CodebookSubsetRestriction-i2' (see 38.214 section 5.2.2.2.1)
+							typeI-SinglePanel-codebookSubsetRestriction-i2		BIT STRING (SIZE (16))	OPTIONAL
+						}
+					},
+					-- Restriction for RI for TypeI-SinglePanel-RI-Restriction
+					-- Corresponds to L1 parameter 'TypeI-SinglePanel-RI-Restriction' (see 38.214, section 5.2.2.2.1)
+					typeI-SinglePanel-ri-Restriction					BIT STRING (SIZE (8))
+				}, 
+				typeI-MultiPanel									SEQUENCE {
+					-- Codebook subset restriction for Type I Multi-panel codebook
+					-- Corresponds to L1 parameter 'TypeI-MultiPanel-CodebookSubsetRestriction' (see 38.214, section 5.2.2.2.2)
+					ng-n1-n2												CHOICE {
+						two-two-one-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (8)),
+						two-four-one-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (32)),
+						four-two-one-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (32)),
+						two-two-two-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (128)),
+						two-eight-one-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (64)),
+						four-four-one-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (64)),
+						two-four-two-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (256)),
+						four-two-two-TypeI-MultiPanel-Restriction				BIT STRING (SIZE (256))
+					},
+					-- Restriction for RI for TypeI-MultiPanel-RI-Restriction
+					-- Corresponds to L1 parameter 'TypeI-MultiPanel-RI-Restriction' (see 38.214, section 5.2.2.2.2)
+					ri-Restriction							BIT STRING (SIZE (4))
+				}
+			},
+			-- CodebookMode as specified in 38.214 section 5.2.2.2.2
+			codebookMode										INTEGER (1..2)
+
+		},
+		type2									SEQUENCE {
+			subType									CHOICE {
+				typeII									SEQUENCE {
+					-- Number of antenna ports in first (n1) and second (n2) dimension and codebook subset restriction
+					-- Corresponds to L1 parameters 'CodebookConfig-N1', 'CodebookConfig-N2'
+					-- The CHOICE name indicates the value of n1 and n2, the CHOICE contents is the codebook subset restriction bitmap
+					-- Corresponds to L1 parameter ' TypeII-CodebookSubsetRestriction' (see 38.214 section 5.2.2.2.3)
+					-- Number of bits for codebook subset restriction is ceil(log2(nchoosek(O1*O2,4)))+8*n1*n2 where nchoosek(a,b) = a!/(b!(a-b)!)
+					n1-n2-codebookSubsetRestriction			CHOICE {
+						two-one									BIT STRING (SIZE (16)),
+						two-two									BIT STRING (SIZE (139)),
+						four-one								BIT STRING (SIZE (32)),
+						three-two								BIT STRING (SIZE (59)),
+						six-one									BIT STRING (SIZE (49)),
+						four-two								BIT STRING (SIZE (75)),
+						eight-one								BIT STRING (SIZE (65)),
+						four-three								BIT STRING (SIZE (107)),
+						six-two									BIT STRING (SIZE (107)),
+						twelve-one								BIT STRING (SIZE (129)),
+						four-four								BIT STRING (SIZE (139)),
+						eight-two								BIT STRING (SIZE (139)),
+						sixteen-one								BIT STRING (SIZE (129))
+					},
+					-- Restriction for RI for TypeII-RI-Restriction
+					-- Corresponds to L1 parameter 'TypeII-RI-Restriction' (see 38.214, section 5.2.2.2.3)
+					typeII-RI-Restriction					BIT STRING (SIZE (2))
+				}, 
+				typeII-PortSelection					SEQUENCE {
+					-- The size of the port selection codebook (parameter d)
+					portSelectionSamplingSize				ENUMERATED {n1, n2, n3, n4}					OPTIONAL,		-- Cond TypeII-PortSelection
+					-- Restriction for RI for TypeII-PortSelection-RI-Restriction
+					-- Corresponds to L1 parameter 'TypeII-PortSelection-RI-Restriction' (see 38.214, section 5.2.2.4)
+					typeII-PortSelectionRI-Restriction		BIT STRING (SIZE (2))
+				}
+			},
+			-- The size of the PSK alphabet, QPSK or 8-PSK
+			phaseAlphabetSize						ENUMERATED {n4, n8},
+			-- If subband amplitude reporting is activated (true)
+			subbandAmplitude						BOOLEAN,
+			-- Number of beams, L,  used for linear combination
+			numberOfBeams							ENUMERATED {two, three, four}
+		}
+	}
+}
+
+-- TAG-CODEBOOKCONFIG-STOP
+-- TAG-CONFIGUREDGRANTCONFIG-START
+
+ConfiguredGrantConfig ::=				SEQUENCE {
+
+	-- Frequency hopping as agreed in RAN1-AH18776
+	frequencyHopping             ENUMERATED {mode1, mode2},
+	-- DMRS configuration, as agreed in RAN1-AH18776
+	cg-DMRS-Configuration		DMRS-UplinkConfig,
+
+	-- Indicates the MCS table the UE shall use for PUSCH without transform precoding, as agreed in RAN1-AH18776
+	mcs-Table					ENUMERATED {qam64, qam256},
+	-- Indicates the MCS table the UE shall use for PUSCH with transform precoding, as agreed in RAN1-AH18776
+	-- When the field is absent the UE applies the value 64QAM
+	mcs-TableTransformPrecoder		ENUMERATED {qam256}																	OPTIONAL,	-- Need S
+	-- Selection between and configuration of dynamic and semi-static beta-offset, as agreed in RAN1-AH18776
+	-- Note: For Type 1 UL data transmission without grant, "uci-on-PUSCH" should be set to semiStatic
+	uci-OnPUSCH							SetupRelease { CG-UCI-OnPUSCH },
+	-- Configuration of resource allocation type 0 and resource allocation type 1, as agreed in RAN1-AH18776
+	-- Note: For Type 1 UL data transmission without grant, "resourceAllocation" should be resourceAllocationType0 or resourceAllocationType1
+	resourceAllocation					ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch },
+	-- Selection between config 1 and config 2 for RBG size for PUSCH. When the field is absent the UE applies the value config1.
+	-- Note: rbg-Size is used when the transformPrecoder parameter is disabled.
+	rbg-Size								ENUMERATED {config2}														OPTIONAL,	-- Need S
+									
+	-- Closed control loop to apply. Corresponds to L1 parameter 'PUSCH-closed-loop-index' (see 38.213, section FFS_Section)
+	powerControlLoopToUse					ENUMERATED {n0, n1},
+	-- Index of the P0-PUSCH-AlphaSet to be used for this configuration
+	p0-PUSCH-Alpha							P0-PUSCH-AlphaSetId,
+	-- Enable transformer precoder for type1 and type2. Absence indicates that it is disabled.
+	-- Corresponds to L1 parameter 'UL-TWG-tp' (see 38.214, section 6.1.3)
+	transformPrecoder						ENUMERATED {enabled}														OPTIONAL,	-- Need R
+	-- The number of HARQ processes configured. It applies for both Type 1 and Type 2
+	-- Corresponds to L1 parameter 'UL-TWG-numbHARQproc' (see 38.321, section 5.8.2)
+	nrofHARQ-Processes						INTEGER(1..16),
+	-- 	The number or repetitions of K:
+	repK									ENUMERATED {n1, n2, n4, n8},
+	-- If repetitions is used, this field indicates the redundancy version (RV) sequence to use.
+	-- Corresponds to L1 parameter 'UL-TWG-RV-rep' (see 38.321, section 5.8.2)
+	repK-RV									ENUMERATED {s1-0231, s2-0303, s3-0000}										OPTIONAL,	-- Cond RepK
+	-- Periodicity for UL transmission without UL grant for type 1 and type 2
+	-- Corresponds to L1 parameter 'UL-TWG-periodicity' (see 38.321, section 5.8.2)
+
+	-- The following periodicities are supported depending on the configured subcarrier spacing [symbols]:
+	--	15kHz: 2, 7, n*14, where n={1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 128, 160, 320, 640}
+	--	30kHz: 2, 7, n*14, where n={1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 128, 160, 256, 320, 640, 1280}
+	--	60kHz with normal CP: 2, 7, n*14, where n={1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1280, 2560}
+	--	60kHz with ECP: 2, 6, n*12, where n={1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1280, 2560}
+	--	120kHz: 2, 7, n*14, where n={1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 128, 160, 256, 320, 512, 640, 1024, 1280, 2560, 5120}
+	-- (see 38.214, Table 6.1.2.3-1)
+	periodicity								ENUMERATED {
+												sym2, sym7, sym1x14, sym2x14, sym4x14, sym5x14, sym8x14, sym10x14, sym16x14, sym20x14,
+												sym32x14, sym40x14, sym64x14, sym80x14, sym128x14, sym160x14, sym256x14, sym320x14, sym512x14,
+												sym640x14, sym1024x14, sym1280x14, sym2560x14, sym5120x14,
+
+												sym6, sym1x12, sym2x12, sym4x12, sym5x12, sym8x12, sym10x12, sym16x12, sym20x12, sym32x12,
+												sym40x12, sym64x12, sym80x12, sym128x12, sym160x12, sym256x12, sym320x12, sym512x12, sym640x12,
+												sym1280x12, sym2560x12
+											},
+
+	-- If configured, the UE uses the configured grant timer (see 38.321, section 5.8.2) with this initial timer value.
+	-- Supported values are as follows in units of symbols:
+	-- For normal CP: 2, 7, {1, 2, 4, 5, 8, 10, 20, 32, 40, 64, 80, 128, 160, 256, 512, 640 } x 14
+	-- For extended CP: 2, 6, {1, 2, 4, 8, 20, 40, 80, 128, 160, 256, 320, 512, 640 } x 12
+	configuredGrantTimer					ENUMERATED {
+												sym2, sym7, sym1x14, sym2x14, sym4x14, sym5x14, sym8x14, sym10x14, sym16x14, sym20x14, sym32x14,
+												sym40x14, sym64x14, sym80x14, sym128x14, sym160x14, sym256x14, sym512x14, sym640x14,
+
+												sym6, sym1x12, sym2x12, sym4x12, sym5x12, sym8x12, sym10x12, sym16x12, sym20x12, sym32x12,
+												sym40x12, sym64x12, sym80x12, sym128x12, sym256x12, sym320x12, sym512x12, sym640x12
+											}																			OPTIONAL,	-- Need R
+	-- Selection between "configured grant" transmission with fully RRC-configured UL grant (Type1) 
+	-- or with UL grant configured by DCI addressed to CS-RNTI (Type2).
+	rrc-ConfiguredUplinkGrant		SEQUENCE {
+			-- Offset related to SFN=0
+			timeDomainOffset						INTEGER  (0..5119),
+			-- Corresponding to the DCI field of time domain resource assignment, and the maximum bit width is 4.
+			--(see 38.214, section 6.1.2 and 38.212, section 7.3.1)
+			timeDomainAllocation					 INTEGER  (0..15), -- RAN1 indicated just "Mapping-type,Index-start-len"
+            -- Corresponding to the DCI field of freq domain resource assignment. 
+			-- (see 38.214, section 6.1.2, and 38.212, section 7.3.1)
+			frequencyDomainAllocation				BIT STRING (SIZE(18)),
+			-- UE-specific DMRS configuration: corresponding to the DCI field of antenna ports, and the maximum bitwidth is 5. 
+			-- (see 38.214, section 6.1.2, and 38.212, section 7.3.1)
+            antennaPort								INTEGER   (0..31),
+            dmrs-SeqInitialization					INTEGER   (0..1)          					  OPTIONAL,  -- Cond NoTransformPrecoder
+            precodingAndNumberOfLayers				INTEGER   (0..63),
+            srs-ResourceIndicator					INTEGER   (0..15),
+			-- The modulation order, target code rate and TB size (see 38.214, section 6.1.2)
+			mcsAndTBS								INTEGER (0..31),
+			-- Enables intra-slot frequency hopping with the given frequency hopping offset
+			-- Corresponds to L1 parameter 'UL-TWG-hopping' (see 38.214, section FFS_Section)
+
+			frequencyHoppingOffset					INTEGER (1.. maxNrofPhysicalResourceBlocks-1),
+			pathlossReferenceIndex					INTEGER (0..maxNrofPUSCH-PathlossReferenceRSs-1),
+			...
+	}																								OPTIONAL  -- Cond Type1
+}
+
+CG-UCI-OnPUSCH ::= CHOICE {
+	dynamic									SEQUENCE (SIZE (1..4)) OF BetaOffsets,
+	semiStatic								BetaOffsets
+}
+
+-- TAG-CONFIGUREDGRANTCONFIG-STOP
+-- TAG-CONTROLRESOURCESET-START
+
+ControlResourceSet ::= 					SEQUENCE {
+	-- Corresponds to L1 parameter 'CORESET-ID'
+	-- Value 0 identifies the common CORESET configured in MIB and in ServingCellConfigCommon
+	-- Values 1..maxNrofControlResourceSets-1 identify CORESETs configured by dedicated signalling
+	-- The controlResourceSetId is unique among the BWPs of a ServingCell.
+	controlResourceSetId					ControlResourceSetId,
+
+
+	-- Frequency domain resources for the CORESET. Each bit corresponds a group of 6 RBs, with grouping starting from PRB 0, which is fully 
+	-- contained in the bandwidth part within which the CORESET is configured. 
+	-- The most significant bit corresponds to the group of lowest frequency which is fully contained in the bandwidth part within which the 
+	-- CORESET is configured, each next subsequent lower significance bit corresponds to the next lowest frequency group fully contained within
+	-- the bandwidth part within which the CORESET is configured, if any. 
+	-- Bits corresponding to a group not fully contained within the bandwidth part within which the CORESET is configured are set to zero. 
+	-- Corresponds to L1 parameter 'CORESET-freq-dom'(see 38.211, section 7.3.2.2)
+	frequencyDomainResources				BIT STRING (SIZE (45)),
+	-- Contiguous time duration of the CORESET in number of symbols 
+	-- Corresponds to L1 parameter 'CORESET-time-duration' (see 38.211, section 7.3.2.2FFS_Section)
+	duration								INTEGER (1..maxCoReSetDuration),
+	-- Mapping of Control Channel Elements (CCE) to Resource Element Groups (REG). 
+	-- Corresponds to L1 parameter 'CORESET-CCE-REG-mapping-type' (see 38.211Section sections 7.3.2.2 and 7.4.1.3.2)
+	cce-REG-MappingType							CHOICE { 
+		interleaved								SEQUENCE {
+			-- Resource Element Groups (REGs) can be bundled to create REG bundles. This parameter defines the size of such bundles. 
+			-- Corresponds to L1 parameter 'CORESET-REG-bundle-size' (see 38.211, section FFS_Section)
+			reg-BundleSize							ENUMERATED {n2, n3, n6},
+			-- Corresponds to L1 parameter 'CORESET-interleaver-size' (see 38.211, 38.213, section FFS_Section)
+			interleaverSize							ENUMERATED {n2, n3, n6}, 
+			-- Corresponds to L1 parameter 'CORESET-shift-index' (see 38.211, section 7.3.2.2)
+			shiftIndex								INTEGER(0..maxNrofPhysicalResourceBlocks-1)
+		}, 
+		nonInterleaved 							NULL
+	},
+	-- Precoder granularity in frequency domain. 
+	-- Corresponds to L1 parameter 'CORESET-precoder-granuality' (see 38.211, sections 7.3.2.2 and 7.4.1.3.2)
+	precoderGranularity						ENUMERATED {sameAsREG-bundle, allContiguousRBs},
+
+	-- A subset of the TCI states defined in TCI-States used for providing QCL relationships between the DL RS(s) in one RS Set 
+	-- (TCI-State) and the PDCCH DMRS ports. Corresponds to L1 parameter 'TCI-StatesPDCCH' (see 38.214, section FFS_Section)
+	tci-StatesPDCCH							SEQUENCE(SIZE (1..maxNrofTCI-StatesPDCCH)) OF TCI-StateId				OPTIONAL,	-- Need R
+
+	-- If at least spatial QCL is configured/indicated, this field indicates if TCI field is present or not present in DL-related DCI.
+	-- When the field is absent the UE considers the TCI to be absent/disabled.
+	-- Corresponds to L1 parameter 'TCI-PresentInDCI' (see 38,213, section 5.1.5)
+	tci-PresentInDCI						ENUMERATED {enabled}													OPTIONAL, 	-- Need S
+
+	-- PDCCH DMRS scrambling initalization. Corresponds to L1 parameter 'PDCCH-DMRS-Scrambling-ID' (see 38.214, section 5.1)
+	-- When the field is absent the UE applies the value '0'.
+	pdcch-DMRS-ScramblingID					BIT STRING (SIZE (16))													OPTIONAL 	-- Need S
+}
+
+-- TAG-CONTROLRESOURCESET-STOP
+-- TAG-CONTROL-RESOURCE-SET-ID-START
+
+ControlResourceSetId ::=				INTEGER (0..maxNrofControlResourceSets-1)
+
+-- TAG-CONTROL-RESOURCE-SET-ID-STOP
+
+CrossCarrierSchedulingConfig ::=		SEQUENCE {
+	schedulingCellInfo						CHOICE {
+		own										SEQUENCE {					-- No cross carrier scheduling
+			cif-Presence							BOOLEAN
+		},
+		other									SEQUENCE {					-- Cross carrier scheduling
+			schedulingCellId						ServCellIndex,
+			cif-InSchedulingCell					INTEGER (1..7)
+		}																	-- Cond SCellOnly
+	},
+	...
+}
+
+-- TAG-CSI-APERIODICTRIGGERSTATELIST-START
+
+CSI-AperiodicTriggerStateList ::=	SEQUENCE (SIZE (1..maxNrOfCSI-AperiodicTriggers)) OF CSI-AperiodicTriggerState 
+
+CSI-AperiodicTriggerState ::=		SEQUENCE {
+	associatedReportConfigInfoList		SEQUENCE (SIZE(1..maxNrofReportConfigPerAperiodicTrigger)) OF CSI-AssociatedReportConfigInfo,
+	...	
+}
+
+CSI-AssociatedReportConfigInfo ::=		SEQUENCE {
+	-- The reportConfigId of one of the CSI-ReportConfigToAddMod configured in CSI-MeasConfig
+	reportConfigId						CSI-ReportConfigId,
+
+	resourcesForChannel					CHOICE {
+       nzp-CSI-RS							SEQUENCE {
+			-- NZP-CSI-RS-ResourceSet for channel measurements. Entry number in nzp-CSI-RS-ResourceSetList in the CSI-ResourceConfig 
+			-- indicated by resourcesForChannelMeasurement in the CSI-ReportConfig indicated by reportConfigId above 
+			-- (1 corresponds to the first entry, 2 to thesecond entry, and so on).
+			resourceSet		INTEGER (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig),
+
+			-- List of references to TCI-States for providing the QCL source and QCL type for for each NZP-CSI-RS-Resource 
+			-- listed in nzp-CSI-RS-Resources of the NZP-CSI-RS-ResourceSet indicated by nzp-CSI-RS-ResourcesforChannel. 
+			-- First entry in qcl-info-forChannel corresponds to first entry in nzp-CSI-RS-Resources of that NZP-CSI-RS-ResourceSet, 
+			-- second entry in qcl-info-forChannel corresponds to second entry in nzp-CSI-RS-Resources,
+			-- and so on. Corresponds to L1 parameter 'QCL-Info-aPeriodicReportingTrigger' (see 38.214, section 5.2.1.5.1)
+			qcl-info						SEQUENCE (SIZE(1..maxNrofAP-CSI-RS-ResourcesPerSet)) OF TCI-StateId
+		},
+		-- CSI-SSB-ResourceSet for channel measurements. Entry number in csi-SSB-ResourceSetList in the CSI-ResourceConfig indicated by
+		-- resourcesForChannelMeasurement in the CSI-ReportConfig indicated by reportConfigId above (1 corresponds to the first entry, 2 to 
+		-- the second entry, and so on).
+		csi-SSB-ResourceSet					INTEGER (1..maxNrofCSI-SSB-ResourceSetsPerConfig)
+	},
+
+	-- CSI-IM-ResourceSet for interference measurement. Entry number in csi-IM-ResourceSetList in the CSI-ResourceConfig indicated by 
+	-- csi-IM-ResourcesForInterference in the CSI-ReportConfig indicated by reportConfigId above (1 corresponds to the first entry, 2 to the second
+	-- entry, and so on).
+	-- The indicated CSI-IM-ResourceSet should have exactly the same number of resources like the NZP-CSI-RS-ResourceSet indicated in 
+	-- nzp-CSI-RS-ResourcesforChannel.
+	-- This field can only be present if the CSI-ReportConfig identified by reportConfigId includes csi-IM-ResourcesForInterference.
+	csi-IM-ResourcesforInteference				INTEGER(1..maxNrofCSI-IM-ResourceSetsPerConfig)			OPTIONAL, --Cond CSI-IM-forInterference
+
+
+	-- NZP-CSI-RS-ResourceSet for interference measurement. Entry number in nzp-CSI-RS-ResourceSetList in the CSI-ResourceConfig indicated by 
+	-- nzp-CSI-RS-ResourcesForInterference in the CSI-ReportConfig indicated by reportConfigId above (1 corresponds to the first entry,
+	-- 2 to the second entry, and so on).
+	-- The indicated NZP-CSI-RS-ResourceSet should have exactly the same number of resources like the NZP-CSI-RS-ResourceSet indicated in 
+	-- nzp-CSI-RS-ResourcesforChannel.
+	-- This field can only be present if the CSI-ReportConfig identified by reportConfigId includes nzp-CSI-RS-ResourcesForInterference.
+	nzp-CSI-RS-ResourcesforInterference			INTEGER (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig)	OPTIONAL, --Cond LinkedNZP-CSI-RS-forInterference
+	...
+}
+
+-- TAG-CSI-APERIODICTRIGGERSTATELIST-STOP 
+-- TAG-CSI-FREQUENCYOCCUPATION-START
+
+CSI-FrequencyOccupation ::=				SEQUENCE {
+	-- PRB where this CSI resource starts in relation to PRB 0 of the associated BWP. 
+	-- Only multiples of 4 are allowed (0, 4, ...)
+	startingRB								INTEGER (0..maxNrofPhysicalResourceBlocks-1),
+	-- Number of PRBs across which this CSI resource spans. Only multiples of 4 are allowed. The smallest configurable 
+	-- number is the minimum of 24 and the width of the associated BWP.
+	nrofRBs									INTEGER (24..maxNrofPhysicalResourceBlocks),
+	...
+}
+
+-- TAG-CSI-FREQUENCYOCCUPATION-STOP
+-- TAG-CSI-IM-RESOURCE-START
+CSI-IM-Resource ::= 			SEQUENCE {
+	csi-IM-ResourceId						CSI-IM-ResourceId,
+
+	-- The resource element pattern (Pattern0 (2,2) or Pattern1 (4,1)) with corresponding parameters.
+	-- Corresponds to L1 parameter 'CSI-IM-RE-pattern' (see 38.214, section 5.2.2.3.4)
+	csi-IM-ResourceElementPattern				CHOICE {
+		pattern0									SEQUENCE {
+			-- OFDM subcarrier occupancy of the CSI-IM resource for Pattern0
+			-- Corresponds to L1 parameter 'CSI-IM-ResourceMapping' (see 38.214, section 5.2.2.3.4)
+			subcarrierLocation-p0						ENUMERATED { s0, s2, s4, s6, s8, s10 },
+			-- OFDM symbol location of the CSI-IM resource for Pattern0 
+			-- Corresponds to L1 parameter 'CSI-IM-ResourceMapping' (see 38.214, section 5.2.2.3.4)
+			symbolLocation-p0							INTEGER (0..12)
+		},
+		pattern1									SEQUENCE {
+			-- OFDM subcarrier occupancy of the CSI-IM resource for Pattern1
+			-- Corresponds to L1 parameter 'CSI-IM-ResourceMapping' (see 38.214, section 5.2.2.3.4)
+			subcarrierLocation-p1						ENUMERATED { s0, s4, s8 },
+			-- OFDM symbol location of the CSI-IM resource for Pattern1 
+			-- Corresponds to L1 parameter 'CSI-IM-ResourceMapping' (see 38.214, section 5.2.2.3.4)
+			symbolLocation-p1							INTEGER (0..13)
+		}
+	}																										OPTIONAL,	--Need M
+
+	-- Frequency-occupancy of CSI-IM. Corresponds to L1 parameter 'CSI-IM-FreqBand' (see 38.214, section 5.2.2.3.2)
+	freqBand									CSI-FrequencyOccupation										OPTIONAL,	-- Need M
+
+	-- Periodicity and slot offset for periodic/semi-persistent CSI-IM. Corresponds to L1 parameter 'CSI-IM-timeConfig' 
+	periodicityAndOffset					CSI-ResourcePeriodicityAndOffset								OPTIONAL, --Cond PeriodicOrSemiPersistent
+	...
+}
+
+-- TAG-CSI-IM-RESOURCE-STOP
+-- TAG-CSI-IM-RESOURCEID-START
+CSI-IM-ResourceId ::= 			INTEGER (0..maxNrofCSI-IM-Resources-1) 
+
+-- TAG-CSI-IM-RESOURCEID-STOP
+-- TAG-CSI-IM-RESOURCESET-START
+CSI-IM-ResourceSet ::=			SEQUENCE {
+
+	csi-IM-ResourceSetId					CSI-IM-ResourceSetId,
+	-- CSI-IM-Resources associated with this CSI-IM-ResourceSet
+	-- Corresponds to L1 parameter 'CSI-IM-ResourceConfigList' (see 38.214, section 5.2)
+	csi-IM-Resources						SEQUENCE (SIZE(1..maxNrofCSI-IM-ResourcesPerSet)) OF CSI-IM-ResourceId,
+	...
+}
+-- TAG-CSI-IM-RESOURCESET-STOP
+-- TAG-CSI-IM-RESOURCESETID-START
+
+CSI-IM-ResourceSetId ::=				INTEGER (0..maxNrofCSI-IM-ResourceSets-1)
+
+-- TAG-CSI-IM-RESOURCESETID-STOP
+-- TAG-CSI-MEAS-CONFIG-START
+
+CSI-MeasConfig ::=					SEQUENCE {
+	-- Pool of NZP-CSI-RS-Resource which can be referred to from NZP-CSI-RS-ResourceSet
+    nzp-CSI-RS-ResourceToAddModList		SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-Resources)) OF NZP-CSI-RS-Resource					OPTIONAL, -- Need N
+	nzp-CSI-RS-ResourceToReleaseList	SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-Resources)) OF NZP-CSI-RS-ResourceId				OPTIONAL, -- Need N
+
+	-- Pool of NZP-CSI-RS-ResourceSet which can be referred to from CSI-ResourceConfig or from MAC CEs
+	nzp-CSI-RS-ResourceSetToAddModList	SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSets)) OF NZP-CSI-RS-ResourceSet			OPTIONAL, -- Need N
+	nzp-CSI-RS-ResourceSetToReleaseList	SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSets)) OF NZP-CSI-RS-ResourceSetId			OPTIONAL, -- Need N
+
+	-- Pool of CSI-IM-Resource which can be referred to from CSI-IM-ResourceSet
+	csi-IM-ResourceToAddModList			SEQUENCE (SIZE (1..maxNrofCSI-IM-Resources)) OF CSI-IM-Resource							OPTIONAL, -- Need N
+	csi-IM-ResourceToReleaseList		SEQUENCE (SIZE (1..maxNrofCSI-IM-Resources)) OF CSI-IM-ResourceId						OPTIONAL, -- Need N
+
+	-- Pool of CSI-IM-ResourceSet which can be referred to from CSI-ResourceConfig or from MAC CEs
+	csi-IM-ResourceSetToAddModList		SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSets)) OF CSI-IM-ResourceSet					OPTIONAL, -- Need N
+	csi-IM-ResourceSetToReleaseList		SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSets)) OF CSI-IM-ResourceSetId					OPTIONAL, -- Need N
+
+	-- Pool of CSI-SSB-ResourceSet which can be referred to from CSI-ResourceConfig
+	csi-SSB-ResourceSetToAddModList		SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSets)) OF CSI-SSB-ResourceSet					OPTIONAL, -- Need N
+	csi-SSB-ResourceSetToAddReleaseList	SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSets)) OF CSI-SSB-ResourceSetId				OPTIONAL, -- Need N
+
+	-- Configured CSI resource settings as specified in TS 38.214 section 5.2.1.2
+	csi-ResourceConfigToAddModList 		SEQUENCE (SIZE (1..maxNrofCSI-ResourceConfigurations)) OF CSI-ResourceConfig			OPTIONAL, -- Need N
+	csi-ResourceConfigToReleaseList 	SEQUENCE (SIZE (1..maxNrofCSI-ResourceConfigurations)) OF CSI-ResourceConfigId			OPTIONAL, -- Need N
+
+	-- Configured CSI report settings as specified in TS 38.214 section 5.2.1.1
+	csi-ReportConfigToAddModList		SEQUENCE (SIZE (1..maxNrofCSI-ReportConfigurations)) OF CSI-ReportConfig				OPTIONAL, -- Need N
+	csi-ReportConfigToReleaseList		SEQUENCE (SIZE (1..maxNrofCSI-ReportConfigurations)) OF CSI-ReportConfigId				OPTIONAL, -- Need N
+	
+
+	-- Size of CSI request field in DCI (bits). Corresponds to L1 parameter 'ReportTriggerSize' (see 38.214, section 5.2)
+	reportTriggerSize				INTEGER (0..6)																				OPTIONAL,
+
+	-- Contains trigger states for dynamically selecting one or more aperiodic and semi-persistent reporting configurations
+	-- and/or triggering one or more aperiodic CSI-RS resource sets for channel and/or interference measurement.
+	-- FFS: How to address the MAC-CE configuration
+	aperiodicTriggerStateList			SetupRelease { CSI-AperiodicTriggerStateList }											OPTIONAL, -- Need M
+	semiPersistentOnPUSCH-TriggerStateList			SetupRelease { CSI-SemiPersistentOnPUSCH-TriggerStateList }					OPTIONAL, -- Need M
+	...
+}
+
+maxNrofNZP-CSI-RS-ResourceSets		INTEGER ::= 		64
+maxNrofNZP-CSI-RS-ResourceSets-1	INTEGER ::= 		63
+
+maxNrofCSI-SSB-ResourceSets 		INTEGER ::=			64
+maxNrofCSI-SSB-ResourceSets-1 		INTEGER ::=			63
+
+maxNrofCSI-IM-ResourceSets 			INTEGER ::=			64
+maxNrofCSI-IM-ResourceSets-1		INTEGER ::=			63
+
+-- TAG-CSI-MEAS-CONFIG-STOP 
+-- TAG-CSI-REPORTCONFIG-START
+-- Configuration of a CSI-Report sent on L1 (e.g. PUCCH) (see 38.214, section 5.2.1)
+CSI-ReportConfig ::=			SEQUENCE {
+	reportConfigId							CSI-ReportConfigId,
+
+	-- Indicates in which serving cell the CSI-ResourceConfigToAddMod(s) below are to be found.
+	-- If the field is absent, the resources are on the same serving cell as this report configuration.
+	carrier									ServCellIndex			OPTIONAL,	-- Need S
+
+	-- Resources for channel measurement. csi-ResourceConfigId of a CSI-ResourceConfig included in the configuration of the serving cell
+	-- indicated with the field "carrier" above. This CSI-ReportConfig is associated with the DL BWP indicated by bwp-Id in that CSI-ResourceConfig.
+	resourcesForChannelMeasurement			CSI-ResourceConfigId,
+
+	-- CSI IM resources for interference measurement. csi-ResourceConfigId of a CSI-ResourceConfig included in the configuration of the serving cell
+	-- indicated with the field "carrier" above. The bwp-Id in that CSI-ResourceConfigToAddMod is the same value like the bwp-Id in the
+	-- CSI-ResourceConfig indicated by resourcesForChannelMeasurement.
+	csi-IM-ResourcesForInterference			CSI-ResourceConfigId	OPTIONAL,	-- Need R
+
+	-- NZP CSI RS resources for interference measurement. csi-ResourceConfigId of a CSI-ResourceConfigToAddMod included in the configuration of the 
+	-- serving cell indicated with the field "carrier" above. The bwp-Id in that CSI-ResourceConfigToAddMod is the same value like the bwp-Id in the
+	-- CSI-ResourceConfigToAddMod indicated by resourcesForChannelMeasurement.
+	nzp-CSI-RS-ResourcesForInterference		CSI-ResourceConfigId	OPTIONAL, 	-- Need R
+
+	-- Time domain behavior of reporting configuration
+	reportConfigType						CHOICE {
+		periodic								SEQUENCE {
+			-- Periodicity and slot offset. Corresponds to L1 parameter 'ReportPeriodicity'and 'ReportSlotOffset' 
+			-- (see 38.214, section section 5.2.1.4).
+			reportSlotConfig						CSI-ReportPeriodicityAndOffset,
+			-- Indicates which PUCCH resource to use for reporting on PUCCH.
+			pucch-CSI-ResourceList					SEQUENCE (SIZE (1..maxNrofBWPs)) OF PUCCH-CSI-Resource
+		},
+		semiPersistentOnPUCCH					SEQUENCE {
+			-- Periodicity and slot offset. Corresponds to L1 parameter 'ReportPeriodicity' and 'ReportSlotOffset' 
+			-- (see 38.214, section section 5.2.1.4). 
+			reportSlotConfig						CSI-ReportPeriodicityAndOffset,
+			-- Indicates which PUCCH resource to use for reporting on PUCCH.
+			pucch-CSI-ResourceList					SEQUENCE (SIZE (1..maxNrofBWPs)) OF PUCCH-CSI-Resource
+		},
+		semiPersistentOnPUSCH					SEQUENCE {
+			-- Periodicity. Corresponds to L1 parameter 'Reportperiodicity-spCSI'. (see 38.214, section 5.2.1.1?FFS_Section)
+			reportSlotConfig						ENUMERATED {sl5, sl10, sl20, sl40, sl80, sl160, sl320},
+			-- Timing offset Y for aperiodic reporting using PUSCH. This field lists the allowed offset values. 
+			-- A particular value is indicated in DCI. The first report is transmitted in slot n+Y, second report in n+Y+P,
+			-- where P is the configured periodicity.
+			reportSlotOffsetList				SEQUENCE (SIZE (1..4)) OF INTEGER (0..7),
+			-- RNTI for SP CSI-RNTI, Corresponds to L1 parameter 'SPCSI-RNTI' (see 38.214, section 5.2.1.5.2)
+			-- FFS: RAN1 models different RNTIs as different Search Spaces with independent configurations. Align the configuration 
+			-- of this one (e.g. group with monitoring periodicity, PDCCH candidate configuration, DCI-Payload size...)?
+			csi-RNTI								RNTI-Value,
+			-- Index of the p0-alpha set determining the power control for this CSI report transmission. 
+			-- Corresponds to L1 parameter 'SPCSI-p0alpha' (see 38.214, section FFS_Section)
+			p0alpha									P0-PUSCH-AlphaSetId
+		},
+		aperiodic								SEQUENCE {
+			-- Timing offset Y for aperiodic reporting using PUSCH. This field lists the allowed offset values. A particular value is indicated in DCI. 
+			-- (see 38.214, section 5.2.3)
+			-- FFS_Value: Range wasn’t final in RAN1 table. 
+			-- FFS_FIXME: How are the DCI codepoints mapped to the allowed offsets?
+			reportSlotOffsetList				SEQUENCE (SIZE (1..16)) OF INTEGER (0..7)
+		}
+	},
+	-- The CSI related quanities to report. Corresponds to L1 parameter 'ReportQuantity' (see 38.214, section REF)
+	reportQuantity							CHOICE {
+		none									NULL,
+		cri-RI-PMI-CQI							NULL, 
+		cri-RI-i1								NULL, 
+		cri-RI-i1-CQI							SEQUENCE {
+			-- PRB bundling size to assume for CQI calcuation when reportQuantity is CRI/RI/i1/CQI
+			-- Corresponds to L1 parameter 'PDSCH-bundle-size-for-CSI' (see 38.214, section 5.2.1.4)
+			pdsch-BundleSizeForCSI					ENUMERATED {n2, n4}		OPTIONAL
+		}, 
+		cri-RI-CQI								NULL, 
+		cri-RSRP								NULL, 
+		ssb-Index-RSRP							NULL,
+		cri-RI-LI-PMI-CQI						NULL
+	},
+	-- Reporting configuration in the frequency domain. (see 38.214, section 5.2.1.4)
+	reportFreqConfiguration					 SEQUENCE {
+		-- Indicates whether the UE shall report a single (wideband) or multiple (subband) CQI. (see 38.214, section 5.2.1.4)
+		cqi-FormatIndicator						ENUMERATED { widebandCQI, subbandCQI },
+		-- Indicates whether the UE shall report a single (wideband) or multiple (subband) PMI. (see 38.214, section 5.2.1.4)
+		pmi-FormatIndicator						ENUMERATED { widebandPMI, subbandPMI },
+		-- Indicates a contiguous or non-contigous subset of subbands in the bandwidth part which CSI shall be reported 
+		-- for. Each bit in the bit-string represents one subband. The right-most bit in the bit string represents the 
+		-- lowest subband in the BWP. (see 38.214, section 5.2.1.4)
+		-- The number of subbands is determined according to 38.214 section 5.2.1.4. It is absent if there are less than 24 PRBs (no sub band)
+		-- and present otherwise, the number of sub bands can be from 3 (24 PRBs, sub band size 8) to 18 (72 PRBs, sub band size 4).
+		csi-ReportingBand						CHOICE {
+			subbands3								BIT STRING(SIZE(3)),
+			subbands4								BIT STRING(SIZE(4)),
+			subbands5								BIT STRING(SIZE(5)),
+			subbands6								BIT STRING(SIZE(6)),
+			subbands7								BIT STRING(SIZE(7)),
+			subbands8								BIT STRING(SIZE(8)),
+			subbands9								BIT STRING(SIZE(9)),
+			subbands10								BIT STRING(SIZE(10)),
+			subbands11								BIT STRING(SIZE(11)),
+			subbands12								BIT STRING(SIZE(12)),
+			subbands13								BIT STRING(SIZE(13)),
+			subbands14								BIT STRING(SIZE(14)),
+			subbands15								BIT STRING(SIZE(15)),
+			subbands16								BIT STRING(SIZE(16)),
+			subbands17								BIT STRING(SIZE(17)),
+			subbands18								BIT STRING(SIZE(18)),
+			...
+		}	OPTIONAL	-- Need S
+
+	},
+	-- Time domain measurement restriction for the channel (signal) measurements. 
+	-- Corresponds to L1 parameter 'MeasRestrictionConfig-time-channel' (see 38.214, section 5.2.1.1)
+	timeRestrictionForChannelMeasurements				ENUMERATED {configured, notConfigured},
+	-- Time domain measurement restriction for interference measurements. 
+	-- Corresponds to L1 parameter 'MeasRestrictionConfig-time-interference' (see 38.214, section 5.2.1.1)
+	timeRestrictionForInterferenceMeasurements			ENUMERATED {configured, notConfigured},
+	-- Codebook configuration for Type-1 or Type-II including codebook subset restriction
+	codebookConfig								CodebookConfig,
+	-- Maximum number of CQIs per CSI report (cf. 1 for 1-CW, 2 for 2-CW)	
+	nrofCQIsPerReport							ENUMERATED {n1, n2},
+	-- Turning on/off group beam based reporting (see 38.214, section 5.2.1.4)	
+	groupBasedBeamReporting						CHOICE {
+		enabled										NULL,
+		disabled 									SEQUENCE {
+			-- The number (N) of measured RS resources to be reported per report setting in a non-group-based report. 
+			-- N <= N_max, where N_max is either 2 or 4 depending on UE capability. 
+			-- FFS: The signaling mechanism for the gNB to select a subset of N beams for the UE to measure and report. 
+			-- FFS: Note: this parameter may not be needed for certain resource and/or report settings
+			-- FFS_ASN1: Change groupBasedBeamReporting into a CHOICE and include this field into the "no" option?
+			-- (see 38.214, section FFS_Section)
+			-- When the field is absent the UE applies the value 1
+			nrofReportedRS							ENUMERATED {n1, n2, n3, n4}												OPTIONAL	-- Need S
+		}
+	},
+
+	-- Which CQI table to use for CQI calculation. Corresponds to L1 parameter 'CQI-table' (see 38.214, section 5.2.2.1)
+	cqi-Table								ENUMERATED {table1, table2, spare2, spare1}										OPTIONAL,
+	-- Indicates one out of two possible BWP-dependent values for the subband size as indicated in 38.214 table 5.2.1.4-2
+	-- Corresponds to L1 parameter 'SubbandSize' (see 38.214, section 5.2.1.4)
+	subbandSize								ENUMERATED {value1, value2},
+	-- BLER target that the UE shall be assume in its CQI calculation.
+	-- Corresponds to L1 parameter 'BLER-Target' (see 38.214, section 5.2.2.1)
+	-- FFS_Values (now filled with spares)
+	bler-Target								ENUMERATED {zerodot1, spare3, space2, spare1}										OPTIONAL,
+	-- Port indication for RI/CQI calculation. For each  CSI-RS resource in the linked ResourceConfig for channel measurement, 
+	-- a port indication for each rank R, indicating which R ports to use. Applicable only for non-PMI feedback.
+	-- Corresponds to L1 parameter 'Non-PMI-PortIndication' (see 38.214, section FFS_Section)
+	-- The first entry in non-PMI-PortIndication corresponds to the NZP-CSI-RS-Resource indicated by the first entry in
+	-- nzp-CSI-RS-Resources in the NZP-CSI-RS-ResourceSet indicated in the first entry of nzp-CSI-RS-ResourceSetList of the
+	-- CSI-ResourceConfig whose CSI-ResourceConfigId is indicated in a CSI-MeasId together with the above CSI-ReportConfigId,
+	-- the second entry in non-PMI-PortIndication corresponds to the NZP-CSI-RS-Resource indicated by the second entry in
+	-- nzp-CSI-RS-Resources in the NZP-CSI-RS-ResourceSet indicated in the first entry of nzp-CSI-RS-ResourceSetList of the
+	-- same CSI-ResourceConfig, and so on until the NZP-CSI-RS-Resource indicated by the last entry in nzp-CSI-RS-Resources
+	-- in the in the NZP-CSI-RS-ResourceSet indicated in the first entry of nzp-CSI-RS-ResourceSetList of the
+	-- same CSI-ResourceConfig, then the next entry corresponds to the NZP-CSI-RS-Resource indicated by the first entry
+	-- in nzp-CSI-RS-Resources in the NZP-CSI-RS-ResourceSet indicated in the second entry of nzp-CSI-RS-ResourceSetList of the
+	-- same CSI-ResourceConfig and so on.
+	non-PMI-PortIndication					SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourcesPerConfig)) OF PortIndexFor8Ranks		OPTIONAL,	...
+}
+
+CSI-ReportPeriodicityAndOffset ::= CHOICE {
+	slots4								INTEGER(0..3),
+	slots5								INTEGER(0..4),
+	slots8								INTEGER(0..7),
+	slots10								INTEGER(0..9),
+	slots16								INTEGER(0..15),
+	slots20								INTEGER(0..19),
+	slots40								INTEGER(0..39),
+	slots80								INTEGER(0..79),
+	slots160							INTEGER(0..159),
+	slots320							INTEGER(0..319)
+}
+
+PUCCH-CSI-Resource ::= 				CHOICE {
+	uplinkBandwidthPartId				BWP-Id,
+	-- PUCCH resource for the associated uplink BWP. Only PUCCH-Resource of format 2, 3 and 4 is supported.
+	pucch-Resource						PUCCH-Resource
+}
+
+-- The PortIndexFor8Ranks allows to indicate port indexes for 1 to 8 ranks using a port index ranges from 0 to 31, or from 0 to 15, or from 0
+-- to 7, or from 0 to 3, or from 0 to 1, or with 0 only.
+
+PortIndexFor8Ranks ::=	CHOICE {
+	portIndex8				SEQUENCE{
+		rank1-8					PortIndex8,
+		rank2-8					SEQUENCE(SIZE(1..2)) OF PortIndex8,
+		rank3-8					SEQUENCE(SIZE(1..3)) OF PortIndex8,
+		rank4-8					SEQUENCE(SIZE(1..4)) OF PortIndex8,
+		rank5-8					SEQUENCE(SIZE(1..5)) OF PortIndex8,
+		rank6-8					SEQUENCE(SIZE(1..6)) OF PortIndex8,
+		rank7-8					SEQUENCE(SIZE(1..7)) OF PortIndex8,
+		rank8-8					SEQUENCE(SIZE(1..8)) OF PortIndex8
+	},
+	portIndex4				SEQUENCE{
+		rank1-4					PortIndex4,
+		rank2-4					SEQUENCE(SIZE(1..2)) OF PortIndex4,
+		rank3-4					SEQUENCE(SIZE(1..3)) OF PortIndex4,
+		rank4-4					SEQUENCE(SIZE(1..4)) OF PortIndex4
+	},
+	portIndex2				SEQUENCE{
+		rank1-2					PortIndex2,
+		rank2-2					SEQUENCE(SIZE(1..2)) OF PortIndex2
+	},
+	portIndex1				NULL
+}
+
+PortIndex8::=	INTEGER (0..7)
+PortIndex4::=	INTEGER (0..3)
+PortIndex2::=	INTEGER (0..1)
+
+maxNrofNZP-CSI-RS-ResourcesPerConfig	INTEGER ::=	128
+-- TAG-CSI-REPORTCONFIG-STOP
+-- TAG-CSI-REPORTCONFIGID-START
+CSI-ReportConfigId ::= 					INTEGER (0..maxNrofCSI-ReportConfigurations-1)
+
+-- TAG-CSI-REPORTCONFIGID-STOP
+-- TAG-CSI-RESOURCECONFIG-START
+
+-- One CSI resource configuration comprising of one or more resource sets
+CSI-ResourceConfig ::= 		SEQUENCE {
+
+	-- Used in CSI-ReportConfig to refer to an instance of CSI-ResourceConfig
+	csi-ResourceConfigId				CSI-ResourceConfigId,
+
+	-- Contains up to maxNrofNZP-CSI-RS-ResourceSetsPerConfig resource sets if ResourceConfigType is 'aperiodic' and 1 otherwise.
+	-- Corresponds to L1 parameter 'ResourceSetConfigList' (see 38.214, section 5.2.1.3.1)	
+	csi-RS-ResourceSetList 	 			CHOICE {
+		nzp-CSI-RS-SSB 						SEQUENCE {
+			nzp-CSI-RS-ResourceSetList			SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig)) OF NZP-CSI-RS-ResourceSetId OPTIONAL,
+			-- List of SSB resources used for beam measurement and reporting in a resource set
+			-- Corresponds to L1 parameter 'resource-config-SS-list' (see 38,214, section FFS_Section)
+			csi-SSB-ResourceSetList				SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSetsPerConfig)) OF CSI-SSB-ResourceSetId	OPTIONAL
+		},			
+		csi-IM-ResourceSetList				SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSetsPerConfig)) OF CSI-IM-ResourceSetId
+	},
+
+
+	-- The DL BWP which the CSI-RS associated with this CSI-ResourceConfig are located in. 
+	-- Corresponds to L1 parameter 'BWP-Info' (see 38.214, section 5.2.1.2
+	bwp-Id								BWP-Id,
+
+	-- Time domain behavior of resource configuration. Corresponds to L1 parameter 'ResourceConfigType' (see 38.214, section 5.2.2.3.5)	
+	resourceType						ENUMERATED { aperiodic, semiPersistent, periodic },
+	...
+}
+
+-- TAG-CSI-RESOURCECONFIGTOADDMOD-STOP
+-- TAG-CSI-RESOURCECONFIGID-START
+CSI-ResourceConfigId ::= INTEGER (0..maxNrofCSI-ResourceConfigurations-1)
+
+-- TAG-CSI-RESOURCECONFIGID-STOP
+-- TAG-CSI-RESOURCEPERIODICITYANDOFFSET-START
+
+CSI-ResourcePeriodicityAndOffset ::=	CHOICE {
+	slots4							INTEGER (0..3), 
+	slots5							INTEGER (0..4), 
+	slots8							INTEGER (0..7), 
+	slots10							INTEGER (0..9), 
+	slots16							INTEGER (0..15), 
+	slots20							INTEGER (0..19), 
+	slots32							INTEGER (0..31), 
+	slots40							INTEGER (0..39), 
+	slots64							INTEGER (0..63), 
+	slots80							INTEGER (0..79), 
+	slots160						INTEGER (0..159), 
+	slots320						INTEGER (0..319), 
+	slots640						INTEGER (0..639)
+}
+
+-- TAG-CSI-RESIYRCEPERIODICITYANDOFFSET-STOP
+-- TAG-CSI-RS-RESOURCEMAPPING-START
+
+CSI-RS-ResourceMapping ::= 				SEQUENCE {
+	-- Frequency domain allocation within a physical resource block in accordance with 38.211, section 7.4.1.5.3 including table 7.4.1.5.2-1.
+	-- The number of bits that may be set to one depend on the chosen row in that table. For the choice "other", the row can be determined from
+	-- the parmeters below and from the number of bits set to 1 in frequencyDomainAllocation.
+	frequencyDomainAllocation			CHOICE {
+		row1								BIT STRING (SIZE (4)),
+		row2								BIT STRING (SIZE (12)),
+		row4								BIT STRING (SIZE (3)),
+		other								BIT STRING (SIZE (6))
+	},
+	-- Number of ports (see 38.214, section 5.2.2.3.1)
+	nrofPorts							ENUMERATED {p1,p2,p4,p8,p12,p16,p24,p32},
+	-- Time domain allocation within a physical resource block. The field indicates the first OFDM symbol in the PRB used for CSI-RS.
+	-- Parameter l0 in 38.211, section 7.4.1.5.3. Value 2 is supported only when DL-DMRS-typeA-pos equals 3.
+	firstOFDMSymbolInTimeDomain			INTEGER (0..13),
+	-- Time domain allocation within a physical resource block. Parameter l1 in 38.211, section 7.4.1.5.3.
+	firstOFDMSymbolInTimeDomain2		INTEGER (0..13)																OPTIONAL,	-- Need R
+	-- CDM type (see 38.214, section 5.2.2.3.1)	
+	cdm-Type								ENUMERATED {noCDM, fd-CDM2, cdm4-FD2-TD2, cdm8-FD2-TD4},
+	-- Density of CSI-RS resource measured in RE/port/PRB. Corresponds to L1 parameter 'CSI-RS-Density'  (see 38.211, section 7.4.1.5.3)
+	-- Values 0.5 (dot5), 1 (one) and 3 (three) are allowed for X=1,
+	-- values 0.5 (dot5) and 1 (one) are allowed for X=2, 16, 24 and 32,
+	-- value 1 (one) is allowed for X=4, 8, 12.
+	-- For density = 1/2, includes 1 bit indication for RB level comb offset indicating  whether odd or even RBs are occupied by CSI-RS
+	density									CHOICE {
+		dot5									ENUMERATED {evenPRBs, oddPRBs}, 
+		one										NULL, 
+		three									NULL, 
+		spare									NULL
+	},
+	-- Wideband or partial band CSI-RS. Corresponds to L1 parameter 'CSI-RS-FreqBand' (see 38.214, section 5.2.2.3.1)	
+	freqBand								CSI-FrequencyOccupation,
+	...
+}
+
+-- TAG-CSI-RS-RESOURCEMAPPING-STOP
+-- TAG-CSI-SEMIPERSISTENTONPUSCHTRIGGERSTATELIST-START
+
+CSI-SemiPersistentOnPUSCH-TriggerStateList ::=	SEQUENCE(SIZE (1..maxNrOfSemiPersistentPUSCH-Triggers)) OF CSI-SemiPersistentOnPUSCH-TriggerState
+CSI-SemiPersistentOnPUSCH-TriggerState ::=		SEQUENCE {
+	associatedReportConfigInfo						CSI-ReportConfigId,
+	...
+}
+
+maxNrOfSemiPersistentPUSCH-Triggers					INTEGER ::= 64		-- Maximum number of triggers for semi persistent reporting on PUSCH
+
+-- TAG-CSI-SEMIPERSISTENTONPUSCHTRIGGERSTATELIST-STOP 
+-- TAG-CSI-SSB-RESOURCESETID-START
+
+CSI-SSB-ResourceSetId ::=	INTEGER (0..maxNrofCSI-SSB-ResourceSets-1)
+
+-- TAG-CSI-SSB-RESOURCESETID-STOP
+-- TAG-CSI-SSB-RESOURCESET-START
+
+CSI-SSB-ResourceSet ::=						SEQUENCE {
+	csi-SSB-ResourceSetId						CSI-SSB-ResourceSetId,
+	csi-SSB-ResourceList						SEQUENCE (SIZE(1..maxNrofCSI-SSB-ResourcePerSet)) OF SSB-Index,
+	...
+}
+
+-- TAG-CSI-SSB-RESOURCESET-STOP
+-- TAG-DMRS-DOWNLINKCONFIG-START
+
+DMRS-DownlinkConfig ::=					SEQUENCE {
+	-- Selection of the DMRS type to be used for DL (see 38.211, section 7.4.1.1.1).
+	-- If the field is absent, the UE uses DMRS type 1.
+	dmrs-Type								ENUMERATED {type2}													OPTIONAL,	-- Need R
+	-- Position for additional DM-RS in DL, see Table 7.4.1.1.2-4 in 38.211. 
+	-- The four values represent the cases of 1+0, 1+1, 1+1+1. 1+1+1+1 non-adjacent OFDM symbols for DL.
+	-- If the field is absent, the UE applies the value pos2.
+	dmrs-AdditionalPosition					ENUMERATED {pos0, pos1, pos3}										OPTIONAL,	-- Need R
+	-- DM-RS groups that are QCL:ed, i.e. group 1 (see 38.214, section 5.1)
+	dmrs-group1								BIT STRING (SIZE (12))												OPTIONAL,	-- Need R
+	-- DM-RS groups that are QCL:ed, i.e. group 2 (see 38.214, section 5.1)
+	dmrs-group2								BIT STRING (SIZE (12))												OPTIONAL,	-- Need R
+	-- The maximum number of OFDM symbols for DL front loaded DMRS. 'len1' corresponds to value 1. 'len2 corresponds to value 2.
+	-- If the field is absent, the UE applies value len1.
+	-- Corresponds to L1 parameter 'DL-DMRS-max-len' (see 38.214, section 5.1)
+	maxLength								ENUMERATED {len2}													OPTIONAL, 	-- Need R
+	-- DL DMRS scrambling initalization
+	-- Corresponds to L1 parameter 'n_SCID 0' (see 38.211, section 7.4.1)
+	-- When the field is absent the UE applies the value Physical cell ID (physCellId) configured for this serving cell."
+	scramblingID0							INTEGER (0..65535)													OPTIONAL, 	-- Need S
+	-- DL DMRS scrambling initalization. Corresponds to L1 parameter 'n_SCID 1' (see 38.211, section 7.4.1)
+	-- When the field is absent the UE applies the value (physCellId) configured for this serving cell.
+	scramblingID1							INTEGER (0..65535)													OPTIONAL, 	-- Need S
+
+	-- Configures downlink PTRS. If absent of released, the UE assumes that downlink PTRS are not present. See 38.214 section 5.1.6.3
+	phaseTrackingRS						SetupRelease { PTRS-DownlinkConfig	}									OPTIONAL,	-- Need M
+
+	...
+}
+
+-- TAG-DMRS-DOWNLINKCONFIG-STOP
+-- TAG-DMRS-UPLINKCONFIG-START
+
+DMRS-UplinkConfig ::=					SEQUENCE {
+	-- Selection of the DMRS type to be used for UL (see section 38.211, section 6.4.1.1.3)
+	-- If the field is absent, the UE uses DMRS type 1.
+	dmrs-Type								ENUMERATED {type2} 													OPTIONAL,	-- Need R
+	-- Position for additional DM-RS in UL. Corresponds to L1 parameter 'UL-DMRS-add-pos' (see Table 7.4.1.1.2-4 in 38.211) 
+	-- The four values represent the cases of 1+0, 1+1, 1+1+1. 1+1+1+1 non-adjacent OFDM symbols for UL. 
+	-- If the field is absent, the UE applies the value pos2.
+	dmrs-AdditionalPosition					ENUMERATED {pos0, pos1, pos3}										OPTIONAL,	-- Need R
+	-- Configures uplink PTRS (see 38.211, section x.x.x.x) FFS_Ref
+	phaseTrackingRS						SetupRelease { PTRS-UplinkConfig }										OPTIONAL,	-- Need M
+	-- The maximum number of OFDM symbols for UL front loaded DMRS. 'len1' corresponds to value 1. 'len2 corresponds to value 2.
+	-- If the field is absent, the UE applies value len1.
+	-- Corresponds to L1 parameter 'UL-DMRS-max-len' (see 38.214, section 6.4.1.1.2)
+	maxLength								ENUMERATED {len2}													OPTIONAL, 	-- Need R
+
+	transformPrecoding					CHOICE {
+		-- DMRS related parameters for Cyclic Prefix OFDM
+		disabled									SEQUENCE {
+			-- UL DMRS scrambling initalization for CP-OFDM
+			-- Corresponds to L1 parameter 'n_SCID 0' (see 38.214, section 6.4.1.1.2)
+			-- When the field is absent the UE applies the value Physical cell ID (physCellId)
+			scramblingID0							INTEGER (0..65535)											OPTIONAL,	-- Need S
+			-- UL DMRS scrambling initalization for CP-OFDM.
+			-- Corresponds to L1 parameter 'n_SCID 1' (see 38.214, section 6.4.1.1.2)
+			-- When the field is absent the UE applies the value Physical cell ID (physCellId)
+			scramblingID1							INTEGER (0..65535)											OPTIONAL		-- Need S
+
+		},
+		-- DMRS related parameters for DFT-s-OFDM (Transform Precoding)
+		enabled								SEQUENCE {
+			-- Parameter: N_ID^(PUSCH) for DFT-s-OFDM DMRS. If the value is absent or released, the UE uses the Physical cell ID.
+			-- Corresponds to L1 parameter 'nPUSCH-Identity-Transform precoding' (see 38.211, section FFS_Section)
+			nPUSCH-Identity							INTEGER(0..1007)											OPTIONAL,	-- Need S
+			-- Sequence-group hopping for PUSCH can be disabled for a certain UE despite being enabled on a cell basis. For DFT-s-OFDM DMRS
+			-- If the field is released, the UE considers group hopping to be enabled.
+			-- Corresponds to L1 parameter 'Disable-sequence-group-hopping-Transform-precoding' (see 38.211, section FFS_Section)
+			disableSequenceGroupHopping				ENUMERATED {disabled}										OPTIONAL,	-- Need S
+			-- Determines if sequence hopping is enabled or not. For DFT-s-OFDM DMRS. 
+			-- If the field is released, the UE considers sequence hopping to be disabled.
+			-- Corresponds to L1 parameter 'Sequence-hopping-enabled-Transform-precoding' (see 38.211, section FFS_Section)
+			sequenceHoppingEnabled					ENUMERATED {enabled}										OPTIONAL	-- Need S
+		}
+	},
+	...
+}
+
+-- TAG-DMRS-UPLINKCONFIG-STOP
+-- TAG-DOWNLINKPREEMPTION-START
+
+-- Configuration of downlink preemption indication on PDCCH.
+DownlinkPreemption ::=						SEQUENCE {
+	-- RNTI used for indication pre-emption in DL. 
+	-- Corresponds to L1 parameter 'INT-RNTI', where ”INT” stands for ”interruption” (see 38.213, section 10)
+	int-RNTI								RNTI-Value,
+
+	-- Set selection for DL-preemption indication. Corresponds to L1 parameter 'int-TF-unit' (see 38.213, section 10.1)
+	-- The set determines how the UE interprets the DL preemption DCI payload.
+	timeFrequencySet						ENUMERATED {set0, set1},
+
+	-- Total length of the DCI payload scrambled with INT-RNTI. The value must be an integer multiple of 14 bit.
+	-- Corresponds to L1 parameter 'INT-DCI-payload-length' (see 38.213, section 11.2)
+	dci-PayloadSize							INTEGER (0..maxINT-DCI-PayloadSize),
+
+	-- Indicates (per serving cell) the position of the 14 bit INT values inside the DCI payload. 
+	-- Corresponds to L1 parameter 'INT-cell-to-INT' and 'cell-to-INT' (see 38.213, section 11.2)
+	int-ConfigurationPerServingCell			SEQUENCE (SIZE (1..maxNrofServingCells)) OF INT-ConfigurationPerServingCell,
+	...
+}
+
+INT-ConfigurationPerServingCell ::= 		SEQUENCE {
+	servingCellId							ServCellIndex,
+	-- Starting position (in number of bit) of the 14 bit INT value applicable for this serving cell (servingCellId) within the DCI 
+	-- payload. Must be multiples of 14 (bit). Corresponds to L1 parameter 'INT-values' (see 38.213, section 11.2)
+	positionInDCI							INTEGER (0..maxINT-DCI-PayloadSize-1)
+}
+
+-- TAG-DOWNLINKPREEMPTION-STOP
+-- TAG-DRB-IDENTITY-START
+
+DRB-Identity ::=					INTEGER (1..32)
+
+-- TAG-DRB-IDENTITY-STOP
+-- TAG-EUTRA-MBSFN-SUBFRAMECONFIGLIST-START
+
+EUTRA-MBSFN-SubframeConfigList ::= 		SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF EUTRA-MBSFN-SubframeConfig
+
+EUTRA-MBSFN-SubframeConfig ::=			SEQUENCE {
+	-- Field as defined in MBSFN-SubframeConfig in 36.331 
+	radioframeAllocationPeriod			ENUMERATED {n1, n2, n4, n8, n16, n32},
+	-- Field as defined in MBSFN-SubframeConfig in 36.331 
+	radioframeAllocationOffset			INTEGER (0..7),
+	-- Field as defined in MBSFN-SubframeConfig in 36.331 
+	subframeAllocation					CHOICE {
+		-- Field as defined in MBSFN-SubframeConfig in 36.331 
+		oneFrame							BIT STRING (SIZE(6)),
+		-- Field as defined in MBSFN-SubframeConfig in 36.331 
+		fourFrames							BIT STRING (SIZE(24))
+	},
+	subframeAllocation-v1430			CHOICE {
+		-- Field as defined in MBSFN-SubframeConfig in 36.331 
+		oneFrame-v1430						BIT STRING (SIZE(2)),
+		-- Field as defined in MBSFN-SubframeConfig in 36.331 
+		fourFrames-v1430					BIT STRING (SIZE(8))
+	}																														OPTIONAL,	-- Need R
+	...
+}
+
+-- TAG-EUTRA-MBSFN-SUBFRAMECONFIGLIST-STOP
+
+FilterCoefficient ::=					ENUMERATED {
+											fc0, fc1, fc2, fc3, fc4, fc5,
+											fc6, fc7, fc8, fc9, fc11, fc13, 
+											fc15, fc17, fc19, spare1, ...}
+
+-- TAG-FREQBANDINDICATORNR-START
+
+FreqBandIndicatorNR ::=     		INTEGER (1..1024)
+
+-- TAG-FREQBANDINDICATORNR-STOP
+-- TAG-FREQUENCY-INFO-DL-START
+
+FrequencyInfoDL ::= 				SEQUENCE {
+	-- Frequency of the SSB to be used for this serving cell. The frequency provided in this field identifies the position of 
+	-- resource element RE=#0 (subcarrier #0) of resource block RB#10 of the SS block. The cell-defining SSB of an SpCell is always on
+	-- the sync raster. Frequencies are considered to be on the sync raster if they are also identifiable with a GSCN value (see 38.101).
+	absoluteFrequencySSB					ARFCN-ValueNR,
+	-- The frequency domain offset between SSB and the overall resource block grid in number of subcarriers. 
+	-- Absence of the field indicates that no offset is applied (offset = 0). For FR2 only values up to 11 are applicable. 
+	-- Corresponds to L1 parameter kssb (See 38.211, section 7.4.3.1)
+	ssb-SubcarrierOffset					INTEGER (1..23)																OPTIONAL,	-- Need S
+	-- List of one or multiple frequency bands to which this carrier(s) belongs. Multiple values are only supported in 
+	-- system information but not when the FrequencyInfoDL is provided in dedicated signalling (HO or S(p)Cell addition).
+	frequencyBandList					MultiFrequencyBandListNR,
+	-- Absolute frequency position of the reference resource block (Common RB 0). Its lowest subcarrier is also known as Point A. 
+	-- Note that the lower edge of the actual carrier is not defined by this field but rather in the scs-SpecificCarrierList.
+	-- Corresponds to L1 parameter 'offset-ref-low-scs-ref-PRB' (see 38.211, section FFS_Section)
+	absoluteFrequencyPointA					ARFCN-ValueNR,
+
+	-- A set of carriers for different subcarrier spacings (numerologies). Defined in relation to Point A.
+	-- Corresponds to L1 parameter 'offset-pointA-set' (see 38.211, section FFS_Section)
+	scs-SpecificCarrierList					SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier,
+	...
+}
+
+-- TAG-FREQUENCY-INFO-UL-STOP
+-- TAG-FREQUENCY-INFO-UL-START
+
+FrequencyInfoUL ::= 				SEQUENCE {
+	-- List of one or multiple frequency bands to which this carrier(s) belongs. Multiple values are only supported in 
+	-- system information but not when the FrequencyInfoDL is provided in dedicated signalling (HO or S(p)Cell addition).
+	frequencyBandList					MultiFrequencyBandListNR										OPTIONAL,	-- Cond FDD-OrSUL
+	-- Absolute frequency of the reference resource block (Common RB 0). Its lowest subcarrier is also known as Point A.
+	-- Corresponds to L1 parameter 'offset-ref-low-scs-ref-PRB' (see 38.211, section FFS_Section)
+	absoluteFrequencyPointA						ARFCN-ValueNR					OPTIONAL,	-- Cond FDD-OrSUL
+	-- A set of virtual carriers for different subcarrier spacings (numerologies). Defined in relation to Point A.
+	-- Note that the lower edge of the actual carrier is not defined by this field but rather in the scs-SpecificCarrierList.
+	-- Corresponds to L1 parameter 'offset-pointA-set' (see 38.211, section FFS_Section)
+	scs-SpecificCarriers				SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier,
+
+	-- The additional spectrum emission requirements to be applied by the UE on this uplink. 
+	-- If the field is absent, the UE applies the value FFS_RAN4. (see FFS_section, section FFS_Section)
+	additionalSpectrumEmission			AdditionalSpectrumEmission										OPTIONAL,	-- Need S
+	-- FFS_Definition. Corresponds to parameter FFS_RAN4. (see FFS_Spec, section FFS_Section)
+	-- If the field is absent, the UE applies the value FFS_RAN4.
+	p-Max								P-Max															OPTIONAL,	-- Need S
+	-- Enable the NR UL transmission with a 7.5KHz shift to the LTE raster. If the field is absent, the frequency shift is disabled.
+	frequencyShift7p5khz				ENUMERATED {true}												OPTIONAL,	-- Cond FDD-OrSUL-Optional
+	...
+}
+
+-- TAG-FREQUENCY-INFO-UL-STOP
+-- TAG-GSCN-VALUE-NR-START
+
+GSCN-ValueNR ::=				INTEGER (1..28557)
+
+
+-- TAG-GSCN-VALUE-NR-STOP
+
+Hysteresis ::=							INTEGER (0..30)
+
+-- TAG-LOGICAL-CHANNEL-CONFIG-START
+
+LogicalChannelConfig ::=		SEQUENCE {
+	ul-SpecificParameters			SEQUENCE {
+		priority						INTEGER (1..16),
+		prioritisedBitRate				ENUMERATED {kBps0, kBps8, kBps16, kBps32, kBps64, kBps128, kBps256, kBps512, 
+											kBps1024, kBps2048, kBps4096, kBps8192, kBps16384, kBps32768, kBps65536, infinity},
+		bucketSizeDuration				ENUMERATED {ms50, ms100, ms150, ms300, ms500, ms1000, spare2, spare1},
+
+		allowedServingCells				SEQUENCE (SIZE (1..maxNrofServingCells-1)) OF ServCellIndex					OPTIONAL,	-- Need R
+		allowedSCS-List					SEQUENCE (SIZE (1..maxSCSs)) OF SubcarrierSpacing							OPTIONAL,	-- Need R
+		maxPUSCH-Duration				ENUMERATED { ms0p02, ms0p04, ms0p0625, ms0p125, ms0p25, ms0p5, spare2, spare1 }												OPTIONAL,	-- Need R
+		configuredGrantType1Allowed		ENUMERATED {true}															OPTIONAL,	-- Need R
+
+		logicalChannelGroup				INTEGER (0..maxLCG-ID)														OPTIONAL, 	-- Need R
+		schedulingRequestID				SchedulingRequestId															OPTIONAL,	-- Need R
+		logicalChannelSR-Mask			BOOLEAN,
+		logicalChannelSR-DelayTimerApplied	BOOLEAN
+	}																												OPTIONAL,		-- Cond UL
+
+	-- other parameters
+	...
+}
+
+-- TAG-LOGICAL-CHANNEL-CONFIG-STOP
+-- TAG-MAC-CELL-GROUP-CONFIG-START
+
+MAC-CellGroupConfig ::= 			SEQUENCE {
+	drx-Config							SetupRelease { DRX-Config }																OPTIONAL, -- Need M
+
+	schedulingRequestConfig				SchedulingRequestConfig																OPTIONAL, -- Need M
+	bsr-Config							BSR-Config																	OPTIONAL,	-- Need M
+	tag-Config							TAG-Config																	OPTIONAL,	-- Need M	
+	phr-Config							SetupRelease { PHR-Config }																OPTIONAL,	-- Need M
+	-- FFS : configurable per SCell?
+	skipUplinkTxDynamic					BOOLEAN,
+	-- RNTI value for downlink SPS (see SPS-config) and uplink configured scheduling (see ConfiguredSchedulingConfig).
+	cs-RNTI								SetupRelease { RNTI-Value }															OPTIONAL	-- Need M
+}
+
+DRX-Config ::=						SEQUENCE {
+	drx-onDurationTimer					CHOICE {
+											subMilliSeconds	INTEGER (1..31),
+											milliSeconds	ENUMERATED {
+											ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, 
+											ms80, ms100, ms200, ms300, ms400, ms500, ms600, ms800, ms1000, ms1200, 
+											ms1600, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }
+											},
+	drx-InactivityTimer					ENUMERATED { 
+											ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80, 
+											ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare9, spare8, 
+											spare7, spare6, spare5, spare4, spare3, spare2, spare1},
+	drx-HARQ-RTT-TimerDL				INTEGER (0..56),
+	drx-HARQ-RTT-TimerUL				INTEGER (0..56),
+	drx-RetransmissionTimerDL			ENUMERATED { 
+											sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, 
+											sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, 
+											spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1},
+	drx-RetransmissionTimerUL			ENUMERATED {
+											sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, 
+											sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, 
+											spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+	drx-LongCycleStartOffset		CHOICE {
+		ms10							INTEGER(0..9),
+		ms20							INTEGER(0..19),
+		ms32							INTEGER(0..31),
+		ms40							INTEGER(0..39),
+		ms60							INTEGER(0..59),
+		ms64							INTEGER(0..63),
+		ms70							INTEGER(0..69),
+		ms80							INTEGER(0..79),
+		ms128							INTEGER(0..127),
+		ms160							INTEGER(0..159),
+		ms256							INTEGER(0..255),
+		ms320							INTEGER(0..319),
+		ms512							INTEGER(0..511),
+		ms640							INTEGER(0..639),
+		ms1024							INTEGER(0..1023),
+		ms1280							INTEGER(0..1279),
+		ms2048							INTEGER(0..2047),
+		ms2560							INTEGER(0..2559),
+		ms5120							INTEGER(0..5119),
+		ms10240							INTEGER(0..10239)
+	},
+	-- FFS need for finer offset granulary
+	-- FFS need for shorter values for long and short cycles
+	shortDRX							SEQUENCE {
+		drx-ShortCycle						ENUMERATED	{
+												ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20, ms30, ms32,
+												ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9,
+												spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 },
+		drx-ShortCycleTimer					INTEGER (1..16)
+	}		OPTIONAL,													-- Need R
+	drx-SlotOffset						INTEGER (0..31)
+
+}
+
+PHR-Config ::=						SEQUENCE {
+	phr-PeriodicTimer					ENUMERATED {sf10, sf20, sf50, sf100, sf200,sf500, sf1000, infinity},
+	phr-ProhibitTimer					ENUMERATED {sf0, sf10, sf20, sf50, sf100,sf200, sf500, sf1000},
+	phr-Tx-PowerFactorChange			ENUMERATED {dB1, dB3, dB6, infinity},
+	multiplePHR							BOOLEAN,
+	phr-Type2PCell						BOOLEAN,
+	phr-Type2OtherCell					BOOLEAN,
+	phr-ModeOtherCG						ENUMERATED {real, virtual}
+
+}
+
+
+TAG-Config ::=				SEQUENCE {
+	tag-ToReleaseList			SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-Id											OPTIONAL,	-- Need N
+	tag-ToAddModList			SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-ToAddMod											OPTIONAL		-- Need N
+}
+
+TAG-ToAddMod ::= 			SEQUENCE {
+	tag-Id						TAG-Id,
+	timeAlignmentTimer			TimeAlignmentTimer,
+	...
+}
+
+TAG-Id ::=					INTEGER (0..maxNrofTAGs-1)
+
+TimeAlignmentTimer ::= 		ENUMERATED {ms500, ms750, ms1280, ms1920, ms2560, ms5120, ms10240, infinity}
+
+BSR-Config ::=				SEQUENCE {
+	periodicBSR-Timer			ENUMERATED {
+									sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity},
+	retxBSR-Timer				ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280, sf2560, sf5120, sf10240, spare5, spare4,
+											spare3, spare2, spare1},
+	logicalChannelSR-DelayTimer		ENUMERATED { sf20, sf40, sf64, sf128, sf512, sf1024, sf2560, spare1}	OPTIONAL	-- Need R
+}
+
+
+
+-- TAG-MAC-CELL-GROUP-CONFIG-STOP
+-- TAG-MEAS-CONFIG-START
+
+MeasConfig ::=							SEQUENCE {
+	-- Measurement objects
+	measObjectToRemoveList					MeasObjectToRemoveList											OPTIONAL,	-- Need N
+	measObjectToAddModList					MeasObjectToAddModList											OPTIONAL,	-- Need N
+
+	-- Reporting configurations
+	reportConfigToRemoveList				ReportConfigToRemoveList										OPTIONAL,	-- Need N
+	reportConfigToAddModList				ReportConfigToAddModList										OPTIONAL,	-- Need N
+
+	-- Measurement identities
+	measIdToRemoveList						MeasIdToRemoveList												OPTIONAL,	-- Need N
+	measIdToAddModList						MeasIdToAddModList												OPTIONAL,	-- Need N
+
+	-- Other parameters
+	--s-Measure config
+	s-MeasureConfig							CHOICE {
+		ssb-RSRP								RSRP-Range,						
+		csi-RSRP								RSRP-Range						
+	} 																										OPTIONAL,	-- Need M
+
+	quantityConfig						QuantityConfig														OPTIONAL,	-- Need M
+
+	--Placehold for measGapConfig
+	measGapConfig							MeasGapConfig													OPTIONAL,	-- Need M
+	...
+}
+
+MeasObjectToRemoveList ::=				SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectId
+
+MeasIdToRemoveList ::=					SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasId
+
+ReportConfigToRemoveList ::=			SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigId
+
+-- TAG-MEAS-CONFIG-STOP
+--TAG-MEAS-GAP-CONFIG-START
+
+MeasGapConfig ::=				SEQUENCE {
+		gapFR2 						SetupRelease { GapConfig }				OPTIONAL,
+		...
+}
+
+GapConfig ::=					SEQUENCE {
+		gapOffset 					INTEGER (0..159),
+		mgl 						ENUMERATED {ms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6},
+		mgrp 						ENUMERATED {ms20, ms40, ms80, ms160},
+		mgta						ENUMERATED {ms0, ms0dot25, ms0dot5},
+		...
+}
+
+-- TAG-MEAS-GAP-CONFIG-STOP
+-- TAG-MEAS-ID-START
+
+MeasId ::=							INTEGER (1..maxNrofMeasId)
+
+-- TAG-MEAS-ID-STOP
+-- TAG-MEAS-ID-TO-ADD-MOD-LIST-START
+
+MeasIdToAddModList ::=				SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasIdToAddMod
+
+MeasIdToAddMod ::=					SEQUENCE {
+	measId								MeasId,
+	measObjectId						MeasObjectId,
+	reportConfigId						ReportConfigId
+}
+
+-- TAG-MEAS-ID-TO-ADD-MOD-LIST-STOP
+-- TAG-MEAS-OBJECT-ID-START
+
+MeasObjectId ::=							INTEGER (1..maxNrofObjectId)
+
+-- TAG-MEAS-OBJECT-ID-STOP
+-- TAG-MEAS-OBJECT-NR-START
+
+MeasObjectNR ::=							SEQUENCE {
+	ssbFrequency								ARFCN-ValueNR															OPTIONAL,
+	refFreqCSI-RS								ARFCN-ValueNR															OPTIONAL,
+
+	--RS configuration (e.g. SMTC window, CSI-RS resource, etc.)
+	referenceSignalConfig						ReferenceSignalConfig,													
+
+	--Consolidation of L1 measurements per RS index
+	absThreshSS-BlocksConsolidation			ThresholdNR																	OPTIONAL,	-- Need R
+	absThreshCSI-RS-Consolidation			ThresholdNR																	OPTIONAL,	-- Need R
+																													
+	--Config for cell measurement derivation
+	nrofSS-BlocksToAverage					INTEGER (2..maxNrofSS-BlocksToAverage)										OPTIONAL,	-- Need R
+	nrofCSI-RS-ResourcesToAverage			INTEGER (2..maxNrofCSI-RS-ResourcesToAverage)								OPTIONAL,	-- Need R
+																															
+	-- Filter coefficients applicable to this measurement object
+	quantityConfigIndex							INTEGER (1..maxNrofQuantityConfig),
+
+	--Frequency-specific offsets 
+	offsetFreq									Q-OffsetRangeList,
+
+	-- Cell list
+	cellsToRemoveList							PCI-List																OPTIONAL,	-- Need N
+	cellsToAddModList							CellsToAddModList														OPTIONAL,	-- Need N
+
+	-- Black list
+	blackCellsToRemoveList						PCI-RangeIndexList														OPTIONAL,	-- Need N
+	blackCellsToAddModList						BlackCellsToAddModList													OPTIONAL,	-- Need N
+
+	-- White list
+	whiteCellsToRemoveList						PCI-RangeIndexList														OPTIONAL,	-- Need N
+	whiteCellsToAddModList						WhiteCellsToAddModList													OPTIONAL,	-- Need N
+	...
+}
+
+ReferenceSignalConfig::=     			SEQUENCE {
+	
+
+	-- SSB configuration for mobility (nominal SSBs, timing configuration)
+	ssb-ConfigMobility						SSB-ConfigMobility				OPTIONAL,	-- Need M
+	-- CSI-RS resources to be used for CSI-RS based RRM measurements
+	csi-rs-ResourceConfigMobility			SetupRelease { CSI-RS-ResourceConfigMobility } OPTIONAL-- Need M		
+
+}
+
+-- A measurement timing configuration
+SSB-ConfigMobility::= 	SEQUENCE {
+		--Only the values 15, 30 or 60 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable
+		subcarrierSpacing                    SubcarrierSpacing,
+		-- The set of SS blocks to be measured within the SMTC measurement duration. 
+		-- Corresponds to L1 parameter 'SSB-measured' (see FFS_Spec, section FFS_Section)
+		-- When the field is absent the UE measures on all SS-blocks 
+		-- FFS_CHECK: Is this IE placed correctly.
+		ssb-ToMeasure							SetupRelease { SSB-ToMeasure }								OPTIONAL,	-- Need M
+
+	-- Indicates whether the UE can utilize serving cell timing to derive the index of SS block transmitted by neighbour cell:
+	useServingCellTimingForSync				BOOLEAN,
+																									
+	-- Primary measurement timing configuration. Applicable for intra- and inter-frequency measurements. 
+	smtc1									SEQUENCE {
+		-- Periodicity and offset of the measurement window in which to receive SS/PBCH blocks. 
+		-- Periodicity and offset are given in number of subframes.
+		-- FFS_FIXME: This does not match the L1 parameter table! They seem to intend an index to a hidden table in L1 specs. 
+		-- (see 38.213, section REF):
+		periodicityAndOffset					CHOICE {
+			sf5										INTEGER (0..4),
+			sf10									INTEGER (0..9),
+			sf20									INTEGER (0..19),
+			sf40									INTEGER (0..39),
+			sf80									INTEGER (0..79),
+			sf160									INTEGER (0..159)
+		},
+		-- Duration of the measurement window in which to receive SS/PBCH blocks. It is given in number of subframes 
+		-- (see 38.213, section 4.1)
+		duration								ENUMERATED { sf1, sf2, sf3, sf4, sf5 }
+	},
+
+	-- Secondary measurement timing confguration for explicitly signalled PCIs. It uses the offset and duration from smtc1.
+	-- It is supported only for intra-frequency measurements in RRC CONNECTED. 
+	smtc2 									SEQUENCE {
+		-- PCIs that are known to follow this SMTC.
+		pci-List								SEQUENCE (SIZE (1..maxNrofPCIsPerSMTC)) OF PhysCellId		OPTIONAL,	-- Need M
+		-- Periodicity for the given PCIs. Timing offset and Duration as provided in smtc1.
+		periodicity								ENUMERATED {sf5, sf10, sf20, sf40, sf80, sf160, spare2, spare1}
+	}																										OPTIONAL,-- Cond IntraFreqConnected
+	ss-RSSI-Measurement							SEQUENCE {
+		measurementSlots							CHOICE {
+			kHz15										BIT STRING (SIZE(1)),
+			kHz30										BIT STRING (SIZE(2)),
+			kHz60										BIT STRING (SIZE(4)),
+			kHz120										BIT STRING (SIZE(8))
+		},
+		endSymbol									INTEGER(0..13)
+	}																										OPTIONAL				
+}
+
+CSI-RS-ResourceConfigMobility ::= 		SEQUENCE {
+	-- MO specific values
+		isServingCellMO						BOOLEAN,
+	-- Subcarrier spacing of CSI-RS. 
+	-- Only the values 15, 30 or 60 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable.
+	-- Corresponds to L1 parameter 'Numerology' (see 38.211, section FFS_Section)
+	subcarrierSpacing						SubcarrierSpacing,
+	-- List of cells
+	csi-RS-CellList-Mobility 	SEQUENCE (SIZE (1..maxNrofCSI-RS-CellsRRM))	OF CSI-RS-CellMobility
+
+}
+
+CSI-RS-CellMobility ::=				SEQUENCE {
+	cellId									PhysCellId,
+
+	csi-rs-MeasurementBW					SEQUENCE {
+		-- Allowed size of the measurement BW in PRBs
+		-- Corresponds to L1 parameter 'CSI-RS-measurementBW-size' (see FFS_Spec, section FFS_Section)
+		nrofPRBs			ENUMERATED { size24, size48, size96, size192, size264},
+		-- Starting PRB index of the measurement bandwidth
+		-- Corresponds to L1 parameter 'CSI-RS-measurement-BW-start' (see FFS_Spec, section FFS_Section)
+		-- FFS_Value: Upper edge of value range unclear in RAN1
+		startPRB			INTEGER(0..2169)
+	},
+
+	-- Frequency domain density for the 1-port CSI-RS for L3 mobility
+	-- Corresponds to L1 parameter 'Density' (see FFS_Spec, section FFS_Section)
+	density									ENUMERATED {d1,d3}												OPTIONAL,
+
+
+-- List of resources
+	csi-rs-ResourceList-Mobility 	SEQUENCE (SIZE (1..maxNrofCSI-RS-ResourcesRRM))	OF CSI-RS-Resource-Mobility
+}
+
+
+CSI-RS-Resource-Mobility ::=			SEQUENCE {
+	csi-RS-Index							CSI-RS-Index,
+	-- Contains periodicity and slot offset for periodic/semi-persistent CSI-RS (see 38.211, section x.x.x.x)FFS_Ref
+	slotConfig								CHOICE {
+		ms4										INTEGER (0..31),
+		ms5										INTEGER (0..39),
+		ms10									INTEGER (0..79),
+		ms20									INTEGER (0..159),
+		ms40									INTEGER (0..319)
+	},
+	-- Each CSI-RS resource may be associated with one SSB. If such SSB is indicated, the NW also indicates whether the UE may assume 
+	-- quasi-colocation of this SSB with this CSI-RS reosurce. 
+	-- Corresponds to L1 parameter 'Associated-SSB' (see FFS_Spec, section FFS_Section)
+	
+	associatedSSB							SEQUENCE {
+		ssb-Index								SSB-Index,
+		-- The CSI-RS resource is either QCL’ed not QCL’ed with the associated SSB in spatial parameters
+		-- Corresponds to L1 parameter 'QCLed-SSB' (see FFS_Spec, section FFS_Section)
+		isQuasiColocated						BOOLEAN
+	}					OPTIONAL, -- Cond AssociatedSSB
+
+	
+	-- Frequency domain allocation within a physical resource block in accordance with 38.211, section 7.4.1.5.3 including table 7.4.1.5.2-1.
+	-- The number of bits that may be set to one depend on the chosen row in that table. For the choice "other", the row can be determined from
+	-- the parmeters below and from the number of bits set to 1 in frequencyDomainAllocation.
+	frequencyDomainAllocation			CHOICE {
+		row1								BIT STRING (SIZE (4)),
+		row2								BIT STRING (SIZE (12))
+	},
+
+	
+	-- Time domain allocation within a physical resource block. The field indicates the first OFDM symbol in the PRB used for CSI-RS.
+	-- Parameter l0 in 38.211, section 7.4.1.5.3. Value 2 is supported only when DL-DMRS-typeA-pos equals 3.
+	firstOFDMSymbolInTimeDomain			INTEGER (0..13),	
+	-- Scrambling ID for CSI-RS(see 38.211, section 7.4.1.5.2)
+	sequenceGenerationConfig				INTEGER (0..1023),
+	...
+}
+
+CSI-RS-Index ::= 				INTEGER (0..maxNrofCSI-RS-ResourcesRRM-1)
+
+Q-OffsetRangeList ::=					SEQUENCE {
+	rsrpOffsetSSB							Q-OffsetRange				DEFAULT dB0,
+	rsrqOffsetSSB							Q-OffsetRange				DEFAULT dB0,
+	sinrOffsetSSB							Q-OffsetRange				DEFAULT dB0,
+	rsrpOffsetCSI-RS						Q-OffsetRange				DEFAULT dB0,
+	rsrqOffsetCSI-RS						Q-OffsetRange				DEFAULT dB0,
+	sinrOffsetCSI-RS						Q-OffsetRange				DEFAULT dB0
+}
+
+SSB-ToMeasure ::=			CHOICE {
+	-- bitmap for sub 3 GHz
+	shortBitmap							BIT STRING (SIZE (4)),
+	-- bitmap for 3-6 GHz
+	mediumBitmap						BIT STRING (SIZE (8)),
+	-- bitmap for above 6 GHz
+	longBitmap							BIT STRING (SIZE (64))
+}
+
+
+ThresholdNR ::=							SEQUENCE{
+	thresholdRSRP							RSRP-Range					OPTIONAL,
+	thresholdRSRQ						RSRQ-Range					OPTIONAL,
+	thresholdSINR						SINR-Range					OPTIONAL
+}
+
+CellsToAddModList ::=					SEQUENCE (SIZE (1..maxNrofCellMeas)) OF CellsToAddMod
+
+CellsToAddMod ::=						SEQUENCE {
+	physCellId								PhysCellId,
+	cellIndividualOffset					Q-OffsetRangeList
+}
+
+BlackCellsToAddModList ::=				SEQUENCE (SIZE (1..maxNrofPCI-Ranges)) OF BlackCellsToAddMod
+
+BlackCellsToAddMod ::=					SEQUENCE {
+	pci-RangeIndex							PCI-RangeIndex,		
+	pci-Range								PCI-Range
+}
+
+
+WhiteCellsToAddModList ::=				SEQUENCE (SIZE (1..maxNrofPCI-Ranges)) OF WhiteCellsToAddMod
+
+WhiteCellsToAddMod ::=					SEQUENCE {
+	pci-RangeIndex							PCI-RangeIndex,
+	pci-Range							PCI-Range
+}
+
+-- TAG-MEAS-OBJECT-NR-STOP
+-- TAG-MEAS-OBJECT-TO-ADD-MOD-LIST-START
+
+MeasObjectToAddModList ::=					SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectToAddMod
+
+MeasObjectToAddMod ::=						SEQUENCE {
+	measObjectId								MeasObjectId,
+	measObject									CHOICE {
+		measObjectNR								MeasObjectNR,
+		...
+	}
+}
+
+-- TAG-MEAS-OBJECT-TO-ADD-MOD-LIST-STOP 
+-- TAG-MEAS-RESULTS-START
+
+MeasResults ::=								SEQUENCE {
+	measId										MeasId,
+	measResultServingFreqList					MeasResultServFreqList,
+	measResultNeighCells						CHOICE {
+		measResultListNR							MeasResultListNR,
+		...
+	}																														OPTIONAL,
+	...
+}
+
+MeasResultServFreqList ::=					SEQUENCE (SIZE (1..maxNrofServingCells)) OF MeasResultServFreq
+
+MeasResultServFreq ::=						SEQUENCE {
+	servFreqId									ServCellIndex,																
+	measResultServingCell						MeasResultNR,
+	measResultBestNeighCell						MeasResultNR,
+	...															
+}
+
+MeasResultListNR ::=						SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultNR
+
+MeasResultNR ::=							SEQUENCE {
+	physCellId									PhysCellId																	OPTIONAL,
+	--FFS: Details of cgi info 
+	cgi-Info									ENUMERATED {ffsTypeAndValue}												OPTIONAL,
+	measResult									SEQUENCE {
+		cellResults									SEQUENCE{
+			resultsSSB-Cell								MeasQuantityResults													OPTIONAL,
+			resultsCSI-RS-Cell							MeasQuantityResults													OPTIONAL
+		},
+		rsIndexResults								SEQUENCE{
+			resultsSSB-Indexes							ResultsPerSSB-IndexList												OPTIONAL, 
+			resultsCSI-RS-Indexes						ResultsPerCSI-RS-IndexList											OPTIONAL
+		}																													OPTIONAL
+	},
+	...
+}
+
+
+MeasQuantityResults ::= 		SEQUENCE {
+	rsrp							RSRP-Range													OPTIONAL,
+	rsrq							RSRQ-Range													OPTIONAL,
+	sinr							SINR-Range													OPTIONAL
+}
+
+ResultsPerSSB-IndexList::= 				SEQUENCE (SIZE (1..maxNrofSSBs)) OF ResultsPerSSB-Index
+
+ResultsPerSSB-Index ::= 					SEQUENCE {
+	ssb-Index									SSB-Index,
+	ssb-Results									MeasQuantityResults							OPTIONAL
+}
+
+ResultsPerCSI-RS-IndexList::= 				SEQUENCE (SIZE (1..maxNrofCSI-RS)) OF ResultsPerCSI-RS-Index
+
+ResultsPerCSI-RS-Index ::= 					SEQUENCE {
+	csi-RS-Index								CSI-RS-Index,
+	csi-RS-Results								MeasQuantityResults							OPTIONAL
+}
+
+-- TAG-MEAS-RESULTS-STOP
+-- TAG-MEAS-RESULT-SCG-FAILURE-START
+
+MeasResultSCG-Failure ::= 			SEQUENCE {
+	measResultServFreqList					MeasResultServFreqList2NR,
+	measResultNeighCells						MeasResultList2NR,
+	...
+}
+
+MeasResultServFreqList2NR ::=			SEQUENCE (SIZE (1..maxNrofServingCells)) OF MeasResultServFreq2NR
+
+MeasResultServFreq2NR ::=				SEQUENCE {
+	ssbFrequency							ARFCN-ValueNR			OPTIONAL,
+	refFreqCSI-RS							ARFCN-ValueNR			OPTIONAL,
+	measResultServingCell					MeasResultNR,
+	measResultBestNeighCell					MeasResultNR		OPTIONAL
+}
+
+MeasResultList2NR ::=					SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2NR
+
+MeasResult2NR ::=						SEQUENCE {	
+	ssbFrequency							ARFCN-ValueNR			OPTIONAL,
+	refFreqCSI-RS							ARFCN-ValueNR			OPTIONAL,
+	measResultListNR						MeasResultListNR
+}
+
+-- TAG-MEAS-RESULT-SCG-FAILURE-STOP
+-- TAG-MEASRESULT-CELL-LIST-SFTD-START
+
+MeasResultCellListSFTD ::=			SEQUENCE (SIZE (1..maxCellSFTD)) OF MeasResultCellSFTD
+
+MeasResultCellSFTD ::=	SEQUENCE {
+	physCellId							PhysCellId,
+	sfn-OffsetResult					INTEGER (0..1023),
+	frameBoundaryOffsetResult			INTEGER (-30720..30719),
+	rsrp-Result							RSRP-Range						OPTIONAL
+}
+
+-- TAG-MEASRESULT-CELL-LIST-SFTD-STOP
+-- TAG-MULTIFREQUENCYBANDLISTNR-START
+
+MultiFrequencyBandListNR ::= 		SEQUENCE (SIZE (1..maxNrofMultiBands)) OF FreqBandIndicatorNR
+
+-- TAG-MULTIFREQUENCYBANDLISTNR-STOP
+-- TAG-NZP-CSI-RS-RESOURCESET-START
+NZP-CSI-RS-ResourceSet ::= 		SEQUENCE {
+	nzp-CSI-ResourceSetId					NZP-CSI-RS-ResourceSetId,	
+
+	-- NZP-CSI-RS-Resources assocaited with this NZP-CSI-RS resource set.
+	-- Corresponds to L1 parameter 'CSI-RS-ResourceConfigList' (see 38.214, section 5.2)
+	-- For CSI, there are at most 8 NZP CSI RS resources per resource set
+	nzp-CSI-RS-Resources						SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourcesPerSet)) OF NZP-CSI-RS-ResourceId,
+
+	-- Indicates whether repetition is on/off. If set to set to 'OFF', the UE may not assume that the 
+	-- NZP-CSI-RS resources within the resource set are transmitted with the same downlink spatial domain transmission filter 
+	-- and with same NrofPorts in every symbol.
+	-- Corresponds to L1 parameter 'CSI-RS-ResourceRep' (see 38.214, sections 5.2.2.3.1 and 5.1.6.1.2)
+	-- Can only be configured for CSI-RS resource sets which are associated with CSI-ReportConfig with report of L1 RSRP or “no report”	
+	repetition									ENUMERATED { on, off }				OPTIONAL,
+
+	-- Offset X between the slot containing the DCI that triggers a set of aperiodic NZP CSI-RS resources and the slot in which the 
+	-- CSI-RS resource set is transmitted. When the field is absent the UE applies the value 0.
+	-- Corresponds to L1 parameter 'Aperiodic-NZP-CSI-RS-TriggeringOffset' (see 38,214, section FFS_Section)
+	aperiodicTriggeringOffset			 		INTEGER(0..4)																		OPTIONAL,	-- Need S
+
+	-- Indicates that the antenna port for all NZP-CSI-RS resources in the CSI-RS resource set is same.
+	-- Corresponds to L1 parameter 'TRS-Info' (see 38.214, section 5.2.2.3.1)
+	trs-Info								ENUMERATED {true}																OPTIONAL,
+	...
+}
+
+-- TAG-NZP-CSI-RS-RESOURCESET-STOP
+-- TAG-NZP-CSI-RS-RESOURCESETID-START
+NZP-CSI-RS-ResourceSetId ::= INTEGER (0..maxNrofNZP-CSI-RS-ResourceSets-1)
+
+-- TAG-NZP-CSI-RS-RESOURCESETID-STOP
+-- TAG-NZP-CSI-RS-RESOURCE-START
+NZP-CSI-RS-Resource ::=		SEQUENCE {
+	nzp-CSI-RS-ResourceId				NZP-CSI-RS-ResourceId,
+
+	-- OFDM symbol location(s) in a slot and subcarrier occupancy in a PRB of the CSI-RS resource	
+	resourceMapping							CSI-RS-ResourceMapping,
+	-- Power offset of NZP CSI-RS RE to PDSCH RE. Value in dB. Corresponds to L1 parameter Pc (see 38.214, sections 5.2.2.3.1 and 4.1)
+	powerControlOffset						INTEGER(-8..15),
+	-- Power offset of NZP CSI-RS RE to SS RE. Value in dB. Corresponds to L1 parameter 'Pc_SS' (see 38.214, section 5.2.2.3.1)
+	powerControlOffsetSS					ENUMERATED{db-3, db0, db3, db6}								OPTIONAL,	
+	-- Scrambling ID (see 38.214, section 5.2.2.3.1)
+	scramblingID							ScramblingId,
+
+	-- Periodicity and slot offset sl1 corresponds to a periodicity of 1 slot, sl2 to a periodicity of two slots, and so on. 
+	-- The corresponding offset is also given in number of slots. Corresponds to L1 parameter 'CSI-RS-timeConfig' (see 38.214, section 5.2.2.3.1)
+	periodicityAndOffset					CSI-ResourcePeriodicityAndOffset							OPTIONAL, --Cond PeriodicOrSemiPersistent
+
+	-- For a target periodic CSI-RS, contains a reference to one TCI-State in TCI-States for providing the QCL source and 
+	-- QCL type. For periodic CSI-RS, the source can be SSB or another periodic-CSI-RS.
+	-- Corresponds to L1 parameter 'QCL-Info-PeriodicCSI-RS' (see 38.214, section 5.2.2.3.1)
+	qcl-InfoPeriodicCSI-RS						TCI-StateId												OPTIONAL, --Cond Periodic
+	...
+}
+
+-- TAG-NZP-CSI-RS-RESOURCE-STOP
+-- TAG-NZP-CSI-RS-RESOURCEID-START
+NZP-CSI-RS-ResourceId ::= 					INTEGER (0..maxNrofNZP-CSI-RS-Resources-1)
+
+-- TAG-NZP-CSI-RS-RESOURCEID-STOP
+-- TAG-P-MAX-START
+
+P-Max ::=				INTEGER (-30..33)
+
+-- TAG-P-MAX-STOP
+-- TAG-PCI-LIST-START
+
+PCI-List ::=						SEQUENCE (SIZE (1..maxNrofCellMeas)) OF PhysCellId
+
+-- TAG-PCI-LIST-STOP
+-- TAG-PCI-RANGE-START
+
+PCI-Range ::=				SEQUENCE {
+	start							PhysCellId,
+	range							ENUMERATED {
+										n4, n8, n12, n16, n24, n32, n48, n64, n84,
+										n96, n128, n168, n252, n504, n1008,
+										spare1} 					OPTIONAL	-- Need Nss
+}
+
+-- TAG-PCI-RANGE-STOP
+-- TAG-PCI-RANGE-INDEX-START
+
+PCI-RangeIndex ::=						INTEGER (1..maxNrofPCI-Ranges)
+
+
+-- TAG-PCI-RANGE-INDEX-STOP
+-- TAG-PCI-RANGE-INDEX-LIST-START
+
+PCI-RangeIndexList ::=						SEQUENCE (SIZE (1..maxNrofPCI-Ranges)) OF PCI-RangeIndex
+
+-- TAG-PCI-Range-INDEX-LIST-STOP
+-- TAG-PDCCH-CONFIG-START
+
+PDCCH-Config ::= 						SEQUENCE {
+	-- List of UE specifically configured Control Resource Sets (CORESETs) to be used by the UE.
+	-- The network configures at most 3 CORESETs per BWP per cell (including the initial CORESET).
+	controlResourceSetToAddModList			SEQUENCE(SIZE (1..3)) OF ControlResourceSet 		OPTIONAL,
+	controlResourceSetToReleaseList			SEQUENCE(SIZE (1..3)) OF ControlResourceSetId			OPTIONAL,
+
+	-- List of UE specifically configured Control Resource Sets (CORESETs).
+	-- The network configures at most 10 Search Spaces per BWP per cell (including the initial Search Space).
+	searchSpacesToAddModList				SEQUENCE(SIZE (1..10)) OF SearchSpace						OPTIONAL,
+	searchSpacesToReleaseList				SEQUENCE(SIZE (1..10)) OF SearchSpaceId						OPTIONAL,
+
+	-- Configuration of downlink preemtption indications to be monitored in this cell. 
+	-- Corresponds to L1 parameter 'Preemp-DL' (see 38.214, section 11.2)
+	-- FFS_RAN1: LS R1-1801281 indicates this is "Per Cell (but association with each configured BWP is needed)" => Unclear, keep on BWP for now.
+	downlinkPreemption						SetupRelease { DownlinkPreemption }															OPTIONAL,	-- Need M
+
+	-- Configuration of Slot-Format-Indicators to be monitored in this cell
+
+	-- FFS_RAN1 discusses still whether this SFI payload configuration is BWP- or Cell-Specific. 
+	slotFormatIndicator						SetupRelease { SlotFormatIndicator }															OPTIONAL,	-- Need M
+	-- Enable and configure reception of group TPC commands for PUSCH
+	tpc-PUSCH								SetupRelease { PUSCH-TPC-CommandConfig }							OPTIONAL,   -- Need M
+
+	-- Enable and configure reception of group TPC commands fpr PUCCH
+	tpc-PUCCH								SetupRelease { PUCCH-TPC-CommandConfig }							OPTIONAL,   -- Cond PUCCH-CellOnly
+
+	...
+}
+
+-- TAG-PDCCH-CONFIG-STOP 
+-- TAG-PDCCH-CONFIGCOMMON-START
+
+PDCCH-ConfigCommon ::=					SEQUENCE {
+
+	-- A list of common control resource sets. Only CORESETs with ControlResourceSetId = 0 or 1 are allowed. The CORESET#0 
+	-- corresponds to the CORESET configured in MIB (see pdcch-ConfigSIB1) and is used to provide that information to the UE
+	-- by dedicated signalling during handover and (P)SCell addition. The CORESET#1 may be configured an used for RAR 
+	-- (see ra-ControlResourceSet).
+	commonControlResourcesSets					SEQUENCE (SIZE(1..2)) OF ControlResourceSet							OPTIONAL, 	-- Need R
+
+	-- A list of additional common search spaces.
+	commonSearchSpaces							SEQUENCE (SIZE(1..4)) OF SearchSpace								OPTIONAL,	-- Need R
+
+	-- ID of the search space for SIB1 message.
+	
+	-- Corresponds to L1 parameter 'rmsi-SearchSpace' (see 38.213, section 10)
+	searchSpaceSIB1								SearchSpaceId														OPTIONAL,	-- Need R
+	-- ID of the Search space for other system information, i.e., SIB2 and beyond. 
+	-- Corresponds to L1 parameter 'osi-SearchSpace' (see 38.213, section 10)
+	-- If the field is absent, the monitoring occasions are derived as described in 38.213, section 10.1 and section 13.
+	searchSpaceOtherSystemInformation			SearchSpaceId														OPTIONAL,	-- Need R
+	
+	-- ID of the Search space for paging. Corresponds to L1 parameter 'paging-SearchSpace' (see 38.213, section 10)
+	-- If the field is absent, the monitoring occasions are derived as described in 38.213, section 10.1 and section 13.
+	pagingSearchSpace							SearchSpaceId														OPTIONAL, 	-- Need R
+
+	-- CORESET configured for random access. When the field is absent the UE uses the CORESET according to pdcch-ConfigSIB1
+	-- which is associated with ControlResourceSetId = 0.
+	-- Corresponds to L1 parameter 'rach-coreset-configuration' (see 38.211?, section FFS_Section)
+	ra-ControlResourceSet					ControlResourceSetId																OPTIONAL, 	-- Need S
+	-- ID of the Search space for random access procedure. Corresponds to L1 parameter 'ra-SearchSpace' (see 38.214?, section FFS_Section)
+	-- If the field is absent, the monitoring occasions are derived as described in 38.213, section 10.1 and section 13.
+	ra-SearchSpace							SearchSpaceId																	OPTIONAL, 	-- Need R
+	...
+
+}
+
+-- TAG-PDCCH-CONFIGCOMMON-STOP
+-- TAG-PDCP-CONFIG-START
+
+PDCP-Config ::=			SEQUENCE {
+	drb						SEQUENCE {
+		discardTimer			ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200, ms250, ms300, ms500, ms750, ms1500, infinity} 													OPTIONAL, -- Cond Setup
+		pdcp-SN-SizeUL			ENUMERATED {len12bits, len18bits}				OPTIONAL, -- Cond Setup2
+		pdcp-SN-SizeDL			ENUMERATED {len12bits, len18bits}				OPTIONAL, -- Cond Setup2
+		headerCompression		CHOICE {
+			notUsed					NULL,
+			rohc					SEQUENCE {
+				maxCID					INTEGER (1..16383)				DEFAULT 15,
+				profiles				SEQUENCE {
+					profile0x0001			BOOLEAN,
+					profile0x0002			BOOLEAN,
+					profile0x0003			BOOLEAN,
+					profile0x0004			BOOLEAN,
+					profile0x0006			BOOLEAN,
+					profile0x0101			BOOLEAN,
+					profile0x0102			BOOLEAN,
+					profile0x0103			BOOLEAN,
+					profile0x0104			BOOLEAN
+				},
+				drb-ContinueROHC			BOOLEAN 
+			},
+			uplinkOnlyROHC			SEQUENCE {
+				maxCID					INTEGER (1..16383)				DEFAULT 15,
+				profiles				SEQUENCE {
+					profile0x0006			BOOLEAN
+				},
+				drb-ContinueROHC			BOOLEAN 
+			},
+			...
+		},
+		integrityProtection		ENUMERATED { enabled }														OPTIONAL,	-- Cond ConnectedTo5GC
+		statusReportRequired	ENUMERATED { true }															OPTIONAL,	-- Cond Rlc-AM
+		outOfOrderDelivery		BOOLEAN
+	}																											OPTIONAL,	-- Cond DRB
+	-- FFS / TODO: Handle more than two secondary cell groups
+	moreThanOneRLC			SEQUENCE {
+		primaryPath				SEQUENCE {
+			cellGroup				CellGroupId											OPTIONAL,	-- Need R
+			logicalChannel			LogicalChannelIdentity								OPTIONAL	-- Need R
+		},
+		ul-DataSplitThreshold	UL-DataSplitThreshold 									OPTIONAL, -- Cond SplitBearer						
+		pdcp-Duplication			ENUMERATED { true }													OPTIONAL	-- Need R
+	}																										OPTIONAL, -- Cond MoreThanOneRLC
+
+	t-Reordering				ENUMERATED {
+									ms0, ms1, ms2, ms4, ms5, ms8, ms10, ms15, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220, 
+									ms240, ms260, ms280, ms300,	ms500, ms750, ms1000, ms1250, ms1500, ms1750, ms2000, ms2250, ms2500, ms2750,
+									ms3000, spare28, spare27, spare26, spare25, spare24, spare23, spare22, spare21, spare20,
+									spare19, spare18, spare17, spare16, spare15, spare14, spare13, spare12, spare11, spare10, spare09,
+									spare08, spare07, spare06, spare05, spare04, spare03, spare02, spare01 }		OPTIONAL, -- Need S
+
+	
+	...
+}
+
+UL-DataSplitThreshold ::= ENUMERATED { 
+											b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, 
+											b409600, b819200, b1228800, b1638400, b2457600, b3276800, b4096000, b4915200, b5734400, 
+											b6553600, infinity, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}
+
+-- TAG-PDCP-CONFIG-STOP
+-- TAG-PDSCH-CONFIG-START
+
+PDSCH-Config ::= 						SEQUENCE {
+	-- Identifer used to initalite data scrambling (c_init) for both PDSCH.
+	-- Corresponds to L1 parameter 'Data-scrambling-Identity' (see 38,214, section FFS_Section)
+	-- FFS:_Replace by tye ScramblingId used in other places?
+	dataScramblingIdentityPDSCH			INTEGER (0..1007)															OPTIONAL,
+
+	-- DMRS configuration for PDSCH transmissions using PDSCH mapping type A (chosen dynamically via PDSCH-TimeDomainResourceAllocation).
+	dmrs-DownlinkForPDSCH-MappingTypeA			SetupRelease { DMRS-DownlinkConfig }										OPTIONAL,	-- Need M
+	-- DMRS configuration for PDSCH transmissions using PDSCH mapping type B (chosen dynamically via PDSCH-TimeDomainResourceAllocation).
+	dmrs-DownlinkForPDSCH-MappingTypeB			SetupRelease { DMRS-DownlinkConfig } 							OPTIONAL,	-- Need M
+
+
+	-- A list of Transmission Configuration Indicator (TCI) states for dynamically indicating (over DCI) a transmission configuration 
+	-- which includes QCL-relationships between the DL RSs in one RS set and the PDSCH DMRS ports 
+	-- (see 38.214, section 5.1.4)
+	tci-StatesToAddModList					SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-State					OPTIONAL,	-- Need N
+	tci-StatesToReleaseList					SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-StateId						OPTIONAL,	-- Need N
+
+	-- Interleaving unit configurable between 2 and 4 PRBs
+	-- Corresponds to L1 parameter 'VRB-to-PRB-interleaver' (see 38.211, section 6.3.1.6)
+	vrb-ToPRB-Interleaver					ENUMERATED {n2, n4},
+
+	-- Configuration of resource allocation type 0 and resource allocation type 1 for non-fallback DCI
+	-- Corresponds to L1 parameter 'Resouce-allocation-config' (see 38.214, section 5.1.2)
+	resourceAllocation						ENUMERATED { resourceAllocationType0, 
+resourceAllocationType1, 
+dynamicSwitch},
+
+	-- List of time-domain configurations for timing of DL assignment to DL data. If configured, the values provided herein 
+	-- override the values received in corresponding PDSCH-ConfigCommon.
+	pdsch-AllocationList			SEQUENCE (SIZE(1..maxNrofDL-Allocations)) OF PDSCH-TimeDomainResourceAllocation		OPTIONAL,	-- Need R
+	-- Number of repetitions for data. Corresponds to L1 parameter 'aggregation-factor-DL' (see 38.214, section FFS_Section)
+	-- When the field is absent the UE applies the value 1
+	pdsch-AggregationFactor					ENUMERATED { n2, n4, n8 }													OPTIONAL,	-- Need S
+
+	-- Resources patterns which the UE should rate match PDSCH around. The UE rate matches around the union of all resources 
+	-- indicated in the nexted bitmaps. Corresponds to L1 parameter 'Resource-set-BWP' (see 38.214, section 5.1.2.2.3)
+	-- FFS: RAN1 indicates that there should be a set of patterns per cell and one per BWP => Having both seems unnecessary.
+
+	rateMatchPatternToAddModList			SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern											OPTIONAL, -- Need N
+	rateMatchPatternToReleaseList			SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId		OPTIONAL, -- Need N
+
+	-- The IDs of a first group of RateMatchPatterns defined in the rateMatchPatternToAddModList.
+	-- Corresponds to L1 parameter 'Resource-set-group-1'. (see 38.214, section FFS_Section)
+	rateMatchPatternGroup1					SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId		OPTIONAL, -- Need R
+	-- The IDs of a second group of RateMatchPatterns defined in the rateMatchPatternToAddModList
+	-- Corresponds to L1 parameter 'Resource-set-group-2'. (see 38.214, section FFS_Section)
+	rateMatchPatternGroup2					SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId		OPTIONAL, -- Need R
+
+
+	-- Selection between config 1 and config 2 for RBG size for PDSCH. Corresponds to L1 parameter 'RBG-size-PDSCH' (see 38.214, section 5.1.2.2.1)
+	rbg-Size								ENUMERATED {config1, config2},
+
+	-- Indicates which MCS table the UE shall use for PDSCH. Corresponds to L1 parameter 'MCS-Table-PDSCH' (see 38.214, section 5.1.3.1).
+	mcs-Table								ENUMERATED {qam64, qam256},
+
+	-- Maximum number of code words that a single DCI may schedule. This changes the number of MCS/RV/NDI bits in the DCI message from 1 to 2.
+	maxNrofCodeWordsScheduledByDCI			ENUMERATED {n1, n2}															OPTIONAL, 	-- Need R
+
+
+	-- Indicates the PRB bundle type and bundle size(s). If "dynamic" is chosen, the actual BundleSizeSet to use is indicated via DCI. 
+	-- If a bundleSize(Set) value is absent, the UE applies the value n2. Corresponds to L1 parameter 'PRB_bundling' 
+	-- (see 38.214, section 5.1.2.3)
+	prb-BundlingType					CHOICE {
+		static									SEQUENCE {
+			bundleSize								ENUMERATED { n4, wideband }											OPTIONAL	-- Need S
+		},
+		dynamic 								SEQUENCE {
+			bundleSizeSet1							ENUMERATED { n4, wideband, n2-wideband, n4-wideband }				OPTIONAL,	-- Need S
+			bundleSizeSet2							ENUMERATED { n4, wideband }											OPTIONAL	-- Need S
+		}
+	},
+
+	-- A list of Zero-Power (ZP) CSI-RS resources used for PDSCH rate-matching.
+	-- Corresponds to L1 parameter 'ZP-CSI-RS-ResourceConfigList' (see 38.214, section FFS_Section)
+	zp-CSI-RS-ResourceToAddModList			SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-Resource	OPTIONAL,	-- Need N
+	zp-CSI-RS-ResourceToReleaseList			SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-ResourceId	OPTIONAL,	-- Need M
+
+	-- A list of sets. Each set contains a set-ID and the IDs of one or more ZP-CSI-RS-Resources (the actual resources are defined in the 
+	-- zp-CSI-RS-ResourceToAddModList). The network triggers a set by indicating its set-ID (ZP-CSI-RS-ResourceSetId) in the DCI payload.
+	-- The resources referenced in these sets are confgiured with resourceType 'aperiodic'.
+	-- Corresponds to L1 parameter ' ZP-CSI-RS-ResourceSetConfigList' (see 38.214, section FFS_Section)
+	aperiodic-ZP-CSI-RS-ResourceSetsToAddModList	SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSet		OPTIONAL,	-- Need N
+	aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList	SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSetId	OPTIONAL,	-- Need N
+	
+	-- A list of sets. Each set contains a set-ID and the IDs of one or more ZP-CSI-RS-Resources (the actual resources are defined in the 
+	-- zp-CSI-RS-ResourceToAddModList). The network triggers a set by indicating its set-ID (ZP-CSI-RS-ResourceSetId) in the MAC CE.
+	-- The resources referenced in these sets are confgiured with resourceType 'semi-persistent'.
+	-- Corresponds to L1 parameter 'SP-ZP-CSI-RS-Resource-List' (see 38.214, section 5.1.4_Section)
+	sp-ZP-CSI-RS-ResourceSetsToAddModList	SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSet		OPTIONAL,	-- Need N
+	sp-ZP-CSI-RS-ResourceSetsToReleaseList	SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSetId	OPTIONAL,	-- Need N
+
+	...
+}
+
+
+
+
+-- TAG-PDSCH-CONFIG-STOP
+-- TAG-PDSCH-CONFIGCOMMON-START
+
+PDSCH-ConfigCommon ::=					SEQUENCE {
+
+	-- List of time-domain configurations for timing of DL assignment to DL data 
+	pdsch-AllocationList			SEQUENCE (SIZE(1..maxNrofDL-Allocations)) OF PDSCH-TimeDomainResourceAllocation			OPTIONAL,	-- Need R
+
+	...
+}
+
+-- TAG-PDSCH-CONFIGCOMMON-STOP
+-- TAG-PDSCH-SERVINGCELLCONFIG-START
+
+PDSCH-ServingCellConfig ::= 			SEQUENCE {
+	-- Enables and configures code-block-group (CBG) based transmission (see 38.213, section 9.1.1)
+	codeBlockGroupTransmission				SetupRelease { PDSCH-CodeBlockGroupTransmission }						OPTIONAL,	-- Need M
+	-- Accounts for overhead from CSI-RS, CORESET, etc. If the field is absent, the UE applies value xOh0.
+	-- Corresponds to L1 parameter 'Xoh-PDSCH' (see 38.214, section 5.1.3.2)
+	xOverhead								ENUMERATED { xOh6, xOh12, xOh18 }										OPTIONAL,	-- Need S
+	-- The number of HARQ processes to be used on the PDSCH of a serving cell. n2 corresponds to 2 HARQ processes, n4 to 4 HARQ processes 
+	-- and so on. If the field is absent, the UE uses 8 HARQ processes. 
+	-- Corresponds to L1 parameter 'number-HARQ-process-PDSCH' (see 38.214, section REF) 
+	nrofHARQ-ProcessesForPDSCH				ENUMERATED {n2, n4, n6, n10, n12, n16}									OPTIONAL,	-- Need S
+	-- The ID of the serving cell (of the same cell group) to use for PUCCH. 
+	-- If the field is absent, the UE sends the HARQ feedback on the PUCCH of the SpCell of this cell group. 
+	pucch-Cell								ServCellIndex															OPTIONAL	,	-- Cond SCellAddOnly
+	...
+}
+
+PDSCH-CodeBlockGroupTransmission ::=		SEQUENCE {
+	-- Maximum number of code-block-groups (CBGs) per TB. In case of multiple CW the maximum CBG is 4 (see 38.213, section 9.1.1)
+	maxCodeBlockGroupsPerTransportBlock		ENUMERATED {n2, n4, n6, n8},
+	-- Indicates whether CBGFI for CBG based (re)transmission in DL is enabled (true). (see 38.212, section 7.3.1.2.2)
+	codeBlockGroupFlushIndicator			BOOLEAN,
+	...
+}
+
+-- TAG-PDSCH-SERVINGCELLCONFIG-STOP
+-- TAG-PDSCH-TIMEDOMAINRESOURCEALLOCATION-START
+
+PDSCH-TimeDomainResourceAllocation ::= 		SEQUENCE {
+	-- Corresponds to L1 parameter 'K0' (see 38.214, section FFS_Section)
+	-- When the field is absent the UE applies the value 0
+	k0									INTEGER (1..3)																OPTIONAL,	-- Need S
+	-- PDSCH mapping type. Corresponds to L1 parameter 'Mapping-type' (see 38.214, section FFS_Section)
+	mappingType							ENUMERATED {typeA, typeB},
+	-- An index into a table/equation in RAN1 specs capturing valid combinations of start symbol and length (jointly encoded)
+	-- Corresponds to L1 parameter 'Index-start-len' (see 38.214, section FFS_Section)
+	startSymbolAndLength				BIT STRING (SIZE (7))
+}
+
+-- TAG-PDSCH-TIMEDOMAINRESOURCEALLOCATION-STOP
+-- TAG-PHYS-CELL-ID-START
+
+PhysCellId ::=						INTEGER (0..1007)
+
+-- TAG-PHYS-CELL-ID-STOP
+-- TAG-PRB-ID-START
+
+PRB-Id ::=						INTEGER (0..maxNrofPhysicalResourceBlocks-1)
+
+-- TAG-PRB-ID-STOP
+-- TAG-PTRS-DOWNLINKCONFIG-START
+
+PTRS-DownlinkConfig ::= 					SEQUENCE {
+	-- Presence and  frequency density of DL PT-RS as a function of Scheduled BW 
+	-- If the field is absent, the UE uses K_PT-RS = 2.
+	-- Corresponds to L1 parameter 'DL-PTRS-frequency-density-table' (see 38.214, section 5.1)
+	frequencyDensity							SEQUENCE (SIZE (2)) OF INTEGER (1..276)			OPTIONAL,	-- Need S
+	-- Presence and time density of DL PT-RS  as a function of MCS. The value 29 is only applicable for MCS Table 5.1.3.1-1 (38.214)
+	-- If the field is absent, the UE uses L_PT-RS = 1.
+	-- Corresponds to L1 parameter 'DL-PTRS-time-density-table' (see 38.214, section 5.1)
+	timeDensity									SEQUENCE (SIZE (3)) OF INTEGER (0..29)		OPTIONAL, 	-- Need S
+	-- EPRE ratio between PTRS and PDSCH. Value 0 correspond to the codepoint ”00” in table 4.1-2. Value 1 corresponds to codepoint ”01” 
+	-- If the field is not provided, the UE applies value 0. Corresponds to L1 parameter 'DL-PTRS-EPRE-ratio' (see 38.214, section 4.1)
+	epre-RatioPort1								INTEGER (0..3)															OPTIONAL,	-- Need S
+	-- EPRE ratio between PTRS and PDSCH. Value 0 correspond to the codepoint ”00” in table 4.1-2. Value 1 corresponds to codepoint ”01”.
+	-- If the field is not provided, the UE applies value 0. Corresponds to L1 parameter 'DL-PTRS-EPRE-ratio' (see 38.214, section 4.1)
+	epre-RatioPort2								SEQUENCE (SIZE (1..2)) OF INTEGER (0..3)								OPTIONAL,	-- Cond TwoPorts
+	-- Indicates the subcarrier offset for DL PTRS. If the field is absent, the UE applies the value offset00.
+	-- Corresponds to L1 parameter 'DL-PTRS-RE-offset' (see 38.214, section 5.1.6.3)
+	resourceElementOffset						ENUMERATED { offset01, offset10, offset11 }							OPTIONAL,	-- Need S
+	...
+}
+
+-- TAG-PTRS-DOWNLINKCONFIG-STOP
+-- TAG-PTRS-UPLINKCONFIG-START
+
+PTRS-UplinkConfig ::= 					SEQUENCE { 
+
+	modeSpecificParameters					CHOICE {
+		-- Configuration of UL PTRS for CP-OFDM
+		cp-OFDM									SEQUENCE {
+			-- Presence and  frequency density of UL PT-RS for CP-OFDM waveform as a function of scheduled BW 
+			-- If the field is absent, the UE uses K_PT-RS = 2.
+			-- Corresponds to L1 parameter 'UL-PTRS-frequency-density-table' (see 38.214, section 6.1)
+			frequencyDensity						SEQUENCE (SIZE (2)) OF INTEGER (1..276)		OPTIONAL,	-- Need S
+			-- Presence and time density of UL PT-RS for CP-OFDM waveform as a function of MCS 
+				-- If the field is absent, the UE uses L_PT-RS = 1.
+			-- Corresponds to L1 parameter 'UL-PTRS-time-density-table' (see 38.214, section 6.1)
+			timeDensity								SEQUENCE (SIZE (3)) OF INTEGER (0..29)		OPTIONAL, 	-- Need S
+			-- The maximum number of UL PTRS ports for CP-OFDM. 
+			-- Corresponds to L1 parameter 'UL-PTRS-ports' (see 38.214, section 6.2.3.1)
+			maxNrofPorts								ENUMERATED {n1, n2},
+			-- Indicates the subcarrier offset for UL PTRS for CP-OFDM. 
+			-- Corresponds to L1 parameter 'UL-PTRS-RE-offset' (see 38.214, section 6.1)
+			resourceElementOffset					ENUMERATED {offset01, offset10, offset11 }			OPTIONAL,	-- Need S
+			-- UL PTRS power boosting factor per PTRS port. Corresponds to L1 parameter 'UL-PTRS-power' (see 38.214, section 6.1, table 6.2.3-5)
+			ptrs-Power								ENUMERATED {p00, p01, p10, p11}
+		},
+		-- Configuration of UL PTRS for DFT-S-OFDM. 
+		dft-S-OFDM								SEQUENCE {
+			-- Sample density of PT-RS for DFT-s-OFDM, pre-DFT, indicating a set of thresholds T={NRBn,n=0,1,2,3,4},
+			-- that indicates dependency between presence of PT-RS and scheduled BW and the values of X and K the UE should 
+			-- use depending on the scheduled BW according to the table in 38.214 FFS_Section. 
+			-- Corresponds to L1 parameter 'UL-PTRS-pre-DFT-density' (see 38.214, section 6.1, 6.2.3-3)
+			sampleDensity						SEQUENCE (SIZE (5)) OF INTEGER (1..276),
+			-- Time density (OFDM symbol level) of PT-RS for DFT-s-OFDM. If the value is absent, the UE applies value d1.
+			-- Corresponds to L1 parameter 'UL-PTRS-time-density-transform-precoding' (see 38.214, section 6.1)
+			timeDensity							ENUMERATED {d2}														OPTIONAL	-- Need S
+		}
+	}																													OPTIONAL,	-- Cond M
+	...
+}
+
+-- TAG-PTRS-UPLINKCONFIG-STOP
+-- TAG-PUCCH-CONFIG-START
+
+PUCCH-Config ::= 						SEQUENCE {
+	-- Lists for adding and releasing PUCCH resource sets (see 38.213, section 9.2)
+	resourceSetToAddModList					SEQUENCE (SIZE (1..maxNrofPUCCH-ResourceSets)) OF PUCCH-ResourceSet				OPTIONAL,	-- Need N
+	resourceSetToReleaseList				SEQUENCE (SIZE (1..maxNrofPUCCH-ResourceSets)) OF PUCCH-ResourceSetId			OPTIONAL,	-- Need N
+
+	-- Lists for adding and releasing PUCCH resources applicable for the UL BWP and serving cell in which the PUCCH-Config 
+	-- is defined. The resources defined herein are referred to from other parts of the configuration to determine which 
+	-- resource the UE shall use for which report. 
+	resourceToAddModList					SEQUENCE (SIZE (1..maxNrofPUCCH-Resources)) OF PUCCH-Resource				OPTIONAL,	-- Need N
+	resourceToReleaseList					SEQUENCE (SIZE (1..maxNrofPUCCH-Resources)) OF PUCCH-ResourceId				OPTIONAL,	-- Need N
+
+	-- Parameters that are common for all PUCCH resources of format 1
+	format1									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	-- Parameters that are common for all PUCCH resources of format 2
+	format2									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	-- Parameters that are common for all PUCCH resources of format 3
+	format3									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	-- Parameters that are common for all PUCCH resources of format 4
+	format4									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+
+	schedulingRequestResourceToAddModList	SEQUENCE (SIZE (1..maxNrofSR-Resources)) OF SchedulingRequestResourceConfig		OPTIONAL, -- Need M
+	schedulingRequestResourceToReleaseList	SEQUENCE (SIZE (1..maxNrofSR-Resources)) OF SchedulingRequestResourceId			OPTIONAL, -- Need M
+
+	multi-CSI-PUCCH-ResourceList			SEQUENCE (SIZE (1..2)) OF PUCCH-ResourceId										OPTIONAL,-- Need M
+
+	-- List of timiing for given PDSCH to the DL ACK. In this version of the specification only the values [0..8] are applicable.
+	-- Corresponds to L1 parameter 'Slot-timing-value-K1' (see 38.213, section FFS_Section)
+	dl-DataToUL-ACK							SEQUENCE (SIZE (8)) OF INTEGER (0..15)											OPTIONAL,	-- Need M
+
+	-- Configuration of the spatial relation between a reference RS and PUCCH. Reference RS can be SSB/CSI-RS/SRS.
+	-- If the list has more than one element, MAC-CE selects a single element (see 38.321, section FFS_Section).
+	-- Corresponds to L1 parameter 'PUCCH-SpatialRelationInfo' (see 38.213, section FFS_Section)
+	spatialRelationInfoToAddModList			SEQUENCE (SIZE (1..maxNrofSpatialRelationInfos)) OF PUCCH-SpatialRelationInfo	OPTIONAL,	-- Need N
+	spatialRelationInfoToReleaseList		SEQUENCE (SIZE (1..maxNrofSpatialRelationInfos)) OF PUCCH-SpatialRelationInfoId	OPTIONAL,	-- Need N
+
+	pucch-PowerControl						PUCCH-PowerControl																OPTIONAL,	-- Need M
+	...
+}
+
+PUCCH-FormatConfig ::=					SEQUENCE {
+	-- Enabling inter-slot frequency hopping when PUCCH Format 1, 3 or 4 is repetead over multiple slots.
+	-- The field is not applicable for format 2.
+	interslotFrequencyHopping				ENUMERATED {enabled}														OPTIONAL, 	-- Need R
+	-- Enabling 2 DMRS symbols per hop of a PUCCH Format 3 or 4 if both hops are more than X symbols when FH is enabled (X=4).
+	-- Enabling 4 DMRS sybmols for a PUCCH Format 3 or 4 with more than 2X+1 symbols when FH is disabled (X=4).
+	-- Corresponds to L1 parameter 'PUCCH-F3-F4-additional-DMRS' (see 38.213, section 9.2.1)
+	-- The field is not applicable for format 1 and 2.
+	additionalDMRS							ENUMERATED {true}															OPTIONAL,	-- Need R
+	-- Max coding rate to determine how to feedback UCI on PUCCH for format 2, 3 or 4
+	-- Corresponds to L1 parameter 'PUCCH-F2-maximum-coderate', 'PUCCH-F3-maximum-coderate' and 'PUCCH-F4-maximum-coderate' 
+	-- (see 38.213, section 9.2.5)
+	-- The field is not applicable for format 1.
+	maxCodeRate								PUCCH-MaxCodeRate															OPTIONAL,	-- Need R
+	-- Number of slots with the same PUCCH F1, F3 or F4. When the field is absent the UE applies the value n1.
+	-- Corresponds to L1 parameter 'PUCCH-F1-number-of-slots', 'PUCCH-F3-number-of-slots' and 'PUCCH-F4-number-of-slots'
+	-- (see 38.213, section 9.2.6)
+	-- The field is not applicable for format 2.
+	nrofSlots								ENUMERATED {n2,n4,n8}													OPTIONAL, 	-- Need S
+	-- Enabling pi/2 BPSK for UCI symbols instead of QPSK for PUCCH. 
+	-- Corresponds to L1 parameter 'PUCCH-PF3-PF4-pi/2PBSK' (see 38.213, section 9.2.5)
+	-- The field is not applicable for format 1 and 2.
+	pi2PBSK									ENUMERATED {enabled}														OPTIONAL, 	-- Need R
+	-- Enabling simultaneous transmission of CSI and HARQ-ACK feedback with or without SR with PUCCH Format 2, 3 or 4
+	-- Corresponds to L1 parameter 'PUCCH-F2-Simultaneous-HARQ-ACK-CSI', 'PUCCH-F3-Simultaneous-HARQ-ACK-CSI' and
+	-- 'PUCCH-F4-Simultaneous-HARQ-ACK-CSI' (see 38.213, section 9.2.5)
+	-- When the field is absent the UE applies the value OFF
+	-- The field is not applicable for format 1.
+	simultaneousHARQ-ACK-CSI				ENUMERATED {true}															OPTIONAL	-- Need R
+}
+
+PUCCH-MaxCodeRate ::= 						ENUMERATED {zeroDot08, zeroDot15, zeroDot25, zeroDot35, zeroDot45, zeroDot60, zeroDot80}
+
+PUCCH-SpatialRelationInfo ::=				SEQUENCE {
+	pucch-SpatialRelationInfoId					PUCCH-SpatialRelationInfoId,
+	referenceSignal 							CHOICE {
+		ssb-Index									SSB-Index,
+		csi-RS-Index								NZP-CSI-RS-ResourceId,
+		srs											SRS-ResourceId
+	},
+	pucch-PathlossReferenceRS-Id 				PUCCH-PathlossReferenceRS-Id,
+	p0-PUCCH-Id									P0-PUCCH-Id,
+	closedLoopIndex								ENUMERATED { i0, i1 }
+}
+
+PUCCH-SpatialRelationInfoId ::= 			INTEGER (1..maxNrofSpatialRelationInfos)
+
+-- A set with one or more PUCCH resources
+PUCCH-ResourceSet ::=							SEQUENCE {
+	pucch-ResourceSetId								PUCCH-ResourceSetId,
+
+	-- PUCCH resources of format0 and format1 are only allowed in the first PUCCH reosurce set,
+	-- i.e., in a PUCCH-ResourceSet with pucch-ResourceSetId = 0. This set may contain between 8 and 32 resources. 
+	-- PUCCH resources of format2, format3 and format4 are only allowed  in a PUCCH-ReosurceSet with pucch-ResourceSetId > 0. If present, these sets must contain 8 resources each.
+	-- The UE chooses a PUCCH-Resource from this list based on the 3-bit PUCCH resource indicator field in DCI as 
+	-- speciied in 38.213, FFS_section.
+	-- Note that this list contains only a list of resource IDs. The actual resources are configured in PUCCH-Config.
+	resources										SEQUENCE (SIZE (8..maxNrofPUCCH-ResourcesPerSet)) OF PUCCH-ResourceId,
+
+	-- Maximum number of payload bits minus 1 that the UE may transmit using this PUCCH resource set. In a PUCCH occurrence, the UE 
+	-- chooses the first of its PUCCH-ResourceSet which supports the number of bits that the UE wants to transmit. 
+	-- The field is not present in the first set (Set0) since the maximum Size of Set0 is specified to be 3 bit.
+	-- The field is not present in the last configured set since the UE derives its maximum payload size as specified in 38.213.
+	-- This field can take integer values that are multiples of 4. Corresponds to L1 parameter 'N_2' or 'N_3' (see 38.213, section 9.2)
+	maxPayloadMinus1								INTEGER (4..256)														OPTIONAL	-- Need R
+}
+
+PUCCH-ResourceSetId ::=							INTEGER (0..maxNrofPUCCH-ResourceSets-1)
+
+PUCCH-Resource ::= 								SEQUENCE {
+	pucch-ResourceId								PUCCH-ResourceId,
+
+	startingPRB										PRB-Id, 
+	-- Corresponds to the L1 parameter 'PUCCH-frequency-hopping' (see 38.213, section 9.2)
+	intraSlotFrequencyHopping						ENUMERATED { enabled }													OPTIONAL,	-- Need R
+	-- Index of starting PRB for second hop of PUCCH in case of FH. This value is appliable for intra-slot frequency hopping.
+	-- Corresponds to L1 parameter 'PUCCH-2nd-hop-PRB' (see 38.213, section 9.2)
+	secondHopPRB									PRB-Id																	OPTIONAL,	-- Need R
+
+	-- Selection of the PUCCH format and format-specific parameters
+	format											CHOICE {
+		format0											PUCCH-format0,														-- Cond InFirstSetOnly
+		format1											PUCCH-format1,														-- Cond InFirstSetOnly
+		format2											PUCCH-format2,														-- Cond NotInFirstSet
+		format3											PUCCH-format3,														-- Cond NotInFirstSet
+		format4											PUCCH-format4														-- Cond NotInFirstSet
+	}
+}
+
+PUCCH-ResourceId ::=							INTEGER (0..maxNrofPUCCH-Resources-1)
+
+
+-- A PUCCH Format 0 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-format0' (see 38.213, section 9.2.1)
+PUCCH-format0 ::=								SEQUENCE {
+	initialCyclicShift								INTEGER(0..11),
+	nrofSymbols										INTEGER (1..2), 
+	startingSymbolIndex								INTEGER(0..13) 
+}
+
+-- A PUCCH Format 1 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-format1' (see 38.213, section 9.2.1)
+PUCCH-format1 ::= 								SEQUENCE {
+	initialCyclicShift								INTEGER(0..11), 
+	nrofSymbols										INTEGER (4..14), 
+	startingSymbolIndex								INTEGER(0..10), 
+	timeDomainOCC									INTEGER(0..6)
+}
+
+-- A PUCCH Format 2 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-format2onfig' (see 38.213, section 9.2.1)
+PUCCH-format2 ::= 								SEQUENCE {
+	nrofPRBs										INTEGER (1..16), 
+	nrofSymbols										INTEGER (1..2), 
+	startingSymbolIndex								INTEGER(0..13) 
+}
+
+-- A PUCCH Format 3 resource configuration(see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-format3' (see 38.213, section 9.2.1)
+PUCCH-format3 ::= 								SEQUENCE {
+	-- The supported values are 1,2,3,4,5,6,8,9,10,12,15 and 16
+	nrofPRBs										INTEGER (1..16), 
+	nrofSymbols										INTEGER (4..14), 
+	startingSymbolIndex								INTEGER(0..10) 
+}
+
+-- A PUCCH Format 4 resource configuration (see 38.213, section 9.2)
+-- Corresponds to L1 parameter 'PUCCH-format4' (see 38.213, section 9.2.1)
+PUCCH-format4 ::= 								SEQUENCE {
+	nrofSymbols										INTEGER (4..14), 
+	occ-Length										ENUMERATED {n2,n4}, 
+	occ-Index										ENUMERATED {n0,n1,n2,n3},
+	startingSymbolIndex								INTEGER(0..10) 
+}
+
+-- TAG-PUCCH-CONFIG-STOP 
+-- TAG-PUCCH-CONFIGCOMMON-START
+
+PUCCH-ConfigCommon ::=					SEQUENCE {
+	-- An entry into a 16-row table where each row configures a set of cell-specific PUCCH resources/parameters. The UE uses 
+	-- those PUCCH resources during initial access on the initial uplink BWP. Once the network provides a dedicated PUCCH-Config 
+	-- for that bandwidth part the UE applies that one instead of the one provided in this field.   
+	-- Corresponds to L1 parameter 'PUCCH-resource-common' (see 38.213, section 9.2)
+	pucch-ResourceCommon					BIT STRING (SIZE (4))															OPTIONAL,	-- Need R
+
+	-- Configuration of group- and sequence hopping for all the PUCCH formats 0, 1, 3 and 4. "neither" implies neither group 
+	-- or sequence hopping is enabled. "enable" enables group hopping and disables sequence hopping. "disable"” disables group 
+	-- hopping and enables sequence hopping. Corresponds to L1 parameter 'PUCCH-GroupHopping' (see 38.211, section 6.4.1.3)
+	pucch-GroupHopping						ENUMERATED { neither, enable, disable },
+	-- Cell-Specific scrambling ID for group hoppping and sequence hopping if enabled.
+	-- Corresponds to L1 parameter 'HoppingID' (see 38.211, section 6.3.2.2)
+	hoppingId								BIT STRING (SIZE (10))															OPTIONAL, 	-- Need R
+
+	-- Power control parameter P0 for PUCCH transmissions. Value in dBm. Only even values (step size 2) allowed. 
+	-- Corresponds to L1 parameter 'p0-nominal-pucch' (see 38.213, section 7.2)
+	p0-nominal								INTEGER (-202..24)																OPTIONAL, 	-- Need R
+
+	...
+}
+
+-- TAG-PUCCH-CONFIGCOMMON-STOP
+-- TAG-PUCCH-POWERCONTROL-START
+PUCCH-PowerControl ::= 				SEQUENCE {
+
+	-- deltaF for PUCCH format 0 with 1dB step size (see 38.213, section 7.2)
+	deltaF-PUCCH-f0							INTEGER (-16..15)																	OPTIONAL, 	-- Need R
+	-- deltaF for PUCCH format 1 with 1dB step size (see 38.213, section 7.2)
+	deltaF-PUCCH-f1							INTEGER (-16..15)																	OPTIONAL, 	-- Need R
+	-- deltaF for PUCCH format 2 with 1dB step size (see 38.213, section 7.2)
+	deltaF-PUCCH-f2							INTEGER (-16..15)																	OPTIONAL, 	-- Need R
+	-- deltaF for PUCCH format 3 with 1dB step size (see 38.213, section 7.2)
+	deltaF-PUCCH-f3							INTEGER (-16..15)																	OPTIONAL, 	-- Need R
+	-- deltaF for PUCCH format 4 with 1dB step size (see 38.213, section 7.2)
+	deltaF-PUCCH-f4							INTEGER (-16..15)																	OPTIONAL, 	-- Need R
+
+	-- A set with dedicated P0 values for PUCCH, i.e.,  {P01, P02,... }. Corresponds to L1 parameter 'p0-pucch-set' (see 38.213, section 7.2)
+	p0-Set								SEQUENCE (SIZE (1..maxNrofPUCCH-P0-PerSet)) OF P0-PUCCH									OPTIONAL, -- Need M
+
+	-- A set of Reference Signals (e.g. a CSI-RS config or a SSblock) to be used for PUCCH pathloss estimation. 
+	-- Up to maxNrofPUCCH-PathlossReference-RSs may be configured
+	-- FFS_CHECK: Is it possible not to configure it at all? What does the UE use then? Any SSB?
+	-- Corresponds to L1 parameter 'pucch-pathlossReference-rs-config' (see 38.213, section 7.2)
+	pathlossReferenceRSs				SEQUENCE (SIZE (1..maxNrofPUCCH-PathlossReferenceRSs)) OF PUCCH-PathlossReferenceRS	OPTIONAL, -- Need M
+	-- Number of PUCCH power control adjustment states maintained by the UE (i.e., g(i)). If the field is present (n2) the UE maintains
+	-- two power control states (i.e., g(i,0) and g(i,1)). Otherwise, it applies one (i.e., g(i,0)). 
+	-- Corresponds to L1 parameter 'num-pucch-pcadjustment-states' (see 38.213, section 7.2)
+	twoPUCCH-PC-AdjustmentStates		ENUMERATED {twoStates}																	OPTIONAL, -- Need R
+	...
+}
+
+-- P0 value for PUCCH. Corresponds to L1 parameter 'p0-pucch' (see 3,213, section 7.2)
+P0-PUCCH ::=							SEQUENCE {
+	p0-PUCCH-Id								P0-PUCCH-Id,
+	-- P0 value for PUCCH with 1dB step size.
+	p0-PUCCH-Value							INTEGER (-16..15)
+}
+
+P0-PUCCH-Id ::=							INTEGER (1..8)
+
+-- A reference signal (RS) configured as pathloss reference signal for PUCCH power control
+-- Corresponds to L1 parameter 'pucch-pathlossReference-rs' (see 38.213, section 7.2)
+PUCCH-PathlossReferenceRS ::=					SEQUENCE {
+	pucch-PathlossReferenceRS-Id 				PUCCH-PathlossReferenceRS-Id, 
+	referenceSignal								CHOICE {
+		ssb-Index									SSB-Index,
+		csi-RS-Index								NZP-CSI-RS-ResourceId
+	}
+}
+
+-- ID for a referemce signal (RS) configured as PUCCH pathloss reference 
+-- Corresponds to L1 parameter 'pucch-pathlossreference-index' (see 38.213, section 7.2)
+-- FFS_CHECK: Is this ID used anywhere except inside the PUCCH-PathlossReference-RS	itself? If not, remove.
+PUCCH-PathlossReferenceRS-Id ::=			INTEGER (0..maxNrofPUCCH-PathlossReferenceRSs-1)
+
+-- TAG-PUCCH-POWERCONTROL-STOP
+-- TAG-PUCCH-TPC-COMMANDCONFIG-START
+
+PUCCH-TPC-CommandConfig ::=				SEQUENCE {
+	-- An index determining the position of the first bit of TPC command (applicable to the SpCell) inside the DCI format 2-2 payload. 
+	tpc-IndexPCell							INTEGER (1..15)													OPTIONAL,	-- Cond PUCCH-SCell
+	-- An index determining the position of the first bit of TPC command (applicable to the PUCCH-SCell) inside the DCI format 2-2 payload. 
+	tpc-IndexPUCCH-SCell					INTEGER (1..15)													OPTIONAL,	-- Cond PUCCH-SCellOnly
+    ...
+}
+
+-- TAG-PUCCH-TPC-COMMANDCONFIG-STOP
+-- TAG-PUSCH-CONFIG-START
+
+PUSCH-Config ::= 						SEQUENCE {
+	-- Identifer used to initalite data scrambling (c_init) for both PUSCH.
+	-- Corresponds to L1 parameter 'Data-scrambling-Identity' (see 38,214, section FFS_Section)
+	dataScramblingIdentityPUSCH			INTEGER (0..1007)															OPTIONAL,	-- Need M
+	-- Whether UE uses codebook based or non-codebook based transmission. Corresponds to L1 parameter 'ulTxConfig' (see 38.214, section 6.1.1)
+	txConfig								ENUMERATED {codebook, nonCodebook},
+
+	-- DMRS configuration for PUSCH transmissions using PUSCH mapping type A (chosen dynamically via PUSCH-TimeDomainResourceAllocation).
+	dmrs-UplinkForPUSCH-MappingTypeA		SetupRelease { DMRS-UplinkConfig }											OPTIONAL,	-- Need M
+	-- DMRS configuration for PUSCH transmissions using PUSCH mapping type B (chosen dynamically via PUSCH-TimeDomainResourceAllocation)
+	dmrs-UplinkForPUSCH-MappingTypeB		SetupRelease { DMRS-UplinkConfig }									OPTIONAL,	-- Need M
+
+	pusch-PowerControl						PUSCH-PowerControl															OPTIONAL, -- Need M
+	-- Configured one of two supported frequency hopping mode. If not configured frequency hopping is not configured
+	-- Corresponds to L1 parameter 'Frequency-hopping-PUSCH' (see 38.214, section 6)
+	-- When the field is absent the UE applies the value Not configured
+	frequencyHopping						ENUMERATED {mode1, mode2}													OPTIONAL,	-- Need S
+	-- Set of frequency hopping offsets used when frequency hopping is enabled for granted transmission (not msg3) and type 2
+	-- Corresponds to L1 parameter 'Frequency-hopping-offsets-set' (see 38.214, section 6.3)
+	frequencyHoppingOffsetLists				SEQUENCE (SIZE (1..4)) OF INTEGER (1.. maxNrofPhysicalResourceBlocks-1)	OPTIONAL,	-- Need M
+	-- Configuration of resource allocation type 0 and resource allocation type 1 for non-fallback DCI
+	-- Corresponds to L1 parameter 'Resouce-allocation-config' (see 38.214, section 6.1.2)
+	resourceAllocation						ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch},
+
+	-- List of time domain allocations for timing of UL assignment to UL data. If configured, the values provided herein 
+	-- override the values received in corresponding PUSCH-ConfigCommon.
+	pusch-AllocationList					SEQUENCE (SIZE(1..maxNrofUL-Allocations)) OF PUSCH-TimeDomainResourceAllocation	OPTIONAL, 	-- Need R,
+	-- Number of repetitions for data. Corresponds to L1 parameter 'aggregation-factor-UL' (see 38.214, section FFS_Section)
+	-- When the field is absent the UE applies the value 1.
+	pusch-AggregationFactor					ENUMERATED { n2, n4, n8 }													OPTIONAL, 	-- Need S
+
+	-- Indicates which MCS table the UE shall use for PUSCH without transform precoder
+	-- Corresponds to L1 parameter 'MCS-Table-PUSCH' (see 38.214, section 6.1.4)
+	-- When the field is absent the UE applies the value 64QAM
+	mcs-Table								ENUMERATED {qam256}													OPTIONAL,	-- Need S
+	-- Indicates which MCS table the UE shall use for PUSCH with transform precoding
+	-- Corresponds to L1 parameter 'MCS-Table-PUSCH-transform-precoding' (see 38.214, section 6.1.4)
+	-- When the field is absent the UE applies the value 64QAM
+	mcs-TableTransformPrecoder				ENUMERATED { qam256}													OPTIONAL,	-- Need S
+	-- The UE specific selection of transformer precoder for PUSCH. When the field is absent the UE applies the value msg3-tp.
+	-- Corresponds to L1 parameter 'PUSCH-tp' (see 38.211, section 6.3.1.4)
+	transformPrecoder						ENUMERATED {enabled, disabled}												OPTIONAL,	-- Need S
+	-- Subset of PMIs addressed by TPMI, where PMIs are those supported by UEs with maximum coherence capabilities 
+	-- Corresponds to L1 parameter 'ULCodebookSubset' (see 38.211, section 6.3.1.5)
+	codebookSubset			ENUMERATED {fullyAndPartialAndNonCoherent, partialAndNonCoherent, nonCoherent},
+	-- Subset of PMIs addressed by TRIs from 1 to ULmaxRank. Corresponds to L1 parameter 'ULmaxRank' (see 38.211, section 6.3.1.5)
+	maxRank									INTEGER (1..4),
+
+	-- Selection between config 1 and config 2 for RBG size for PUSCH. When the field is absent the UE applies the value config1.
+	-- Corresponds to L1 parameter 'RBG-size-PUSCH' (see 38.214, section 6.1.2.2.1)
+	rbg-Size								ENUMERATED { config2}												OPTIONAL,	-- Need S
+
+	-- Selection between and configuration of dynamic and semi-static beta-offset.
+	-- If the field is absent or released, the UE applies the value 'semiStatic' and the BetaOffsets according to 
+	-- FFS [BetaOffsets and/or section 9.x.x).
+	-- Corresponds to L1 parameter 'UCI-on-PUSCH' (see 38.213, section 9.3)
+	uci-OnPUSCH							SetupRelease { UCI-OnPUSCH}									OPTIONAL, -- Need M
+	-- Interleaving unit configurable between 2 and 4 PRBs
+	-- Corresponds to L1 parameter 'VRB-to-PRB-interleaver' (see 38.211, section 6.3.1.6)
+	vrb-ToPRB-Interleaver					ENUMERATED {n2, n4},
+	...
+}
+
+UCI-OnPUSCH ::= 						SEQUENCE {
+	betaOffsets								CHOICE {
+			dynamic									SEQUENCE (SIZE (4)) OF BetaOffsets,
+			semiStatic								BetaOffsets
+	}																													OPTIONAL, -- Need M
+	-- Indicates a scaling factor to limit the number of resource elements assigned to UCI on PUSCH.
+	-- Value f0p5 corresponds to 0.5, value f0p65 corresponds to 0.65, and so on. 
+	-- Corresponds to L1 parameter 'uci-on-pusch-scaling' (see 38.212, section 6.3)
+	scaling						ENUMERATED { f0p5, f0p65, f0p8, f1 }
+}
+
+-- TAG-PUSCH-CONFIG-STOP
+-- TAG-PUSCH-CONFIGCOMMON-START
+
+PUSCH-ConfigCommon ::= 					SEQUENCE {
+	-- Sequence-group hopping can be enabled or disabled by means of this cell-specific parameter. 
+	-- Corresponds to L1 parameter 'Group-hopping-enabled-Transform-precoding' (see 38.211, section FFS_Section)
+	-- This field is Cell specific
+	groupHoppingEnabledTransformPrecoding	ENUMERATED {enabled}															OPTIONAL,	-- Need R
+
+	-- List of time domain allocations for timing of UL assignment to UL data
+	pusch-AllocationList					SEQUENCE (SIZE(1..maxNrofUL-Allocations)) OF PUSCH-TimeDomainResourceAllocation	OPTIONAL,	-- Need R
+
+	-- ------------------------
+	-- Power control parameters
+
+	-- Power offset between msg3 and RACH preamble transmission in steps of 1dB. 
+	-- Corresponds to L1 parameter 'Delta-preamble-msg3' (see 38.213, section 7.1)
+	msg3-DeltaPreamble							INTEGER (-1..6)															OPTIONAL,	-- Need R
+
+	-- P0 value for PUSCH with grant (except msg3). Value in dBm. Only even values (step size 2) allowed.
+	-- Corresponds to L1 parameter 'p0-nominal-pusch-withgrant' (see 38.213, section 7.1)
+	-- This field is cell specific
+	p0-NominalWithGrant						INTEGER (-202..24)																OPTIONAL,	-- Need R
+	...
+}
+
+-- TAG-PUSCH-CONFIGCOMMON-STOP
+-- TAG-PUSCH-POWERCONTROL-START
+
+PUSCH-PowerControl ::= 						SEQUENCE {
+
+	-- If enabled, UE applies TPC commands via accumulation. If not enabled, UE applies the TPC command without accumulation. 
+	-- If absent, TPC accumulation is enabled. Corresponds to L1 parameter 'Accumulation-enabled' (see 38.213, section 7.1)
+	tpc-Accumulation							ENUMERATED { disabled }													OPTIONAL,	-- Need R
+
+	-- Dedicated alpha value for msg3 PUSCH. Corresponds to L1 parameter 'alpha-ue-pusch-msg3' (see 38.213, section 7.1)
+	-- When the field is absent the UE applies the value 1.
+	msg3-Alpha									Alpha																	OPTIONAL, 	-- Need S
+
+	-- P0 value for UL grant-free/SPS based PUSCH. Value in dBm. Only even values (step size 2) allowed.
+	-- Corresponds to L1 parameter 'p0-nominal-pusch-withoutgrant' (see 38.213, section 7.1)
+	p0-NominalWithoutGrant						INTEGER (-202..24)														OPTIONAL,	-- Need M,
+	-- configuration {p0-pusch,alpha} sets for PUSCH (except msg3), i.e., { {p0,alpha,index1}, {p0,alpha,index2},...}.
+	-- Corresponds to L1 parameter 'p0-push-alpha-setconfig' (see 38,213, section 7.1)
+	p0-AlphaSets								SEQUENCE (SIZE (1..maxNrofP0-PUSCH-AlphaSets)) OF P0-PUSCH-AlphaSet		OPTIONAL,	-- Need M,
+
+	-- A set of Reference Signals (e.g. a CSI-RS config or a SSblock) to be used for PUSCH path loss estimation. 
+	-- Up to maxNrofPUSCH-PathlossReferenceRSs may be configured when 'PUSCH beam indication' is present (FFS: in DCI???). 
+	-- Otherwise, there may be only one entry. 
+	-- Corresponds to L1 parameter 'pusch-pathlossReference-rs-config' (see 38.213, section 7.1)
+	pathlossReferenceRSToAddModList				SEQUENCE (SIZE (1..maxNrofPUSCH-PathlossReferenceRSs)) OF PUSCH-PathlossReferenceRS	
+																														OPTIONAL,	-- Need N
+	pathlossReferenceRSToReleaseList			SEQUENCE (SIZE (1..maxNrofPUSCH-PathlossReferenceRSs)) OF PUSCH-PathlossReferenceRS-Id	
+																														OPTIONAL,	-- Need N
+
+	-- Number of PUSCH power control adjustment states maintained by the UE (i.e., fc(i)). If the field is present (n2) the UE maintains
+	-- two power control states (i.e., fc(i,1) and fc(i,2)). Otherwise, it applies one (i.e., fc(i,1)). 
+	-- Corresponds to L1 parameter 'num-pusch-pcadjustment-states' (see 38.213, section 7.1)
+	twoPUSCH-PC-AdjustmentStates				ENUMERATED {twoStates}													OPTIONAL, -- Need S
+
+	-- Indicates whether to apply dela MCS. When the field is absent, the UE applies Ks = 0 in delta_TFC formula for PUSCH. 
+	-- Corresponds to L1 parameter 'deltaMCS-Enabled' (see 38.213, section 7.1)
+	deltaMCS									ENUMERATED {enabled}													OPTIONAL, -- Need S
+
+	-- A list of SRI-PUSCH-PowerControl elements among which one is selected by the SRI field in DCI. 
+	-- Corresponds to L1 parameter 'SRI-PUSCHPowerControl-mapping' (see 38.213, section 7.1)
+	sri-PUSCH-MappingToAddModList			SEQUENCE (SIZE (1..maxNrofSRI-PUSCH-Mappings)) OF SRI-PUSCH-PowerControl		OPTIONAL, -- Need M
+	sri-PUSCH-MappingToReleaseList				SEQUENCE (SIZE (1..maxNrofSRI-PUSCH-Mappings)) OF SRI-PUSCH-PowerControlId	OPTIONAL -- Need M 
+}
+
+-- A set of p0-pusch and alpha used for PUSCH with grant. 'PUSCH beam indication' (if present) gives the index of the set to 
+-- be used for a particular PUSCH transmission.
+-- FFS_CHECK: Is the ”PUSCH beam indication” in DCI which schedules the PUSCH? If so, clarify in field description
+-- Corresponds to L1 parameter 'p0-pusch-alpha-set' (see 38.213, section 7.1)
+P0-PUSCH-AlphaSet ::= 						SEQUENCE {
+	p0-PUSCH-AlphaSetId 						P0-PUSCH-AlphaSetId,
+	-- P0 value for PUSCH with grant (except msg3) in steps of 1dB. Corresponds to L1 parameter 'p0-pusch' (see 38,213, section 7.1)
+	p0											INTEGER (-16..15)															OPTIONAL,
+	-- alpha value for PUSCH with grant (except msg3) (see 38.213, section 7.1)
+	-- When the field is absent the UE applies the value 1
+	alpha 										Alpha																	OPTIONAL	-- Need S
+}
+
+-- ID for a P0-PUSCH-AlphaSet. Corresponds to L1 parameter 'p0alphasetindex' (see 38.213, section 7.1)
+P0-PUSCH-AlphaSetId ::= 					INTEGER (0..maxNrofP0-PUSCH-AlphaSets-1)
+
+-- A reference signal (RS) configured as pathloss reference signal for PUSCH power control
+-- Corresponds to L1 parameter 'pusch-pathlossReference-rs' (see 38.213, section 7.1)
+PUSCH-PathlossReferenceRS ::=				SEQUENCE {
+	pusch-PathlossReferenceRS-Id 				PUSCH-PathlossReferenceRS-Id, 
+	referenceSignal								CHOICE {
+		ssb-Index									SSB-Index,
+		csi-RS-Index									NZP-CSI-RS-ResourceId
+	}
+}
+
+-- ID for a referemce signal (RS) configured as PUSCH pathloss reference 
+-- Corresponds to L1 parameter 'pathlossreference-index' (see 38.213, section 7.1)
+-- FFS_CHECK: Is this ID used anywhere except inside the PUSCH-PathlossReference-RS	itself?
+PUSCH-PathlossReferenceRS-Id ::=			INTEGER (0..maxNrofPUSCH-PathlossReferenceRSs-1)
+
+
+-- A set of PUSCH power control parameters associated with one SRS-ResourceIndex (SRI)
+SRI-PUSCH-PowerControl ::=					SEQUENCE {
+	-- The ID of this SRI-PUSCH-PowerControl configuration. It is used as the codepoint (payload) in the SRI DCI field.
+	sri-PUSCH-PowerControlId					SRI-PUSCH-PowerControlId,
+	-- The ID of PUSCH-PathlossReferenceRS as configured in the pathlossReferenceRSToAddModList in PUSCH-PowerControl.
+	sri-PUSCH-PathlossReferenceRS-Id 			PUSCH-PathlossReferenceRS-Id,
+	-- The ID of a P0-PUSCH-AlphaSet as configured in p0-AlphaSets in PUSCH-PowerControl.
+	sri-P0-PUSCH-AlphaSetId 					P0-PUSCH-AlphaSetId,
+	-- The index of the closed power control loop associated with this SRI-PUSCH-PowerControl
+	sri-PUSCH-ClosedLoopIndex					ENUMERATED { i0, i1 }
+}
+
+SRI-PUSCH-PowerControlId ::=				INTEGER (0..maxNrofSRI-PUSCH-Mappings-1)
+
+-- A set of beta-offset values
+BetaOffsets ::= 							SEQUENCE {
+	-- Up to 2 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-1' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 11
+	betaOffsetACK-Index1						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Up to 11 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-2' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 11
+	betaOffsetACK-Index2						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Above 11 bits HARQ-ACK. Corresponds to L1 parameter 'betaOffset-ACK-Index-3' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 11
+	betaOffsetACK-Index3						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Up to 11 bits of CSI part 1 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-1-Index-1' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 13
+	betaOffsetCSI-Part1-Index1						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Above 11 bits of CSI part 1 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-1-Index-2' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 13
+	betaOffsetCSI-Part1-Index2						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Up to 11 bits of CSI part 2 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-2-Index-1' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 13
+	betaOffsetCSI-Part2-Index1						INTEGER(0..31)															OPTIONAL, -- Need S
+	-- Above 11 bits of CSI part 2 bits. Corresponds to L1 parameter 'betaOffset-CSI-part-2-Index-2' (see 38.213, section 9.3)
+	-- When the field is absent the UE applies the value 13
+	betaOffsetCSI-Part2-Index2						INTEGER(0..31)															OPTIONAL -- Need S
+}
+
+-- TAG-PUSCH-POWERCONTROL-STOP
+-- TAG-PUSCH-SERVINGCELLCONFIG-START
+
+PUSCH-ServingCellConfig ::=				SEQUENCE {
+	-- Enables and configures code-block-group (CBG) based transmission (see 38.214, section FFS_Section)
+	codeBlockGroupTransmission				SetupRelease { PUSCH-CodeBlockGroupGransmission	}							OPTIONAL,	-- Need M
+	-- Enables LBRM (Limited buffer rate-matching). When the field is absent the UE applies FBRM (Full buffer rate-matchingLBRM).
+	-- Corresponds to L1 parameter 'LBRM-FBRM-selection' (see 38.212, section 5.4.2)
+	rateMatching							ENUMERATED {limitedBufferRM}												OPTIONAL,	-- Need S
+	-- Accounts for overhead from CSI-RS, CORESET, etc. If the field is absent, the UE applies the value 'xoh0'.
+	-- Corresponds to L1 parameter 'Xoh-PUSCH' (see 38.214, section 5.1.3.2)
+	xOverhead								ENUMERATED {xoh6, xoh12, xoh18}												OPTIONAL,	-- Need S
+	...
+}
+
+PUSCH-CodeBlockGroupGransmission ::=	SEQUENCE {
+	-- Maximum number of code-block-groups (CBGs) per TB (see 38.xxx, section x.x.x, FFS_Ref)
+	-- For 2 codewords, only the values { n2, n4 } are valid.
+	maxCodeBlockGroupsPerTransportBlock		ENUMERATED {n2, n4, n6, n8},
+	...
+}
+
+-- TAG-PUSCH-SERVINGCELLCONFIG-STOP
+-- TAG-PUSCH-TIMEDOMAINRESOURCEALLOCATION-START
+
+PUSCH-TimeDomainResourceAllocation ::= 	SEQUENCE {
+	-- Corresponds to L1 parameter 'K2' (see 38.214, section FFS_Section)
+	-- When the field is absent the UE applies the value 01 when PUSCH SCS is 15/30KHz; 2 when PUSCH SCS is 60KHz and 3 when PUSCH SCS is 120KHz.
+	k2									INTEGER (0..7)																OPTIONAL,	-- Need S
+	-- Mapping type. Corresponds to L1 parameter 'Mapping-type' (see 38.214, section FFS_Section)
+	mappingType							ENUMERATED {typeA, typeB},
+	-- An index into a table/equation in RAN1 specs capturing valid combinations of start symbol and length (jointly encoded)
+	-- Corresponds to L1 parameter 'Index-start-len' (see 38.214, section FFS_Section)
+	startSymbolAndLength				BIT STRING (SIZE (7))
+}
+
+-- TAG-PUSCH-TIMEDOMAINRESOURCEALLOCATION-STOP
+-- TAG-PUSCH-TPC-COMMANDCONFIG-START
+
+PUSCH-TPC-CommandConfig ::=			SEQUENCE {
+	-- An index determining the position of the first bit of TPC command inside the DCI format 2-2 payload. 
+	tpc-Index							INTEGER (1..15)															OPTIONAL,	-- Cond SUL
+	-- An index determining the position of the first bit of TPC command inside the DCI format 2-2 payload. 
+	tpc-IndexSUL						INTEGER (1..15)															OPTIONAL,	-- Cond SUL-Only
+	-- The serving cell to which the acquired power control commands are applicable. If the value is absent, the UE applies the 
+	-- TPC commands to the serving cell on which the command has been received. 
+	targetCell							ServCellIndex															OPTIONAL,	-- Need S
+	...
+}
+
+-- TAG-PUSCH-TPC-COMMANDCONFIG-STOP
+
+Q-OffsetRange ::=						ENUMERATED {
+												dB-24, dB-22, dB-20, dB-18, dB-16, dB-14,
+												dB-12, dB-10, dB-8, dB-6, dB-5, dB-4, dB-3,
+												dB-2, dB-1, dB0, dB1, dB2, dB3, dB4, dB5,
+												dB6, dB8, dB10, dB12, dB14, dB16, dB18,
+												dB20, dB22, dB24}
+
+-- TAG-QUANTITY-CONFIG-START
+
+	
+QuantityConfig ::=							SEQUENCE {
+	quantityConfigNR-List						QuantityConfigNR-List						OPTIONAL,	-- Need M
+	...
+}
+
+QuantityConfigNR-List::=						SEQUENCE (SIZE (1..maxNrofQuantityConfig)) OF QuantityConfigNR
+
+QuantityConfigNR::=							SEQUENCE {
+	quantityConfigCell							QuantityConfigRS,
+	quantityConfigRS-Index						QuantityConfigRS								OPTIONAL	-- Need M
+}
+
+QuantityConfigRS ::=						SEQUENCE {
+	-- SS Block based L3 filter configurations:
+	ssb-FilterConfig				FilterConfig,
+
+	-- CSI-RS basedL3 filter configurations:
+	cs-RS-FilterConfig				FilterConfig
+}
+
+FilterConfig ::=				SEQUENCE {
+	filterCoefficientRSRP			FilterCoefficient										DEFAULT fc4,
+	filterCoefficientRSRQ			FilterCoefficient										DEFAULT fc4,
+	filterCoefficientRS-SINR		FilterCoefficient										DEFAULT fc4
+}
+
+-- TAG-QUANTITY-CONFIG-STOP
+-- TAG-RACH-CONFIG-COMMON-START
+
+RACH-ConfigCommon ::= 				SEQUENCE {
+	-- Generic RACH parameters 
+	rach-ConfigGeneric			RACH-ConfigGeneric,
+
+	-- Total number of preambles used for contention based and contention free random access, excluding	
+	-- preambles used for other purposes (e.g. for SI request). If the field is absent, the UE may use all 64 preambles for RA.
+	totalNumberOfRA-Preambles			INTEGER (1..63)																		OPTIONAL,	-- Need S
+
+	-- Number of SSBs per RACH occasion (L1 parameter 'SSB-per-rach-occasion') and the number of Contention Based preambles per SSB
+	-- (L1 parameter 'CB-preambles-per-SSB'). By multiplying the two values, the UE determines the total number of CB preambles.
+	ssb-perRACH-OccasionAndCB-PreamblesPerSSB	CHOICE { 
+		oneEighth								ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, 
+		oneFourth								ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, 
+		oneHalf									ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, 
+		one										ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, 
+		two										ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32}, 
+		four									INTEGER (1..16), 
+		eight									INTEGER (1..8), 
+		sixteen									INTEGER (1..4)
+	}																														OPTIONAL,	-- Need M
+
+	groupBconfigured 					SEQUENCE {
+		-- Transport Blocks size threshold in bit below which the UE shall use a contention based RA premable 
+		-- of group A. (see 38.321, section 5.1.2)
+		ra-Msg3SizeGroupA					ENUMERATED {b56, b144, b208, b256, b282, b480, b640, b800, b1000, spare7, spare6, spare5,
+											spare4, spare3, spare2, spare1},
+		-- Threshold for preamble selection.  Value in dB.  Value minusinfinity corresponds to –infinity.  
+		-- Value dB0 corresponds to 0 dB, dB5 corresponds to 5 dB and so on. (see FFS_Spec, section FFS_Section)
+		messagePowerOffsetGroupB			ENUMERATED { minusinfinity, dB0, dB5, dB8, dB10, dB12, dB15, dB18},
+		-- The number of CB preambles per SSB in group A. This determines implicitly the number of CB preambles per SSB available in group B.
+		-- (see 38.321, section 5.1.1)
+		numberOfRA-PreamblesGroupA			INTEGER (1..64)
+	}																														OPTIONAL,	-- Need R
+
+	-- The initial value for the contention resolution timer (see 38.321, section 5.1.5)	
+	ra-ContentionResolutionTimer			ENUMERATED { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64},
+
+	-- UE may select the SS block and corresponding PRACH resource for path-loss estimation and (re)transmission 
+	-- based on SS blocks that satisfy the threshold (see 38.213, section REF)
+	rsrp-ThresholdSSB						RSRP-Range																		OPTIONAL,	-- Need R
+	-- UE may select the SS block and corresponding PRACH resource for path-loss estimation and (re)transmission on the SUL carrier
+	-- based on SS blocks that satisfy the threshold
+	-- Corresponds to L1 parameter 'SUL-RSRP-Threshold' (see FFS_Spec, section FFS_Section)
+	rsrp-ThresholdSSB-SUL					RSRP-Range																		OPTIONAL,	-- Need R
+
+	-- PRACH root sequence index. Corresponds to L1 parameter 'PRACHRootSequenceIndex' (see 38.211, section 6.3.3.1).
+	-- The value range depends on whether L=839 or L=139
+	prach-RootSequenceIndex					CHOICE {
+		l839									INTEGER (0..837),
+		l139									INTEGER (0..137)
+	},
+
+	-- Subcarrier spacing of PRACH. Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable.
+	-- Corresponds to L1 parameter 'prach-Msg1SubcarrierSpacing' (see 38.211, section FFS_Section)
+	msg1-SubcarrierSpacing					SubcarrierSpacing,
+
+	-- Configuration of an unrestricted set or one of two types of restricted sets, see 38.211	6.3.3.1 
+	restrictedSetConfig						ENUMERATED {unrestrictedSet, restrictedSetTypeA, restrictedSetTypeB},
+	-- Indicates to a UE whether transform precoding is enabled for Msg3 transmission. 
+	-- Corresponds to L1 parameter 'msg3-tp' (see 38.213, section 8.1)
+	msg3-transformPrecoding					ENUMERATED {enabled}															OPTIONAL,	-- Need R
+	...
+}
+
+-- TAG-RACH-CONFIG-COMMON-STOP 
+-- TAG-RACH-CONFIG-GENERIC-START
+
+RACH-ConfigGeneric ::= 			SEQUENCE {
+	-- PRACH configuration index. Corresponds to L1 parameter 'PRACHConfigurationIndex' (see 38.211, section 6.3.3.2)
+	prach-ConfigurationIndex				INTEGER (0..255),
+	-- The number of PRACH transmission occasions FDMed in one time instance. 
+	-- Corresponds to L1 parameter 'prach-FDM' (see 38.211, section FFS_Section)
+	msg1-FDM								ENUMERATED {one, two, four, eight},
+	-- Offset of lowest PRACH transmission occasion in frequency domain with respective to PRB 0.
+	-- The value is configured so that the corresponding RACH resource is entirely within the bandwidth of the UL BWP.
+	-- Corresponds to L1 parameter 'prach-frequency-start' (see 38,211, section FFS_Section)
+	msg1-FrequencyStart						INTEGER (0..maxNrofPhysicalResourceBlocks-1),
+	-- N-CS configuration, see Table 6.3.3.1-3 in 38.211
+	zeroCorrelationZoneConfig				INTEGER(0..15),
+	-- The target power level at the network receiver side (see 38.213, section 7.4, 38.321, section 5.1.2, 5.1.3)
+	-- Only multiples of 2 dBm may be chosen (e.g. -200, -198, ...).
+	-- FFS-Value: Actual values to be updated based on input from RAN4 (see LS in R2-1800004 and R4-1803466).
+	preambleReceivedTargetPower				INTEGER (-200..-74),
+	-- Max number of RA preamble transmission perfomed before declaring a failure (see 38.321, section 5.1.4, 5.1.5)
+	preambleTransMax 						ENUMERATED {n3, n4, n5, n6, n7,	n8, n10, n20, n50, n100, n200},
+	-- Power ramping steps for PRACH (see 38.321,5.1.3)
+	powerRampingStep						ENUMERATED {dB0, dB2, dB4, dB6},
+	-- Msg2 (RAR) window length in number of slots. The network configures a value lower than or euqal to 10 ms (see 38.321, section 5.1.4)
+	ra-ResponseWindow						ENUMERATED {sl1, sl2, sl4, sl8, sl10, sl20, sl40, sl80}
+}
+
+-- TAG-RACH-CONFIG-GENERIC-STOP 
+-- TAG-RACH-CONFIG-DEDICATED-START
+
+-- FFS_Standlone: resources for msg1-based on-demand SI request
+
+RACH-ConfigDedicated ::=		SEQUENCE {
+	-- Resources for contention free random access to a given target cell
+	cfra-Resources					CFRA-Resources, 
+	...
+}
+
+CFRA-Resources ::= 				CHOICE {
+	ssb								SEQUENCE {
+		ssb-ResourceList				SEQUENCE (SIZE(1..maxRA-SSB-Resources)) OF CFRA-SSB-Resource,
+		-- Explicitly signalled PRACH Mask Index for RA Resource selection in TS 36.321. The mask is valid for all SSB
+		-- resources signalled in ssb-ResourceList
+		ra-ssb-OccasionMaskIndex		INTEGER (0..15)
+	},
+	csirs							SEQUENCE {
+		csirs-ResourceList				SEQUENCE (SIZE(1..maxRA-CSIRS-Resources)) OF CFRA-CSIRS-Resource,
+		cfra-csirs-DedicatedRACH-Threshold	RSRP-Range
+	}
+}
+
+CFRA-SSB-Resource ::= 			SEQUENCE {
+	-- The ID of an SSB transmitted by this serving cell. 
+	ssb								SSB-Index,
+	-- The preamble index that the UE shall use when performing CF-RA upon selecting the candidate beams identified by this SSB.
+	ra-PreambleIndex				INTEGER (0..63),
+	...
+}
+
+CFRA-CSIRS-Resource ::= 		SEQUENCE {
+	-- The ID of a CSI-RS resource defined in the measurement object associated with this serving cell.
+	csi-RS							CSI-RS-Index,
+	-- RA occasions that the UE shall use when performing CF-RA upon selecting the candidate beam identified by this CSI-RS.
+	ra-OccasionList					SEQUENCE (SIZE(1..maxRA-OccasionsPerCSIRS)) OF INTEGER (0..maxRA-Occasions-1),
+	-- The RA preamble index to use in the RA occasions assoicated with this CSI-RS.
+	ra-PreambleIndex				INTEGER (0..63),	
+	...
+}
+
+-- TAG-RACH-CONFIG-DEDICATED-STOP
+-- TAG-RADIO-BEARER-CONFIG-START
+
+RadioBearerConfig ::=					SEQUENCE {
+	srb-ToAddModList						SRB-ToAddModList										OPTIONAL, -- Need N
+	srb3-ToRelease							ENUMERATED{true}										OPTIONAL, -- Need N
+	drb-ToAddModList						DRB-ToAddModList										OPTIONAL, -- Need N
+	drb-ToReleaseList						DRB-ToReleaseList										OPTIONAL, -- Need N
+	securityConfig 							SecurityConfig											OPTIONAL, -- Cond M
+	...
+}
+
+SRB-ToAddModList ::=					SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod
+SRB-ToAddMod ::=						SEQUENCE {
+	srb-Identity							SRB-Identity,
+	-- may only be set if the cell groups of all linked logical channels are reset or released
+	reestablishPDCP							ENUMERATED{true}										OPTIONAL, 		-- Need N
+	discardOnPDCP                           ENUMERATED{true}										OPTIONAL,		-- Need N
+	pdcp-Config								PDCP-Config												OPTIONAL,		-- Cond PDCP
+	...
+}
+
+
+DRB-ToAddModList ::=					SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod
+DRB-ToAddMod ::=						SEQUENCE {
+	cnAssociation							CHOICE {
+		-- The EPS bearer ID determines the EPS bearer when NR connects to EPC using EN-DC
+		eps-BearerIdentity						INTEGER (0..15),												-- EPS-DRB-Setup
+		--	The SDAP configuration determines how to map QoS flows to DRBs when NR connects to the 5GC
+		sdap-Config								SDAP-Config													-- 5GC
+	} 										OPTIONAL, -- Cond DRBSetup
+	drb-Identity							DRB-Identity,
+
+	-- may only be set if the cell groups of all linked logical channels are reset or released
+	reestablishPDCP						ENUMERATED{true}										OPTIONAL, 		-- Need N
+	recoverPDCP							ENUMERATED{true}										OPTIONAL, 		-- Need N
+	pdcp-Config							PDCP-Config												OPTIONAL,		-- Cond PDCP
+	...
+}
+
+DRB-ToReleaseList ::=					SEQUENCE (SIZE (1..maxDRB)) OF DRB-Identity
+
+
+SecurityConfig ::=						SEQUENCE {	
+	securityAlgorithmConfig				SecurityAlgorithmConfig									OPTIONAL,	-- Cond RBTermChange
+	keyToUse							ENUMERATED{keNB, s-KgNB}								OPTIONAL,	-- Cond RBTermChange
+	...
+}
+
+-- TAG-RADIO-BEARER-CONFIG-STOP
+-- TAG-RADIOLINKMONITORINGCONFIG-START
+
+RadioLinkMonitoringConfig ::=			SEQUENCE {
+	-- A list of reference signals for detecting beam failure and/or cell level radio link failure (RLF).
+	-- The network configures at most two detectionResources per BWP for the purpose "beamFailure" or "both". 
+	-- If no RSs are provided for the purpose of beam failure detection, the UE performs beam monitoring based on the activated TCI-State 
+	-- for PDCCH. However, if the activated TCI state refers to an aperiodic or semi-persistent CSI-RS, the gNB configures the failure
+	-- detection resources explicitly (FFS_RAN1: TBC by RAN1).
+	-- If no RSs are provided in this list at all (neither for Cell- nor for Beam-RLM), the UE performs also Cell-RLM based 
+	-- on the activated TCI-State of PDCCH (FFS_RAN1: TBC by RAN1).
+	-- When the network reconfigures this field, the UE resets on-going RLF timers and counters.
+	failureDetectionResources				SEQUENCE (SIZE(1..maxNrofFailureDetectionResources)) OF RadioLinkMonitoringRS	OPTIONAL, 	-- Need M
+	-- This field determines after how many beam failure events the UE triggers beam failure recovery (see 38.321, section 5.17). 
+	-- Value n1 corresponds to 1 beam failure instance, n2 corresponds to 2 beam failure instances and so on. 
+	-- When the network reconfigures this field, the UE resets on-going RLF timers and counters. 
+	-- If the field is absent, the UE does not trigger beam failure recovery.
+	beamFailureInstanceMaxCount				ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10}									OPTIONAL,	-- Need S
+	-- Timer for beam failure detection (see 38.321, section FFS_Section). See also the BeamFailureRecoveryConfig IE.
+	-- Value in number of "periods of Beam Failure Detection" Reference Signal. Value pbfd1 corresponds to 1 period of Beam Failure 
+	-- Detection Reference Signal, value pbfd2 corresponds to 2 periods of Beam Failure Detection Reference Signal and so on.
+	-- When the network reconfigures this field, the UE resets on-going RLF timers and counters.
+	beamFailureDetectionTimer      			ENUMERATED {pbfd1, pbfd2, pbfd3, pbfd4, pbfd5, pbfd6, pbfd8, pbfd10}			OPTIONAL,	-- Need R
+	...
+}
+
+RadioLinkMonitoringRS ::=				SEQUENCE {
+	-- Determines whether the UE shall monitor the associated reference signal for the purpose of cell- and/or beam failure detection.
+	purpose									ENUMERATED {beamFailure, rlf, both},
+	-- A reference signal that the UE shall use for radio link monitoring. The network provides an ssb-Index only if
+	-- the purpose is set to rlf.
+	detectionResource						CHOICE {
+		ssb-Index								SSB-Index,
+		csi-RS-Index							NZP-CSI-RS-ResourceId
+	},
+	...
+}
+
+-- TAG-RADIOLINKMONITORINGCONFIG-STOP
+-- TAG-RATEMATCHPATTERN-START
+RateMatchPattern ::= 						SEQUENCE {
+	rateMatchPatternId							RateMatchPatternId,
+
+	patternType									CHOICE {
+		bitmaps										SEQUENCE {
+			-- A resource block level bitmap in the frequency domain. It indicates the PRBs to which the symbolsInResourceBlock bitmap applies.
+			-- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap1' (see 38.214, section FFS_Section)
+			-- FFS_ASN1: Consider multiple options with different number of bits (for narrower carriers)
+			resourceBlocks								BIT STRING (SIZE (275)),
+
+			-- A symbol level bitmap in time domain. It indicates (FFS: with a bit set to true) the symbols which the UE shall rate match around.
+			-- This pattern recurs (in time domain) with the configured periodicityAndOffset. 
+			-- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap2' (see 38.214, section FFS_Section)
+			-- FFS: Why not split it into two BIT STRINGs of 14 bit each?
+			symbolsInResourceBlock						CHOICE {
+				oneSlot										BIT STRING (SIZE (14)),
+				twoSlots									BIT STRING (SIZE (28))
+			},
+
+			-- A time domain repetition pattern. at which the symbolsInResourceBlock 
+			-- pattern recurs. This slot pattern repeats itself continuously. Absence of this field indicates the value n1, i.e., the
+			-- symbolsInResourceBlock recurs every 14 symbols. 
+			-- Corresponds to L1 parameter 'rate-match-PDSCH-bitmap3' (see 38.214, section FFS_Section)
+			periodicityAndPattern						CHOICE {
+				n2											BIT STRING (SIZE (2)), 
+				n4											BIT STRING (SIZE (4)), 
+				n5											BIT STRING (SIZE (5)), 
+				n8											BIT STRING (SIZE (8)), 
+				n10											BIT STRING (SIZE (10)), 
+				n20											BIT STRING (SIZE (20)), 
+				n40											BIT STRING (SIZE (40))
+			}																										OPTIONAL, 	-- Need S
+			...
+		},
+		-- This ControlResourceSet us used as a PDSCH rate matching pattern, i.e., PDSCH reception rate matches around it. 
+		controlResourceSet							ControlResourceSetId
+	},
+	-- The SubcarrierSpacing for this resource pattern. If the field is absent, the UE applies the SCS of the associcated BWP. 
+	-- The value kHz15 corresponds to µ=0, kHz30 to µ=1, and so on. Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are 
+	-- applicable. Corresponds to L1 parameter 'resource-pattern-scs' (see 38.214, section FFS_Section)
+	subcarrierSpacing							SubcarrierSpacing 													OPTIONAL,	-- Cond CellLevel
+	-- FFS_Description, FFS_Section
+	mode										ENUMERATED { dynamic, semiStatic },
+	...
+}
+
+-- TAG-RATEMATCHPATTERN-STOP
+-- TAG-RATEMATCHPATTERNID-START
+
+RateMatchPatternId ::=						INTEGER (0..maxNrofRateMatchPatterns-1)
+
+-- TAG-RATEMATCHPATTERNID-STOP
+-- TAG-RATEMATCHPATTERNLTE-CRS-START
+
+RateMatchPatternLTE-CRS ::=				SEQUENCE {
+	-- Center of the LTE carrier. Corresponds to L1 parameter 'center-subcarrier-location' (see 38.214, section 5.1.4)
+	carrierFreqDL							INTEGER (0..16383),
+	-- BW of the LTE carrier in numbewr of PRBs. Corresponds to L1 parameter 'BW' (see 38.214, section 5.1.4)
+	carrierBandwidthDL						ENUMERATED {n6, n15, n25, n50, n75, n100, spare2, spare1},
+	-- LTE MBSFN subframe configuration. Corresponds to L1 parameter 'MBSFN-subframconfig' (see 38.214, section 5.1.4)
+	-- FFS_ASN1: Import the LTE MBSFN-SubframeConfigList
+	mbsfn-SubframeConfigList				EUTRA-MBSFN-SubframeConfigList						OPTIONAL,	-- Need M
+	-- Number of LTE CRS antenna port to rate-match around. 
+	-- Corresponds to L1 parameter 'rate-match-resources-numb-LTE-CRS-antenna-port' (see 38.214, section 5.1.4)
+	nrofCRS-Ports							ENUMERATED {n1, n2, n4},
+	-- Shifting value v-shift in LTE to rate match around LTE CRS
+	-- Corresponds to L1 parameter 'rate-match-resources-LTE-CRS-v-shift' (see 38.214, section 5.1.4)
+	v-Shift									ENUMERATED {n0, n1, n2, n3, n4, n5}			
+}
+
+-- TAG-RATEMATCHPATTERNLTE-CRS-STOP
+-- TAG-REPORT-CONFIG-ID-START
+
+ReportConfigId ::=							INTEGER (1..maxReportConfigId)
+
+-- TAG-REPORT-CONFIG-ID-STOP
+-- TAG-REPORT-CONFIG-START
+
+ReportConfigNR ::=							SEQUENCE {
+	reportType									CHOICE {
+		periodical									PeriodicalReportConfig, 
+		eventTriggered								EventTriggerConfig,
+-- reportCGI is to be completed before the end of Rel-15.
+		reportCGI									ENUMERATED {ffsTypeAndValue},
+		...
+	}
+}
+
+-- FFS / TODO: Consider separating trgger configuration (trigger, periodic, ...) from report configuration.
+-- Current structure allows easier definiton of new events and new report types e.g. CGI, etc.
+EventTriggerConfig::=						SEQUENCE {
+	eventId										CHOICE {
+		eventA1										SEQUENCE {
+			a1-Threshold								MeasTriggerQuantity,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger
+		},
+		eventA2										SEQUENCE {
+			a2-Threshold								MeasTriggerQuantity,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger
+		},
+		eventA3										SEQUENCE {
+			a3-Offset									MeasTriggerQuantityOffset,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger,
+			useWhiteCellList							BOOLEAN														
+		},
+		eventA4										SEQUENCE {
+			a4-Threshold								MeasTriggerQuantity,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger,
+			useWhiteCellList							BOOLEAN														
+		},
+		eventA5										SEQUENCE {
+			a5-Threshold1								MeasTriggerQuantity,
+			a5-Threshold2								MeasTriggerQuantity,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger,
+			useWhiteCellList							BOOLEAN														
+		},
+		eventA6										SEQUENCE {
+			a6-Offset									MeasTriggerQuantityOffset,
+			reportOnLeave								BOOLEAN,
+			hysteresis									Hysteresis,
+			timeToTrigger								TimeToTrigger,
+			useWhiteCellList							BOOLEAN														
+		},
+		...
+	},
+
+	rsType										NR-RS-Type,
+
+	-- Common reporting config (at least to periodical and eventTriggered)
+	reportInterval								ReportInterval,
+	reportAmount								ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity},
+
+	-- Cell reporting configuration
+	reportQuantityCell							MeasReportQuantity,
+	maxReportCells								INTEGER (1..maxCellReport),
+
+	-- RS index reporting configuration
+	reportQuantityRsIndexes						MeasReportQuantity													OPTIONAL,	-- Need M
+	maxNrofRSIndexesToReport					INTEGER (1..maxNrofIndexesToReport) 								OPTIONAL,	-- Need M
+	includeBeamMeasurements						BOOLEAN,
+	-- If configured the UE includes the best neighbour cells per serving frequency
+	reportAddNeighMeas							ENUMERATED {setup}									OPTIONAL,		-- Need R
+	...
+
+}
+
+PeriodicalReportConfig ::=					SEQUENCE {
+	rsType										NR-RS-Type,
+
+	-- Common reporting config (at least to periodical and eventTriggered)
+	reportInterval								ReportInterval,
+	reportAmount								ENUMERATED {r1, r2, r4, r8, r16, r32, r64, infinity},
+
+	-- Cell reporting configuration
+	reportQuantityCell							MeasReportQuantity,
+	maxReportCells								INTEGER (1..maxCellReport),
+
+	-- RS index reporting configuration
+	reportQuantityRsIndexes						MeasReportQuantity													OPTIONAL,	-- Need R
+	maxNrofRsIndexesToReport					INTEGER (1..maxNrofIndexesToReport) 									OPTIONAL,	-- Need R
+	includeBeamMeasurements						BOOLEAN,
+	useWhiteCellList							BOOLEAN,
+	...
+
+}
+
+NR-RS-Type ::= ENUMERATED {ssb, csi-rs}
+
+MeasTriggerQuantity ::=						CHOICE {
+	rsrp										RSRP-Range,
+	rsrq										RSRQ-Range,
+	sinr										SINR-Range
+}
+
+MeasTriggerQuantityOffset ::=				CHOICE {
+	rsrp										INTEGER (-30..30),														
+	rsrq										INTEGER (-30..30),														
+	sinr										INTEGER (-30..30)														
+}
+
+			
+MeasReportQuantity ::=						SEQUENCE {
+	rsrp										BOOLEAN,
+	rsrq										BOOLEAN,
+	sinr										BOOLEAN
+}
+
+
+-- TAG-REPORT-CONFIG-START
+-- TAG-REPORT-CONFIG-TO-ADD-MOD-LIST-START
+
+ReportConfigToAddModList ::=		SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigToAddMod
+
+ReportConfigToAddMod ::=	SEQUENCE {
+	reportConfigId						ReportConfigId,
+	reportConfig						CHOICE {
+		reportConfigNR						ReportConfigNR,
+		...
+	}
+}
+
+-- TAG- REPORT-CONFIG-TO-ADD-MOD-LIST-STOP
+
+ReportInterval ::=					ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, ms20480, ms40960, min1,
+													min6, min12, min30 }
+
+-- TAG-RLC-CONFIG-START
+
+RLC-Config ::=						CHOICE {
+	am									SEQUENCE {
+		ul-AM-RLC							UL-AM-RLC,
+		dl-AM-RLC							DL-AM-RLC
+	},
+	um-Bi-Directional					SEQUENCE {
+		ul-UM-RLC							UL-UM-RLC,
+		dl-UM-RLC							DL-UM-RLC
+	},
+	um-Uni-Directional-UL				SEQUENCE {
+		ul-UM-RLC							UL-UM-RLC
+	},
+	um-Uni-Directional-DL				SEQUENCE {
+		dl-UM-RLC							DL-UM-RLC
+	},
+	...
+}
+
+UL-AM-RLC ::=						SEQUENCE {
+	sn-FieldLength						SN-FieldLengthAM,
+	t-PollRetransmit					T-PollRetransmit,
+	pollPDU								PollPDU,
+	pollByte							PollByte,
+	maxRetxThreshold					ENUMERATED { t1, t2, t3, t4, t6, t8, t16, t32 }
+}
+
+DL-AM-RLC ::=						SEQUENCE {
+	sn-FieldLength						SN-FieldLengthAM,
+	t-Reassembly						T-Reassembly,
+	t-StatusProhibit					T-StatusProhibit
+}
+
+UL-UM-RLC ::=						SEQUENCE {
+	sn-FieldLength						SN-FieldLengthUM
+}
+
+DL-UM-RLC ::=						SEQUENCE {
+	sn-FieldLength						SN-FieldLengthUM,
+	t-Reassembly						T-Reassembly
+}
+
+T-PollRetransmit ::=				ENUMERATED {
+										ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+										ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+										ms75, ms80, ms85, ms90, ms95, ms100, ms105,
+										ms110, ms115, ms120, ms125, ms130, ms135,
+										ms140, ms145, ms150, ms155, ms160, ms165,
+										ms170, ms175, ms180, ms185, ms190, ms195,
+										ms200, ms205, ms210, ms215, ms220, ms225,
+										ms230, ms235, ms240, ms245, ms250, ms300,
+										ms350, ms400, ms450, ms500, ms800, ms1000,
+										ms2000, ms4000, spare5, spare4, spare3,
+										spare2, spare1}
+
+
+PollPDU ::=							ENUMERATED {
+										p4, p8, p16, p32, p64, p128, p256, p512, p1024, p2048, p4096, p6144, p8192, p12288, p16384, p20480,
+										p24576, p28672, p32768, p40960, p49152, p57344, p65536, infinity, spare8, spare7, spare6, spare5, spare4,
+										spare3, spare2, spare1}
+
+PollByte ::=						ENUMERATED {
+										kB1, kB2, kB5, kB8, kB10, kB15, kB25, kB50, kB75,
+										kB100, kB125, kB250, kB375, kB500, kB750, kB1000,
+										kB1250, kB1500, kB2000, kB3000, kB4000, kB4500,
+										kB5000, kB5500, kB6000, kB6500, kB7000, kB7500,
+										mB8, mB9, mB10, mB11, mB12, mB13, mB14, mB15,
+										mB16, mB17, mB18, mB20, mB25, mB30, mB40, infinity,
+										spare20, spare19, spare18, spare17, spare16,
+										spare15, spare14, spare13, spare12, spare11,
+										spare10, spare9, spare8, spare7, spare6, spare5,
+										spare4, spare3, spare2, spare1}
+
+T-Reassembly ::=					ENUMERATED {
+										ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+										ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+										ms75, ms80, ms85, ms90, ms95, ms100, ms110,
+										ms120, ms130, ms140, ms150, ms160, ms170,
+										ms180, ms190, ms200, spare1}
+
+T-StatusProhibit ::=				ENUMERATED {
+										ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
+										ms40, ms45, ms50, ms55, ms60, ms65, ms70,
+										ms75, ms80, ms85, ms90, ms95, ms100, ms105,
+										ms110, ms115, ms120, ms125, ms130, ms135,
+										ms140, ms145, ms150, ms155, ms160, ms165,
+										ms170, ms175, ms180, ms185, ms190, ms195,
+										ms200, ms205, ms210, ms215, ms220, ms225,
+										ms230, ms235, ms240, ms245, ms250, ms300,
+										ms350, ms400, ms450, ms500, ms800, ms1000,
+										ms1200, ms1600, ms2000, ms2400, spare2, spare1}
+
+SN-FieldLengthUM ::=				ENUMERATED {size6, size12}
+SN-FieldLengthAM ::=				ENUMERATED {size12, size18}
+
+-- TAG-RLC-CONFIG-STOP
+-- TAG-RLF-TIMERS-AND-CONSTANTS-START
+
+RLF-TimersAndConstants ::= 			SEQUENCE {
+	t310								ENUMERATED {ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, ms4000, ms6000},
+	n310								ENUMERATED {n1, n2, n3, n4, n6, n8, n10, n20},
+	n311								ENUMERATED {n1, n2, n3, n4, n5, n6, n8, n10},
+	...
+}
+
+-- TAG-RLF-TIMERS-AND-CONSTANTS-STOP
+-- TAG-RNTI-VALUE-START
+
+RNTI-Value ::=						INTEGER (0..65535)
+
+-- TAG-RNTI-VALUE-STOP
+-- TAG-RSRP-RANGE-START
+
+RSRP-Range ::=						INTEGER(0..124)
+
+-- TAG-RSRP-RANGE-STOP
+-- TAG-RSRQ-RANGE-START
+
+RSRQ-Range ::=						INTEGER(0..127)
+
+-- TAG-RSRQ-RANGE-STOP
+-- TAG-SCELL-INDEX-START
+
+-- The value range is shared across the Cell Groups 
+SCellIndex ::=						INTEGER (1..31)
+
+-- TAG-SCELL-INDEX-STOP
+-- TAG-SCHEDULING-REQUEST-CONFIG-START
+
+SchedulingRequestConfig ::= 		SEQUENCE {
+	schedulingRequestToAddModList		SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestToAddMod			OPTIONAL, -- Need N
+	schedulingRequestToReleaseList		SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestId				OPTIONAL  -- Need N
+}
+
+SchedulingRequestToAddMod ::=		SEQUENCE {
+	sr-ConfigIndex		SchedulingRequestId,
+
+	sr-ProhibitTimer					ENUMERATED {ms1, ms2, ms4, ms8, ms16, ms32, ms64, ms128}					OPTIONAL,	-- Need S
+	sr-TransMax							ENUMERATED { n4, n8, n16, n32, n64, spare3, spare2, spare1}
+}
+
+SchedulingRequestId ::=	INTEGER (0..7)
+
+-- FFS_TODO: provide resources for each SchedulingRequestID in ServingCellConfig (TBD whether directly, in PUCCH-Config, in each BWP)
+
+-- TAG-SCHEDULING-REQUEST-CONFIG-STOP
+-- TAG-SCHEDULING-REQUEST-RESOURCE-CONFIG-START
+
+SchedulingRequestResourceConfig ::=			SEQUENCE {
+	schedulingRequestResourceId						SchedulingRequestResourceId,
+	-- The ID of the SchedulingRequestConfig that uses this scheduling request resource.
+	schedulingRequestID								SchedulingRequestId,
+	-- SR periodicity and offset in number of slots. Corresponds to L1 parameter 'SR-periodicity' and 'SR-offset' (see 38.213, section 9.2.2)	
+	-- The following periodicities may be configured depending on the chosen subcarrier spacing:
+	-- SCS =  15 kHz: 2sym, 7sym, 1sl, 2sl, 4sl, 5sl, 8sl, 10sl, 16sl, 20sl, 40sl, 80sl
+	-- SCS =  30 kHz: 2sym, 7sym, 1sl, 2sl, 4sl, 8sl, 10sl, 16sl, 20sl, 40sl, 80sl, 160sl
+	-- SCS =  60 kHz: 2sym, 7sym/6sym, 1sl, 2sl, 4sl, 8sl, 16sl, 20sl, 40sl, 80sl, 160sl, 320sl
+	-- SCS = 120 kHz: 2sym, 7sym, 1sl, 2sl, 4sl, 8sl, 16sl, 40sl, 80sl, 160sl, 320sl, sl640
+	-- sym6or7 corresponds to 6 symbols if extended cyclic prefix and a SCS of 60 kHz are configured, otherwise it corresponds to 7 symbols.
+	-- For periodicities sym2, sym7 and sl1 the UE assumes an offset of 0 slots.
+	periodicityAndOffset							CHOICE {
+		sym2											NULL,						
+		sym6or7											NULL,						
+		sl1												NULL,						-- Recurs in every slot
+		sl2												INTEGER (0..1),
+		sl4												INTEGER (0..3),
+		sl5												INTEGER (0..4),
+		sl8												INTEGER (0..7),
+		sl10											INTEGER (0..9),
+		sl16											INTEGER (0..15),
+		sl20											INTEGER (0..19),
+		sl40											INTEGER (0..39),
+		sl80											INTEGER (0..79),
+		sl160											INTEGER (0..159),
+		sl320											INTEGER (0..319),
+		sl640											INTEGER (0..639)
+	}																														OPTIONAL,	-- Need M
+	-- ID of the PUCCH resource in which the UE shall send the scheduling request. The 
+	-- actual PUCCH-Resource is configured in PUCCH-Config of the same UL BWP and serving cell as this SchedulingRequestResourceConfig. 
+	-- The network configures a PUCCH-Resource of PUCCH-format0 or PUCCH-format1 
+	-- (other formats not supported). Corresponds to L1 parameter 'SR-resource' (see 38.213, section 9.2.2)
+	resource										PUCCH-ResourceId														OPTIONAL	-- Need M
+}
+
+-- TAG-SCHEDULING-REQUEST-RESOURCE-CONFIG-STOP
+-- TAG-SCHEDULINGREQUESTRESOURCEID-START
+
+SchedulingRequestResourceId ::=					INTEGER (1..maxNrofSR-Resources)
+
+-- TAG-SCHEDULINGREQUESTRESOURCEID-STOP
+-- TAG-SCRAMBLING-ID-START
+
+ScramblingId ::=					INTEGER (0..1023)
+
+-- TAG-SCRAMBLING-ID-STOP
+-- TAG-SCS-SPECIFIC-CARRIER-START
+
+SCS-SpecificCarrier ::=			SEQUENCE {
+	-- Offset in frequency domain between Point A (lowest subcarrier of common RB 0) and the lowest usable subcarrier on this carrier
+	-- in number of PRBs (using the subcarrierSpacing defined for this carrier). The maximum value corresponds to 275*8-1. 
+	-- Corresponds to L1 parameter 'offset-pointA-low-scs' (see 38.211, section FFS_Section)
+	offsetToCarrier				INTEGER (0..2199),
+	-- Subcarrier spacing of this carrier. It is used to convert the offsetToCarrier into an actual frequency. 
+	-- Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable.
+	-- Corresponds to L1 parameter 'ref-scs' (see 38.211, section FFS_Section)
+	subcarrierSpacing					SubcarrierSpacing,
+	-- Corresponds to L1 parameter k0 (see 38.211, section 5.3.1). n-6 corresponds to value -6, n0 corresponds to value 0 and n6 corresponds
+	-- to value +6.
+	k0									ENUMERATED {n-6, n0, n6}, 
+	-- Width of this carrier in number of PRBs (using the subcarrierSpacing defined for this carrier)
+	-- Corresponds to L1 parameter 'BW' (see 38.211, section FFS_Section)
+	carrierBandwidth					INTEGER (1..maxNrofPhysicalResourceBlocks),
+	...
+}
+
+-- TAG-SCS-SPECIFIC-CARRIER-STOP 
+-- TAG-SDAP-CONFIG-START
+
+SDAP-Config ::=						SEQUENCE {
+	pdu-Session							PDU-SessionID,
+
+	-- FFS: separate configuration for UL and DL
+	sdap-HeaderDL 						ENUMERATED {present, absent},
+	sdap-HeaderUL 						ENUMERATED {present, absent},
+	defaultDRB							BOOLEAN,
+
+	-- A list of QoS-Flow-IDs that the UE shall map to the DRB of this SDAP-Config.
+	mappedQoS-FlowsToAdd				SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI 									OPTIONAL, -- Need N
+	-- A list of QoS-Flow-IDs that the UE shall no longer map to the DRB of this SDAP-Config.
+	mappedQoS-FlowsToRelease			SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI 									OPTIONAL, -- Need N
+	...
+}
+
+QFI ::= 							INTEGER (0..maxQFI)
+
+PDU-SessionID ::= INTEGER (0..255)
+
+-- TAG-SDAP-CONFIG-STOP
+-- TAG-SEARCHSPACE-START
+
+SearchSpace ::= 						SEQUENCE {
+	-- Identity of the search space. SearchSpaceId = 0 identifies the SearchSpace configured via PBCH (MIB) or ServingCellConfigCommon.
+	-- The searchSpaceId is unique among the BWPs of a Serving Cell. 
+	searchSpaceId							SearchSpaceId,
+
+	-- The CORESET applicable for this SearchSpace. 
+	-- Value 0 identifies the common CORESET configured in MIB and in ServingCellConfigCommon
+	-- Values 1..maxNrofControlResourceSets-1 identify CORESETs configured by dedicated signalling
+	controlResourceSetId					ControlResourceSetId														OPTIONAL, 	-- Cond SetupOnly
+
+	-- Slots for PDCCH Monitoring configured as periodicity and offset. Corresponds to L1 parameters 'Montoring-periodicity-PDCCH-slot' and 
+	-- 'Montoring-offset-PDCCH-slot' (see 38.213, section 10)
+	monitoringSlotPeriodicityAndOffset		CHOICE {
+		sl1										NULL, 
+		sl2										INTEGER (0..1), 
+		sl4										INTEGER (0..3), 
+		sl5 									INTEGER (0..4),
+		sl8										INTEGER (0..7), 
+		sl10 									INTEGER (0..9),
+		sl16 									INTEGER (0..15),
+		sl20 									INTEGER (0..19)
+	}																													OPTIONAL,	-- Cond Setup
+
+	-- Symbols for PDCCH monitoring in the slots configured for PDCCH monitoring (see monitoringSlotPeriodicityAndOffset).
+	-- The most significant (left) bit represents the first OFDM in a slot. The least significant (right) bit represents the last symbol. 
+	-- Corresponds to L1 parameter 'Montoring-symbols-PDCCH-within-slot' (see 38.213, section 10)
+	monitoringSymbolsWithinSlot					BIT STRING (SIZE (14))													OPTIONAL, 	-- Cond Setup
+
+	-- Number of PDCCH candidates per aggregation level. Corresponds to L1 parameter 'Aggregation-level-1' to 'Aggregation-level-8'.
+	-- The number of candidates and aggregation levels configured here applies to all formats unless a particular value is specified or
+	-- a format-specific value is provided (see inside searchSpaceType). 
+	-- (see 38.213, section 10)
+	nrofCandidates							SEQUENCE {
+		aggregationLevel1						ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+		aggregationLevel2						ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+		aggregationLevel4						ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+		aggregationLevel8						ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8},
+		aggregationLevel16						ENUMERATED {n0, n1, n2, n3, n4, n5, n6, n8}
+	}																													OPTIONAL,	-- Cond Setup
+
+	-- Indicates whether this is a common search space (present) or a UE specific search space as well as DCI formats to monitor for.
+	searchSpaceType							CHOICE {
+		-- Configures this search space as common search space (CSS) and DCI formats to monitor.
+		common									SEQUENCE {
+			-- If configured, the UE monitors the DCI formats 0_0 and 1_0 with CRC scrambled by C-RNTI, CS-RNTI (if configured), 
+			-- SP-CSI-RNTI (if configured), RA-RNTI, TC-RNTI, P-RNTI, SI-RNTI
+			dci-Format0-0-AndFormat1-0					SEQUENCE {
+				...
+			}																											OPTIONAL,	-- Need R
+			-- If configured, UE monitors the DCI format format 2_0 with CRC scrambled by SFI-RNTI
+			dci-Format2-0								SEQUENCE {
+				-- The number of PDCCH candidates specifically for format 2-0 for the configured aggregation level.
+				-- If an aggregation level is absent, the UE does not search for any candidates with that aggregation level.
+				-- Corresponds to L1 parameters 'SFI-Num-PDCCH-cand' and 'SFI-Aggregation-Level' (see 38.213, section 11.1.1).
+				nrofCandidates-SFI							SEQUENCE {
+					aggregationLevel1							ENUMERATED {n1, n2}										OPTIONAL,	-- Need R
+					aggregationLevel2							ENUMERATED {n1, n2}										OPTIONAL,	-- Need R
+					aggregationLevel4							ENUMERATED {n1, n2}										OPTIONAL,	-- Need R
+					aggregationLevel8							ENUMERATED {n1, n2}										OPTIONAL,	-- Need R
+					aggregationLevel16							ENUMERATED {n1, n2}										OPTIONAL	-- Need R
+				},
+				...
+			}																											OPTIONAL,	-- Need R
+			-- If configured, UE monitors the DCI format format 2_1 with CRC scrambled by INT-RNTI
+			dci-Format2-1								SEQUENCE {
+				...
+			}																											OPTIONAL,	-- Need R
+			-- If configured, UE monitors the DCI format 2_2 with CRC scrambled by TPC-PUSCH-RNTI or TPC-PUCCH-RNTI
+			dci-Format2-2								SEQUENCE {
+				...
+			}																											OPTIONAL,	-- Need R
+			-- If configured, UE monitors the DCI format 2_3 with CRC scrambled by TPC-SRS-RNTI
+			dci-Format2-3								SEQUENCE {
+				-- Monitoring periodicity of SRS PDCCH in number of slots for DCI format 2-3. 
+				-- Corresponds to L1 parameter 'SRS-monitoring-periodicity' (see 38.212, 38.213, section 7.3.1, 11.3)
+				monitoringPeriodicity				ENUMERATED {n1, n2, n4, n5, n8, n10, n16, n20 }						OPTIONAL, 	-- Cond Setup
+
+				-- The number of PDCCH candidates for DCI format 2-3 for the configured aggregation level.
+				-- Corresponds to L1 parameter 'SRS-Num-PDCCH-cand' (see 38.212, 38.213, section 7.3.1, 11.3)
+				nrofPDCCH-Candidates				ENUMERATED {n1, n2},
+				...
+			}																											OPTIONAL	-- Need R
+		},
+		-- Configures this search space as UE specific search space (USS). The UE monitors the DCI format with CRC scrambled 
+		-- by C-RNTI, CS-RNTI (if configured), TC-RNTI (if a certain condition is met), and SP-CSI-RNTI (if configured)
+		ue-Specific								SEQUENCE {
+			-- Indicates whether the UE monitors in this USS for DCI formats 0-0 and 1-0 or for formats 0-1 and 1-1.
+			dci-Formats									ENUMERATED {formats0-0-And-1-0, formats0-1-And-1-1},
+			... 
+		}
+	}																													OPTIONAL	-- Cond Setup
+}
+-- TAG-SEARCHSPACE-STOP
+-- TAG-SEARCHSPACEID-START
+
+SearchSpaceId ::= 							INTEGER (0..maxNrofSearchSpaces-1)
+
+-- TAG-SEARCHSPACEID-STOP
+-- TAG-SECURITY-ALGORITHM-CONFIG-START
+
+SecurityAlgorithmConfig ::=			SEQUENCE {
+	cipheringAlgorithm					CipheringAlgorithm,
+	integrityProtAlgorithm				IntegrityProtAlgorithm			OPTIONAL,	-- Need R	
+	...
+}
+
+IntegrityProtAlgorithm ::=			ENUMERATED {
+											nia0, nia1, nia2, nia3, spare4, spare3,
+											spare2, spare1, ...}
+
+CipheringAlgorithm ::=				ENUMERATED {
+											nea0, nea1, nea2, nea3, spare4, spare3,
+											spare2, spare1, ...}
+
+-- TAG-SECURITY-ALGORITHM-CONFIG-STOP
+-- TAG-SERV-CELL-INDEX-START
+
+ServCellIndex ::=					INTEGER (0..maxNrofServingCells-1)
+
+-- TAG-SERV-CELL-INDEX-STOP
+-- TAG-SERVING-CELL-CONFIG-START
+
+ServingCellConfig ::=		SEQUENCE {
+	-- L1 parameters:
+
+	tdd-UL-DL-ConfigurationDedicated	TDD-UL-DL-ConfigDedicated												OPTIONAL, -- Cond TDD
+
+	-- The dedicated (UE-specific) configuration for the initial downlink bandwidth-part.
+	initialDownlinkBWP					BWP-DownlinkDedicated													OPTIONAL,	-- Cond ServCellAdd
+
+	-- List of additional downlink bandwidth parts to be released. (see 38.211, 38.213, section 12). 
+	downlinkBWP-ToReleaseList			SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id								OPTIONAL,	-- Need N
+	-- List of additional downlink bandwidth parts to be added or modified. (see 38.211, 38.213, section 12). 
+	downlinkBWP-ToAddModList			SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Downlink						OPTIONAL, 	-- Need N
+
+	-- If configured for an SpCell, this field contains the ID of the DL BWP to be activated upon performing the reconfiguration 
+	-- in which it is received. If the field is absent, the RRC reconfiguration does not impose a BWP switch (corresponds to L1 
+	-- parameter 'active-BWP-DL-Pcell'). 
+	-- If configured for an SCell, this field contains the ID of the downlink bandwidth part to be used upon MAC-activation of an  SCell. 
+	-- If not provided, the UE uses the default BWP.
+	-- The initial bandwidth part is referred to by BWP-Id = 0.
+	firstActiveDownlinkBWP-Id			BWP-Id																	OPTIONAL,	-- Need R
+
+	-- The duration in ms after which the UE falls back to the default Bandwidth Part. (see 38.321, section 5.15) 
+	-- The value 0.5 ms is only applicable for carriers >6 GHz. 
+	-- When the network releases the timer configuration, the UE stops the timer without swithching to the default BWP.
+	bwp-InactivityTimer					ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40,ms50, ms60, ms80,
+													ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare10, spare9, 
+													spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } OPTIONAL,	--	Need R	
+
+	-- Corresponds to L1 parameter 'default-DL-BWP'. The initial bandwidth part is referred to by BWP-Id = 0.
+	-- ID of the downlink bandwidth part to be used upon expiry of txxx.
+	-- This field is UE specific. When the field is absent the UE uses the the initial BWP as default BWP.
+	-- (see 38.211, 38.213, section 12 and 38.321, section 5.15)
+	defaultDownlinkBWP-Id				BWP-Id																	OPTIONAL, 	-- Need M
+
+	uplinkConfig						UplinkConfig															OPTIONAL,	-- Cond ServCellAdd-UL
+	supplementaryUplink					UplinkConfig 															OPTIONAL, 	-- Cond ServCellAdd-SUL
+
+
+	-- PDSCH releated parameters that are not BWP-specific.
+	pdsch-ServingCellConfig				SetupRelease { PDSCH-ServingCellConfig }								OPTIONAL,	-- Need M
+	csi-MeasConfig						SetupRelease { CSI-MeasConfig }											OPTIONAL,	-- Need M
+	
+	-- Includes parameters for configuration of carrier based SRS switching
+	-- Corresponds to L1 parameter 'SRS-CarrierSwitching' (see 38,214, section FFS_Section)
+	carrierSwitching					SetupRelease { SRS-CarrierSwitching	}									OPTIONAL,	-- Need M
+	-- MAC parameters:
+	sCellDeactivationTimer				ENUMERATED {ms20, ms40, ms80, ms160, ms200, ms240, ms320, ms400, ms480, ms520, ms640, 
+												ms720, ms840, ms1280, spare2,spare1}				OPTIONAL,	-- Cond ServingCellWithoutPUCCH
+
+	-- Indicates whether this SCell is cross-carrier scheduled by another serving cell.
+	crossCarrierSchedulingConfig		CrossCarrierSchedulingConfig											OPTIONAL,	-- Need M
+
+	-- Timing Advance Group ID, as specified in TS 38.321 [3],  which this cell belongs to. 
+	tag-Id								TAG-Id,
+	-- Enables the "UE beam lock function (UBF)", which disable changes to the UE beamforming configuration when in NR_RRC_CONNECTED.
+	-- FFS: Parameter added preliminary based on RAN4 LS in R4-1711823. Decide where to place it (maybe ServingCellConfigCommon or 
+	-- in a BeamManagement IE??)
+	ue-BeamLockFunction					ENUMERATED {enabled}													OPTIONAL,	-- Need R
+
+	-- Indicates whether UE shall apply as pathloss reference either the downlink of PCell or of SCell that corresponds with this uplink
+	-- (see 38.213, section 7)
+	pathlossReferenceLinking			ENUMERATED {pCell, sCell}												OPTIONAL		-- Cond SCellOnly
+}
+
+UplinkConfig ::=					SEQUENCE {
+	-- Configuration of UL BWPs (including BWP-specific parameters:
+
+	-- The dedicated (UE-specific) configuration for the initial uplink bandwidth-part.
+	initialUplinkBWP					BWP-UplinkDedicated														OPTIONAL, 	-- Cond ServCellAdd
+
+	-- The additional bandwidth parts for uplink. In case of TDD uplink- and downlink BWP with the same bandwidthPartId are considered 
+	-- as a BWP pair and must have the same center frequency. 
+	uplinkBWP-ToReleaseList				SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id								OPTIONAL,	-- Need N
+	uplinkBWP-ToAddModList				SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Uplink							OPTIONAL, 	-- Need N
+
+	-- If configured for an SpCell, this field contains the ID of the DL BWP to be activated upon performing the reconfiguration 
+	-- in which it is received. If the field is absent, the RRC reconfiguration does not impose a BWP switch (corresponds to 
+	-- L1 parameter 'active-BWP-UL-Pcell').
+	-- If configured for an SCell, this field contains the ID of the uplink bandwidth part to be used upon MAC-activation of an  SCell. 
+	-- If not provided, the UE uses the FFS: default BWP.
+	-- The initial bandwidth part is referred to by BandiwdthPartId = 0.
+	firstActiveUplinkBWP-Id				BWP-Id																	OPTIONAL,	-- Need R
+
+	-- Configuration that is common across the UL BWPs:
+
+	-- PUSCH related parameters that are not BWP-specific.
+	pusch-ServingCellConfig				SetupRelease { PUSCH-ServingCellConfig }								OPTIONAL,	-- Need M
+	...
+}
+
+-- TAG-SERVING-CELL-CONFIG-STOP
+-- TAG-SERVING-CELL-CONFIG-COMMON-START
+
+ServingCellConfigCommon ::=		SEQUENCE {
+	physCellId							PhysCellId													OPTIONAL, -- Cond HOAndServCellAdd,
+	frequencyInfoDL						FrequencyInfoDL												OPTIONAL, -- Cond InterFreqHOAndServCellAdd
+	-- The initial downlink BWP configuration for a SpCell (PCell of MCG or SCG). 
+	initialDownlinkBWP					BWP-DownlinkCommon											OPTIONAL,	-- Cond ServCellAdd
+
+	uplinkConfigCommon					UplinkConfigCommon											OPTIONAL, -- Cond ServCellAdd-UL 
+	supplementaryUplinkConfig					UplinkConfigCommon									OPTIONAL, -- Cond ServCellAdd-SUL
+
+
+	-- Indicates the time domain positions of the transmitted SS-blocks in an SS-burst. The first/ leftmost bit corresponds to SS/PBCH 
+	-- block index 0, the second bit corresponds to SS/PBCH block index 1, and so on. Value 0 in the bitmap indicates that the 
+	-- corresponding SS/PBCH block is not transmitted while value 1 indicates that the corresponding SS/PBCH block is transmitted.
+	-- Corresponds to L1 parameter 'SSB-Transmitted' (see 38.213, section 4.1)
+	ssb-PositionsInBurst				CHOICE {
+		-- bitmap for sub 3 GHz
+		shortBitmap							BIT STRING (SIZE (4)),
+		-- bitmap for 3-6 GHz
+		mediumBitmap						BIT STRING (SIZE (8)),
+		-- bitmap for above 6 GHz
+		longBitmap							BIT STRING (SIZE (64))
+	}																								OPTIONAL, -- Need R,
+	-- The SSB periodicity in msec for the rate matching purpose. If the field is absent, the UE applies the value ms5.
+	-- (see 38.211, section [7.4.3.1])
+	ssb-periodicityServingCell			ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }			OPTIONAL,	-- Need S
+	-- Position of (first) DL DM-RS (see 38.211, section 7.4.1.1.1)
+	dmrs-TypeA-Position					ENUMERATED {pos2, pos3},
+
+	-- Parameters to determine an LTE CRS pattern that the UE shall rate match around.
+	lte-CRS-ToMatchAround					SetupRelease { RateMatchPatternLTE-CRS } 				OPTIONAL,	-- Need M
+
+	-- Resources patterns which the UE should rate match PDSCH around. The UE rate matches around the union of all resources 
+	-- indicated in the nested bitmaps. Rate match patterns defined here on cell level apply only to PDSCH of the same numerology.
+	-- Corresponds to L1 parameter 'Resource-set-cekk' (see 38.214, section 5.1.2.2.3)
+	rateMatchPatternToAddModList			SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern		OPTIONAL, -- Need N
+	rateMatchPatternToReleaseList			SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId		OPTIONAL, -- Need N
+
+	-- Subcarrier spacing of SSB. Used only for non-initial access (e.g. SCells, PCell of SCG).
+	-- If the field is absent the UE shall assume the default value of the band. 
+	-- Only the values 15 or 30 kHz (<6GHz), 120 or 240 kHz (>6GHz) are applicable.
+	subcarrierSpacing				SubcarrierSpacing												OPTIONAL, -- Need S
+	-- A cell-specific TDD UL/DL configuration. Corresponds to L1 parameter 'UL-DL-configuration-common' (see 38.213, section 11.1)
+	tdd-UL-DL-ConfigurationCommon		TDD-UL-DL-ConfigCommon										OPTIONAL, -- Cond TDD
+	-- A second cell-specific TDD UL/DL configuration. When tdd-UL-DL-ConfigurationCommon2 is configured, the cell specific DL/UL 
+	-- pattern is a concatenation of the pattern specified in tdd-UL-DL-ConfigurationCommon and the pattern specified in 
+	-- tdd-UL-DL-ConfigurationCommon2. Corresponds to L1 parameter 'UL-DL-configuration-common-Set2' (see 38.211, section 11.1)
+	tdd-UL-DL-ConfigurationCommon2		TDD-UL-DL-ConfigCommon										OPTIONAL, -- Cond TDD
+	-- TX power that the NW used for SSB transmission. The UE uses it to estimate the RA preamble TX power. 
+	-- (see 38.213, section 7.4)
+	ss-PBCH-BlockPower					INTEGER (-60..50),
+	...
+}
+
+UplinkConfigCommon ::=				SEQUENCE {
+	-- Absolute uplink frequency configuration and subcarrier specific virtual carriers.
+	frequencyInfoUL						FrequencyInfoUL												OPTIONAL, -- Cond InterFreqHOAndServCellAdd
+	-- The initial uplink BWP configuration for a SpCell (PCell of MCG or SCG). Corresponds to L1 parameter 'initial-UL-BWP'. 
+	-- (see 38.331, section FFS_Section).
+	initialUplinkBWP			BWP-UplinkCommon													OPTIONAL	-- Cond ServCellAdd
+}
+
+-- TAG-SERVING-CELL-CONFIG-COMMON-STOP 
+-- TAG-SINR-RANGE-START
+
+SINR-Range ::=						INTEGER(0..127)
+
+-- TAG-SINR-RANGE-STOP
+-- TAG-SLOTFORMATCOMBINATIONSPERCELL-START
+
+-- The SlotFormatCombinations applicable for one serving cell. Corresponds to L1 parameter 'cell-to-SFI' (see 38.213, section 11.1.1)
+SlotFormatCombinationsPerCell ::=								SEQUENCE {
+	-- The ID of the serving cell for which the slotFormatCombinations are applicable
+	servingCellId								ServCellIndex,
+
+	-- Reference subcarrier spacing for this Slot Format Combination. Corresponds to L1 parameter 'SFI-scs' (see 38.213, section FFS_Section)
+	subcarrierSpacing							SubcarrierSpacing,
+	-- Reference subcarrier spacing for a Slot Format Combination on an FDD or SUL cell. 
+	-- Corresponds to L1 parameter 'SFI-scs2' (see 38.213, section FFS_Section).
+	-- For FDD, subcarrierSpacing (SFI-scs) is the reference SCS for DL BWP and subcarrierSpacing2 (SFI-scs2) is the reference SCS for UL BWP.
+	-- For SUL, subcarrierSpacing (SFI-scs) is the reference SCS for non-SUL carrier and subcarrierSpacing2 (SFI-scs2) is the reference 
+	-- SCS for SUL carrier. 
+	subcarrierSpacing2							SubcarrierSpacing															OPTIONAL,	-- Need R
+
+	-- A list with SlotFormatCombinations. Each SlotFormatCombination comprises of one or more SlotFormats (see 38.211, section 4.3.2)
+	-- FFS_CHECK: RAN1 indicates that the combinations could be of two different types... but they don't specify the second
+	slotFormatCombinations						SEQUENCE (SIZE (1..maxNrofSlotFormatCombinationsPerSet)) OF SlotFormatCombination	OPTIONAL,
+
+	-- The (starting) position (bit) of the slotFormatCombinationId (SFI-Index) for this serving cell (servingCellId) within the DCI payload. 
+	-- Corresponds to L1 parameter 'SFI-values' (see 38.213, section FFS_Section)
+	positionInDCI							INTEGER(0..maxSFI-DCI-PayloadSize-1)													OPTIONAL,
+	...
+}
+
+SlotFormatCombination ::= 					SEQUENCE {
+	-- This ID is used in the DCI payload to dynamically select this SlotFormatCombination.
+	-- Corresponds to L1 parameter 'SFI-index' (see 38.213, section FFS_Section)
+	slotFormatCombinationId						SlotFormatCombinationId,
+	-- Slot formats that occur in consecutive slots in time domain order as listed here. The the slot formats are 
+	-- defined in 38.211, table 4.3.2-3 and numbered with 0..255.
+	slotFormats									SEQUENCE (SIZE (1..maxNrofSlotFormatsPerCombination)) OF INTEGER (0..255)
+}
+
+-- SFI index that is assoicated with a certian slot-format-combination
+-- Corresponds to L1 parameter 'SFI-index' (see 38.213, section FFS_Section)
+SlotFormatCombinationId	::=					INTEGER (0..maxNrofSlotFormatCombinationsPerSet-1)
+
+-- TAG-SLOTFORMATCOMBINATIONSPERCELL-STOP
+-- TAG-SLOTFORMATINDICATOR-START
+
+SlotFormatIndicator ::= 		SEQUENCE {
+	-- RNTI used for SFI on the given cell
+	-- Corresponds to L1 parameter 'SFI-RNTI' (see 38.213, section 11.1.1)
+	sfi-RNTI						RNTI-Value,
+
+	-- Total length of the DCI payload scrambled with SFI-RNTI. 
+	-- Corresponds to L1 parameter 'SFI-DCI-payload-length' (see 38.213, section 11.1.1)
+	dci-PayloadSize					INTEGER (1..maxSFI-DCI-PayloadSize),
+
+	-- A list of SlotFormatCombinations for the UE's serving cells.
+	-- Corresponds to L1 parameter 'SFI-cell-to-SFI' (see 38.213, section 11.1.1)
+	slotFormatCombToAddModList		SEQUENCE (SIZE(1..maxNrofAggregatedCellsPerCellGroup)) OF SlotFormatCombinationsPerCell	OPTIONAL,	-- Need N
+	slotFormatCombToReleaseList		SEQUENCE (SIZE(1..maxNrofAggregatedCellsPerCellGroup)) OF ServCellIndex					OPTIONAL,	-- Need N
+	...
+}
+
+-- TAG-SLOTFORMATINDICATOR-STOP
+-- TAG-SPS-CONFIG-START
+
+-- Downlink SPS may be configured on the PCell as well as on SCells. But it shall not be configured for more than
+-- one serving cell of a cell group at once.
+SPS-Config ::= 							SEQUENCE {
+	-- Periodicity for DL SPS
+	-- Corresponds to L1 parameter 'semiPersistSchedIntervalDL' (see 38.214 and 38.321, section FFS_Section)
+	-- FFS-Value: Support also shorter periodicities for DL?
+	periodicity								ENUMERATED {ms10, ms20, ms32, ms40, ms64, ms80, ms128, ms160, ms320, ms640,
+														spare6, spare5, spare4, spare3, spare2, spare1},
+	-- Number of configured HARQ processes for SPS DL. Corresponds to L1 parameter 'numberOfConfSPS-Processes' (see 38.214, section FFS_Section)
+	nrofHARQ-Processes						INTEGER (1..8),
+	-- HARQ resource for PUCCH for DL SPS. The network configures the resource either as format0 or format1. (see 38.214, section FFS_Section)
+	n1PUCCH-AN									PUCCH-Resource																OPTIONAL	-- Need M
+}
+
+-- TAG-SPS-CONFIG-STOP
+-- TAG-SRB-IDENTITY-START
+
+SRB-Identity ::=					INTEGER (1..3)
+
+-- TAG-SRB-IDENTITY-STOP
+-- TAG-SRS-CONFIG-START
+
+SRS-Config ::= 							SEQUENCE {
+	srs-ResourceSetToReleaseList 			SEQUENCE (SIZE(0..maxNrofSRS-ResourceSets)) OF SRS-ResourceSetId			OPTIONAL, 	-- Need N
+	srs-ResourceSetToAddModList 			SEQUENCE (SIZE(0..maxNrofSRS-ResourceSets)) OF SRS-ResourceSet				OPTIONAL, 	-- Need N
+
+	srs-ResourceToReleaseList 	 			SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-ResourceId					OPTIONAL,	-- Need N
+	srs-ResourceToAddModList 	 			SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-Resource					OPTIONAL, 	-- Need N
+
+
+	-- If absent, UE applies TPC commands via accumulation. If disabled, UE applies the TPC command without accumulation 
+	-- (this applies to SRS when a separate closed loop is configured for SRS)
+	-- Corresponds to L1 parameter 'Accumulation-enabled-srs' (see 38,213, section 7.3)
+	tpc-Accumulation							ENUMERATED {disabled}													OPTIONAL,	-- Need S
+	...
+}
+
+SRS-ResourceSet ::= 					SEQUENCE {
+	-- The ID of this resource set. It is unique in the context of the BWP in which the parent SRS-Config is defined.
+	srs-ResourceSetId						SRS-ResourceSetId,
+	-- The IDs of the SRS-Reosurces used in this SRS-ResourceSet
+	srs-ResourceIdList						SEQUENCE (SIZE(1..maxNrofSRS-ResourcesPerSet)) OF SRS-ResourceId		OPTIONAL,	-- Cond Setup
+
+	resourceType							CHOICE {
+		aperiodic								SEQUENCE {
+			-- The DCI "code point" upon which the UE shall transmit SRS according to this SRS resource set configuration.
+			-- Corresponds to L1 parameter 'AperiodicSRS-ResourceTrigger' (see 38.214, section 6.1.1.2)
+			aperiodicSRS-ResourceTrigger			INTEGER (0..maxNrofSRS-TriggerStates-1),
+			-- ID of CSI-RS resource associated with this SRS resource set. (see 38.214, section 6.1.1.2)
+			csi-RS									NZP-CSI-RS-ResourceId,
+			-- An offset in number of slots between the triggering DCI and the actual transmission of this SRS-ResourceSet.
+			-- If the field is absent the UE applies no offset (value 0)
+			slotOffset								INTEGER (1..8)													OPTIONAL,	-- Need S
+			...
+		},
+		semi-persistent							SEQUENCE {
+			-- ID of CSI-RS resource associated with this SRS resource set in non-codebook based operation.
+			-- Corresponds to L1 parameter 'SRS-AssocCSIRS' (see 38.214, section 6.2.1)
+			associatedCSI-RS		NZP-CSI-RS-ResourceId															OPTIONAL, -- Cond nonCodebook
+			...
+		},
+		periodic								SEQUENCE {
+			-- ID of CSI-RS resource associated with this SRS resource set in non-codebook based operation.
+			-- Corresponds to L1 parameter 'SRS-AssocCSIRS' (see 38.214, section 6.2.1)
+			associatedCSI-RS		NZP-CSI-RS-ResourceId															OPTIONAL, -- Cond nonCodebook
+			...
+		}
+	},
+	-- Indicates if the SRS resource set is used for beam management vs. used for either codebook based or non-codebook based transmission.
+	-- Corresponds to L1 parameter 'SRS-SetUse' (see 38.214, section 6.2.1)
+	-- FFS_CHECK: Isn't codebook/noncodebook already known from the ulTxConfig in the SRS-Config? If so, isn't the only distinction 
+	-- in the set between BeamManagement, AtennaSwitching and "Other”? Or what happens if SRS-Config=Codebook but a Set=NonCodebook?
+	usage									ENUMERATED {beamManagement, codebook, nonCodebook, antennaSwitching},
+
+	-- alpha value for SRS power control. Corresponds to L1 parameter 'alpha-srs' (see 38.213, section 7.3)
+	-- When the field is absent the UE applies the value 1
+	alpha									Alpha																		OPTIONAL, -- Need S
+	-- P0 value for SRS power control. The value is in dBm. Only even values (step size 2) are allowed.
+	-- Corresponds to L1 parameter 'p0-srs' (see 38.213, section 7.3)
+	p0										INTEGER (-202..24)															OPTIONAL, -- Cond Setup
+	-- A reference signal (e.g. a CSI-RS config or a SSblock) to be used for SRS path loss estimation. 
+	-- Corresponds to L1 parameter 'srs-pathlossReference-rs-config' (see 38.213, section 7.3)
+	pathlossReferenceRS						CHOICE {
+		ssb-Index								SSB-Index,
+		csi-RS-Index							NZP-CSI-RS-ResourceId
+	}																													OPTIONAL, -- Need M
+	-- Indicates whether hsrs,c(i) = fc(i,1) or hsrs,c(i) = fc(i,2) (if twoPUSCH-PC-AdjustmentStates are configured) 
+	-- or serarate close loop is configured for SRS. This parameter is applicable only for Uls on which UE also transmits PUSCH.
+	-- If absent or release, the UE applies the value sameAs-Fci1
+	-- Corresponds to L1 parameter 'srs-pcadjustment-state-config' (see 38.213, section 7.3)
+	srs-PowerControlAdjustmentStates		ENUMERATED { sameAsFci2, separateClosedLoop}					OPTIONAL, -- Need S
+	...
+}
+
+SRS-ResourceSetId ::= 					INTEGER (0..maxNrofSRS-ResourceSets-1)
+
+SRS-Resource ::= 						SEQUENCE {
+	srs-ResourceId							SRS-ResourceId,
+	nrofSRS-Ports							ENUMERATED {port1, ports2, ports4},
+	-- The PTRS port index for this SRS resource for non-codebook based UL MIMO. This is only applicable when the corresponding 
+	-- PTRS-UplinkConfig is set to CP-OFDM. The ptrs-PortIndex configured here must be smaller than or equal to the maxNnrofPorts  
+	-- configured in the PTRS-UplinkConfig.
+	-- Corresponds to L1 parameter 'UL-PTRS-SRS-mapping-non-CB' (see 38.214, section 6.1)
+	ptrs-PortIndex							ENUMERATED {n0, n1 }														OPTIONAL,	-- Need R  
+	-- Comb value (2 or 4) and comb offset (0..combValue-1). Corresponds to L1 parameter 'SRS-TransmissionComb' (see 38.214, section 6.2.1)
+	transmissionComb						CHOICE {
+		n2										SEQUENCE {
+			combOffset-n2							INTEGER (0..1),
+			-- Cyclic shift configuration. Corresponds to L1 parameter 'SRS-CyclicShiftConfig' (see 38.214, section 6.2.1)
+			cyclicShift-n2							INTEGER (0..7)
+		}, 
+		n4										SEQUENCE {
+			combOffset-n4							INTEGER (0..3),
+			-- Cyclic shift configuration. Corresponds to L1 parameter 'SRS-CyclicShiftConfig' (see 38.214, section 6.2.1)
+			cyclicShift-n4							INTEGER (0..11)
+		}
+	},
+	-- OFDM symbol location of the SRS resource within a slot including number of OFDM symbols (N = 1, 2 or 4 per SRS resource),
+	-- startPosition (SRSSymbolStartPosition = 0..5; "0" refers to the last symbol, "1" refers to the second last symbol) and 
+	-- RepetitionFactor (r = 1, 2 or 4).	
+	-- Corresponds to L1 parameter 'SRS-ResourceMapping' (see 38.214, section 6.2.1 and 38.211, section 6.4.1.4). 
+	-- FFS: Apparently, RAN1 considers replacing these three fields by a table in RAN1 specs and a corresponding index in ASN.1?!
+	resourceMapping							SEQUENCE {
+		startPosition							INTEGER (0..5),
+		nrofSymbols								ENUMERATED {n1, n2, n4},
+		repetitionFactor						ENUMERATED {n1, n2, n4}
+	},
+	-- Parameter(s) defining frequency domain position and configurable shift to align SRS allocation to 4 PRB grid.
+	-- Corresponds to L1 parameter 'SRS-FreqDomainPosition' (see 38.214, section 6.2.1)
+	freqDomainPosition						INTEGER (0..67),
+	freqDomainShift							INTEGER (0..268), 
+	-- Includes  parameters capturing SRS frequency hopping 
+	-- Corresponds to L1 parameter 'SRS-FreqHopping' (see 38.214, section 6.2.1)
+	freqHopping								SEQUENCE {
+		c-SRS									INTEGER (0..63),
+		b-SRS									INTEGER (0..3), 
+		b-hop									INTEGER (0..3)
+	},
+	-- Parameter(s) for configuring group or sequence hopping
+	-- Corresponds to L1 parameter 'SRS-GroupSequenceHopping' (see 38.211, section FFS_Section)
+	groupOrSequenceHopping					ENUMERATED { neither, groupHopping, sequenceHopping },
+	-- Time domain behavior of SRS resource configuration.  
+	-- Corresponds to L1 parameter 'SRS-ResourceConfigType' (see 38.214, section 6.2.1).
+	-- For codebook based uplink transmission, the network configures SRS resources in the same resource set with the same 
+	-- time domain behavior on periodic, aperiodic and semi-persistent SRS.
+	-- FFS: Add configuration parameters for the different SRS resource types?
+	resourceType							CHOICE {
+		aperiodic								SEQUENCE {
+			...
+		}, 
+		semi-persistent							SEQUENCE {
+			-- Periodicity and slot offset for for this SRS resource. All values in "number of slots".
+			-- sl1 corresponds to a periodicity of 1 slot, value sl2 corresponds to a periodicity of 2 slots, and so on. 
+			-- For each periodicity the corresponding offset is given in number of slots. For periodicity sl1 the offset is 0 slots.   
+			-- Corresponds to L1 parameter 'SRS-SlotConfig' (see 38.214, section 6.2.1)
+			periodicityAndOffset-sp						SRS-PeriodicityAndOffset,
+			...
+		},
+		periodic								SEQUENCE {
+			-- Periodicity and slot offset for for this SRS resource. All values in "number of slots" 
+			-- sl1 corresponds to a periodicity of 1 slot, value sl2 corresponds to a periodicity of 2 slots, and so on. 
+			-- For each periodicity the corresponding offset is given in number of slots. For periodicity sl1 the offset is 0 slots.   
+			-- Corresponds to L1 parameter 'SRS-SlotConfig' (see 38.214, section 6.2.1)
+			periodicityAndOffset-p						SRS-PeriodicityAndOffset,
+			...
+		}
+	},
+	-- Sequence ID used to initialize psedo random group and sequence hopping. 
+	-- Corresponds to L1 parameter 'SRS-SequenceId' (see 38.214, section 6.2.1)
+	sequenceId								BIT STRING (SIZE (10)),
+
+	-- Configuration of the spatial relation between a reference RS and the target SRS. Reference RS can be SSB/CSI-RS/SRS
+	-- Corresponds to L1 parameter 'SRS-SpatialRelationInfo' (see 38.214, section 6.2.1)
+	spatialRelationInfo						CHOICE {
+		ssb-Index								SSB-Index,
+		csi-RS-Index									NZP-CSI-RS-ResourceId,
+		srs										SRS-ResourceId
+	}																													OPTIONAL,	-- Need R
+	...
+}
+
+SRS-ResourceId ::= 						INTEGER (0..maxNrofSRS-Resources-1)
+
+SRS-PeriodicityAndOffset ::=			CHOICE {
+	sl1										NULL, 
+	sl2										INTEGER(0..1), 
+	sl4										INTEGER(0..3), 
+	sl5										INTEGER(0..4), 
+	sl8										INTEGER(0..7), 
+	sl10									INTEGER(0..9), 
+	sl16									INTEGER(0..15), 
+	sl20									INTEGER(0..19), 
+	sl32									INTEGER(0..31), 
+	sl40									INTEGER(0..39), 
+	sl64									INTEGER(0..63), 
+	sl80									INTEGER(0..79), 
+	sl160									INTEGER(0..159), 
+	sl320									INTEGER(0..319),
+	sl640									INTEGER(0..639),
+	sl1280									INTEGER(0..1279),
+	sl2560									INTEGER(0..2559)
+}
+
+-- TAG-SRS-CONFIG-STOP
+-- TAG-SRS-CARRIERSWITCHING-START
+SRS-CarrierSwitching ::=				SEQUENCE {
+
+	-- Indicates the serving cell whose UL transmission may be interrupted during SRS transmission on a PUSCH-less cell. 
+	-- During SRS transmission on a PUSCH-less cell, the UE may temporarily suspend the UL transmission on a serving cell with PUSCH 
+	-- in the same CG to allow the PUSCH-less cell to transmit SRS. (see 38.214, section 6.2.1.3)
+	srs-SwitchFromServCellIndex				INTEGER (0..31)																OPTIONAL,	-- Cond Setup
+
+	-- Network configures the UE with either typeA-SRS-TPC-PDCCH-Group or typeB-SRS-TPC-PDCCH-Group, if any.
+	srs-TPC-PDCCH-Group					CHOICE {
+		-- Type A trigger configuration for SRS transmission on a PUSCH-less SCell. 
+		-- Corresponds to L1 parameter 'typeA-SRS-TPC-PDCCH-Group' (see 38.212, 38.213, section 7.3.1, 11.3)
+		typeA								SEQUENCE (SIZE (1..32)) OF SRS-TPC-PDCCH-Config,
+		-- Type B trigger configuration for SRS transmission on a PUSCH-less SCell. 
+		-- Corresponds to L1 parameter 'typeB-SRS-TPC-PDCCH-Config' (see 38.212, 38.213, section 7.3.1, 11.3)
+		typeB								SRS-TPC-PDCCH-Config
+	}																													OPTIONAL, 	-- Cond Setup
+
+	-- Maps a specific cell to a given SFI value within the DCI message
+	-- Corresponds to L1 parameter 'SRS-cell-to-SFI' (see 38.212, 38.213, section 7.3.1, 11.3)
+	srs-CellToSFI						SEQUENCE (SIZE (1..maxNrofServingCells)) OF SlotFormatCombinationsPerCell			OPTIONAL, 	-- Cond Setup
+	
+	-- A set of serving cells for monitoring PDCCH conveying SRS DCI format with CRC scrambled by TPC-SRS-RNTI
+	-- Corresponds to L1 parameter 'SRS-monitoring-cells' (see 38.212, 38.213, section 7.3.1, 11.3)
+	monitoringCells		SEQUENCE (SIZE (1..maxNrofServingCells)) OF ServCellIndex						OPTIONAL,	-- Cond Setup
+	...
+}
+
+-- One trigger configuration for SRS-Carrier Switching. (see 38.212, 38.213, section 7.3.1, 11.3)
+SRS-TPC-PDCCH-Config ::=				SEQUENCE {
+	-- The starting bit position of a block within the group DCI with SRS request fields (optional) and TPC commands 
+	-- for a PUSCH-less SCell. (see 38.212, 38.213, section 7.3.1, 11.3)
+	startingBitOfFormat2-3					INTEGER (1..31)																OPTIONAL, 	-- Cond Setup
+	-- The type of a field within the group DCI with SRS request fields (optional) for a PUSCH-less SCell, 
+	-- which indicates how many bits in the field are for SRS request (0 or 1/2). 
+	-- Note that for Type A, there is a common SRS request field for all SCells in the set, but each SCell has its 
+	-- own TPC command bits. See TS 38.212. Network configures this field with the same value for all PUSCH-less SCells.
+	-- (see 38.212, 38.213, section 7.3.1, 11.3)
+	fieldTypeFormat2-3						INTEGER (0..1)																OPTIONAL, 	-- Cond Setup
+	-- A list of paris of [cc-SetIndex; cc-IndexInOneCC-Set] (see 38.212, 38.213, section 7.3.1, 11.3)
+	-- FFS: Improve description. What is a "CC"? Where is a CC-Set defined? ...
+	srs-CC-SetIndexlist						SEQUENCE (SIZE(1..4)) OF SRS-CC-SetIndex 									OPTIONAL	-- Cond Setup
+}
+
+SRS-CC-SetIndex ::=						SEQUENCE {
+	-- Indicates the CC set index for Type A associated (see 38.212, 38.213, section 7.3.1, 11.3)
+	cc-SetIndex								INTEGER (0..3)															OPTIONAL, 	-- Cond Setup
+	-- Indicates the CC index in one CC set for Type A (see 38.212, 38.213, section 7.3.1, 11.3)
+	cc-IndexInOneCC-Set						INTEGER (0..7)															OPTIONAL		-- Cond Setup
+}
+
+-- TAG-SRS-CARRIERSWITCHING-STOP
+-- TAG-SSB-INDEX-START
+
+SSB-Index ::=								INTEGER (0..63)
+
+-- TAG-SSB-INDEX-STOP
+-- TAG-SUBCARRIER-SPACING-START
+
+-- The subcarrier spacing supported in NR. Restrictions applicable for certain frequencies, channels or signals are clarified 
+-- in the fields that use this IE.
+SubcarrierSpacing ::= 					ENUMERATED {kHz15, kHz30, kHz60, kHz120, kHz240, spare3, spare2, spare1}
+
+
+-- TAG-SUBCARRIER-SPACING-STOP
+-- TAG-TCI-STATE-START
+
+TCI-State ::= 				SEQUENCE {
+	tci-StateId					TCI-StateId,
+	qcl-Type1					QCL-Info,
+	qcl-Type2					QCL-Info																					OPTIONAL,	-- Need R
+	nrofPTRS-Ports				ENUMERATED {n1, n2}																			OPTIONAL,	-- Need R
+	...
+}
+
+QCL-Info ::=				SEQUENCE {
+
+	-- The carrier which the RS is located in. If the field is absent, it applies to the serving cell in which the TCI-State is configured
+	cell						ServCellIndex																				OPTIONAL,	-- Need R
+
+	-- The DL BWP which the RS is located in. 
+	bwp-Id						BWP-Id			OPTIONAL, -- Cond CSI-RS-Indicated
+	-- Cond NZP-CSI-RS-Indicated: mandatory if csi-rs or csi-RS-for-tracking is included, absent otherwise
+	referenceSignal				CHOICE {
+		csi-rs						NZP-CSI-RS-ResourceId,
+		ssb							SSB-Index,
+		-- A set of CSI-RS resources for tracking
+		csi-RS-for-tracking			NZP-CSI-RS-ResourceSetId
+	},
+	qcl-Type					ENUMERATED {typeA, typeB, typeC, typeD},
+	...
+}
+
+-- TAG-TCI-STATE-STOP
+-- TAG-TCI-STATEID-START
+
+TCI-StateId ::=				INTEGER (0..maxNrofTCI-States-1)
+
+-- TAG-TCI-STATEID-STOP
+-- TAG-TDD-UL-DL-CONFIG-START
+
+TDD-UL-DL-ConfigCommon ::=			SEQUENCE {
+	-- Reference SCS used to determine the time domain boundaries in the UL-DL pattern which must be common across all subcarrier specific
+	-- virtual carriers, i.e., independent of the actual subcarrier spacing using for data transmission. 
+	-- Only the values 15 or 30 kHz  (<6GHz), 60 or 120 kHz (>6GHz) are applicable.
+	-- Corresponds to L1 parameter 'reference-SCS' (see 38.211, section FFS_Section)
+	referenceSubcarrierSpacing			SubcarrierSpacing																	OPTIONAL,
+	-- Periodicity of the DL-UL pattern. Corresponds to L1 parameter 'DL-UL-transmission-periodicity' (see 38.211, section FFS_Section)
+	dl-UL-TransmissionPeriodicity		ENUMERATED {ms0p5, ms0p625, ms1, ms1p25, ms2, ms2p5, ms5, ms10}						OPTIONAL,
+
+	-- Number of consecutive full DL slots at the beginning of each DL-UL pattern. 
+	-- Corresponds to L1 parameter 'number-of-DL-slots' (see 38.211, Table 4.3.2-1)
+	nrofDownlinkSlots					INTEGER (0..maxNrofSlots)																	OPTIONAL,
+
+	-- Number of consecutive DL symbols in the beginning of the slot following the last full DL slot (as derived from nrofDownlinkSlots). 
+	-- If the field is absent or released, there is no partial-downlink slot.
+	-- Corresponds to L1 parameter 'number-of-DL-symbols-common' (see 38.211, section FFS_Section).
+	nrofDownlinkSymbols					INTEGER (0..maxNrofSymbols-1)															OPTIONAL,	-- Need R
+	
+	-- Number of consecutive full UL slots at the end of each DL-UL pattern. 
+	-- Corresponds to L1 parameter 'number-of-UL-slots' (see 38.211, Table 4.3.2-1)
+	nrofUplinkSlots						INTEGER (0..maxNrofSlots)																	OPTIONAL,
+	
+	-- Number of consecutive UL symbols in the end of the slot preceding the first full UL slot (as derived from nrofUplinkSlots).
+	-- If the field is absent or released, there is no partial-uplink slot.
+	-- Corresponds to L1 parameter 'number-of-UL-symbols-common' (see 38.211, section FFS_Section)
+	nrofUplinkSymbols					INTEGER (0..maxNrofSymbols-1)															OPTIONAL	-- Need R
+}
+
+TDD-UL-DL-ConfigDedicated ::=		SEQUENCE {
+	-- The slotSpecificConfiguration allows overriding UL/DL allocations provided in tdd-UL-DL-configurationCommon. 
+	-- FFS_ASN1: Consider making this an AddMod/Release list
+	-- FFS_ASN1: Replace absolute numbers by variables... once RAN1 confirms. 
+	-- FFS_CHECK: This list will grow very large if used for many slots.
+	slotSpecificConfigurationsToAddModList		SEQUENCE (SIZE (1..maxNrofSlots)) OF TDD-UL-DL-SlotConfig							OPTIONAL, -- Need N
+	slotSpecificConfigurationsToreleaseList		SEQUENCE (SIZE (1..maxNrofSlots)) OF TDD-UL-DL-SlotIndex						OPTIONAL -- Need N
+}
+
+TDD-UL-DL-SlotConfig ::=			SEQUENCE {
+	-- Identifies a slot within a dl-UL-TransmissionPeriodicity (given in tdd-UL-DL-configurationCommon)
+	slotIndex							TDD-UL-DL-SlotIndex,
+		
+	-- The direction (downlink or uplink) for the symbols in this slot. "allDownlink" indicates that all symbols in this slot are used
+	-- for downlink; "allUplink" indicates that all symbols in this slot are used for uplink; "explicit" indicates explicitly how many symbols 
+	-- in the beginning and end of this slot are allocated to downlink and uplink, respectively.
+	symbols								CHOICE {
+		allDownlink							NULL,
+		allUplink							NULL,
+		explicit							SEQUENCE {
+			-- Number of consecutive DL symbols in the beginning of the slot identified by slotIndex.
+			-- If the field is absent the UE assumes that there are no leading DL symbols.
+			-- Corresponds to L1 parameter 'number-of-DL-symbols-dedicated' (see 38.211, section FFS_Section)
+			nrofDownlinkSymbols					INTEGER (1..maxNrofSymbols-1)												OPTIONAL,	-- Need S
+			
+			-- Number of consecutive UL symbols in the end of the slot identified by slotIndex.
+			-- If the field is absent the UE assumes that there are no trailing UL symbols.
+			-- Corresponds to L1 parameter 'number-of-UL-symbols-dedicated' (see 38.211, section FFS_Section)
+			nrofUplinkSymbols					INTEGER (1..maxNrofSymbols-1)												OPTIONAL	-- Need S
+		}
+	}
+}
+
+TDD-UL-DL-SlotIndex ::=				INTEGER (0..maxNrofSlots-1)
+
+-- TAG-TDD-UL-DL-CONFIG-STOP
+
+TimeToTrigger ::=					ENUMERATED {
+										ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256,
+										ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560,
+										ms5120}
+
+-- TAG-ZP-CSI-RS-RESOURCE-START
+
+ZP-CSI-RS-Resource ::=						SEQUENCE {
+	-- ZP CSI-RS resource configuration ID
+	-- Corresponds to L1 parameter 'ZP-CSI-RS-ResourceConfigId' (see 38.214, section 5.1.4.2)
+	zp-CSI-RS-ResourceId						ZP-CSI-RS-ResourceId,
+	-- OFDM symbol and subcarrier occupancy of the ZP-CSI-RS resource within a slot
+	resourceMapping								CSI-RS-ResourceMapping,
+	-- Periodicity and slot offset for periodic/semi-persistent ZP-CSI-RS
+	-- Corresponds to L1 parameter 'ZP-CSI-RS-timeConfig' (see 38.214, section 5.1.4.2)
+	periodicityAndOffset						CSI-ResourcePeriodicityAndOffset							OPTIONAL, --Cond PeriodicOrSemiPersistent
+
+	...
+}
+
+ZP-CSI-RS-ResourceId ::=							INTEGER (0..maxNrofZP-CSI-RS-Resources-1)
+
+-- TAG-ZP-CSI-RS-RESOURCE-STOP
+-- TAG-ZP-CSI-RS-RESOURCESET-START
+
+ZP-CSI-RS-ResourceSet ::= 						SEQUENCE {
+	zp-CSI-RS-ResourceSetId							ZP-CSI-RS-ResourceSetId,
+	-- The list of ZP-CSI-RS-ResourceId identifying the ZP-CSI-RS-Resource elements belonging to this set. 
+	zp-CSI-RS-ResourceIdList							SEQUENCE (SIZE(1..maxNrofZP-CSI-RS-ResourcesPerSet)) OF ZP-CSI-RS-ResourceId,
+	-- Time domain behavior of ZP-CSI-RS resource configuration. 
+	-- Corresponds to L1 parameter 'ZP-CSI-RS-ResourceConfigType' (see 38.214, section 5.1.4.2)
+	resourceType									ENUMERATED {aperiodic, semiPersistent, periodic},
+	...
+}
+
+-- TAG-ZP-CSI-RS-RESOURCESET-STOP
+-- TAG-ZP-CSI-RS-RESOURCESETID-START
+
+ZP-CSI-RS-ResourceSetId ::= 					INTEGER (0..maxNrofZP-CSI-RS-ResourceSets-1)
+
+-- TAG-ZP-CSI-RS-RESOURCESETID-STOP
+-- TAG-BANDCOMBINATIONLIST-START
+
+BandCombinationList ::=	SEQUENCE (SIZE (1..maxBandComb)) OF BandCombination
+
+BandCombination ::= SEQUENCE {
+	bandAndDL-ParametersList			BandAndDL-ParametersList,
+	bandCombinationsUL					BIT STRING (SIZE (1.. maxBandComb)),
+	bandCombinationParametersList		SEQUENCE (SIZE (1..maxBandComb)) OF BandCombinationParameters 	OPTIONAL
+}
+
+BandAndDL-ParametersList ::= SEQUENCE (SIZE (1..maxSimultaneousBands)) OF BandAndDL-Parameters
+
+BandAndDL-Parameters ::= CHOICE {
+	bandAndDL-ParametersEUTRA	BandAndDL-ParametersEUTRA,
+	bandAndDL-ParametersNR		BandAndDL-ParametersNR
+}
+BandCombinationParameters ::= SEQUENCE {
+	ca-ParametersNR					CA-ParametersNR			OPTIONAL,
+	mrdc-Parameters					MRDC-Parameters			OPTIONAL
+}
+
+CA-ParametersNR ::=	SEQUENCE {
+	multipleTimingAdvances		ENUMERATED {supported}				OPTIONAL,
+-- R4 2-5: Simultaneous reception and transmission for inter band CA (TDD-TDD or TDD-FDD)
+	simultaneousRxTxInterBandCA			ENUMERATED {supported}		OPTIONAL,
+-- BCS related to R4 2-1 and Updated CA BW class in R4-1803374
+	supportedBandwidthCombinationSet	BIT STRING (SIZE (1..32))	OPTIONAL
+}
+
+MRDC-Parameters ::=	SEQUENCE {
+	singleUL-Transmission		ENUMERATED {supported}		OPTIONAL,
+-- R4 1-10: Support of EN-DC with LTE-NR coexistence in UL sharing from UE perspective
+	ul-SharingEUTRA-NR					ENUMERATED {supported}		OPTIONAL,
+-- R4 1-11: Switching time between LTE UL and NR UL for EN-DC with LTE-NR coexistence in UL sharing from UE perspective
+	ul-SwitchingTimeEUTRA-NR			ENUMERATED {type1, type2}	OPTIONAL,
+-- R4 2-4: Simultaneous reception and transmission for inter-band EN-DC (TDD-TDD or TDD-FDD)
+	simultaneousRxTxInterBandENDC		ENUMERATED {supported}		OPTIONAL,
+-- R4 2-6: Asynchronous FDD-FDD intra-band EN-DC
+	asyncIntraBandENDC					ENUMERATED {supported}		OPTIONAL,
+	basebandProcesingCombinationMRDC 	BasebandProcessingCombinationMRDC
+}
+
+BandAndDL-ParametersEUTRA ::= SEQUENCE {
+	bandEUTRA					FreqBandIndicatorEUTRA,
+	ca-BandwidthClassDL-EUTRA	CA-BandwidthClassEUTRA		OPTIONAL,
+	intraBandContiguousCC-InfoDL-EUTRA-List		SEQUENCE (SIZE (1.. maxNrofServingCellsEUTRA)) OF IntraBandContiguousCC-InfoDL-EUTRA		OPTIONAL
+}
+
+BandAndDL-ParametersNR ::= SEQUENCE {
+	bandNR						FreqBandIndicatorNR,
+	ca-BandwidthClassDL			CA-BandwidthClassNR			OPTIONAL,
+-- R4 2-3: Non-contiguous intra-band CA frequency separation class for FR2 as in the RAN4 LS R4-1803363
+	intraBandFreqSeparationDL	FreqSeparationClass					OPTIONAL,
+	intraBandContiguousCC-InfoDL-List		SEQUENCE (SIZE (1.. maxNrofServingCells)) OF IntraBandContiguousCC-InfoDL		OPTIONAL
+}
+
+IntraBandContiguousCC-InfoDL ::=	SEQUENCE {
+-- Related to RAN4 LS R2-1804078
+	maxNumberMIMO-LayersPDSCH			MIMO-LayersDL					OPTIONAL
+}
+
+IntraBandContiguousCC-InfoDL-EUTRA ::=	SEQUENCE {
+-- Related to RAN4 LS R2-1804078
+	mimo-CapabilityDL					ENUMERATED {twoLayers, fourLayers, eightLayers}					OPTIONAL
+}
+
+-- TAG-BANDCOMBINATIONLIST-STOP
+-- TAG-BANDCOMBINATIONPARAMETERSULLIST-START
+
+BandCombinationParametersUL-List ::= SEQUENCE (SIZE (1..maxBandComb)) OF BandCombinationParametersUL
+
+BandCombinationParametersUL ::= SEQUENCE (SIZE (1.. maxSimultaneousBands)) OF BandParametersUL
+
+BandParametersUL ::= CHOICE {
+	bandParametersUL-EUTRA		BandParametersUL-EUTRA,
+	bandParametersUL-NR			BandParametersUL-NR
+}
+
+BandParametersUL-EUTRA ::= SEQUENCE {
+	ca-BandwidthClassUL-EUTRA	CA-BandwidthClassEUTRA		OPTIONAL,
+	intraBandContiguousCC-InfoUL-EUTRA-List		SEQUENCE (SIZE (1.. maxNrofServingCellsEUTRA)) OF IntraBandContiguousCC-InfoUL-EUTRA		OPTIONAL
+}
+
+BandParametersUL-NR ::= SEQUENCE {
+	ca-BandwidthClassUL			CA-BandwidthClassNR 				OPTIONAL,
+-- R4 2-3: Non-contiguous intra-band CA frequency separation class for FR2 as in the RAN4 LS R4-1803363
+	intraBandFreqSeparationUL	FreqSeparationClass					OPTIONAL,
+	intraBandContiguousCC-InfoUL-List		SEQUENCE (SIZE (1.. maxNrofServingCells)) OF IntraBandContiguousCC-InfoUL			OPTIONAL
+}
+
+IntraBandContiguousCC-InfoUL ::=	SEQUENCE {
+-- Related to RAN4 LS R2-1804078
+	maxNumberMIMO-LayersCB-PUSCH		MIMO-LayersUL					OPTIONAL,
+	maxNumberMIMO-LayersNonCB-PUSCH		MIMO-LayersUL					OPTIONAL
+}
+
+IntraBandContiguousCC-InfoUL-EUTRA ::=	SEQUENCE {
+-- Related to RAN4 LS R2-1804078
+	mimo-CapabilityUL						ENUMERATED {twoLayers, fourLayers}					OPTIONAL
+}
+
+-- TAG-BANDCOMBINATIONPARAMETERSULLIST-STOP
+-- TAG-BASEBANDCOMBINATIONPARAMETERSULLIST-START
+
+BasebandCombinationParametersUL-List ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandCombinationParametersUL
+
+BasebandCombinationParametersUL ::= SEQUENCE (SIZE (1..maxSimultaneousBands)) OF BasebandParametersPerBandUL
+
+BasebandParametersPerBandUL ::= SEQUENCE {
+	ca-BandwidthClassUL				CA-BandwidthClassNR,
+	freqRange						ENUMERATED {fr1, fr2},
+	basebandParametersPerCC-UL		SEQUENCE (SIZE (1.. maxNrofServingCells)) OF BasebandParametersPerCC-UL
+}
+
+BasebandParametersPerCC-UL ::= SEQUENCE {
+-- R4 2-2: Simultaneous reception or transmission with same or  different numerologies in CA
+-- It is expressed by the combination of SCS whether simultaneous RxTx is supported or not.
+	supportedSubcarrierSpacingUL				SubcarrierSpacing,
+-- Accoding to the RAN4 LS R4-1803563, maximum Bandwidth supported per CC is added in BPC
+-- FFS how to work together with BCS and max BW for each CC to be defined for each CA band combination in the RAN4 spec.
+	supportedBandwidthUL		CHOICE {
+		fr1							ENUMERATED {mhz5, mhz10, mhz15, mhz20, mhz25, mhz30, mhz40, mhz50, mhz60, mhz80, mhz100},
+		fr2							ENUMERATED {mhz50, mhz100, mhz200, mhz400}
+	},
+	-- R2-1800012. To be confirmed by RAN1
+	scalingFactor0dot75				ENUMERATED {supported}		OPTIONAL,
+-- R1 2-14: Codebook based PUSCH MIMO transmission. Absence of this field implies that CB-based PUSCH is not supported.
+	maxNumberMIMO-LayersCB-PUSCH		MIMO-LayersUL					OPTIONAL,
+-- R1 2-15: Non-codebook based PUSCH MIMO transmission. Absence of this field implies that Non-CB-based PUSCH is not supported.
+	maxNumberMIMO-LayersNonCB-PUSCH		MIMO-LayersUL					OPTIONAL,
+-- Accoding to the RAN4 LS R4-1803563, modulation order is added per CC granularity in BPC
+-- FFS whether all of modulation order specified in the spec need to be signalled.
+-- FFS how to address the requirements agreed by RAN4, e.g. mandaotry w/o capabiltiy for 64QAM. mandaotry with capabiltiy for DL 256QAM in FR1.
+	supportedModulationOrderUL					ModulationOrder					OPTIONAL,
+-- R1 2-53: SRS resources
+	supportedSRS-Resources			SRS-Resources								OPTIONAL,
+-- R1 2-55: SRS Tx switch
+	srs-TxSwitch					SRS-TxSwitch								OPTIONAL,
+-- R1 2-57: Support low latency CSI feedback
+	lowLatencyCSI-Feedback				ENUMERATED {supported}					OPTIONAL,
+-- R1 5-12 & 5-12a: Up to 2/7 PUSCHs per slot for different TBs
+	pusch-DifferentTB-PerSlot		SEQUENCE {
+		scs-15kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-30kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-60kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-120kHz						ENUMERATED {upto2, upto7}					OPTIONAL
+	}																			OPTIONAL,
+-- R1 6-7: Two PUCCH group
+	twoPUCCH-Group					ENUMERATED {supported}						OPTIONAL,
+-- R1 6-8: Different numerology across PUCCH groups
+	diffNumerologyAcrossPUCCH-Group	ENUMERATED {supported}						OPTIONAL,
+-- R1 6-9: Different numerologies across carriers within the same PUCCH group
+	diffNumerologyWithinPUCCH-Group	ENUMERATED {supported}						OPTIONAL,
+-- R1 6-10: Cross carrier scheduling
+	crossCarrierScheduling			ENUMERATED {supported}						OPTIONAL,
+-- R1 6-11: Number of supported TAGs
+	supportedNumberTAG				ENUMERATED {n2, n3, n4}						OPTIONAL,
+-- R1 6-18: Supplemental uplink with dynamic switch
+	dynamicSwitchSUL				ENUMERATED {supported}						OPTIONAL,
+-- R1 6-19: Simultaneous transmission of SRS on an SUL/non-SUL carrier and PUSCH/PUCCH/SRS/PRACH on the other UL carrier in the same cell
+-- Details on the channel/signal combination are to be described in TS 38.306
+	simultaneousTxSUL-NonSUL		ENUMERATED {supported}						OPTIONAL,
+-- R1 6-22: UL search space sharing for CA
+	searchSpaceSharingCA-UL			ENUMERATED {supported}						OPTIONAL
+}
+
+-- TAG-BASEBANDCOMBINATIONPARAMETERSULLIST-STOP
+-- TAG-BASEBANDPROCESSINGCOMBINATIONMRDC-START
+
+BasebandProcessingCombinationMRDC ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandProcessingCombinationLink
+
+BasebandProcessingCombinationLink ::= SEQUENCE {
+	basebandProcessingCombinationIndexMN		BasebandProcessingCombinationIndex, 
+	basebandProcessingCombinationLinkedIndexSN	SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandProcessingCombinationIndex
+}
+
+BasebandProcessingCombinationIndex ::= INTEGER (1..maxBasebandProcComb)
+
+-- TAG-BASEBANDPROCESSINGCOMBINATIONMRDC-STOP
+-- TAG-CA-BANDWIDTHCLASSNR-START
+
+-- Updated based on R4-1803374
+CA-BandwidthClassNR ::= ENUMERATED {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, ...}
+
+-- TAG-CA-BANDWIDTHCLASSNR-STOP
+-- TAG-CA-BANDWIDTHCLASSEUTRA-START
+
+CA-BandwidthClassEUTRA ::=	ENUMERATED {a, b, c, d, e, f, ...}
+
+-- TAG-CA-BANDWIDTHCLASSEUTRA-STOP
+-- TAG-FREQ-BAND-INDICATOR-EUTRA-START
+
+FreqBandIndicatorEUTRA ::=	INTEGER (1..maxBandsEUTRA)
+
+-- TAG-FREQ-BAND-INDICATOR-EUTRA-STOP
+-- TAG-FREQBANDLIST-START
+
+FreqBandList ::=	SEQUENCE (SIZE (1..maxBandsMRDC)) OF FreqBandInformation
+
+FreqBandInformation ::= CHOICE {
+	bandEUTRA				FreqBandIndicatorEUTRA,
+	bandNR					FreqBandIndicatorNR
+}
+
+-- TAG-FREQBANDLIST-STOP
+-- TAG-FREQSEPARATIONCLASS-START
+
+FreqSeparationClass ::=	ENUMERATED {c1, c2, c3, ...}
+
+-- TAG-FREQSEPARATIONCLASS-STOP
+-- TAG-MIMO-LAYERS-START
+
+MIMO-LayersDL ::=	ENUMERATED {twoLayers, fourLayers, eightLayers}
+
+MIMO-LayersUL ::=	ENUMERATED {oneLayer, twoLayers, fourLayers}
+
+-- TAG-MIMO-LAYERS-STOP
+-- TAG-MODULATION-ORDER-START
+
+ModulationOrder ::=	ENUMERATED {bpsk-halfpi, bpsk, qpsk, qam16, qam64, qam256}
+
+-- TAG-MODULATION-ORDER-STOP
+-- TAG-RAT-TYPE-START
+
+RAT-Type ::= ENUMERATED {nr, eutra-nr, spare2, spare1, ...}
+
+-- TAG-RAT-TYPE-STOP
+-- TAG-SUPPORTEDBASEBANDPROCESSINGCOMBINATION-START
+
+SupportedBasebandProcessingCombination ::= SEQUENCE (SIZE (1..maxBasebandProcComb)) OF BasebandProcessingCombination
+
+BasebandProcessingCombination ::= SEQUENCE {
+	basebandParametersDL			SEQUENCE (SIZE (1..maxSimultaneousBands)) OF BasebandParametersPerBandDL,
+	basebandParametersUL				BIT STRING (SIZE (1..maxBasebandProcComb))}
+
+BasebandParametersPerBandDL ::= SEQUENCE {
+	ca-BandwidthClassDL			CA-BandwidthClassNR,
+	freqRange					ENUMERATED {fr1, fr2},
+	basebandParametersPerCC-DL		SEQUENCE (SIZE (1.. maxNrofServingCells)) OF BasebandParametersPerCC-DL
+}
+
+BasebandParametersPerCC-DL ::= SEQUENCE {
+-- R4 2-2: Simultaneous reception or transmission with same or  different numerologies in CA
+-- It is expressed by the combination of SCS whether simultaneous RxTx is supported or not.
+	supportedSubcarrierSpacingDL				SubcarrierSpacing,
+-- Accoding to the RAN4 LS R4-1803563, maximum Bandwidth supported per CC is added in BPC
+-- FFS how to work together with BCS and max BW for each CC to be defined for each CA band combination in the RAN4 spec.
+	supportedBandwidthDL		CHOICE {
+		fr1							ENUMERATED {mhz5, mhz10, mhz15, mhz20, mhz25, mhz30, mhz40, mhz50, mhz60, mhz80, mhz100},
+		fr2							ENUMERATED {mhz50, mhz100, mhz200, mhz400}
+	},
+-- R2-1800012. To be confirmed by RAN1
+	scalingFactor0dot75			ENUMERATED {supported}		OPTIONAL,
+-- R1 2-2: PDSCH beam switching
+	timeDurationForQCL					SEQUENCE {
+		scs-60kHz							ENUMERATED {s7, s14, s28}				OPTIONAL,
+		sch-120kHz							ENUMERATED {s14, s28}					OPTIONAL
+	}																			OPTIONAL,
+-- R1 1-10: Support of SCell without SS/PBCH block
+	scellWithoutSSB					ENUMERATED {supported}						OPTIONAL,
+-- R1 1-11: Support of CSI-RS RRM measurement for SCell without SS/PBCH block
+	csi-RS-MeasSCellWithoutSSB		ENUMERATED {supported}						OPTIONAL,
+-- R1 2-3: PDSCH MIMO layers. Absence of this field implies support of one layer.
+	maxNumberMIMO-LayersPDSCH			MIMO-LayersDL							OPTIONAL,
+-- Accoding to the RAN4 LS R4-1803563, modulation order is added per CC granularity in BPC
+-- FFS whether all of modulation order specified in the spec need to be signalled.
+-- FFS how to address the requirements agreed by RAN4, e.g. mandaotry w/o capabiltiy for 64QAM. mandaotry with capabiltiy for DL 256QAM in FR1.
+	supportedModulationOrderDL					ModulationOrder					OPTIONAL,
+-- R1 2-15a: Association between CSI-RS and SRS
+	srs-AssocCSI-RS					ENUMERATED {supported}						OPTIONAL,
+-- R1 3-1a: For type 1 CSS with dedicated RRC configuration and for type 3 CSS, UE specific SS, CORESET resource allocation of 6RB bit-map and duration 3 OFDM symbols for FR2
+	type1-3-CSS						ENUMERATED {supported}						OPTIONAL,
+-- R1 3-5 & 3-5a: For type 1 with dedicated RRC configuration, type 3, and UE-SS,, monitoring occasion can be any OFDM symbol(s) of a slot for Case 2 (with a DCI gap)
+	pdcchMonitoringAnyOccasions		ENUMERATED {withoutDCI-gap, withDCI-gap}	OPTIONAL,
+-- R1 5-1a: UE specific RRC configure UL/DL assignment
+	ue-SpecificUL-DL-Assignment		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-11 & 5-11a: Up to 2/7 unicast PDSCHs per slot for different TBs
+	pdsch-DifferentTB-PerSlot		SEQUENCE {
+		scs-15kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-30kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-60kHz						ENUMERATED {upto2, upto7}					OPTIONAL,
+		scs-120kHz						ENUMERATED {upto2, upto7}					OPTIONAL
+	}																			OPTIONAL,
+-- R1 6-10: Cross carrier scheduling
+	crossCarrierScheduling			ENUMERATED {supported}						OPTIONAL,
+-- R1 6-21: DL search space sharing for CA
+	searchSpaceSharingCA-DL			ENUMERATED {supported}						OPTIONAL
+}
+
+-- TAG-SUPPORTEDBASEBANDPROCESSINGCOMBINATION-STOP
+-- TAG-UE-CAPABILITY-RAT-CONTAINER-LIST-START
+
+UE-CapabilityRAT-ContainerList ::=SEQUENCE (SIZE (0.. maxRAT-CapabilityContainers)) OF UE-CapabilityRAT-Container
+
+UE-CapabilityRAT-Container ::= SEQUENCE {
+	rat-Type							RAT-Type,
+	ue-CapabilityRAT-Container			OCTET STRING
+}
+
+-- TAG-UE-CAPABILITY-RAT-CONTAINER-LIST-STOP
+-- TAG-UE-MRDC-CAPABILITY-START
+
+UE-MRDC-Capability ::=	SEQUENCE {
+	measParametersMRDC					MeasParametersMRDC					OPTIONAL,
+	rf-ParametersMRDC					RF-ParametersMRDC,
+	phy-ParametersMRDC					Phy-ParametersMRDC					OPTIONAL,
+	generalParametersMRDC				GeneralParametersMRDC-XDD-Diff		OPTIONAL,
+	fdd-Add-UE-MRDC-Capabilities		UE-MRDC-CapabilityAddXDD-Mode		OPTIONAL,
+	tdd-Add-UE-MRDC-Capabilities		UE-MRDC-CapabilityAddXDD-Mode		OPTIONAL,
+	fr1-Add-UE-MRDC-Capabilities		UE-MRDC-CapabilityAddFRX-Mode		OPTIONAL,
+	fr2-Add-UE-MRDC-Capabilities		UE-MRDC-CapabilityAddFRX-Mode		OPTIONAL,
+	lateNonCriticalExtension			OCTET STRING						OPTIONAL,
+	nonCriticalExtension				SEQUENCE {}							OPTIONAL
+}
+
+UE-MRDC-CapabilityAddXDD-Mode ::=	SEQUENCE {
+	phy-ParametersMRDC-XDD-Diff		Phy-ParametersMRDC-XDD-Diff		OPTIONAL,
+	measParametersMRDC-XDD-Diff		MeasParametersMRDC-XDD-Diff		OPTIONAL,
+	generalParametersMRDC-XDD-Diff		GeneralParametersMRDC-XDD-Diff		OPTIONAL
+}
+
+UE-MRDC-CapabilityAddFRX-Mode ::=	SEQUENCE {
+	phy-ParametersMRDC-FRX-Diff		Phy-ParametersMRDC-FRX-Diff		OPTIONAL,
+	measParametersMRDC-FRX-Diff		MeasParametersMRDC-FRX-Diff
+}
+
+RF-ParametersMRDC ::= SEQUENCE {
+	supportedBandCombination	BandCombinationList,
+	bandCombinationParametersUL-List	BandCombinationParametersUL-List
+}
+
+Phy-ParametersMRDC ::= SEQUENCE {
+	phy-ParametersMRDC-XDD-Diff		Phy-ParametersMRDC-XDD-Diff		OPTIONAL,
+	phy-ParametersMRDC-FRX-Diff		Phy-ParametersMRDC-FRX-Diff		OPTIONAL
+}
+
+Phy-ParametersMRDC-XDD-Diff ::=	SEQUENCE {
+-- R1 8-1: Dynamic power sharing for LTE-NR DC
+	dynamicPowerSharing					ENUMERATED {supported}				OPTIONAL,
+-- R1 6-13 & 8-2: Case 1 Single Tx UL LTE-NR DC
+	tdm-Pattern							ENUMERATED {supported}				OPTIONAL
+}
+Phy-ParametersMRDC-FRX-Diff ::=	SEQUENCE {
+-- R1 8-1: Dynamic power sharing for LTE-NR DC
+	dynamicPowerSharing					ENUMERATED {supported}				OPTIONAL,
+-- R1 6-13 & 8-2: Case 1 Single Tx UL LTE-NR DC
+	tdm-Pattern							ENUMERATED {supported}				OPTIONAL
+}
+
+MeasParametersMRDC ::= SEQUENCE {
+	measParametersMRDC-Common		MeasParametersMRDC-Common,
+	measParametersMRDC-XDD-Diff		MeasParametersMRDC-XDD-Diff				OPTIONAL,
+	measParametersMRDC-FRX-Diff		MeasParametersMRDC-FRX-Diff
+}
+
+MeasParametersMRDC-Common ::=	SEQUENCE {
+-- R4 3-1: Independent measurement gap configurations for FR1 and FR2
+	independentGapConfig			ENUMERATED {supported}	OPTIONAL 
+}
+
+MeasParametersMRDC-XDD-Diff ::=	SEQUENCE {
+	sftd-MeasPSCell							ENUMERATED {supported}		OPTIONAL,
+	sftd-MeasNR-Cell						ENUMERATED {supported}		OPTIONAL
+}
+
+MeasParametersMRDC-FRX-Diff ::=	SEQUENCE {
+-- R4 3-2: Simultaneous reception of data and SS block with different numerologies when UE conducts the serving cell measurement or intra-frequency measurement
+	simultaneousRxDataSSB-DiffNumerology	ENUMERATED {supported}		OPTIONAL
+}
+
+GeneralParametersMRDC-XDD-Diff ::= SEQUENCE {
+	splitSRB-WithOneUL-Path				ENUMERATED {supported}		OPTIONAL,
+	splitDRB-withUL-Both-MCG-SCG		ENUMERATED {supported}		OPTIONAL,
+	srb3									ENUMERATED {supported}		OPTIONAL
+}
+
+-- TAG-UE-MRDC-CAPABILITY-STOP
+-- TAG-UE-NR-CAPABILITY-START
+
+UE-NR-Capability ::= SEQUENCE {
+	pdcp-Parameters					PDCP-Parameters, 
+	rlc-Parameters					RLC-Parameters						OPTIONAL,						
+	mac-Parameters					MAC-Parameters						OPTIONAL,						 
+	phy-Parameters					Phy-Parameters,
+	rf-Parameters					RF-Parameters,
+	measParameters					MeasParameters						OPTIONAL,
+	fdd-Add-UE-NR-Capabilities		UE-NR-CapabilityAddXDD-Mode			OPTIONAL,
+	tdd-Add-UE-NR-Capabilities		UE-NR-CapabilityAddXDD-Mode			OPTIONAL,
+	fr1-Add-UE-NR-Capabilities		UE-NR-CapabilityAddFRX-Mode			OPTIONAL,
+	fr2-Add-UE-NR-Capabilities		UE-NR-CapabilityAddFRX-Mode			OPTIONAL,
+	lateNonCriticalExtension		OCTET STRING						OPTIONAL,
+	nonCriticalExtension			SEQUENCE {}							OPTIONAL
+}
+
+UE-NR-CapabilityAddXDD-Mode ::=	SEQUENCE {
+	phy-ParametersXDD-Diff			Phy-ParametersXDD-Diff			OPTIONAL,
+	mac-ParametersXDD-Diff			MAC-ParametersXDD-Diff			OPTIONAL,
+	measParametersXDD-Diff			MeasParametersXDD-Diff			OPTIONAL
+}
+
+UE-NR-CapabilityAddFRX-Mode ::=	SEQUENCE {
+	phy-ParametersFRX-Diff			Phy-ParametersFRX-Diff			OPTIONAL,
+	measParametersFRX-Diff			MeasParametersFRX-Diff			OPTIONAL
+}
+
+Phy-Parameters ::=	SEQUENCE {
+	phy-ParametersCommon			Phy-ParametersCommon				OPTIONAL,
+	phy-ParametersXDD-Diff			Phy-ParametersXDD-Diff				OPTIONAL,
+	phy-ParametersFRX-Diff			Phy-ParametersFRX-Diff				OPTIONAL,
+	phy-ParametersFR1				Phy-ParametersFR1					OPTIONAL,
+	phy-ParametersFR2				Phy-ParametersFR2					OPTIONAL,
+	supportedBasebandProcessingCombination		SupportedBasebandProcessingCombination,
+	basebandCombinationParametersUL-List		BasebandCombinationParametersUL-List
+}
+
+Phy-ParametersCommon ::=	SEQUENCE {
+-- R1 1-9: CSI-RS based CFRA for HO
+	csi-RS-CFRA-ForHO					ENUMERATED {supported}						OPTIONAL,
+-- R1 2-11: Downlink dynamic PRB bundling (DL)
+	dynamicPRB-BundlingDL				ENUMERATED {supported}						OPTIONAL,
+-- R1 2-32a: Semi-persistent CSI report on PUCCH
+	sp-CSI-ReportPUCCH					ENUMERATED {supported}						OPTIONAL,
+-- R1 2-32b: Semi-persistent CSI report on PUSCH
+	sp-CSI-ReportPUSCH					ENUMERATED {supported}						OPTIONAL,
+-- R1 2-34: NZP-CSI-RS  based interference measurement
+	nzp-CSI-RS-IntefMgmt				ENUMERATED {supported}						OPTIONAL,
+-- R1 2-42: Support Type II SP-CSI feedback on long PUCCH
+	type2-SP-CSI-Feedback-LongPUCCH		ENUMERATED {supported}						OPTIONAL,
+-- R1 3-3: More than one CORESET per BWP (in addition to CORESET #0)
+	multipleCORESET						ENUMERATED {supported}						OPTIONAL,
+-- R1 3-6: Dynamic SFI monitoring and dynamic UL/DL determination
+	dynamicSFI							ENUMERATED {supported}						OPTIONAL,
+-- R1 3-7: Precoder-granularity of CORESET size
+	precoderGranularityCORESET			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-10: Dynamic HARQ-ACK codebook
+	dynamicHARQ-ACK-Codebook			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-11: Semi-static HARQ-ACK codebook
+	semiStaticHARQ-ACK-Codebook			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-12: HARQ-ACK spatial bundling for PUCCH or PUSCH per PUCCH group
+	spatialBundlingHARQ-ACK				ENUMERATED {supported}						OPTIONAL,
+-- R1 4-21: Dynamic beta-offset configuration and indication for HARQ-ACK and/or CSI
+	dynamicBetaOffsetInd-HARQ-ACK-CSI	ENUMERATED {supported}						OPTIONAL,
+-- R1 4-23: Repetitions for PUCCH format 1, 3,and 4 over multiple slots with K = 1, 2, 4, 8
+	pucch-Repetition-F1-3-4				ENUMERATED {supported}						OPTIONAL,
+-- R1 5-2: RA type 0 for PUSCH
+	ra-Type0-PUSCH						ENUMERATED {supported}						OPTIONAL,
+-- R1 5-3: Dynamic switching between RA type 0 and RA type 1 for PDSCH
+	dynamicSwitchRA-Type0-1-PDSCH		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-4: Dynamic switching between RA type 0 andRA type 1 for PUSCH
+	dynamicSwitchRA-Type0-1-PUSCH		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-6: PDSCH mapping type A with less than 7 OFDM symbols
+	pdsch-MappingTypeA					ENUMERATED {supported}						OPTIONAL,
+-- R1 5-6a: PDSCH mapping type B
+	pdsch-MappingTypeB					ENUMERATED {supported}						OPTIONAL,
+-- R1 5-7: Interleaving for VRB-to-PRB mapping for PDSCH
+	interleavingVRB-ToPRB-PDSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-8: Interleaving for VRB-to-PRB mapping for PUSCH
+	interleavingVRB-ToPRB-PUSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-10: Inter-slot frequency hopping for PUSCH
+	interSlotFreqHopping-PUSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-13: Type 1 configured PUSCH repetitions within a slot
+	type1-PUSCH-RepetitionOneSlot		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-14: Type 1 configured PUSCH repetitions over multiple slots
+	type1-PUSCH-RepetitionMultiSlots	ENUMERATED {supported}						OPTIONAL,
+-- R1 5-15: Type 2 configured PUSCH repetitions within a slot
+	type2-PUSCH-RepetitionOneSlot		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-16: Type 2 configured PUSCH repetitions over multiple slots
+	type2-PUSCH-RepetitionMultiSlots	ENUMERATED {supported}						OPTIONAL,
+-- R1 5-17: PUSCH repetitions over multiple slots
+	pusch-RepetitionMultiSlots			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-17a: PDSCH repetitions over multiple slots
+	pdsch-RepetitionMultiSlots			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-18: DL SPS
+	downlinkSPS							ENUMERATED {supported}						OPTIONAL,
+-- R1 5-19: Type 1 Configured UL grant
+	configuredUL-GrantType1				ENUMERATED {supported}						OPTIONAL,
+-- R1 5-20: Type 2 Configured UL grant
+	configuredUL-GrantType2				ENUMERATED {supported}						OPTIONAL,
+-- R1 5-21: Pre-emption indication for DL
+	pre-EmptIndication-DL				ENUMERATED {supported}						OPTIONAL,
+-- R1 5-22 & 5-25: CBG-based re-transmission for DL/UL using CBGTI
+	cbg-TransIndication					BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 5-23: CBGFI for CBG-based re-transmission for DL
+	cbg-FlushIndication-DL				ENUMERATED {supported}						OPTIONAL,
+-- R1 5-24: Dynamic HARQ-ACK codebook using sub-codebooks for CBG-based re-transmission for DL
+	dynamicHARQ-ACK-CodeB-CBG-Retx-DL	ENUMERATED {supported}						OPTIONAL,
+-- R1 5-26: Semi-static rate-matching resource set configuration for DL
+	rateMatchingResrcSetSemi-Static		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-27: Dynamic rate-matching resource set configuration for DL
+	rateMatchingResrcSetDynamic			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-28: Rate-matching around LTE CRS
+	rateMatchingLTE-CRS					ENUMERATED {supported}						OPTIONAL,
+-- R4 1-8: BWP switching delay
+	bwp-SwitchingDelay					ENUMERATED {type1, type2}					OPTIONAL
+}
+
+Phy-ParametersXDD-Diff ::=	SEQUENCE {
+-- R1 4-2: 2 PUCCH of format 0 or 2 in consecutive symbols
+	twoPUCCH-F0-2-ConsecSymbols			ENUMERATED {supported}						OPTIONAL,
+-- R1 8-7: UL power control with 2 PUSCH closed loops
+	twoDifferentTPC-Loop-PUSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 8-8: UL power control with 2 PUCCH closed loops
+	twoDifferentTPC-Loop-PUCCH			ENUMERATED {supported}						OPTIONAL
+}
+
+Phy-ParametersFRX-Diff ::=	SEQUENCE {
+-- R1 2-6 & 2-16b: Support 1+2 DMRS (DL/UL)
+	oneFL-DMRS-TwoAdditionalDMRS		BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 2-7 & 2-18: Supported 2 symbols front-loaded DMRS(DL/UL)
+	twoFL-DMRS							BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 2-8 & 2-18a: Supported 2 symbols front-loaded +2 symbols additional DMRS(DL/UL)
+	twoFL-DMRS-TwoAdditionalDMRS		BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 2-9 & 2-19: Support 1+3 DMRS (DL/UL)
+	oneFL-DMRS-ThreeAdditionalDMRS		BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 2-10: Support DMRS type (DL)
+	supportedDMRS-TypeDL				ENUMERATED {type1, type2}					OPTIONAL,
+-- R1 2-17: Support DMRS type (UL)
+	supportedDMRS-TypeUL				ENUMERATED {type1, type2}					OPTIONAL,
+-- R1 2-37: Support Semi-open loop CSI
+	semiOpenLoopCSI						ENUMERATED {supported}						OPTIONAL,
+-- R1 2-38: CSI report without PMI
+	csi-ReportWithoutPMI				ENUMERATED {supported}						OPTIONAL,
+-- R1 2-39: CSI report with CRI
+	csi-ReportWithCRI					ENUMERATED {supported}						OPTIONAL,
+-- R1 2-39a: CSI report without CQI
+	csi-ReportWithoutCQI				ENUMERATED {supported}						OPTIONAL,
+-- R1 2-44 & 2-47: 1 port of DL/UL PTRS
+	onePortsPTRS						BIT STRING (SIZE (2))						OPTIONAL,
+-- R1 4-2: 2 PUCCH of format 0 or 2 in consecutive symbols
+	twoPUCCH-F0-2-ConsecSymbols			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-3: PUCCH format 2 over 1 – 2 OFDM symbols once per slot with FH
+	pucch-F2-WithFH						ENUMERATED {supported}						OPTIONAL,
+-- R1 4-4: PUCCH format 3 over 4 – 14 OFDM symbols once per slot with FH
+	pucch-F3-WithFH						ENUMERATED {supported}						OPTIONAL,
+-- R1 4-5: PUCCH format 4 over 4 – 14 OFDM symbols once per slot with FH
+	pucch-F4-WithFH						ENUMERATED {supported}						OPTIONAL,
+-- R1 4-6: Non-frequency hopping for PUCCH formats 0 and 2
+	freqHoppingPUCCH-F0-2				ENUMERATED {notSupported}					OPTIONAL,
+-- R1 4-7: Non-frequency hopping for PUCCH format 1, 3, and 4
+	freqHoppingPUCCH-F1-3-4				ENUMERATED {notSupported}					OPTIONAL,
+-- R1 4-19: SR/HARQ-ACK/CSI multiplexing once per slot using a PUCCH (or piggybacked on a PUSCH)
+	mux-SR-HARQ-ACK-CSI-PUCCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-20: UCI code-block segmentation 
+	uci-CodeBlockSegmentation			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-22: 1 long PUCCH format and 1 short PUCCH format in the same slot
+	onePUCCH-LongAndShortFormat			ENUMERATED {supported}						OPTIONAL,
+-- R1 4-22a: 2 PUCCH transmissions in the same slot which are not covered by 4-22 and 4-2
+	twoPUCCH-AnyOthersInSlot			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-9: Intra-slot frequency-hopping for PUSCH except for PUSCH scheduled by Type 1 before RRC connection
+	intraSlotFreqHopping-PUSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 5-29: LBRM for PUSCH
+	pusch-LBRM							ENUMERATED {supported}						OPTIONAL,
+-- R1 6-5a: PDCCH blind detection capability for CA
+	pdcch-BlindDetectionCA				ENUMERATED {supported}						OPTIONAL,
+-- R1 8-3: TPC-PUSCH-RNTI
+	tpc-PUSCH-RNTI						ENUMERATED {supported}						OPTIONAL,
+-- R1 8-4: TPC-PUCCH-RNTI
+	tpc-PUCCH-RNTI						ENUMERATED {supported}						OPTIONAL,
+-- R1 8-5: TPC-SRS-RNTI
+	tpc-SRS-RNTI						ENUMERATED {supported}						OPTIONAL,
+-- R1 8-6: Absolute TPC command mode
+	absoluteTPC-Command					ENUMERATED {supported}						OPTIONAL,
+-- R1 8-7: UL power control with 2 PUSCH closed loops
+	twoDifferentTPC-Loop-PUSCH			ENUMERATED {supported}						OPTIONAL,
+-- R1 8-8: UL power control with 2 PUCCH closed loops
+	twoDifferentTPC-Loop-PUCCH			ENUMERATED {supported}						OPTIONAL,
+-- R4 1-6: pi/2-BPSK for PUSCH
+	pusch-HalfPi-BPSK					ENUMERATED {supported}						OPTIONAL,
+-- R4 1-7: pi/2-BPSK for PUCCH format 3/4
+	pucch-F3-4-HalfPi-BPSK				ENUMERATED {supported}						OPTIONAL,
+-- R4 1-9: 1-symbol GP in unpaired spectrum
+	oneSymbolGP-TDD						ENUMERATED {supported}						OPTIONAL,
+-- R4 2-7: Almost contiguous UL CP-OFDM
+	almostContiguousCP-OFDM-UL			ENUMERATED {supported}						OPTIONAL
+}
+
+Phy-ParametersFR1 ::=	SEQUENCE {
+-- R1 3-2: Unicast PDCCH monitoring following Case 1-2
+	pdcchMonitoringSingleOccasion		ENUMERATED {supported}						OPTIONAL,
+-- R4 1-1: 60kHz of subcarrier spacing for FR1
+	scs-60kHz							ENUMERATED {supported}						OPTIONAL,
+-- R4 1-4: 256QAM for PDSCH in FR1
+	pdsch-256QAM-FR1					ENUMERATED {supported}						OPTIONAL
+}
+
+Phy-ParametersFR2 ::=	SEQUENCE {
+-- R4 2-8: PA calibration gap
+	calibrationGapPA					ENUMERATED {supported}						OPTIONAL
+}
+
+RF-Parameters ::= SEQUENCE {
+	supportedBandListNR					SupportedBandListNR,
+	supportedBandCombination			BandCombinationList,
+	bandCombinationParametersUL-List	BandCombinationParametersUL-List
+}
+
+SupportedBandListNR ::=	SEQUENCE (SIZE (1..maxBands)) OF BandNR
+
+BandNR ::=	SEQUENCE {
+	bandNR							FreqBandIndicatorNR,
+-- Modified MPR behaviour as in RAN4 LS R2-1804077, which is needed for NSA as well as SA
+	modifiedMPR-Behaviour			BIT STRING (SIZE (8))						OPTIONAL,
+-- R4 2-1: Maximum channel bandwidth supported in each band for DL and UL separately and for each SCS that UE supports within a single CC
+-- RAN4 agreed that 400 MHz is optional for FR2. The other values defined for FR1/fR2 in TS 38.101 are mandatory w/o capability bit.
+	maxChannelBW-PerCC				ENUMERATED {mhz400}							OPTIONAL,
+	mimo-ParametersPerBand			MIMO-ParametersPerBand						OPTIONAL,
+-- R1 0-10: Extended CP
+	extendedCP						ENUMERATED {supported}						OPTIONAL,
+-- R1 0-13: Phase coherence across non-contiguous UL symbols in slot in the transmission of one channel
+	phaseCoherenceUL				ENUMERATED {supported}						OPTIONAL,
+-- R1 1-10: Support of SCell without SS/PBCH block
+	scellWithoutSSB					ENUMERATED {supported}						OPTIONAL,
+-- R1 1-11: Support of CSI-RS RRM measurement for SCell without SS/PBCH block
+	csi-RS-MeasSCellWithoutSSB		ENUMERATED {supported}						OPTIONAL,
+-- R1 2-15a: Association between CSI-RS and SRS
+	srs-AssocCSI-RS					ENUMERATED {supported}						OPTIONAL,
+-- R1 3-1a: For type 1 CSS with dedicated RRC configuration and for type 3 CSS, UE specific SS, CORESET resource allocation of 6RB bit-map and duration 3 OFDM symbols for FR2
+	type1-3-CSS						ENUMERATED {supported}						OPTIONAL,
+-- R1 3-4: More than one TCI state configurations per CORESET
+	multipleTCI						ENUMERATED {supported}						OPTIONAL,
+-- R1 3-5 & 3-5a: For type 1 with dedicated RRC configuration, type 3, and UE-SS,, monitoring occasion can be any OFDM symbol(s) of a slot for Case 2 (with a DCI gap)
+	pdcchMonitoringAnyOccasions		ENUMERATED {withoutDCI-gap, withDCI-gap}	OPTIONAL,
+-- R1 5-1a: UE specific RRC configure UL/DL assignment
+	ue-SpecificUL-DL-Assignment		ENUMERATED {supported}						OPTIONAL,
+-- R1 5-11 & 5-11a: Up to 2/7 unicast PDSCHs per slot for different TBs
+	pdsch-DifferentTB-PerSlot		SEQUENCE {
+		scs-15kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-30kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-60kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-120kHz						ENUMERATED {upto2, upto7}				OPTIONAL
+	}																			OPTIONAL,
+-- R1 5-12 & 5-12a: Up to 2/7 PUSCHs per slot for different TBs
+	pusch-DifferentTB-PerSlot		SEQUENCE {
+		scs-15kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-30kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-60kHz						ENUMERATED {upto2, upto7}				OPTIONAL,
+		scs-120kHz						ENUMERATED {upto2, upto7}				OPTIONAL
+	}																			OPTIONAL,
+-- R1 6-2 & 6-3: Type A/B BWP adaptation (up to 2/4 BWPs) with same numerology
+	bwp-SameNumerology					ENUMERATED {upto2, upto4}				OPTIONAL,
+-- R1 6-4: BWP adaptation (up to 4 BWPs) with different numerologies
+	bwp-DiffNumerology					ENUMERATED {upto4}						OPTIONAL,
+-- R1 6-7: Two PUCCH group
+	twoPUCCH-Group					ENUMERATED {supported}						OPTIONAL,
+-- R1 6-8: Different numerology across PUCCH groups
+	diffNumerologyAcrossPUCCH-Group	ENUMERATED {supported}						OPTIONAL,
+-- R1 6-9: Different numerologies across carriers within the same PUCCH group
+	diffNumerologyWithinPUCCH-Group	ENUMERATED {supported}						OPTIONAL,
+-- R1 6-10: Cross carrier scheduling
+	crossCarrierScheduling			ENUMERATED {supported}						OPTIONAL,
+-- R1 6-11: Number of supported TAGs
+	supportedNumberTAG				ENUMERATED {n2, n3, n4}						OPTIONAL,
+-- R1 6-19: Simultaneous transmission of SRS on an SUL/non-SUL carrier and PUSCH/PUCCH/SRS/PRACH on the other UL carrier in the same cell
+-- Details on the channel/signal combination are to be described in TS 38.306
+	simultaneousTxSUL-NonSUL		ENUMERATED {supported}						OPTIONAL,
+-- R1 6-21: DL search space sharing for CA
+	searchSpaceSharingCA-DL			ENUMERATED {supported}						OPTIONAL,
+-- R1 6-22: UL search space sharing for CA
+	searchSpaceSharingCA-UL			ENUMERATED {supported}						OPTIONAL,
+-- R4 1-4: 256QAM for PDSCH in FR2
+	pdsch-256QAM-FR2				ENUMERATED {supported}						OPTIONAL,
+-- R4 1-5: 256QAM for PUSCH
+	pusch-256QAM					ENUMERATED {supported}						OPTIONAL
+}
+
+MIMO-ParametersPerBand ::= SEQUENCE {
+-- R1 2-2: PDSCH beam switching
+	timeDurationForQCL					SEQUENCE {
+		scs-60kHz							ENUMERATED {s7, s14, s28}									OPTIONAL,
+		sch-120kHz							ENUMERATED {s14, s28}										OPTIONAL
+	}																									OPTIONAL,
+-- R1 2-3: PDSCH MIMO layers. Absence of this field implies support of one layer.
+	maxNumberMIMO-LayersPDSCH			MIMO-LayersDL													OPTIONAL,
+-- R1 2-14: Codebook based PUSCH MIMO transmission. Absence of this field implies that CB-based PUSCH is not supported.
+	maxNumberMIMO-LayersCB-PUSCH		MIMO-LayersUL													OPTIONAL,
+-- R1 2-15: Non-codebook based PUSCH MIMO transmission. Absence of this field implies that Non-CB-based PUSCH is not supported.
+	maxNumberMIMO-LayersNonCB-PUSCH		MIMO-LayersUL													OPTIONAL,
+-- R1 2-4: TCI states for PDSCH
+	maxNumberConfiguredTCIstates		ENUMERATED {n4, n8, n16, n32, n64}								OPTIONAL,
+	maxNumberActiveTCI-PerCC			ENUMERATED {n1, n2, n4, n8}										OPTIONAL,
+-- R1 2-13: PUSCH transmission coherence
+	pusch-TransCoherence				ENUMERATED {nonCoherent, partialNonCoherent, fullCoherent}	OPTIONAL,
+-- R1 2-20: Beam correspondence
+	beamCorrespondence					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-21: Periodic beam report on PUCCH
+	periodicBeamReport					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-22: Aperiodic beam report on PUSCH
+	aperiodicBeamReport					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-23: Semi-persistent beam report on PUCCH
+	sp-BeamReportPUCCH					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-23a: Semi-persistent beam report on PUSCH
+	sp-BeamReportPUSCH					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-24: SSB/CSI-RS for beam management
+	beamManagementSSB-CSI-RS			BeamManagementSSB-CSI-RS										OPTIONAL,
+-- R1 2-26: Receiving beam selection using CSI-RS resource repetition "ON"
+	maxNumberRxBeam						INTEGER (2..8)													OPTIONAL,
+-- R1 2-27: Beam switching (including SSB and CSI-RS)
+	maxNumberRxTxBeamSwitchDL			SEQUENCE {
+		scs-15kHz							ENUMERATED {n4, n7, n14}									OPTIONAL,
+		scs-30kHz							ENUMERATED {n4, n7, n14}									OPTIONAL,
+		scs-60kHz							ENUMERATED {n4, n7, n14}									OPTIONAL,
+		scs-120kHz							ENUMERATED {n4, n7, n14}									OPTIONAL,
+		scs-240kHz							ENUMERATED {n4, n7, n14}									OPTIONAL
+	}																									OPTIONAL,
+-- R1 2-29: Non-group based beam reporting
+	maxNumberNonGroupBeamReporting		ENUMERATED {n1, n2, n4}											OPTIONAL,
+-- R1 2-29a: Group based beam reporting
+	groupBeamReporting					ENUMERATED {supported}											OPTIONAL,
+-- R1 2-30: UL beam management
+	uplinkBeamManagement				SEQUENCE {
+		maxNumberSRS-ResourcePerSet			ENUMERATED {n8, n16, n32},
+		maxNumberSRS-ResourceSet			INTEGER (1..8)
+	}																									OPTIONAL,
+-- R1 2-31: Beam failure recovery
+	maxNumberCSI-RS-BFR					INTEGER (1..64)													OPTIONAL,
+	maxNumberSSB-BFR					INTEGER (1..64)													OPTIONAL,
+	maxNumberCSI-RS-SSB-BFR				INTEGER (1..256)												OPTIONAL,
+-- R1 2-45 & 2-48: 2 ports of DL/UL PTRS
+	twoPortsPTRS						BIT STRING (SIZE (2))											OPTIONAL,
+-- R1 2-53: SRS resources
+	supportedSRS-Resources			SRS-Resources														OPTIONAL,
+-- R1 2-55: SRS Tx switch
+	srs-TxSwitch					SRS-TxSwitch														OPTIONAL,
+-- R1 2-54a: Simultaneous SRS Tx
+	maxNumberSimultaneousSRS-PerCC		INTEGER (1..4)													OPTIONAL,
+-- R1 2-57: Support low latency CSI feedback
+	lowLatencyCSI-Feedback				ENUMERATED {supported}											OPTIONAL
+}
+
+-- R1 2-24: SSB/CSI-RS for beam management
+BeamManagementSSB-CSI-RS ::=	SEQUENCE {
+	maxNumberSSB-CSI-RS-ResourceOneTx	ENUMERATED {n8, n16, n32, n64},
+	maxNumberSSB-CSI-RS-ResourceTwoTx	ENUMERATED {n0, n4, n8, n16, n32, n64},
+	supportedCSI-RS-Density				ENUMERATED {one, three, oneAndThree}
+}
+
+-- R1 2-53: SRS resources
+SRS-Resources ::=	SEQUENCE {
+	maxNumberAperiodicSRS-PerBWP					ENUMERATED {n1, n2, n4, n8, n16},
+	maxNumberAperiodicSRS-PerBWP-PerSlot			INTEGER (1..6),
+	maxNumberPeriodicSRS-PerBWP						ENUMERATED {n1, n2, n4, n8, n16},
+	maxNumberPeriodicSRS-PerBWP-PerSlot				INTEGER (1..6),
+	maxNumberSemiPersitentSRS-PerBWP				ENUMERATED {n0, n1, n2, n4, n8, n16},
+	maxNumberSP-SRS-PerBWP-PerSlot					INTEGER (0..6),
+	maxNumberSRS-Ports-PerResource					ENUMERATED {n1, n2, n4}
+}
+-- R1 2-55: SRS Tx switch
+SRS-TxSwitch ::=	SEQUENCE {
+	supportedSRS-TxPortSwitch			ENUMERATED {t1r2, t1r4, t2r4, t1r4-t2r4},
+	txSwitchImpactToRx					ENUMERATED {true}								OPTIONAL
+}
+
+PDCP-Parameters ::= SEQUENCE {
+	supportedROHC-Profiles	SEQUENCE {
+		profile0x0000		BOOLEAN, 
+		profile0x0001		BOOLEAN, 
+		profile0x0002		BOOLEAN,
+		profile0x0003		BOOLEAN, 
+		profile0x0004		BOOLEAN, 
+		profile0x0006		BOOLEAN, 
+		profile0x0101		BOOLEAN, 
+		profile0x0102		BOOLEAN, 
+		profile0x0103		BOOLEAN, 
+		profile0x0104		BOOLEAN
+	}, 
+	maxNumberROHC-ContextSessions	ENUMERATED {cs2, cs4, cs8, cs12, cs16, cs24, cs32, cs48, cs64, cs128, cs256, cs512, cs1024, cs16384, spare2, spare1},	
+	uplinkOnlyROHC-Profiles			ENUMERATED {supported}	OPTIONAL, 
+	continueROHC-Context			ENUMERATED {supported}	OPTIONAL,
+	outOfOrderDelivery				ENUMERATED {supported}	OPTIONAL, 
+	shortSN							ENUMERATED {supported} 	OPTIONAL
+}
+
+RLC-Parameters ::= SEQUENCE {
+	am-WithShortSN					ENUMERATED {supported}	OPTIONAL,
+		um-WithShortSN					ENUMERATED {supported}	OPTIONAL, 
+		um-WIthLongSN					ENUMERATED {supported}	OPTIONAL
+}
+
+MAC-Parameters ::= SEQUENCE {
+	mac-ParametersCommon			MAC-ParametersCommon	OPTIONAL,
+	mac-ParametersXDD-Diff			MAC-ParametersXDD-Diff	OPTIONAL
+}
+
+MAC-ParametersCommon ::=	SEQUENCE {
+	lcp-Restriction					ENUMERATED {supported}	OPTIONAL,
+-- R1 4-24: PUCCH-spatialrelationinfo indication by a MAC CE per PUCCH resource
+	pucch-SpatialRelInfoMAC-CE		ENUMERATED {supported}	OPTIONAL
+}
+
+MAC-ParametersXDD-Diff ::=	SEQUENCE {
+	skipUplinkTxDynamic				ENUMERATED {supported}	OPTIONAL,
+	logicalChannelSR-DelayTimer		ENUMERATED {supported}	OPTIONAL, 
+	longDRX-Cycle					ENUMERATED {supported}	OPTIONAL, 
+	shortDRX-Cycle					ENUMERATED {supported}	OPTIONAL, 
+	multipleSR-Configurations		ENUMERATED {supported}	OPTIONAL, 
+	-- If supported UE supports 8 SR configurations, otherwise 1 SR config is supported. 
+	-- Confirmation is needed whether to align the number to what the configuration signalling can support.
+	multipleConfiguredGrantConfigurations	ENUMERATED {supported}	OPTIONAL 
+	-- If supported UE supports 16 configured grant configurations, otherwise 1 ConfiguredGrant config is supported.
+	-- Confirmation is needed whether to align the number to what the configuration signalling can support, and to consider whether the 16 refers
+	-- to the configurations or the active ones only (as they are within the BWP).
+}
+
+MeasParameters ::= SEQUENCE {
+	measParametersXDD-Diff			MeasParametersXDD-Diff		OPTIONAL,
+	measParametersFRX-Diff			MeasParametersFRX-Diff		OPTIONAL
+}
+
+MeasParametersXDD-Diff ::=	SEQUENCE {
+	intraAndInterF-MeasAndReport	ENUMERATED {supported}	OPTIONAL,
+	eventA-MeasAndReport			ENUMERATED {supported}	OPTIONAL 
+	-- Confirmation is needed on the need of capability/IOT signaling in LTE for support of the additional measurement gap configurations.
+}
+
+MeasParametersFRX-Diff ::=	SEQUENCE {
+-- R1 1-3: SSB based SINR measurement
+	ss-SINR-Meas						ENUMERATED {supported}		OPTIONAL,
+-- R1 1-5: CSI-RS based RRM measurement with associated SS-block
+	csi-RSRP-AndRSRQ-MeasWithSSB		ENUMERATED {supported}		OPTIONAL,
+-- R1 1-5a: CSI-RS based RRM measurement without associated SS-block
+	csi-RSRP-AndRSRQ-MeasWithoutSSB		ENUMERATED {supported}		OPTIONAL,
+-- R1 1-6: CSI-RS based SINR measurement
+	csi-SINR-Meas						ENUMERATED {supported}		OPTIONAL,
+-- R1 1-7: CSI-RS based RLM
+	csi-RS-RLM							ENUMERATED {supported}		OPTIONAL
+}
+
+-- TAG-UE-NR-CAPABILITY-STOP
+-- TAG-RRC-TRANSACTIONIDENTIFIER-START
+
+RRC-TransactionIdentifier ::=		INTEGER (0..3)
+
+-- TAG-RRC-TRANSACTIONIDENTIFIER-STOP
+-- TAG-MULTIPLICITY-AND-TYPE-CONSTRAINT-DEFINITIONS-START
+
+maxBandComb								INTEGER ::=	65536	-- Maximum number of DL band combinations
+maxBasebandProcComb						INTEGER ::=	65536	-- Maximum number of baseband processing combinations
+maxNrofServingCells						INTEGER ::=	32		-- Max number of serving cells (SpCell + SCells) per cell group
+maxNrofServingCells-1					INTEGER ::= 31		-- Max number of serving cells (SpCell + SCells) per cell group minus 1
+maxNrofAggregatedCellsPerCellGroup		INTEGER ::= 16
+maxNrofSCells							INTEGER ::=	31		-- Max number of secondary serving cells per cell group
+maxNrofCellMeas							INTEGER ::=	32		-- Maximum number of entries in each of the cell lists in a measurement object
+maxNrofSS-BlocksToAverage				INTEGER ::= 16		-- Max number for the (max) number of SS blocks to average to determine cell
+															-- measurement
+maxNrofCSI-RS-ResourcesToAverage			INTEGER ::= 16		-- Max number for the (max) number of CSI-RS to average to determine cell
+															-- measurement
+maxNrofDL-Allocations 					INTEGER ::= 16		-- Maximum number of PDSCH time domain resource allocations
+
+maxNrofSR-ConfigPerCellGroup				INTEGER ::= 8		-- Maximum number of SR configurations per cell group
+
+maxLCG-ID								INTEGER ::= 7		-- Maximum value of LCG ID
+maxLC-ID								INTEGER ::= 32		-- Maximum value of Logical Channel ID
+maxNrofTAGs								INTEGER ::=	4		-- Maximum number of Timing Advance Groups
+maxNrofTAGs-1							INTEGER ::=	3		-- Maximum number of Timing Advance Groups minus 1
+
+maxNrofBWPs								INTEGER ::= 4		-- Maximum number of BWPs per serving cell
+maxNrofSymbols-1						INTEGER ::= 13		-- Maximum index identifying a symbol within a slot (14 symbols, indexed from 0..13)
+maxNrofSlots							INTEGER ::= 320		-- Maximum number of slots in a 10 ms period
+maxNrofSlots-1							INTEGER ::= 319		-- Maximum number of slots in a 10 ms period minus 1
+
+maxNrofPhysicalResourceBlocks			INTEGER ::= 275		-- Maximum number of PRBs
+maxNrofPhysicalResourceBlocks-1			INTEGER ::= 274		-- Maximum number of PRBs
+maxNrofControlResourceSets 				INTEGER ::= 12 		-- Max number of CoReSets configurable on a serving cell
+maxNrofControlResourceSets-1			INTEGER ::= 11  	-- Max number of CoReSets configurable on a serving cell minus 1
+maxCoReSetDuration						INTEGER ::= 3		-- Max number of OFDM symbols in a control resource set
+maxNrofSearchSpaces						INTEGER ::= 40		-- Max number of Search Spaces
+maxNrofSearchSpaces-1					INTEGER ::= 39		-- Max number of Search Spaces minus 1
+maxSFI-DCI-PayloadSize					INTEGER ::= 128		-- Max number payload of a DCI scrambled with SFI-RNTI
+maxSFI-DCI-PayloadSize-1				INTEGER ::= 127		-- Max number payload of a DCI scrambled with SFI-RNTI minus 1
+maxINT-DCI-PayloadSize					INTEGER ::= 126		-- Max number payload of a DCI scrambled with INT-RNTI
+maxINT-DCI-PayloadSize-1				INTEGER ::= 125		-- Max number payload of a DCI scrambled with INT-RNTI minus 1
+maxNrofRateMatchPatterns				INTEGER ::= 4		-- Max number of rate matching patterns that may be configured
+maxNrofRateMatchPatterns-1				INTEGER ::= 3		-- Max number of rate matching patterns that may be configured minus 1
+
+maxNrofCSI-ReportConfigurations			INTEGER ::= 48 		-- Maximum number of report configurations
+maxNrofCSI-ReportConfigurations-1		INTEGER ::= 47		-- Maximum number of report configurations minus 1
+
+maxNrofCSI-ResourceConfigurations		INTEGER ::= 112		-- Maximum number of resource configurations
+maxNrofCSI-ResourceConfigurations-1		INTEGER ::= 111		-- Maximum number of resource configurations minus 1
+
+maxNrofAP-CSI-RS-ResourcesPerSet		INTEGER ::= 16
+maxNrOfCSI-AperiodicTriggers			INTEGER ::= 128		-- Maximum number of triggers for aperiodic CSI reporting
+maxNrofReportConfigPerAperiodicTrigger	INTEGER ::= 16		-- Maximum number of report configurations per trigger state for aperiodic reporting
+
+maxNrofNZP-CSI-RS-Resources				INTEGER ::= 192		-- Maximum number of Non-Zero-Power (NZP) CSI-RS resources
+maxNrofNZP-CSI-RS-Resources-1			INTEGER ::= 191		-- Maximum number of Non-Zero-Power (NZP) CSI-RS resources minus 1
+maxNrofNZP-CSI-RS-ResourcesPerSet		INTEGER ::= 64		-- Maximum number of NZP CSI-RS resources per resource set
+maxNrofNZP-CSI-RS-ResourceSetsPerConfig	INTEGER ::= 16		-- Maximum number of resource sets per resource configuration
+
+maxNrofZP-CSI-RS-Resources				INTEGER ::= 32		-- Maximum number of Zero-Power (NZP) CSI-RS resources
+maxNrofZP-CSI-RS-Resources-1			INTEGER ::= 31		-- Maximum number of Zero-Power (NZP) CSI-RS resources minus 1
+maxNrofZP-CSI-RS-ResourceSets-1			INTEGER ::= 16
+maxNrofZP-CSI-RS-ResourcesPerSet		INTEGER ::= 16
+maxNrofZP-CSI-RS-Sets					INTEGER ::= 16
+
+maxNrofCSI-IM-Resources					INTEGER ::= 32		-- Maximum number of CSI-IM resources. See CSI-IM-ResourceMax in 38.214.
+maxNrofCSI-IM-Resources-1				INTEGER ::= 31		-- Maximum number of CSI-IM resources minus 1. See CSI-IM-ResourceMax in 38.214.
+maxNrofCSI-IM-ResourcesPerSet			INTEGER ::= 8		-- Maximum number of CSI-IM resources per set. See CSI-IM-ResourcePerSetMax in 38.214
+maxNrofCSI-IM-ResourceSetsPerConfig 	INTEGER ::= 16		-- Maximum number of CSI IM resource sets per resource configuration
+
+maxNrofSSB-Resources-1					INTEGER ::= 63		-- Maximum number of SSB resources in a resource set minus 1
+maxNrofCSI-SSB-ResourcePerSet 			INTEGER ::= 64
+maxNrofCSI-SSB-ResourceSetsPerConfig 	INTEGER ::= 1		-- Maximum number of CSI SSB resource sets per resource configuration
+
+maxNrofFailureDetectionResources		INTEGER ::= 10		-- Maximum number of failure detection resources	
+
+maxNrofObjectId							INTEGER ::= 64		-- Maximum number of measurement objects
+maxNrofPCI-Ranges						INTEGER ::= 8		-- Maximum number of PCI ranges
+maxNrofCSI-RS-ResourcesRRM				INTEGER ::= 96		-- Maximum number of CSI-RS resources for an RRM measurement object
+maxNrofCSI-RS-ResourcesRRM-1			INTEGER ::= 95		-- Maximum number of CSI-RS resources for an RRM measurement object minus 1
+maxNrofMeasId							INTEGER ::= 64		-- Maximum number of configured measurements
+maxNrofQuantityConfig					INTEGER	::= 2		-- Maximum number of quantity configurations
+maxNrofCSI-RS-CellsRRM 					INTEGER ::= 96 		-- Maximum number of FFS
+
+maxNrofSRS-ResourceSets					INTEGER ::= 16		-- Maximum number of SRS resource sets in a BWP.
+maxNrofSRS-ResourceSets-1				INTEGER ::= 15		-- Maximum number of SRS resource sets in a BWP minus 1.
+maxNrofSRS-Resources					INTEGER ::= 64		-- Maximum number of SRS resources in an SRS resource set.
+maxNrofSRS-Resources-1					INTEGER ::= 63		-- Maximum number of SRS resources in an SRS resource set minus 1.
+maxNrofSRS-TriggerStates-1 				INTEGER ::= 3		-- Maximum number of SRS trigger states minus 1, i.e., the largest code point.
+maxRAT-CapabilityContainers				INTEGER ::= 8		-- Maximum number of interworking RAT containers (incl NR and MRDC)
+maxSimultaneousBands					INTEGER ::= 32		-- Maximum number of simultaneously aggregated bands
+
+
+maxNrofSlotFormatCombinationsPerCell	INTEGER ::= 16		-- Maximum number of
+maxNrofSlotFormatCombinationsPerSet		INTEGER ::= 4096	-- Maximum number of Slot Format Combinations in a SF-Set.
+maxNrofSlotFormatCombinationsPerSet-1	INTEGER ::= 4095	-- Maximum number of Slot Format Combinations in a SF-Set minus 1.
+maxNrofPUCCH-Resources					INTEGER ::= 128
+maxNrofPUCCH-Resources-1				INTEGER ::= 127
+maxNrofPUCCH-ResourceSets				INTEGER ::= 4		-- Maximum number of PUCCH Resource Sets
+maxNrofPUCCH-ResourceSets-1				INTEGER ::= 3		-- Maximum number of PUCCH Resource Sets minus 1.
+maxNrofPUCCH-ResourcesPerSet			INTEGER ::= 32		-- Maximum number of PUCCH Resources per PUCCH-ResourceSet
+maxNrofPUCCH-ResourcesPerSet-1			INTEGER ::= 31		-- Maximum number of PUCCH Resources per PUCCH-ResourceSet minus 1.
+maxNrofPUCCH-P0-PerSet					INTEGER ::= 8		-- Maximum number of P0-pucch present in a p0-pucch set
+maxNrofPUCCH-PathlossReferenceRSs		INTEGER ::= 4		-- Maximum number of RSs used as pathloss reference for PUCCH power control. 
+maxNrofPUCCH-PathlossReferenceRSs-1		INTEGER ::= 3		-- Maximum number of RSs used as pathloss reference for PUCCH power control minus 1.
+
+maxNrofP0-PUSCH-AlphaSets				INTEGER ::= 30		-- Maximum number of P0-pusch-alpha-sets (see 38,213, section 7.1)
+maxNrofP0-PUSCH-AlphaSets-1				INTEGER ::= 29		-- Maximum number of P0-pusch-alpha-sets minus 1 (see 38,213, section 7.1)
+maxNrofPUSCH-PathlossReferenceRSs		INTEGER ::= 4		-- Maximum number of RSs used as pathloss reference for PUSCH power control. 
+maxNrofPUSCH-PathlossReferenceRSs-1		INTEGER ::= 3		-- Maximum number of RSs used as pathloss reference for PUSCH power control minus 1.
+
+maxBands 								INTEGER ::= 1024		-- Maximum number of supported bands in UE capability.
+maxBandsMRDC							INTEGER	::= 1280
+maxBandsEUTRA							INTEGER ::=	256
+maxCellPrep		 						INTEGER ::= 32
+maxCellReport		 					INTEGER ::= 8
+maxDRB		 							INTEGER ::= 29			-- Maximum number of DRBs (that can be added in DRB-ToAddModLIst).
+maxFreq		 							INTEGER ::= 8			-- Max number of non-serving frequencies in MeasResultSCG-Failure.
+maxNrofCSI-RS	 						INTEGER ::= 64
+maxNrofCandidateBeams 					INTEGER ::= 16			-- Max number of PRACH-ResourceDedicatedBFR that in BFR config.
+maxNrofPCIsPerSMTC 						INTEGER ::= 64			-- Maximun number of PCIs per SMTC.
+maxNrofQFIs 							INTEGER ::= 64
+maxNrofSR-Resources		 				INTEGER ::= 8			-- Maximum number of SR resources per BWP in a cell.
+maxNrofSlotFormatsPerCombination 		INTEGER ::= 256
+maxNrofSpatialRelationInfos 			INTEGER ::= 8
+maxNrofSRS-ResourcesPerSet 				INTEGER ::= 16
+maxNrofIndexesToReport 					INTEGER ::= 32
+maxNrofSSBs 							INTEGER ::= 64 			-- Maximum number of SSB resources in a resource set.
+maxNrofSSBs-1							INTEGER ::= 63			-- Maximum number of SSB resources in a resource set minus 1.
+
+maxNrofTCI-StatesPDCCH 					INTEGER ::= 64
+maxNrofTCI-States						INTEGER ::= 64			-- Maximum number of TCI states.
+maxNrofTCI-States-1						INTEGER ::= 63			-- Maximum number of TCI states minus 1.
+maxNrofUL-Allocations 					INTEGER ::= 16			-- Maximum number of PUSCH time domain resource allocations.
+maxQFI 									INTEGER ::= 63
+maxRA-CSIRS-Resources 					INTEGER ::= 96
+maxRA-OccasionsPerCSIRS					INTEGER ::= 64			-- Maximum number of RA occasions for one CSI-RS
+maxRA-Occasions-1						INTEGER ::=	511			-- Maximum number of RA occasions in the system
+maxRA-SSB-Resources 					INTEGER ::= 64
+maxSCSs									INTEGER ::= 5
+maxSecondaryCellGroups 					INTEGER ::= 3
+maxNrofServingCellsEUTRA				INTEGER ::= 32
+maxMBSFN-Allocations					INTEGER ::= 8
+maxNrofMultiBands						INTEGER ::= 8
+maxCellSFTD    	                    	INTEGER ::= 3  			-- Maximum number of cells for SFTD reporting
+maxReportConfigId                 	 	INTEGER ::= 64
+
+maxNrofSRI-PUSCH-Mappings				INTEGER ::= 16
+maxNrofSRI-PUSCH-Mappings-1				INTEGER ::= 15
+
+-- Editor’s Note: Targeted for completion in June 2018. Not used in EN-DC drop.
+CellIdentity ::=						ENUMERATED {ffsTypeAndValue}
+ShortMAC-I ::=							ENUMERATED {ffsTypeAndValue}
+
+-- TAG-MULTIPLICITY-AND-TYPE-CONSTRAINT-DEFINITIONS-STOP
+
+END
+
diff --git a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-UE-Variables.asn b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-UE-Variables.asn
new file mode 100755
index 0000000000000000000000000000000000000000..3eeec31891fd642cffb55a28fd5987f81b2daee7
--- /dev/null
+++ b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-UE-Variables.asn
@@ -0,0 +1,46 @@
+NR-UE-Variables DEFINITIONS AUTOMATIC TAGS ::=
+ 
+BEGIN
+
+-- TAG-VAR-MEAS-CONFIG-START
+
+VarMeasConfig ::=					SEQUENCE {
+	-- Measurement identities
+	measIdList							MeasIdToAddModList					OPTIONAL,
+	-- Measurement objects
+	measObjectList						MeasObjectToAddModList				OPTIONAL,
+	-- Reporting configurations
+	reportConfigList					ReportConfigToAddModList			OPTIONAL,
+	-- Other parameters
+	quantityConfig						QuantityConfig						OPTIONAL,
+	
+	s-MeasureConfig							CHOICE {
+		ssb-RSRP								RSRP-Range,						
+		csi-RSRP								RSRP-Range						
+	} 																		OPTIONAL
+
+}
+
+-- TAG-VAR-MEAS-CONFIG-STOP
+-- TAG-VAR-MEAS-REPORT-START
+
+VarMeasReportList ::=				SEQUENCE (SIZE (1..maxNrofMeasId)) OF VarMeasReport
+
+VarMeasReport ::=					SEQUENCE {
+	-- List of measurement that have been triggered
+	measId								MeasId,
+	cellsTriggeredList					CellsTriggeredList				OPTIONAL,
+	numberOfReportsSent					INTEGER
+}
+
+CellsTriggeredList ::=				SEQUENCE (SIZE (1..maxNrofCellMeas)) OF CHOICE {
+	physCellId							PhysCellId,
+--	Not needed for EN-DC.
+	physCellIdEUTRA						ENUMERATED {ffsTypeAndValue}
+	}
+
+
+-- TAG-VAR-MEAS-REPORT-STOP
+
+END
+
diff --git a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/extract_asn1_from_spce.pl b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/extract_asn1_from_spce.pl
new file mode 100755
index 0000000000000000000000000000000000000000..18f6792a8c870819ba1ceac1641866d6376b0eec
--- /dev/null
+++ b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/extract_asn1_from_spce.pl
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+# This script extracts the ASN1 definition from and TS 38.331 and generates 3 output files that can be processed by asn2wrs
+# First download the specification from 3gpp.org as a word document and open it
+# Then in "view" menu, select normal or web layout (needed to removed page header and footers)
+# Finally save the document as a text file
+# Call the script: "perl extract_asn1_from_spec.pl 38331-xxx.txt"
+# It should generate: NR-RRC-Definitions.asn, NR-UE-Variables.asn and NR-InterNodeDefinitions
+use warnings;
+$input_file = $ARGV[0];
+$NR_def_output_file = "NR-RRC-Definitions.asn";
+$NR_var_output_file = "NR-UE-Variables.asn";
+$NR_internode_output_file = "NR-InterNodeDefinitions.asn";
+
+
+sub extract_asn1;
+
+open(INPUT_FILE, "< $input_file") or die "Can not open file $input_file";
+
+while (<INPUT_FILE>) {
+
+  # Process the NR-RRC-Definitions section
+  if( m/NR-RRC-Definitions DEFINITIONS AUTOMATIC TAGS ::=/){
+    open(OUTPUT_FILE, "> $NR_def_output_file") or die "Can not open file $def_output_file";
+    syswrite OUTPUT_FILE,"$_ \n";
+    syswrite OUTPUT_FILE,"BEGIN\n\n";
+
+    # Get all the text delimited by -- ASN1START and -- ASN1STOP
+    extract_asn1();
+
+    syswrite OUTPUT_FILE,"END\n\n";
+    close(OUTPUT_FILE);
+  }
+
+  # Process the NR-UE-Variables section
+  if( m/NR-UE-Variables DEFINITIONS AUTOMATIC TAGS ::=/){
+    open(OUTPUT_FILE, "> $NR_var_output_file") or die "Can not open file $def_output_file";
+    syswrite OUTPUT_FILE,"$_ \n";
+    syswrite OUTPUT_FILE,"BEGIN\n\n";
+
+    # Get all the text delimited by -- ASN1START and -- ASN1STOP
+    extract_asn1();
+
+    syswrite OUTPUT_FILE,"END\n\n";
+    close(OUTPUT_FILE);
+  }
+  # Process the NR-InterNodeDefinitions section
+  if( m/NR-InterNodeDefinitions DEFINITIONS AUTOMATIC TAGS ::=/){
+    open(OUTPUT_FILE, "> $NR_internode_output_file") or die "Can not open file $def_output_file";
+    syswrite OUTPUT_FILE,"$_ \n";
+    syswrite OUTPUT_FILE,"BEGIN\n\n";
+
+    # Get all the text delimited by -- ASN1START and -- ASN1STOP
+    extract_asn1();
+
+    syswrite OUTPUT_FILE,"END\n\n";
+    close(OUTPUT_FILE);
+  }
+
+}
+
+close(INPUT_FILE);
+
+# This subroutine copies the text delimited by -- ASN1START and -- ASN1STOP in INPUT_FILE
+# and copies it into OUTPUT_FILE.
+# It stops when it meets the keyword "END"
+sub extract_asn1 {
+  my $line = <INPUT_FILE>;
+  my $is_asn1 = 0;
+
+  while(($line ne "END\n") && ($line ne "END\r\n")){
+    if ($line =~ m/-- ASN1STOP/) {
+      $is_asn1 = 0;
+    }
+    if ($is_asn1 == 1){
+      syswrite OUTPUT_FILE,"$line";
+    }
+    if ($line =~ m/-- ASN1START/) {
+      $is_asn1 = 1;
+    }
+    $line = <INPUT_FILE>;
+  }
+}
diff --git a/openair2/RRC/NR/defs_NR.h b/openair2/RRC/NR/defs_NR.h
index 88d2510fb6d20012dd6cd6c7fe0d873908321ea9..0a2b19f65c03d90e156af47d92f81928c57e0a6f 100644
--- a/openair2/RRC/NR/defs_NR.h
+++ b/openair2/RRC/NR/defs_NR.h
@@ -92,7 +92,7 @@ typedef unsigned int uid_NR_t;
 typedef struct uid_linear_allocator_NR_s {
   unsigned int   bitmap[UID_LINEAR_ALLOCATOR_BITMAP_SIZE_NR];
 } uid_allocator_NR_t;
-
+    
 
 #define PROTOCOL_RRC_CTXT_UE_FMT                PROTOCOL_CTXT_FMT
 #define PROTOCOL_RRC_CTXT_UE_ARGS(CTXT_Pp)      PROTOCOL_CTXT_ARGS(CTXT_Pp)
@@ -391,9 +391,10 @@ typedef struct {
   // buffer that contains the encoded messages
   uint8_t							                      *MIB_NR;
   uint8_t							                      sizeof_MIB_NR;
+
+  uint8_t                                   *SIB1_NR;
+  uint8_t                                   sizeof_SIB1_NR;
 /*
-  uint8_t                                   *SIB1_NB_IoT;
-  uint8_t                                   sizeof_SIB1_NB_IoT;
   uint8_t                         	        *SIB23_NB_IoT;
   uint8_t                        	          sizeof_SIB23_NB_IoT;
 */
@@ -425,7 +426,7 @@ typedef struct {
   uint32_t                                  dl_CarrierFreq; //detected by the UE
   uint32_t                                  ul_CarrierFreq; //detected by the UE
   uint16_t                                  physCellId; //not stored in the MIB-NB but is getting through NPSS/NSSS
-
+  
   //are the only static one (memory has been already allocated)
   BCCH_BCH_Message_t                        mib_NR;
   
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index ef3658af07d21159ce07971573f61eb268fbff7a..75c6c195d1f016ae7893b7eed25207c32bf9576a 100644
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -89,7 +89,7 @@
 #if defined(ENABLE_ITTI)
 #   include "intertask_interface.h"
 #endif
-
+             
 #if ENABLE_RAL
 #   include "rrc_eNB_ral.h"
 #endif
@@ -138,59 +138,54 @@ init_SI(
   const int              CC_id
 #if defined(ENABLE_ITTI)
   ,
-  RrcConfigurationReq * configuration
+  gNB_RrcConfigurationReq * configuration
 #endif
 )
 //-----------------------------------------------------------------------------
 {
-#if defined(Rel10) || defined(Rel14)
   int                                 i;
-#endif
-
-#ifdef Rel14
-  SystemInformationBlockType1_v1310_IEs_t *sib1_v13ext=(SystemInformationBlockType1_v1310_IEs_t *)NULL;
-#endif
 
   LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
 
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB = (uint8_t*) malloc16(4);
   // copy basic parameters
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId      = configuration->Nid_cell[CC_id];
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB           = configuration->nb_antenna_ports[CC_id];
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp             = configuration->prefix_type[CC_id];
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq  = configuration->downlink_frequency[CC_id];
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq  = configuration->downlink_frequency[CC_id]+ configuration->uplink_frequency_offset[CC_id];
-#ifdef Rel14
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition = configuration->pbch_repetition[CC_id];
-#endif
-  LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n", 
-	(int)configuration->N_RB_DL[CC_id],
-	(int)configuration->phich_resource[CC_id],
-	(int)configuration->phich_duration[CC_id]);
-  do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
-#ifdef ENABLE_ITTI
-	 configuration->N_RB_DL[CC_id],
-	 configuration->phich_resource[CC_id],
-	 configuration->phich_duration[CC_id]
-#else
-	 50,0,0
-#endif
-	 ,0);
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId      = configuration->Nid_cell[CC_id];
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB           = configuration->nb_antenna_ports[CC_id];
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp             = configuration->prefix_type[CC_id];
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq  = configuration->downlink_frequency[CC_id];
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq  = configuration->downlink_frequency[CC_id]+ configuration->uplink_frequency_offset[CC_id];
   
+  ///MIB
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_MIB_NR 	= 0;
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].MIB_NR 			= (uint8_t*) malloc16(4);
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_MIB_NR 	= do_MIB_NR(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],0,
+																			#ifdef ENABLE_ITTI
+	 																		configuration->ssb_SubcarrierOffset[CC_id],
+	 																		configuration->pdcch_ConfigSIB1[CC_id],
+	 																		configuration->subCarrierSpacingCommon[CC_id],
+	 																		configuration->dmrs_TypeA_Position[CC_id]
+																			#else
+	 																		0,0,15,2
+																			#endif
+	 																		);
+
+  ///SIB1
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_NR 		= 0;
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_NR 			= (uint8_t*) malloc16(32);
+  AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_NR!	= NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for NR SIB1 allocated\n",PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+  
+  RC.nr_rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_NR		= do_SIB1_NR(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
+  																				ctxt_pP->module_id,
+  																				CC_id
+																				#if defined(ENABLE_ITTI)
+								   												, configuration
+																				#endif
+								   												);
+  
+  AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.nr_rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1_NR == 255");
 
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = 0;
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = 0;
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1 = (uint8_t*) malloc16(32);
-
-  AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1!=NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for SIB1 allocated\n",
-	      PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
-#if defined(ENABLE_ITTI)
-								   , configuration
-#endif
-								   );
 
-  AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
+/*
+  RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = 0;
 
   RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23 = (uint8_t*) malloc16(64);
   AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23!=NULL,"cannot allocate memory for SIB");
@@ -301,7 +296,7 @@ init_SI(
 #endif
 
   LOG_D(RRC, "About to call rrc_mac_config_req_eNB\n");
-
+*/
   rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
 			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId,
 			 RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB,