From e9ce528ed7731a8402e3b38a9532659b666e369c Mon Sep 17 00:00:00 2001
From: WEI-TAI CHEN <kroempa@gmail.com>
Date: Mon, 28 May 2018 04:52:39 -0700
Subject: [PATCH] Modified and fixed common config

---
 cmake_targets/CMakeLists.txt                  |  58 +++++---
 cmake_targets/build_oai                       |   2 +-
 cmake_targets/tools/build_helper              |  15 +-
 cmake_targets/tools/fix_asn1                  |  13 +-
 cmake_targets/tools/generate_asn1             |   7 +-
 openair2/COMMON/rrc_messages_types.h          |  12 +-
 openair2/ENB_APP/gnb_config.c                 | 130 +++++++++++++++++-
 openair2/ENB_APP/gnb_paramdef.h               |  27 +++-
 openair2/RRC/NR/MESSAGES/asn1_msg.c           |   6 +-
 .../ASN1_files/NR-InterNodeDefinitions.asn    |   0
 .../asn1c/ASN1_files/NR-RRC-Definitions.asn   |  96 ++++++-------
 .../asn1c/ASN1_files/NR-UE-Variables.asn      |   0
 openair2/RRC/NR/defs_NR.h                     |  77 +++++------
 openair2/RRC/NR/rrc_gNB.c                     |  18 +--
 targets/COMMON/openairinterface5g_limits.h    |  42 ++++++
 .../CONF/enb.band7.tm1.50PRB.usrpb210.conf    |   8 ++
 16 files changed, 368 insertions(+), 143 deletions(-)
 mode change 100755 => 100644 openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn
 mode change 100755 => 100644 openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn
 mode change 100755 => 100644 openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-UE-Variables.asn

diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index d109a58876..cc844cd345 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -272,15 +272,16 @@ endif (${ENABLE_ITTI})
 # New C code source file, cmake must be re-run (instead of re-running make only)
 #############
 set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1")
+set(asn1c_call_NR "${OPENAIR_CMAKE}/tools/generate_asn1_NR")
 set(fix_asn1c_call "${OPENAIR_CMAKE}/tools/fix_asn1")
 set(asn1_generated_dir ${OPENAIR_BIN_DIR})
-
 set(protoc_call "${OPENAIR_CMAKE}/tools/generate_protobuf")
 set(protobuf_generated_dir ${OPENAIR_BIN_DIR})
 
 # RRC
 ######
-add_list2_option(RRC_ASN1_VERSION "Rel10" "ASN.1 version of RRC interface" "Rel8" "Rel10" "CBA")
+
+add_list2_option(RRC_ASN1_VERSION "Rel14" "ASN.1 version of RRC interface" "Rel8" "Rel10" "Rel14" "CBA")
 
 if (${RRC_ASN1_VERSION} STREQUAL "Rel8")
   set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-86.asn)
@@ -330,32 +331,45 @@ add_custom_command (
 
 #NR RRC
 
-add_list2_option(NR_RRC_ASN1_VERSION "Rel15" "ASN.1 version of NR_RRC interface")
+add_list2_option(NR_RRC_ASN1_VERSION "NR_Rel15" "ASN.1 version of NR_RRC interface")
 
-if (${NR_RRC_ASN1_VERSION} STREQUAL "Rel15")
-  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn)
-endif  (${NR_RRC_ASN1_VERSION} STREQUAL "Rel15")
+if (${NR_RRC_ASN1_VERSION} STREQUAL "NR_Rel15")
+  set (NR_RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn)
+endif  (${NR_RRC_ASN1_VERSION} STREQUAL "NR_Rel15")
 
 set (NR_RRC_FULL_DIR ${asn1_generated_dir}/${NR_RRC_ASN1_VERSION})
 
-if(NOT EXISTS ${asn1c_call})
-  message( FATAL_ERROR "The script ${asn1c_call} must be present" )
-endif(NOT EXISTS ${asn1c_call})
+if(NOT EXISTS ${asn1c_call_NR})
+message( FATAL_ERROR "The script ${asn1c_call_NR} must be present" )
+endif(NOT EXISTS ${asn1c_call_NR})
+
+#message("calling ASN1C_PREFIX=NR_ asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${RRC_FULL_DIR} ${RRC_GRAMMAR}")
+#set (asn1_install_log ${OPENAIR_CMAKE}/log/NR_asn1c_install_log.txt)
+#execute_process(COMMAND mkdir -p ${NR_RRC_FULL_DIR}
+#		COMMAND env "ASN1C_PREFIX=NR_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${NR_RRC_FULL_DIR} ${NR_RRC_GRAMMAR}
+#                RESULT_VARIABLE ret
+#                ) 
 
