Commit e9ce528e authored by ChenWeiTai's avatar ChenWeiTai
Browse files

Modified and fixed common config

parent 3b7960d8
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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"
......
......@@ -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
......
......@@ -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;
......
......@@ -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++)
......
......@@ -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
......@@ -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
......
......@@ -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
...