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