-execute_process(COMMAND ${asn1c_call}  
+ 
+execute_process(COMMAND ${asn1c_call_NR}  
 			${NR_RRC_FULL_DIR} 
-			${RRC_GRAMMAR}
+			${NR_RRC_GRAMMAR}
+			${NR_RRC_ASN1_VERSION}
                         RESULT_VARIABLE ret)
 
 if (NOT ${ret} STREQUAL 0)
-  message(FATAL_ERROR "${asn1c_call}: error")
+   message(FATAL_ERROR "${asn1c_call_NR}: error")
 endif (NOT ${ret} STREQUAL 0)
 
 if(NOT EXISTS ${fix_asn1c_call})
   message( FATAL_ERROR "The script ${fix_asn1c_call} must be present" )
 endif(NOT EXISTS ${fix_asn1c_call})
-execute_process(COMMAND ${fix_asn1c_call} ${NR_RRC_FULL_DIR} NR_RRC ${NR_RRC_ASN1_VERSION}
-                RESULT_VARIABLE ret)
+execute_process(COMMAND ${fix_asn1c_call} 
+			${NR_RRC_FULL_DIR} 
+			NR_RRC 
+			${NR_RRC_ASN1_VERSION}
+			RESULT_VARIABLE ret)
+
 if (NOT ${ret} STREQUAL 0)
   message(FATAL_ERROR "${fix_asn1c_call}: error")
 endif (NOT ${ret} STREQUAL 0)
@@ -364,18 +378,25 @@ file(GLOB nr_rrc_source ${NR_RRC_FULL_DIR}/*.c)
 file(GLOB nr_rrc_h ${NR_RRC_FULL_DIR}/*.h)
 set(nr_rrc_h ${nr_rrc_h} ${NR_RRC_FULL_DIR}/asn1_constants.h)
 set_source_files_properties(${nr_rrc_source} PROPERTIES COMPILE_FLAGS -w) # suppress warnings from generated code
-#add_library(NR_RRC_LIB ${nr_rrc_h} ${nr_rrc_source}
-#    ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1_msg.c)
-#include_directories ("${NR_RRC_FULL_DIR}")
+add_library(NR_RRC_LIB ${nr_rrc_h} ${nr_rrc_source}
+    ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1_msg.c)
+include_directories ("${NR_RRC_FULL_DIR}")
 
 # add the command to generate the source code
 # Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
+
 add_custom_command (
   OUTPUT ${NR_RRC_FULL_DIR}/asn1_constants.h
-  COMMAND ${asn1c_call}  ${NR_RRC_FULL_DIR} ${RRC_GRAMMAR}
+  COMMAND ${asn1c_call_NR}  ${NR_RRC_FULL_DIR} ${NR_RRC_GRAMMAR}
   COMMAND ${fix_asn1c_call}  ${NR_RRC_FULL_DIR} RRC ${NR_RRC_ASN1_VERSION}
   DEPENDS ${RRC_GRAMMAR}
   )
+#add_custom_command (
+#  OUTPUT ${NR_RRC_FULL_DIR}/asn1_constants.h
+#  COMMAND mkdir -p ${NR_RRC_FULL_DIR}
+#  COMMAND env "ASN1C_PREFIX=NR_" asn1c -pdu=all -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D ${NR_RRC_FULL_DIR} ${NR_RRC_GRAMMAR} 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
+#  DEPENDS ${NR_RRC_GRAMMAR}
+#  )
 
 
 # S1AP
@@ -419,7 +440,6 @@ if (NOT ${ret} STREQUAL 0)
   message(FATAL_ERROR "${fix_asn1c_call}: error")
 endif (NOT ${ret} STREQUAL 0)
 file(GLOB S1AP_source ${S1AP_C_DIR}/*.c)
-
 set(S1AP_OAI_generated
   ${S1AP_C_DIR}/s1ap_decoder.c
   ${S1AP_C_DIR}/s1ap_encoder.c
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 5af5499074..f565ebb985 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -48,7 +48,7 @@ DEADLINE_SCHEDULER_FLAG_USER="False"
 FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
 CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
 REL="Rel14"
-NR_REL="Rel15"
+NR_REL="NR_Rel15"
 HW="None"
 TP="None"
 NOS1=0
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 4d95292f08..3d5a5a6177 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -307,7 +307,7 @@ check_install_usrp_uhd_driver(){
         $SUDO apt-get -y --allow-unauthenticated install libuhd-dev libuhd003 uhd-host
     elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
         $SUDO $INSTALLER -y install python boost libusb-devel libusbx-devel boost-devel python-mako python-docutils cmake
-        $SUDO pip install requests
+        $SUDO -H pip install requests
         if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
             # until EPEL repo hasn't bumped UHD driver to >=3.10 in EPEL, build driver from source
             $SUDO $INSTALLER -y remove uhd uhd-devel uhd-firmware
@@ -490,8 +490,8 @@ check_install_additional_tools (){
 
   #The packages below are already installed for Redhat distros (RHEL, CentOS, Fedora)
   if [[ "$OS_DISTRO" == "ubuntu" ]]; then
-    $SUDO pip install paramiko
-    $SUDO pip install pyroute2 colorama
+    $SUDO -H pip install paramiko
+    $SUDO -H pip install pyroute2 colorama
     log_netiface=$OPENAIR_DIR/cmake_targets/log/netiface_install_log.txt
     echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface"
     (
@@ -689,11 +689,14 @@ install_asn1c_from_source(){
     echo_info "\nInstalling ASN1. The log file for ASN1 installation is here: $asn1_install_log "
     (
     $SUDO rm -rf /tmp/asn1c
-    GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
+    #GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c 
+    GIT_SSL_NO_VERIFY=true git clone https://github.com/velichkov/asn1c /tmp/asn1c
     cd /tmp/asn1c
-    ./configure
+    git checkout s1ap
+    test -f configure || autoreconf -iv
+    ./configure 
     make -j`nproc`
-    $SUDO make install
+    $SUDO make install 
     cd -
     $SUDO ldconfig
     ) > $asn1_install_log 2>&1
diff --git a/cmake_targets/tools/fix_asn1 b/cmake_targets/tools/fix_asn1
index 14e4d3262c..398db20ff8 100755
--- a/cmake_targets/tools/fix_asn1
+++ b/cmake_targets/tools/fix_asn1
@@ -23,7 +23,6 @@ reset_color="$(tput sgr0)"
 function error()
 {
   echo -e "$red_color"ERROR: "$@""$reset_color"
-  exit 1
 }
 
 function check_sha1()
@@ -94,7 +93,7 @@ function patch_rrc()
   case "$version" in
     Rel14 )
       echo "patching RRC files release 14"
-      apply_patches "$directory" RRC_Rel14 ${#RRC_Rel14[*]}
+       apply_patches "$directory" RRC_Rel14 ${#RRC_Rel14[*]}
       ;;
     Rel10 )
       echo "patching RRC files release 10"
@@ -115,7 +114,7 @@ function patch_nr_rrc()
   local version="$2"
 
   case "$version" in
-    Rel15 )
+    NR_Rel15 )
       echo "patching NR_RRC files release 15"
       apply_patches "$directory" NR_RRC_Rel15 ${#NR_RRC_Rel15[*]}
       ;;
@@ -175,16 +174,16 @@ function main()
 
   case "$module" in
     RRC )
-      patch_rrc "$directory" "$version"
+      #patch_rrc "$directory" "$version"
       ;;
     NR_RRC )
-      patch_nr_rrc "$directory" "$version"
+      #patch_nr_rrc "$directory" "$version"
       ;;
     X2AP )
-      patch_x2ap "$directory" "$version"
+      #patch_x2ap "$directory" "$version"
       ;;
     S1AP )
-      patch_s1ap "$directory" "$version"
+      #patch_s1ap "$directory" "$version"
       ;;
     * )
       error unknown module "$module"
diff --git a/cmake_targets/tools/generate_asn1 b/cmake_targets/tools/generate_asn1
index 79becbf288..a509ecf22f 100755
--- a/cmake_targets/tools/generate_asn1
+++ b/cmake_targets/tools/generate_asn1
@@ -5,7 +5,6 @@ function main()
 mkdir -p $1
 cd $1
 shift
-
 #if this script is called with only 2 arguments (so 1 here after the shift), it's for RRC
 #(there may be a better way...)
 if [ $# -eq 1 ]; then
@@ -98,8 +97,8 @@ rm -f asnfix asnfix.c
 echo done with asnfix
 
 echo running asn1c
-
-asn1c -gen-PER -fcompound-names fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
+ 
+asn1c -gen-PER -fcompound-names -no-gen-example fixed_grammar.asn 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
 
 rm -f fixed_grammar.asn
 
@@ -107,7 +106,7 @@ echo asn1c done
 
 else
 
-asn1c -gen-PER -fcompound-names $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
+asn1c -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example $* 2>&1 | grep -v -- '->' | grep -v '^Compiled' |grep -v sample
 
 fi
 
diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h
index 6d650b7261..93f1e4ea80 100644
--- a/openair2/COMMON/rrc_messages_types.h
+++ b/openair2/COMMON/rrc_messages_types.h
@@ -265,6 +265,7 @@ typedef struct NRRrcConfigurationReq_s {
   ///NR
   //MIB
   long                    MIB_subCarrierSpacingCommon[MAX_NUM_CCs]; 
+  uint32_t                MIB_ssb_SubcarrierOffset[MAX_NUM_CCs]; 
   long                    MIB_dmrs_TypeA_Position[MAX_NUM_CCs];
   uint32_t                pdcch_ConfigSIB1[MAX_NUM_CCs];
 
@@ -292,7 +293,7 @@ typedef struct NRRrcConfigurationReq_s {
   //NR FrequencyInfoUL
   long                    UL_FreqBandIndicatorNR[MAX_NUM_CCs];
   long                    UL_absoluteFrequencyPointA[MAX_NUM_CCs];
-  lte_prefix_type_t       UL_additionalSpectrumEmission[MAX_NUM_CCs]
+  lte_prefix_type_t       UL_additionalSpectrumEmission[MAX_NUM_CCs];
   long                    UL_p_Max[MAX_NUM_CCs];
   long                    ULfrequencyShift7p5khz[MAX_NUM_CCs];
 
@@ -430,7 +431,14 @@ typedef struct NRRrcConfigurationReq_s {
   long                    Common_dci_Format2_3_nrofPDCCH_Candidates[MAX_NUM_CCs];
   long                    ue_Specific__dci_Formats[MAX_NUM_CCs];
 
-
+  //RateMatchPatternLTE-CRS
+  uint32_t                RateMatchPatternLTE_CRS_carrierFreqDL[MAX_NUM_CCs];
+  long                    RateMatchPatternLTE_CRS_carrierBandwidthDL[MAX_NUM_CCs];
+  long                    RateMatchPatternLTE_CRS_nrofCRS_Ports[MAX_NUM_CCs];
+  long                    RateMatchPatternLTE_CRS_v_Shift[MAX_NUM_CCs];
+  long                    RateMatchPatternLTE_CRS_radioframeAllocationPeriod[MAX_NUM_CCs];
+  uint32_t                RateMatchPatternLTE_CRS_radioframeAllocationOffset[MAX_NUM_CCs];
+  long                    RateMatchPatternLTE_CRS_subframeAllocation_choice[MAX_NUM_CCs];
 
 } gNB_RrcConfigurationReq;
 
diff --git a/openair2/ENB_APP/gnb_config.c b/openair2/ENB_APP/gnb_config.c
index a0000f79bd..a52809b62c 100644
--- a/openair2/ENB_APP/gnb_config.c
+++ b/openair2/ENB_APP/gnb_config.c
@@ -52,6 +52,7 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
   ///NR
   //MIB
   int32_t                MIB_subCarrierSpacingCommon                                   = 0;
+  uint32_t               MIB_ssb_SubcarrierOffset                                      = 0;
   int32_t                MIB_dmrs_TypeA_Position                                       = 0;
   uint32_t               pdcch_ConfigSIB1                                              = 0;
 
@@ -213,7 +214,14 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
   int32_t                Common_dci_Format2_3_monitoringPeriodicity                    = 0;
   int32_t                Common_dci_Format2_3_nrofPDCCH_Candidates                     = 0;
   int32_t                ue_Specific__dci_Formats                                      = 0;
-
+  //NR  RateMatchPatternLTE-CRS
+  uint32_t               RateMatchPatternLTE_CRS_carrierFreqDL                         = 0;
+  int32_t                RateMatchPatternLTE_CRS_carrierBandwidthDL                    = 0;
+  int32_t                RateMatchPatternLTE_CRS_nrofCRS_Ports                         = 0;
+  int32_t                RateMatchPatternLTE_CRS_v_Shift                               = 0;
+  int32_t                RateMatchPatternLTE_CRS_radioframeAllocationPeriod            = 0;
+  uint32_t               RateMatchPatternLTE_CRS_radioframeAllocationOffset            = 0;
+  int32_t                RateMatchPatternLTE_CRS_subframeAllocation_choice             = 0;
 
   int32_t             my_int;
 
@@ -419,6 +427,12 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
                            RC.config_file_name, i, MIB_subCarrierSpacingCommon);
             }
 
+            NRRRC_CONFIGURATION_REQ (msg_p).MIB_ssb_SubcarrierOffset[j] = MIB_ssb_SubcarrierOffset;
+            if ((MIB_ssb_SubcarrierOffset <0) || (MIB_ssb_SubcarrierOffset > 15)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for MIB_ssb_SubcarrierOffset choice: 1..23 !\n",
+                           RC.config_file_name, i, MIB_ssb_SubcarrierOffset);
+            }
+
             NRRRC_CONFIGURATION_REQ (msg_p).MIB_dmrs_TypeA_Position[j] = MIB_dmrs_TypeA_Position;
             if ((MIB_dmrs_TypeA_Position !=2) && (MIB_dmrs_TypeA_Position !=3)){
               AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for MIB_dmrs_TypeA_Position choice:2,3 !\n",
@@ -2050,6 +2064,120 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
                            RC.config_file_name, i, ue_Specific__dci_Formats);
             }
 
+            //////////////////////////////////NR RateMatchPatternLTE-CRS///////////////////////////
+
+            switch(RateMatchPatternLTE_CRS_carrierBandwidthDL){
+              case 6:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n6;
+                break;
+              case 15:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n15;
+                break;
+              case 25:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n25;
+                break;
+              case 50:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n50;
+                break;
+              case 75:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n75;
+                break;
+              case 100:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] =  RateMatchPatternLTE_CRS__carrierBandwidthDL_n100;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_carrierBandwidthDL choice: 6,15,25,50,75,100 !\n",
+                             RC.config_file_name, i, RateMatchPatternLTE_CRS_carrierBandwidthDL);
+                break;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_carrierBandwidthDL[j] = RateMatchPatternLTE_CRS_carrierBandwidthDL;
+            if ((RateMatchPatternLTE_CRS_carrierBandwidthDL <0) || (RateMatchPatternLTE_CRS_carrierBandwidthDL>16383)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_carrierBandwidthDL choice: 0..16383 !\n",
+                           RC.config_file_name, i, RateMatchPatternLTE_CRS_carrierBandwidthDL);
+            }
+
+            switch(RateMatchPatternLTE_CRS_nrofCRS_Ports){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_nrofCRS_Ports[j] =  RateMatchPatternLTE_CRS__nrofCRS_Ports_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_nrofCRS_Ports[j] =  RateMatchPatternLTE_CRS__nrofCRS_Ports_n2;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_nrofCRS_Ports[j] =  RateMatchPatternLTE_CRS__nrofCRS_Ports_n4;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_nrofCRS_Ports choice: 1,2,4 !\n",
+                             RC.config_file_name, i, RateMatchPatternLTE_CRS_nrofCRS_Ports);
+                break;
+            }
+
+            switch(RateMatchPatternLTE_CRS_v_Shift){
+              case 0:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n0;
+                break;
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n2;
+                break;
+              case 3:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n3;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n4;
+                break;
+              case 5:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_v_Shift[j] =  RateMatchPatternLTE_CRS__v_Shift_n5;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_v_Shift choice: 0,1,2,3,4,5 !\n",
+                             RC.config_file_name, i, RateMatchPatternLTE_CRS_v_Shift);
+                break;
+            }
+
+            switch(RateMatchPatternLTE_CRS_radioframeAllocationPeriod){
+              case 1:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n1;
+                break;
+              case 2:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n2;
+                break;
+              case 4:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n4;
+                break;
+              case 8:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n8;
+                break;
+              case 16:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n16;
+                break;
+              case 32:
+                NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationPeriod[j] =  EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n32;
+                break;
+              default:
+                AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_radioframeAllocationPeriod choice: 1,2,4,8,16,32 !\n",
+                             RC.config_file_name, i, RateMatchPatternLTE_CRS_radioframeAllocationPeriod);
+                break;
+            }
+
+            NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_radioframeAllocationOffset[j] = RateMatchPatternLTE_CRS_radioframeAllocationOffset;
+            if ((RateMatchPatternLTE_CRS_radioframeAllocationOffset <0) || (RateMatchPatternLTE_CRS_radioframeAllocationOffset>7)){
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_radioframeAllocationOffset choice: 0..7 !\n",
+                           RC.config_file_name, i, RateMatchPatternLTE_CRS_radioframeAllocationOffset);
+            }
+
+            if (strcmp(RateMatchPatternLTE_CRS_subframeAllocation_choice , "oneFrame") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_subframeAllocation_choice[j] =  EUTRA_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame;
+            }else if (strcmp(RateMatchPatternLTE_CRS_subframeAllocation_choice , "fourFrames") == 0){
+              NRRRC_CONFIGURATION_REQ (msg_p).RateMatchPatternLTE_CRS_subframeAllocation_choice[j] =  EUTRA_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames;
+            }else {
+              AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for RateMatchPatternLTE_CRS_subframeAllocation_choice !\n",
+                           RC.config_file_name, i, RateMatchPatternLTE_CRS_subframeAllocation_choice);
+            }
+
 
           }//End for (j = 0; j < CCsParamList.numelt ;j++)
 
diff --git a/openair2/ENB_APP/gnb_paramdef.h b/openair2/ENB_APP/gnb_paramdef.h
index 3145b2aa17..96a18fa2ea 100644
--- a/openair2/ENB_APP/gnb_paramdef.h
+++ b/openair2/ENB_APP/gnb_paramdef.h
@@ -229,6 +229,7 @@ typedef enum {
   ///NR
   //MIB
 #define GNB_CONFIG_STRING_MIB_SUBCARRIERSPACINGCOMMON                                  "MIB_subCarrierSpacingCommon"
+#define GNB_CONFIG_STRING_MIB_SSB_SUBCARRIEROFFSET                                     "MIB_ssb_SubcarrierOffset"
 #define GNB_CONFIG_STRING_MIB_DMRS_TYPEA_POSITION                                      "MIB_dmrs_TypeA_Position"
 #define GNB_CONFIG_STRING_PDCCH_CONFIGSIB1                                             "pdcch_ConfigSIB1"
 
@@ -392,7 +393,13 @@ typedef enum {
 #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"
-
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_CARRIERFREQDL                        "RateMatchPatternLTE_CRS_carrierFreqDL"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_CARRIERBANDWIDTHDL                   "RateMatchPatternLTE_CRS_carrierBandwidthDL"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_NROFCRS_PORTS                        "RateMatchPatternLTE_CRS_nrofCRS_Ports"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_V_SHIFT                              "RateMatchPatternLTE_CRS_v_Shift"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONPERIOD           "RateMatchPatternLTE_CRS_radioframeAllocationPeriod"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONOFFSET           "RateMatchPatternLTE_CRS_radioframeAllocationOffset"
+#define GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_SUBFRAMEALLOCATION_CHOICE            "RateMatchPatternLTE_CRS_subframeAllocation_choice"
 
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                                                             component carriers configuration parameters                                                                                                                           */
@@ -409,6 +416,7 @@ typedef enum {
 {GNB_CONFIG_STRING_N_RB_DL,                                                          NULL,        0,        iptr:&N_RB_DL,                                                          defintval:25,              TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_NB_ANT_PORTS,                                                     NULL,        0,        iptr:&nb_antenna_ports,                                                 defintval:1,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_MIB_SUBCARRIERSPACINGCOMMON,                                      NULL,        0,        iptr:&MIB_subCarrierSpacingCommon,                                      defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_MIB_SSB_SUBCARRIEROFFSET,                                         NULL,        0,        iptr:&MIB_ssb_SubcarrierOffset,                                         defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_MIB_DMRS_TYPEA_POSITION,                                          NULL,        0,        iptr:&MIB_dmrs_TypeA_Position,                                          defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_PDCCH_CONFIGSIB1,                                                 NULL,        0,        iptr:&pdcch_ConfigSIB1,                                                 defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_SIB1_FREQUENCYOFFSETSSB,                                          NULL,        0,        iptr:&SIB1_frequencyOffsetSSB,                                          defintval:0,               TYPE_UINT,       0},  \
@@ -427,7 +435,7 @@ typedef enum {
 {GNB_CONFIG_STRING_DL_BWP_PREFIX_TYPE,                                               NULL,        0,        iptr:&DL_BWP_prefix_type,                                               defintval:0,               TYPE_STRING,     0},  \
 {GNB_CONFIG_STRING_UL_FREQBANDINDICATORNR,                                           NULL,        0,        iptr:&UL_FreqBandIndicatorNR,                                           defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_UL_ABSOLUTEFREQUENCYPOINTA,                                       NULL,        0,        iptr:&UL_absoluteFrequencyPointA,                                       defintval:0,               TYPE_UINT,       0},  \
-{GNB_CONFIG_STRING_UL_ADDITIONALSPECTRUMEMISSION,                                    NULL,        0,        iptr:&UL_additionalSpectrumEmission,                                                         defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_UL_ADDITIONALSPECTRUMEMISSION,                                    NULL,        0,        iptr:&UL_additionalSpectrumEmission,                                    defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_UL_P_MAX,                                                         NULL,        0,        iptr:&UL_p_Max,                                                         defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_UL_FREQUENCYSHIFT7P5KHZ,                                          NULL,        0,        iptr:&UL_frequencyShift7p5khz,                                          defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_UL_OFFSETTOCARRIER,                                               NULL,        0,        iptr:&UL_offsetToCarrier,                                               defintval:0,               TYPE_UINT,       0},  \
@@ -534,6 +542,13 @@ typedef enum {
 {GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY,                       NULL,        0,        iptr:&Common_dci_Format2_3_monitoringPeriodicity,                       defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES,                        NULL,        0,        iptr:&Common_dci_Format2_3_nrofPDCCH_Candidates,                        defintval:0,               TYPE_UINT,       0},  \
 {GNB_CONFIG_STRING_UE_SPECIFIC__DCI_FORMATS,                                         NULL,        0,        iptr:&ue_Specific__dci_Formats,                                         defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_CARRIERFREQDL,                            NULL,        0,        iptr:&RateMatchPatternLTE_CRS_carrierFreqDL,                            defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_CARRIERBANDWIDTHDL,                       NULL,        0,        iptr:&RateMatchPatternLTE_CRS_carrierBandwidthDL,                       defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_NROFCRS_PORTS,                            NULL,        0,        iptr:&RateMatchPatternLTE_CRS_nrofCRS_Ports,                            defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_V_SHIFT,                                  NULL,        0,        iptr:&RateMatchPatternLTE_CRS_v_Shift,                                  defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONPERIOD,               NULL,        0,        iptr:&RateMatchPatternLTE_CRS_radioframeAllocationPeriod,               defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONOFFSET,               NULL,        0,        iptr:&RateMatchPatternLTE_CRS_radioframeAllocationOffset,               defintval:0,               TYPE_UINT,       0},  \
+{GNB_CONFIG_STRING_RATEMATCHPATTERNLTE_CRS_SUBFRAMEALLOCATION_CHOICE,                NULL,        0,        iptr:&RateMatchPatternLTE_CRS_subframeAllocation_choice,                defintval:0,               TYPE_UINT,       0},  \
 }
 
 
@@ -552,6 +567,7 @@ typedef enum {
 #define GNB_CONFIG_TX_GAIN_IDX                                                      
 #define GNB_CONFIG_RX_GAIN_IDX
 #define GNB_CONFIG_MIB_SUBCARRIERSPACINGCOMMON_IDX
+#define GNB_CONFIG_MIB_SSB_SUBCARRIEROFFSET_IDX 
 #define GNB_CONFIG_MIB_DMRS_TYPEA_POSITION_IDX
 #define GNB_CONFIG_PDCCH_CONFIGSIB1_IDX
 #define GNB_CONFIG_SIB1_FREQUENCYOFFSETSSB_IDX
@@ -680,3 +696,10 @@ typedef enum {
 #define GNB_CONFIG_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY_IDX                   
 #define GNB_CONFIG_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES_IDX                   
 #define GNB_CONFIG_UE_SPECIFIC__DCI_FORMATS_IDX                                     
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_CARRIERFREQDL_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_CARRIERBANDWIDTHDL_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_NROFCRS_PORTS_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_V_SHIFT_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONPERIOD_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_RADIOFRAMEALLOCATIONOFFSET_IDX 
+#define GNB_CONFIG_RATEMATCHPATTERNLTE_CRS_SUBFRAMEALLOCATION_CHOICE_IDX 
\ No newline at end of file
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index 9510a29b48..5844013462 100644
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -205,7 +205,7 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
 
   asn_enc_rval_t enc_rval;
 
-  BCCH_BCH_Message_t *mib=&carrier->mib_NR ;
+  BCCH_BCH_Message_t *mib=&carrier->mib
   memset(mib,0,sizeof(BCCH_BCH_Message_t));
   mib->message.present = BCCH_BCH_MessageType_PR_mib;
   
@@ -270,7 +270,7 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
   //encode MIB to data
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message,
                                    (void*)mib,
-                                   carrier->MIB_NR,
+                                   carrier->MIB,
                                    24);
   AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
@@ -495,7 +495,7 @@ uint8_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
   return((enc_rval.encoded+7)/8);
 }
 
-uint8_t do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
+void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
                                    int CC_id
                                    #if defined(ENABLE_ITTI)
                                    ,gNB_RrcConfigurationReq *configuration
diff --git a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-InterNodeDefinitions.asn
old mode 100755
new mode 100644
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
old mode 100755
new mode 100644
index 84426f50bb..dd6b0c56a7
--- a/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn
+++ b/openair2/RRC/NR/MESSAGES/asn1c/ASN1_files/NR-RRC-Definitions.asn
@@ -252,29 +252,29 @@ 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
+	rach-ConfigCommon					 RACH-ConfigCommon 										OPTIONAL, 	-- Need M
 	-- Cell specific parameters for the PUSCH
-	pusch-ConfigCommon					SetupRelease { PUSCH-ConfigCommon }										OPTIONAL, 	-- Need M
+	pusch-ConfigCommon					 PUSCH-ConfigCommon 										OPTIONAL, 	-- Need M
 	
 	-- Cell specific parameters for the PUCCH
-	pucch-ConfigCommon					SetupRelease { PUCCH-ConfigCommon }										OPTIONAL, 	-- Need M
+	pucch-ConfigCommon					 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
+	pucch-Config						 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
+	pusch-Config						 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
+	configuredGrantConfig				         ConfiguredGrantConfig 									        OPTIONAL, 	-- Need M
 	-- Uplink sounding reference signal configuration
-	srs-Config							SetupRelease { SRS-Config }												OPTIONAL, 	-- Need M
+	srs-Config						 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
+	beamFailureRecoveryConfig			         BeamFailureRecoveryConfig 								        OPTIONAL,	-- Need M
 	...
 }
 
@@ -296,16 +296,16 @@ BWP-Downlink ::= 					SEQUENCE {
 
 BWP-DownlinkCommon ::=				SEQUENCE {
 	genericParameters					BWP,
-	pdcch-ConfigCommon					SetupRelease { PDCCH-ConfigCommon }										OPTIONAL,	-- Need M
-	pdsch-ConfigCommon					SetupRelease { PDSCH-ConfigCommon }										OPTIONAL,	-- Need M
+	pdcch-ConfigCommon				        PDCCH-ConfigCommon 										OPTIONAL,	-- Need M
+	pdsch-ConfigCommon					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
+	pdcch-Config						PDCCH-Config 											OPTIONAL,	-- Need M
+	pdsch-Config						PDSCH-Config 											OPTIONAL,	-- Need M 
+	sps-Config						SPS-Config 											OPTIONAL, 	-- Need M
+	radioLinkMonitoringConfig			        RadioLinkMonitoringConfig 								        OPTIONAL,	-- Need M
 	...
 }
 
@@ -449,7 +449,7 @@ SpCellConfig ::=						SEQUENCE {
 	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
+	rlf-TimersAndConstants				RLF-TimersAndConstants 									        OPTIONAL,	-- Need M
 	rlmInSyncOutOfSyncThreshold         INTEGER (0..1)                         									OPTIONAL,	-- Need M
 	spCellConfigDedicated				ServingCellConfig														OPTIONAL,	-- Need M
 	...
@@ -600,7 +600,7 @@ ConfiguredGrantConfig ::=				SEQUENCE {
 	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 },
+	uci-OnPUSCH							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 },
@@ -918,8 +918,8 @@ CSI-MeasConfig ::=					SEQUENCE {
 	-- 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
+	aperiodicTriggerStateList			CSI-AperiodicTriggerStateList 											OPTIONAL, -- Need M
+	semiPersistentOnPUSCH-TriggerStateList		CSI-SemiPersistentOnPUSCH-TriggerStateList 					                                OPTIONAL, -- Need M
 	...
 }
 
@@ -1292,7 +1292,7 @@ DMRS-DownlinkConfig ::=					SEQUENCE {
 	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
+	phaseTrackingRS						        PTRS-DownlinkConfig									    OPTIONAL,	-- Need M
 
 	...
 }
@@ -1309,7 +1309,7 @@ DMRS-UplinkConfig ::=					SEQUENCE {
 	-- 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
+	phaseTrackingRS						 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)
@@ -1508,16 +1508,16 @@ LogicalChannelConfig ::=		SEQUENCE {
 -- TAG-MAC-CELL-GROUP-CONFIG-START
 
 MAC-CellGroupConfig ::= 			SEQUENCE {
-	drx-Config							SetupRelease { DRX-Config }																OPTIONAL, -- Need M
+	drx-Config					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
+	bsr-Config					BSR-Config																	OPTIONAL,	-- Need M
+	tag-Config					TAG-Config																	OPTIONAL,	-- Need M	
+	phr-Config					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
+	cs-RNTI						RNTI-Value 															OPTIONAL	-- Need M
 }
 
 DRX-Config ::=						SEQUENCE {
@@ -1654,7 +1654,7 @@ ReportConfigToRemoveList ::=			SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportC
 --TAG-MEAS-GAP-CONFIG-START
 
 MeasGapConfig ::=				SEQUENCE {
-		gapFR2 						SetupRelease { GapConfig }				OPTIONAL,
+		gapFR2 						GapConfig 				OPTIONAL,
 		...
 }
 
@@ -1731,7 +1731,7 @@ 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		
+	csi-rs-ResourceConfigMobility			CSI-RS-ResourceConfigMobility  OPTIONAL-- Need M		
 
 }
 
@@ -1743,7 +1743,7 @@ SSB-ConfigMobility::= 	SEQUENCE {
 		-- 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
+		ssb-ToMeasure							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,
@@ -2137,17 +2137,17 @@ PDCCH-Config ::= 						SEQUENCE {
 	-- 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
+	downlinkPreemption					  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
+	slotFormatIndicator				          SlotFormatIndicator 															OPTIONAL,	-- Need M
 	-- Enable and configure reception of group TPC commands for PUSCH
-	tpc-PUSCH								SetupRelease { PUSCH-TPC-CommandConfig }							OPTIONAL,   -- Need M
+	tpc-PUSCH								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
+	tpc-PUCCH								PUCCH-TPC-CommandConfig 							OPTIONAL,   -- Cond PUCCH-CellOnly
 
 	...
 }
@@ -2264,9 +2264,9 @@ PDSCH-Config ::= 						SEQUENCE {
 	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-DownlinkForPDSCH-MappingTypeA			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
+	dmrs-DownlinkForPDSCH-MappingTypeB			DMRS-DownlinkConfig  							OPTIONAL,	-- Need M
 
 
 	-- A list of Transmission Configuration Indicator (TCI) states for dynamically indicating (over DCI) a transmission configuration 
@@ -2371,7 +2371,7 @@ PDSCH-ConfigCommon ::=					SEQUENCE {
 
 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
+	codeBlockGroupTransmission				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
@@ -2496,13 +2496,13 @@ PUCCH-Config ::= 						SEQUENCE {
 	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
+	format1									PUCCH-FormatConfig 												OPTIONAL,	-- Need M
 	-- Parameters that are common for all PUCCH resources of format 2
-	format2									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	format2									PUCCH-FormatConfig 												OPTIONAL,	-- Need M
 	-- Parameters that are common for all PUCCH resources of format 3
-	format3									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	format3									PUCCH-FormatConfig 												OPTIONAL,	-- Need M
 	-- Parameters that are common for all PUCCH resources of format 4
-	format4									SetupRelease { PUCCH-FormatConfig }												OPTIONAL,	-- Need M
+	format4									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
@@ -2759,9 +2759,9 @@ PUSCH-Config ::= 						SEQUENCE {
 	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-UplinkForPUSCH-MappingTypeA		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
+	dmrs-UplinkForPUSCH-MappingTypeB		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
@@ -2807,7 +2807,7 @@ PUSCH-Config ::= 						SEQUENCE {
 	-- 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
+	uci-OnPUSCH							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},
@@ -2971,7 +2971,7 @@ BetaOffsets ::= 							SEQUENCE {
 
 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
+	codeBlockGroupTransmission				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
@@ -3897,12 +3897,12 @@ ServingCellConfig ::=		SEQUENCE {
 
 
 	-- PDSCH releated parameters that are not BWP-specific.
-	pdsch-ServingCellConfig				SetupRelease { PDSCH-ServingCellConfig }								OPTIONAL,	-- Need M
-	csi-MeasConfig						SetupRelease { CSI-MeasConfig }											OPTIONAL,	-- Need M
+	pdsch-ServingCellConfig				PDSCH-ServingCellConfig 								OPTIONAL,	-- Need M
+	csi-MeasConfig					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
+	carrierSwitching				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
@@ -3944,7 +3944,7 @@ UplinkConfig ::=					SEQUENCE {
 	-- Configuration that is common across the UL BWPs:
 
 	-- PUSCH related parameters that are not BWP-specific.
-	pusch-ServingCellConfig				SetupRelease { PUSCH-ServingCellConfig }								OPTIONAL,	-- Need M
+	pusch-ServingCellConfig				PUSCH-ServingCellConfig 								OPTIONAL,	-- Need M
 	...
 }
 
@@ -3980,7 +3980,7 @@ ServingCellConfigCommon ::=		SEQUENCE {
 	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
+	lte-CRS-ToMatchAround					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.
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
old mode 100755
new mode 100644
diff --git a/openair2/RRC/NR/defs_NR.h b/openair2/RRC/NR/defs_NR.h
index cdb667076e..b1a37590be 100644
--- a/openair2/RRC/NR/defs_NR.h
+++ b/openair2/RRC/NR/defs_NR.h
@@ -41,27 +41,27 @@
 #include "COMMON/platform_types.h"
 
 //#include "COMMON/mac_rrc_primitives.h"
-#if defined(Rel15)
-#include "SIB1.h"
+#if defined(NR_Rel15)
+#include "NR_SIB1.h"
 //#include "SystemInformation.h"
 //#include "RRCConnectionReconfiguration.h"
-#include "RRCReconfigurationComplete.h"
-#include "RRCReconfiguration"
+#include "NR_RRCReconfigurationComplete.h"
+#include "NR_RRCReconfiguration.h"
 //#include "RRCConnectionReconfigurationComplete.h"
 //#include "RRCConnectionSetup.h"
 //#include "RRCConnectionSetupComplete.h"
 //#include "RRCConnectionRequest.h"
 //#include "RRCConnectionReestablishmentRequest.h"
 //#include "BCCH-DL-SCH-Message.h"
-#include "BCCH-BCH-Message.h"
+#include "NR_BCCH-BCH-Message.h"
 //#include "MCCH-Message.h"
 //#include "MBSFNAreaConfiguration-r9.h"
 //#include "SCellToAddMod-r10.h"
 //#include "AS-Config.h"
 //#include "AS-Context.h"
-#include "UE-NR-Capability.h"
-#include "MeasResults.h"
-#include "ServingCellConfigCommon.h"
+#include "NR_UE-NR-Capability.h"
+#include "NR_MeasResults.h"
+#include "NR_ServingCellConfigCommon.h"
 #endif
 //-------------------
 
@@ -90,7 +90,7 @@
 /*I will change the name of the structure for compile purposes--> hope not to undo this process*/
 
 typedef unsigned int uid_NR_t;
-#define UID_LINEAR_ALLOCATOR_BITMAP_SIZE_NR (((NUMBER_OF_UE_MAX_NR/8)/sizeof(unsigned int)) + 1)
+#define UID_LINEAR_ALLOCATOR_BITMAP_SIZE_NR (((NUMBER_OF_NR_UE_MAX/8)/sizeof(unsigned int)) + 1)
 
 typedef struct uid_linear_allocator_NR_s {
   unsigned int   bitmap[UID_LINEAR_ALLOCATOR_BITMAP_SIZE_NR];
@@ -108,29 +108,29 @@ typedef struct uid_linear_allocator_NR_s {
 #define UE_INDEX_INVALID  ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!! used to be -1
 
 typedef enum {
-  RRC_OK=0,
-  RRC_ConnSetup_failed,
-  RRC_PHY_RESYNCH,
-  RRC_Handover_failed,
-  RRC_HO_STARTED
-} RRC_status_NR_t;
+  NR_RRC_OK=0,
+  NR_RRC_ConnSetup_failed,
+  NR_RRC_PHY_RESYNCH,
+  NR_RRC_Handover_failed,
+  NR_RRC_HO_STARTED
+} NR_RRC_status_t;
 
 typedef enum UE_STATE_NR_e {
-  RRC_INACTIVE=0,
-  RRC_IDLE,
-  RRC_SI_RECEIVED,
-  RRC_CONNECTED,
-  RRC_RECONFIGURED,
-  RRC_HO_EXECUTION
-} UE_STATE_NR_t;
+  NR_RRC_INACTIVE=0,
+  NR_RRC_IDLE,
+  NR_RRC_SI_RECEIVED,
+  NR_RRC_CONNECTED,
+  NR_RRC_RECONFIGURED,
+  NR_RRC_HO_EXECUTION
+} NR_UE_STATE_t;
 
 typedef enum HO_STATE_NR_e {
-  HO_IDLE=0,
-  HO_MEASURMENT,
-  HO_PREPARE,
-  HO_CMD, // initiated by the src eNB
-  HO_COMPLETE // initiated by the target eNB
-} HO_STATE_NR_t;
+  NR_HO_IDLE=0,
+  NR_HO_MEASURMENT,
+  NR_HO_PREPARE,
+  NR_HO_CMD, // initiated by the src eNB
+  NR_HO_COMPLETE // initiated by the target eNB
+} NR_HO_STATE_t;
 
 //#define NUMBER_OF_UE_MAX MAX_MOBILES_PER_RG
 #define RRM_FREE(p)       if ( (p) != NULL) { free(p) ; p=NULL ; }
@@ -161,7 +161,7 @@ typedef struct {
 } __attribute__ ((__packed__))  LCHAN_DESC_NR;
 
 typedef struct UE_RRC_INFO_NR_s {
-  UE_STATE_NR_t                                       State;
+  NR_UE_STATE_t                                       State;
   uint8_t                                             SIB1systemInfoValueTag;
   uint32_t                                            SIStatus;
   uint32_t                                            SIcnt;
@@ -318,8 +318,8 @@ typedef struct gNB_RRC_UE_s {
 
   /* Used integrity/ciphering algorithms */
   //Specs. TS 38.331 V15.1.0 pag 432 Change position of chipering enumerative w.r.t previous version
-  e_CipheringAlgorithm                                ciphering_algorithm; 
-  e_IntegrityProtAlgorithm                            integrity_algorithm;
+  e_NR_CipheringAlgorithm                                ciphering_algorithm; 
+  e_NR_IntegrityProtAlgorithm                           integrity_algorithm;
 
   uint8_t                                             Status;
   rnti_t                                              rnti;
@@ -332,8 +332,8 @@ typedef struct gNB_RRC_UE_s {
   
   /* NR not define at this moment
   EstablishmentCause_t                             establishment_cause_NR; //different set for NB-IoT
-  
-  /* NR not define at this moment
+  */
+  /* NR not define at this moment*/
   /* Information from UE RRC ConnectionReestablishmentRequest  */
   //ReestablishmentCause_t                           reestablishment_cause_NR; //different set for NB_IoT
 
@@ -398,10 +398,6 @@ typedef struct {
   uint8_t                                   *SIB1;
   uint8_t                                   sizeof_SIB1;
 
-  uint8_t                                   *SERVINGCELLCONFIGCOMMON;
-  uint8_t                                   sizeof_SERVINGCELLCONFIGCOMMON; 
-
-
   //implicit parameters needed
   int                                       Ncp; //cyclic prefix for DL
   int								                        Ncp_UL; //cyclic prefix for UL
@@ -414,8 +410,8 @@ typedef struct {
   //are the only static one (memory has been already allocated)
   BCCH_BCH_Message_t                        mib;
   
-  SIB1_t     		                            *sib1;
-  ServingCellConfigCommon_t                 *servingcellconfigcommon;
+  NR_SIB1_t     		                            *sib1;
+  NR_ServingCellConfigCommon_t                 *servingcellconfigcommon;
 
 
   SRB_INFO_NR                               SI;
@@ -472,7 +468,7 @@ typedef struct OAI_UECapability_NR_s {
  uint8_t sdu[MAX_UE_CAPABILITY_SIZE_NR];
  uint8_t sdu_size;
 ////NR------
-  UE_NR_Capability_t  UE_Capability_NR; //replace the UE_EUTRA_Capability of LTE
+  NR_UE_NR_Capability_t  UE_Capability_NR; //replace the UE_EUTRA_Capability of LTE
 } OAI_UECapability_NR_t;
 
 
@@ -505,7 +501,6 @@ typedef struct UE_RRC_INST_NR_s {
   SystemInformation_t *si[NB_CNX_UE]; //!< Temporary storage for an SI message. Decoding happens in decode_SI().
   
   SystemInformationBlockType2_t *sib2[NB_CNX_UE];
-  /*
   SystemInformationBlockType3_t *sib3[NB_CNX_UE];
   SystemInformationBlockType4_t *sib4[NB_CNX_UE];
   SystemInformationBlockType5_t *sib5[NB_CNX_UE];
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index 3a3827b593..4bc43a7d10 100644
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -164,10 +164,10 @@ init_NR_SI(
   RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].MIB             = (uint8_t*) malloc16(4);
   RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_MIB      = do_MIB_NR(&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id],0,
                                                                             #ifdef ENABLE_ITTI
-                                                                            configuration->ssb_SubcarrierOffset[CC_id],
+                                                                            configuration->MIB_ssb_SubcarrierOffset[CC_id],
                                                                             configuration->pdcch_ConfigSIB1[CC_id],
-                                                                            configuration->subCarrierSpacingCommon[CC_id],
-                                                                            configuration->dmrs_TypeA_Position[CC_id]
+                                                                            configuration->MIB_subCarrierSpacingCommon[CC_id],
+                                                                            configuration->MIB_dmrs_TypeA_Position[CC_id]
                                                                             #else
                                                                             0,0,15,2
                                                                             #endif
@@ -189,12 +189,12 @@ init_NR_SI(
   
   AssertFatal(RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.nrrrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
 
-  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SERVINGCELLCONFIGCOMMON = do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
-                                                                                                           CC_id
-                                                                                                           #if defined(ENABLE_ITTI)
-                                                                                                           ,configuration
-                                                                                                           #endif
-                                                                                                           );
+  do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
+                             CC_id
+                             #if defined(ENABLE_ITTI)
+                             ,configuration
+                             #endif
+                             );
 
   
   
diff --git a/targets/COMMON/openairinterface5g_limits.h b/targets/COMMON/openairinterface5g_limits.h
index 4ce85f4cad..dba7b5616e 100644
--- a/targets/COMMON/openairinterface5g_limits.h
+++ b/targets/COMMON/openairinterface5g_limits.h
@@ -3,32 +3,74 @@
 
 #if defined(CBMIMO1) || defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
 #        define NUMBER_OF_eNB_MAX 1
+#        define NUMBER_OF_gNB_MAX 1
+
 #        define NUMBER_OF_RU_MAX 2
+#        define NUMBER_OF_NR_RU_MAX 2
+
 #        define NUMBER_OF_UE_MAX 16
+#        define NUMBER_OF_NR_UE_MAX 16
+
 #        define NUMBER_OF_CONNECTED_eNB_MAX 3
+#        define NUMBER_OF_CONNECTED_gNB_MAX 3
+
 #else
 #        define NUMBER_OF_eNB_MAX 7
+#        define NUMBER_OF_gNB_MAX 7
+
 #        define NUMBER_OF_RU_MAX 32
+#        define NUMBER_OF_NR_RU_MAX 32
+
 #        define NUMBER_OF_UE_MAX 20
+#        define NUMBER_OF_NR_UE_MAX 20
+
 #        define NUMBER_OF_CONNECTED_eNB_MAX 3
+#        define NUMBER_OF_CONNECTED_gNB_MAX 3
+
 #        if defined(STANDALONE) && STANDALONE==1
 #                undef  NUMBER_OF_eNB_MAX
+#                undef  NUMBER_OF_gNB_MAX
+
 #                undef  NUMBER_OF_UE_MAX
+#                undef  NUMBER_OF_NR_UE_MAX
+
 #                undef  NUMBER_OF_RU_MAX
+#                undef  NUMBER_OF_NR_RU_MAX
+
 #                define NUMBER_OF_eNB_MAX 3
+#                define NUMBER_OF_gNB_MAX 3
+
 #                define NUMBER_OF_UE_MAX 3
+#                define NUMBER_OF_NR_UE_MAX 3
+
 #                define NUMBER_OF_RU_MAX 3
+#                define NUMBER_OF_NR_RU_MAX 3
 #        endif
 
 #        if defined(LARGE_SCALE) && LARGE_SCALE
 #                undef  NUMBER_OF_eNB_MAX
+#                undef  NUMBER_OF_gNB_MAX
+
 #                undef  NUMBER_OF_UE_MAX
+#                undef  NUMBER_OF_NR_UE_MAX
+
 #                undef  NUMBER_OF_CONNECTED_eNB_MAX
+#                undef  NUMBER_OF_CONNECTED_gNB_MAX
+
 #                undef  NUMBER_OF_RU_MAX
+#                undef  NUMBER_OF_NR_RU_MAX
+
 #                define NUMBER_OF_eNB_MAX 2
+#                define NUMBER_OF_gNB_MAX 2
+
 #                define NUMBER_OF_UE_MAX 120
+#                define NUMBER_OF_NR_UE_MAX 120
+
 #                define NUMBER_OF_RU_MAX 16
+#                define NUMBER_OF_NR_RU_MAX 16
+
 #                define NUMBER_OF_CONNECTED_eNB_MAX 1 // to save some memory
+#                define NUMBER_OF_CONNECTED_gNB_MAX 1
 #        endif
 #endif
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
index bc84e24a37..bc13b44db6 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
@@ -265,6 +265,7 @@ gNBs =
       tx_gain                                                       = 90;
       rx_gain                                                       = 125;
       MIB_subCarrierSpacingCommon                                   = 0;
+      MIB_ssb_SubcarrierOffset                                      = 0;
       MIB_dmrs_TypeA_Position                                       = 0;
       pdcch_ConfigSIB1                                              = 0;
       SIB1_frequencyOffsetSSB                                       = 0; 
@@ -390,6 +391,13 @@ gNBs =
       Common_dci_Format2_3_monitoringPeriodicity                    = 0;
       Common_dci_Format2_3_nrofPDCCH_Candidates                     = 0;
       ue_Specific__dci_Formats                                      = 0;
+      RateMatchPatternLTE_CRS_carrierFreqDL                         = 0;
+      RateMatchPatternLTE_CRS_carrierBandwidthDL                    = 0;
+      RateMatchPatternLTE_CRS_nrofCRS_Ports                         = 0;
+      RateMatchPatternLTE_CRS_v_Shift                               = 0;
+      RateMatchPatternLTE_CRS_radioframeAllocationPeriod            = 0;
+      RateMatchPatternLTE_CRS_radioframeAllocationOffset            = 0;
+      RateMatchPatternLTE_CRS_subframeAllocation_choice             = 0;
       }
     );
 
-- 
GitLab