Commit e9ce528e authored by WEI-TAI CHEN's avatar WEI-TAI CHEN

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
...
}
......@@ -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.
......
File mode changed from 100755 to 100644
......@@ -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];
......
......@@ -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
);
......
......@@ -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
......
......@@ -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;
}
);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment