diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 3e00a5db0e..6242e636a3 100755 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -231,8 +231,8 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") # Debug related options ######################################### -add_boolean_option(ASN_DEBUG False "ASN1 coder/decoder Debug") -add_boolean_option(EMIT_ASN_DEBUG False "ASN1 coder/decoder Debug") +add_boolean_option(ASN_DEBUG False "ASN1 coder/decoder Debug") +add_boolean_option(ASN_EMIT_DEBUG False "ASN1 coder/decoder Debug") add_boolean_option(MSG_PRINT False "print debug messages") add_boolean_option(DISABLE_XER_PRINT False "print XER Format") add_boolean_option(XER_PRINT False "print XER Format") @@ -1369,6 +1369,8 @@ set (MAC_SRC_UE set (ENB_APP_SRC ${OPENAIR2_DIR}/ENB_APP/enb_app.c ${OPENAIR2_DIR}/ENB_APP/enb_config.c + ${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c + ${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c ${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c ) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index c23f1a2d1d..e221093714 100755 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -2145,7 +2145,6 @@ fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci nfapi_hi_dci0_mpdcch_dci_pdu_rel13_t *rel13 = &pdu->mpdcch_dci_pdu_rel13; uint32_t cqi_req = rel13->csi_request; - uint32_t dai = rel13->dl_assignment_index; uint32_t TPC = rel13->tpc; uint32_t mcs = rel13->mcs; uint32_t hopping = rel13->frequency_hopping_flag; diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools_common.c b/openair1/PHY/LTE_TRANSPORT/dci_tools_common.c index 56dc211cc4..dbf5814f30 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools_common.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools_common.c @@ -296,7 +296,7 @@ void conv_eMTC_rballoc (uint16_t resource_block_coding, uint32_t N_RB_DL, uint32 int ind = first_rb >> 5; int ind_mod = first_rb & 31; - AssertFatal(RIV<32,"RIV is %d > 31\n"); + AssertFatal(RIV<32,"RIV is %d > 31\n",RIV); if (((N_RB_DL & 1) > 0) && (narrowband >= (N_NB_DL >> 1))) first_rb++; diff --git a/openair1/PHY/LTE_TRANSPORT/edci.c b/openair1/PHY/LTE_TRANSPORT/edci.c index 04cfeecf1c..841900e5aa 100755 --- a/openair1/PHY/LTE_TRANSPORT/edci.c +++ b/openair1/PHY/LTE_TRANSPORT/edci.c @@ -39,6 +39,7 @@ #include "SCHED/sched_eNB.h" #include "SIMULATION/TOOLS/sim.h" // for taus #include "PHY/sse_intrin.h" +#include "PHY/LTE_REFSIG/lte_refsig.h" #include "assertions.h" #include "T.h" @@ -270,7 +271,6 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; int i; int gain_lin_QPSK; - uint8_t bitsperCCE; uint16_t *mpdcchtab; uint32_t x1, x2, s = 0; @@ -278,7 +278,7 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, uint16_t j0, j, idelta; uint16_t i0; - int off; + int off=0; // Assumption: only handle a single MPDCCH per narrowband @@ -453,11 +453,13 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, (nprb<= last_prb)) { ((int16_t *) & yIQ)[0] = (((s >> (i & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[1] = (((s >> ((i + 1) & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; + AssertFatal(mdci->transmission_type==1,"transmission_type %d!=1, handle this ...\n",mdci->transmission_type); if (mdci->transmission_type==1) { // same thing on both 107 and 109 txF[(5*mprime)] = yIQ; txF[1+(5*mprime)] = yIQ; } else { // put on selected antenna port with w sequence + if (((mprime+nprb)&1) == 0) txF[off+(5*mprime)] = yIQ*w[lprime]; else diff --git a/openair1/PHY/LTE_TRANSPORT/transport_proto.h b/openair1/PHY/LTE_TRANSPORT/transport_proto.h index 37ac335d02..65f042f946 100644 --- a/openair1/PHY/LTE_TRANSPORT/transport_proto.h +++ b/openair1/PHY/LTE_TRANSPORT/transport_proto.h @@ -385,6 +385,8 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols, uint32_t sub_frame_offset); +void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int32_t ** txdataF); + void generate_64qam_table(void); void generate_16qam_table(void); @@ -421,6 +423,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,DC void fill_ulsch(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_ulsch_pdu *ulsch_pdu,int frame,int subframe); +void fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci_alloc, nfapi_hi_dci0_mpdcch_dci_pdu * pdu); + int generate_eNB_ulsch_params_from_rar(PHY_VARS_eNB *eNB, unsigned char *rar_pdu, uint32_t frame, diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h index d8d5fe5f9d..6ae297ba2b 100755 --- a/openair2/COMMON/rrc_messages_types.h +++ b/openair2/COMMON/rrc_messages_types.h @@ -186,7 +186,7 @@ typedef struct RrcConfigurationReq_s { int16_t Nid_cell[MAX_NUM_CCs];// for testing, change later int16_t N_RB_DL[MAX_NUM_CCs];// for testing, change later int nb_antenna_ports[MAX_NUM_CCs]; - + int eMBMS_configured; int eMTC_configured; int SL_configured; diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index 4f65d6098e..2dd978cd9e 100755 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -368,19 +368,9 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK; paramdef_t CCsParams[] = CCPARAMS_DESC(ccparams_lte); paramlist_def_t CCsParamList = {ENB_CONFIG_STRING_COMPONENT_CARRIERS,NULL,0}; - paramdef_t brParams[] = EMTCPARAMS_DESC(eMTCconfig); - paramdef_t schedulingInfoBrParams[] = SI_INFO_BR_DESC(eMTCconfig); - paramlist_def_t schedulingInfoBrParamList = {ENB_CONFIG_STRING_SCHEDULING_INFO_BR, NULL, 0}; - paramdef_t rachcelevelParams[] = RACH_CE_LEVELINFOLIST_R13_DESC(eMTCconfig); - paramlist_def_t rachcelevellist = {ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13, NULL, 0}; - paramdef_t rsrprangeParams[] = RSRP_RANGE_LIST_DESC(eMTCconfig); - paramlist_def_t rsrprangelist = {ENB_CONFIG_STRING_RSRP_RANGE_LIST, NULL, 0}; - paramdef_t prachParams[] = PRACH_PARAMS_CE_R13_DESC(eMTCconfig); - paramlist_def_t prachParamslist = {ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13, NULL, 0}; - paramdef_t n1PUCCH_ANR13Params[] = N1PUCCH_AN_INFOLIST_R13_DESC(eMTCconfig); - paramlist_def_t n1PUCCHInfoList = {ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13, NULL, 0}; - paramdef_t pcchv1310Params[] = PCCH_CONFIG_V1310_DESC(eMTCconfig); - paramdef_t sib2freqhoppingParams[] = SIB2_FREQ_HOPPING_R13_DESC(eMTCconfig); + + paramdef_t eMTCParams[] = EMTCPARAMS_DESC((&eMTCconfig)); + checkedparam_t config_check_eMTCparams[] = EMTCPARAMS_CHECK; srb1_params_t srb1_params; memset((void*)&srb1_params,0,sizeof(srb1_params_t)); @@ -395,6 +385,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { CCsParams[I].chkPptr = &(config_check_CCparams[I]); } + + for (int I = 0; I < (sizeof(CCsParams) / sizeof(paramdef_t)); I++) { + eMTCParams[I].chkPptr = &(config_check_eMTCparams[I]); + } + /* get global parameters, defined outside any section in the config file */ config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL); num_enbs = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt; @@ -1382,1334 +1377,33 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { break; } + // eMBMS configuration + RRC_CONFIGURATION_REQ(msg_p).eMBMS_configured = 0; + printf("No eMBMS configuration, skipping it\n"); + + // eMTC configuration char brparamspath[MAX_OPTNAME_SIZE*2 + 16]; sprintf(brparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_EMTC_PARAMETERS); - config_get( brParams, sizeof(brParams)/sizeof(paramdef_t), brparamspath); + config_get(eMTCParams, sizeof(eMTCParams)/sizeof(paramdef_t), brparamspath); RRC_CONFIGURATION_REQ(msg_p).eMTC_configured = eMTCconfig.eMTC_configured&1; - if (eMTCconfig.eMTC_configured > 0) { - printf("Found parameters for eMTC\n"); - RRC_CONFIGURATION_REQ(msg_p).schedulingInfoSIB1_BR_r13[j] = eMTCconfig.schedulingInfoSIB1_BR_r13; - - - if (!strcmp(eMTCconfig.cellSelectionInfoCE_r13, "ENABLE")) { - RRC_CONFIGURATION_REQ(msg_p).cellSelectionInfoCE_r13[j] = TRUE; - RRC_CONFIGURATION_REQ(msg_p).q_RxLevMinCE_r13[j]= eMTCconfig.q_RxLevMinCE_r13; - // RRC_CONFIGURATION_REQ(msg_p).q_QualMinRSRQ_CE_r13[j]= calloc(1, sizeof(long)); - // *RRC_CONFIGURATION_REQ(msg_p).q_QualMinRSRQ_CE_r13[j]= q_QualMinRSRQ_CE_r13; - } else { - RRC_CONFIGURATION_REQ(msg_p).cellSelectionInfoCE_r13[j] = FALSE; - } - - - - if (!strcmp(eMTCconfig.bandwidthReducedAccessRelatedInfo_r13, "ENABLE")) { - RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = TRUE; - - - - if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms20")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 0; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms40")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 1; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms60")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 2; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms80")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 3; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms120")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 4; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms160")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 5; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "ms200")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 6; - } else if (!strcmp(eMTCconfig.si_WindowLength_BR_r13, "spare")) { - RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = 7; - } - - - if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "everyRF")) { - RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 0; - } else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every2ndRF")) { - RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 1; - } else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every4thRF")) { - RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 2; - } else if (!strcmp(eMTCconfig.si_RepetitionPattern_r13, "every8thRF")) { - RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = 3; - } - - } else { - RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = FALSE; - } - - char schedulingInfoBrPath[MAX_OPTNAME_SIZE * 2]; - config_getlist(&schedulingInfoBrParamList, NULL, 0, brparamspath); - RRC_CONFIGURATION_REQ (msg_p).scheduling_info_br_size[j] = schedulingInfoBrParamList.numelt; - int siInfoindex; - for (siInfoindex = 0; siInfoindex < schedulingInfoBrParamList.numelt; siInfoindex++) { - sprintf(schedulingInfoBrPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_EMTC_PARAMETERS, siInfoindex); - config_get(schedulingInfoBrParams, sizeof(schedulingInfoBrParams) / sizeof(paramdef_t), schedulingInfoBrPath); - RRC_CONFIGURATION_REQ (msg_p).si_Narrowband_r13[j][siInfoindex] = eMTCconfig.si_Narrowband_r13; - RRC_CONFIGURATION_REQ (msg_p).si_TBS_r13[j][siInfoindex] = eMTCconfig.si_TBS_r13; - } - - - - // RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].system_info_value_tag_SI_size[j] = 0; - - - RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = CALLOC(1, sizeof(BOOLEAN_t)); - if (!strcmp(eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_r13, "subframePattern40-r13")) { - *RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = FALSE; - RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13; - } else { - *RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = TRUE; - RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13; - } - - RRC_CONFIGURATION_REQ(msg_p).startSymbolBR_r13[j] = eMTCconfig.startSymbolBR_r13; - - - if (!strcmp(eMTCconfig.si_HoppingConfigCommon_r13, "off")) { - RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = 1; - } else if (!strcmp(eMTCconfig.si_HoppingConfigCommon_r13, "on")) { - RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = 0; - } - - - RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = calloc(1, sizeof(long)); - if (!strcmp(eMTCconfig.si_ValidityTime_r13, "true")) { - *RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = 0; - } else { - AssertFatal(0, - "Failed to parse eNB configuration file %s, enb %d si_ValidityTime_r13 unknown value!\n", - RC.config_file_name, i); - } - - - if (!strcmp(eMTCconfig.freqHoppingParametersDL_r13, "ENABLE")) - { - RRC_CONFIGURATION_REQ(msg_p).freqHoppingParametersDL_r13[j] = TRUE; - - if (!strcmp(eMTCconfig.interval_DLHoppingConfigCommonModeA_r13, "interval-TDD-r13")) - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13[j] = FALSE; - else - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13[j] = TRUE; - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.interval_DLHoppingConfigCommonModeA_r13_val; - - if (!strcmp(eMTCconfig.interval_DLHoppingConfigCommonModeB_r13, "interval-TDD-r13")) - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13[j] = FALSE; - else - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13[j] = TRUE; - RRC_CONFIGURATION_REQ(msg_p).interval_DLHoppingConfigCommonModeB_r13_val[j] = eMTCconfig.interval_DLHoppingConfigCommonModeB_r13_val; - - RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = calloc(1, sizeof(long)); - if (!strcmp(eMTCconfig.mpdcch_pdsch_HoppingNB_r13, "nb2")) { - *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = 0; - } else if (!strcmp(eMTCconfig.mpdcch_pdsch_HoppingNB_r13, "nb4")) { - *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = 1; - } else { - AssertFatal(0, - "Failed to parse eNB configuration file %s, enb %d mpdcch_pdsch_HoppingNB_r13 unknown value!\n", - RC.config_file_name, i); - } - - - RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = calloc(1, sizeof(long)); - *RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = eMTCconfig.mpdcch_pdsch_HoppingOffset_r13; - - } - else - { - RRC_CONFIGURATION_REQ(msg_p).freqHoppingParametersDL_r13[j] = FALSE; - } - - /** ------------------------------SIB2/3 BR------------------------------------------ */ - - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_root = eMTCconfig.ccparams.prach_root; - - if ((eMTCconfig.ccparams.prach_root <0) || (eMTCconfig.ccparams.prach_root > 1023)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_root choice: 0..1023 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.prach_root); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_config_index = eMTCconfig.ccparams.prach_config_index; - - if ((eMTCconfig.ccparams.prach_config_index <0) || (eMTCconfig.ccparams.prach_config_index > 63)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_config_index choice: 0..1023 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.prach_config_index); - - if (!eMTCconfig.ccparams.prach_high_speed) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", - RC.config_file_name, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED); - else if (strcmp(eMTCconfig.ccparams.prach_high_speed, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_high_speed = TRUE; - } else if (strcmp(eMTCconfig.ccparams.prach_high_speed, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_high_speed = FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prach_config choice: ENABLE,DISABLE !\n", - RC.config_file_name, i, eMTCconfig.ccparams.prach_high_speed); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_zero_correlation = eMTCconfig.ccparams.prach_zero_correlation; - - if ((eMTCconfig.ccparams.prach_zero_correlation <0) || (eMTCconfig.ccparams.prach_zero_correlation > 15)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_zero_correlation choice: 0..15!\n", - RC.config_file_name, i, eMTCconfig.ccparams.prach_zero_correlation); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].prach_freq_offset = eMTCconfig.ccparams.prach_freq_offset; - - if ((eMTCconfig.ccparams.prach_freq_offset <0) || (eMTCconfig.ccparams.prach_freq_offset > 94)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 0..94!\n", - RC.config_file_name, i, eMTCconfig.ccparams.prach_freq_offset); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_delta_shift = eMTCconfig.ccparams.pucch_delta_shift-1; - - if ((eMTCconfig.ccparams.pucch_delta_shift <1) || (eMTCconfig.ccparams.pucch_delta_shift > 3)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_delta_shift choice: 1..3!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_delta_shift); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nRB_CQI = eMTCconfig.ccparams.pucch_nRB_CQI; - - if ((eMTCconfig.ccparams.pucch_nRB_CQI <0) || (eMTCconfig.ccparams.pucch_nRB_CQI > 98)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nRB_CQI choice: 0..98!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_nRB_CQI); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_nCS_AN = eMTCconfig.ccparams.pucch_nCS_AN; - - if ((eMTCconfig.ccparams.pucch_nCS_AN <0) || (eMTCconfig.ccparams.pucch_nCS_AN > 7)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nCS_AN choice: 0..7!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_nCS_AN); - - //#if (RRC_VERSION < MAKE_VERSION(10, 0, 0)) - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_n1_AN = eMTCconfig.ccparams.pucch_n1_AN; - - if ((eMTCconfig.ccparams.pucch_n1_AN <0) || (eMTCconfig.ccparams.pucch_n1_AN > 2047)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_n1_AN choice: 0..2047!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_n1_AN); - - //#endif - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_referenceSignalPower = eMTCconfig.ccparams.pdsch_referenceSignalPower; - - if ((eMTCconfig.ccparams.pdsch_referenceSignalPower <-60) || (eMTCconfig.ccparams.pdsch_referenceSignalPower > 50)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_referenceSignalPower choice:-60..50!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pdsch_referenceSignalPower); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pdsch_p_b = eMTCconfig.ccparams.pdsch_p_b; - - if ((eMTCconfig.ccparams.pdsch_p_b <0) || (eMTCconfig.ccparams.pdsch_p_b > 3)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pdsch_p_b choice: 0..3!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pdsch_p_b); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_n_SB = eMTCconfig.ccparams.pusch_n_SB; - - if ((eMTCconfig.ccparams.pusch_n_SB <1) || (eMTCconfig.ccparams.pusch_n_SB > 4)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_n_SB choice: 1..4!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_n_SB); - - if (!eMTCconfig.ccparams.pusch_hoppingMode) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!\n", - RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE); - else if (strcmp(eMTCconfig.ccparams.pusch_hoppingMode,"interSubFrame")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame; - } else if (strcmp(eMTCconfig.ccparams.pusch_hoppingMode,"intraAndInterSubFrame")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingMode = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_hoppingMode); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_hoppingOffset = eMTCconfig.ccparams.pusch_hoppingOffset; - - if ((eMTCconfig.ccparams.pusch_hoppingOffset<0) || (eMTCconfig.ccparams.pusch_hoppingOffset>98)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingOffset choice: 0..98!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_hoppingMode); - - if (!eMTCconfig.ccparams.pusch_enable64QAM) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", - RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM); - else if (strcmp(eMTCconfig.ccparams.pusch_enable64QAM, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_enable64QAM = TRUE; - } else if (strcmp(eMTCconfig.ccparams.pusch_enable64QAM, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_enable64QAM = FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_enable64QAM); - - if (!eMTCconfig.ccparams.pusch_groupHoppingEnabled) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", - RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN); - else if (strcmp(eMTCconfig.ccparams.pusch_groupHoppingEnabled, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupHoppingEnabled = TRUE; - } else if (strcmp(eMTCconfig.ccparams.pusch_groupHoppingEnabled, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupHoppingEnabled= FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_groupHoppingEnabled); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_groupAssignment = eMTCconfig.ccparams.pusch_groupAssignment; - - if ((eMTCconfig.ccparams.pusch_groupAssignment<0)||(eMTCconfig.ccparams.pusch_groupAssignment>29)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_groupAssignment choice: 0..29!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_groupAssignment); - - if (!eMTCconfig.ccparams.pusch_sequenceHoppingEnabled) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", - RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN); - else if (strcmp(eMTCconfig.ccparams.pusch_sequenceHoppingEnabled, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_sequenceHoppingEnabled = TRUE; - } else if (strcmp(eMTCconfig.ccparams.pusch_sequenceHoppingEnabled, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_sequenceHoppingEnabled = FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_sequenceHoppingEnabled); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_nDMRS1= eMTCconfig.ccparams.pusch_nDMRS1; //cyclic_shift in RRC! - - if ((eMTCconfig.ccparams.pusch_nDMRS1 <0) || (eMTCconfig.ccparams.pusch_nDMRS1>7)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_nDMRS1 choice: 0..7!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_nDMRS1); - - if (strcmp(eMTCconfig.ccparams.phich_duration,"NORMAL")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration= PHICH_Config__phich_Duration_normal; - } else if (strcmp(eMTCconfig.ccparams.phich_duration,"EXTENDED")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration= PHICH_Config__phich_Duration_extended; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_duration choice: NORMAL,EXTENDED!\n", - RC.config_file_name, i, eMTCconfig.ccparams.phich_duration); - - if (strcmp(eMTCconfig.ccparams.phich_resource,"ONESIXTH")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_oneSixth ; - } else if (strcmp(eMTCconfig.ccparams.phich_resource,"HALF")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_half; - } else if (strcmp(eMTCconfig.ccparams.phich_resource,"ONE")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_one; - } else if (strcmp(eMTCconfig.ccparams.phich_resource,"TWO")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource= PHICH_Config__phich_Resource_two; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_resource choice: ONESIXTH,HALF,ONE,TWO!\n", - RC.config_file_name, i, eMTCconfig.ccparams.phich_resource); - - printf("phich.resource eMTC %ld (%s), phich.duration eMTC %ld (%s)\n", - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_resource,eMTCconfig.ccparams.phich_resource, - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].phich_duration,eMTCconfig.ccparams.phich_duration); - - if (strcmp(eMTCconfig.ccparams.srs_enable, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable= TRUE; - } else if (strcmp(eMTCconfig.ccparams.srs_enable, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable= FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n", - RC.config_file_name, i, eMTCconfig.ccparams.srs_enable); - - if (RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_enable== TRUE) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_BandwidthConfig= eMTCconfig.ccparams.srs_BandwidthConfig; - - if ((eMTCconfig.ccparams.srs_BandwidthConfig < 0) || (eMTCconfig.ccparams.srs_BandwidthConfig >7)) - AssertFatal (0, "Failed to parse eNB configuration file %s, enb %d unknown value %d for srs_BandwidthConfig choice: 0...7\n", - RC.config_file_name, i, eMTCconfig.ccparams.srs_BandwidthConfig); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_SubframeConfig= eMTCconfig.ccparams.srs_SubframeConfig; - - if ((eMTCconfig.ccparams.srs_SubframeConfig<0) || (eMTCconfig.ccparams.srs_SubframeConfig>15)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for srs_SubframeConfig choice: 0..15 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.srs_SubframeConfig); - - if (strcmp(eMTCconfig.ccparams.srs_ackNackST, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_ackNackST= TRUE; - } else if (strcmp(eMTCconfig.ccparams.srs_ackNackST, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_ackNackST= FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n", - RC.config_file_name, i, eMTCconfig.ccparams.srs_ackNackST); - - if (strcmp(eMTCconfig.ccparams.srs_MaxUpPts, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_MaxUpPts= TRUE; - } else if (strcmp(eMTCconfig.ccparams.srs_MaxUpPts, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].srs_MaxUpPts= FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_MaxUpPts choice: ENABLE,DISABLE !\n", - RC.config_file_name, i, eMTCconfig.ccparams.srs_MaxUpPts); - } - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_p0_Nominal= eMTCconfig.ccparams.pusch_p0_Nominal; - - if ((eMTCconfig.ccparams.pusch_p0_Nominal<-126) || (eMTCconfig.ccparams.pusch_p0_Nominal>24)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_p0_Nominal choice: -126..24 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_p0_Nominal); - -#if (RRC_VERSION <= MAKE_VERSION(12, 0, 0)) - - if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al0; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL04")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al04; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL05")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al05; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL06")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al06; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL07")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al07; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL08")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al08; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL09")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al09; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL1")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= UplinkPowerControlCommon__alpha_al1; - } - -#endif -#if (RRC_VERSION >= MAKE_VERSION(12, 0, 0)) - - if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al0; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL04")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al04; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL05")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al05; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL06")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al06; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL07")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al07; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL08")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al08; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL09")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al09; - } else if (strcmp(eMTCconfig.ccparams.pusch_alpha,"AL1")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pusch_alpha= Alpha_r12_al1; - } - -#endif - else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_Alpha choice: AL0,AL04,AL05,AL06,AL07,AL08,AL09,AL1!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pusch_alpha); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_p0_Nominal= eMTCconfig.ccparams.pucch_p0_Nominal; - - if ((eMTCconfig.ccparams.pucch_p0_Nominal<-127) || (eMTCconfig.ccparams.pucch_p0_Nominal>-96)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_p0_Nominal choice: -127..-96 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_p0_Nominal); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].msg3_delta_Preamble= eMTCconfig.ccparams.msg3_delta_Preamble; - - if ((eMTCconfig.ccparams.msg3_delta_Preamble<-1) || (eMTCconfig.ccparams.msg3_delta_Preamble>6)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for msg3_delta_Preamble choice: -1..6 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.msg3_delta_Preamble); - - if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF_2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF_2; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF0; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1,"deltaF2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1= DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1 choice: deltaF_2,dltaF0,deltaF2!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format1); - - if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF1")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF1; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF3")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format1b,"deltaF5")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format1b= DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1b choice: deltaF1,dltaF3,deltaF5!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format1b); - - if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF_2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF_2; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF1")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF1; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2,"deltaF2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2= DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2 choice: deltaF_2,dltaF0,deltaF1,deltaF2!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2); - - if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF_2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF_2; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2a,"deltaF2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2a= DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2a choice: deltaF_2,dltaF0,deltaF2!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2a); - - if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF_2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF_2; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0; - } else if (strcmp(eMTCconfig.ccparams.pucch_deltaF_Format2b,"deltaF2")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pucch_deltaF_Format2b= DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2b choice: deltaF_2,dltaF0,deltaF2!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pucch_deltaF_Format2b); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_numberOfRA_Preambles= (eMTCconfig.ccparams.rach_numberOfRA_Preambles/4)-1; - - if ((eMTCconfig.ccparams.rach_numberOfRA_Preambles <4) || (eMTCconfig.ccparams.rach_numberOfRA_Preambles >64) || ((eMTCconfig.ccparams.rach_numberOfRA_Preambles&3)!=0)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_numberOfRA_Preambles choice: 4,8,12,...,64!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_numberOfRA_Preambles); - - if (strcmp(eMTCconfig.ccparams.rach_preamblesGroupAConfig, "ENABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preamblesGroupAConfig= TRUE; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_sizeOfRA_PreamblesGroupA= (eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA/4)-1; - - if ((eMTCconfig.ccparams.rach_numberOfRA_Preambles <4) || (eMTCconfig.ccparams.rach_numberOfRA_Preambles>60) || ((eMTCconfig.ccparams.rach_numberOfRA_Preambles&3)!=0)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_sizeOfRA_PreamblesGroupA choice: 4,8,12,...,60!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA); - - switch (eMTCconfig.ccparams.rach_messageSizeGroupA) { - case 56: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b56; - break; - - case 144: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b144; - break; - - case 208: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b208; - break; - - case 256: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messageSizeGroupA= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messageSizeGroupA_b256; - break; - - default: - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_messageSizeGroupA choice: 56,144,208,256!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_messageSizeGroupA); - break; - } - - if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"minusinfinity")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_minusinfinity; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB0")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB0; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB5")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB5; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB8")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB8; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB10")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB10; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB12")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB12; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB15")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB15; - } else if (strcmp(eMTCconfig.ccparams.rach_messagePowerOffsetGroupB,"dB18")==0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_messagePowerOffsetGroupB= RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_messagePowerOffsetGroupB choice: minusinfinity,dB0,dB5,dB8,dB10,dB12,dB15,dB18!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_messagePowerOffsetGroupB); - } else if (strcmp(eMTCconfig.ccparams.rach_preamblesGroupAConfig, "DISABLE") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preamblesGroupAConfig= FALSE; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_preamblesGroupAConfig); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleInitialReceivedTargetPower= (eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower+120)/2; - - if ((eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower<-120) || (eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower>-90) || ((eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower&1)!=0)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleInitialReceivedTargetPower choice: -120,-118,...,-90 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_powerRampingStep= eMTCconfig.ccparams.rach_powerRampingStep/2; - - if ((eMTCconfig.ccparams.rach_powerRampingStep<0) || (eMTCconfig.ccparams.rach_powerRampingStep>6) || ((eMTCconfig.ccparams.rach_powerRampingStep&1)!=0)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_powerRampingStep choice: 0,2,4,6 !\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_powerRampingStep); - - switch (eMTCconfig.ccparams.rach_preambleTransMax) { -#if (RRC_VERSION < MAKE_VERSION(14, 0, 0)) - - case 3: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n3; - break; - - case 4: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n4; - break; - - case 5: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n5; - break; - - case 6: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n6; - break; - - case 7: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n7; - break; - - case 8: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n8; - break; - - case 10: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n10; - break; - - case 20: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n20; - break; - - case 50: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n50; - break; - - case 100: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n100; - break; - - case 200: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= RACH_ConfigCommon__ra_SupervisionInfo__preambleTransMax_n200; - break; -#else - - case 3: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n3; - break; - - case 4: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n4; - break; - - case 5: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n5; - break; - - case 6: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n6; - break; - - case 7: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n7; - break; - - case 8: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n8; - break; - - case 10: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n10; - break; - - case 20: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n20; - break; - - case 50: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n50; - break; - - case 100: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n100; - break; - - case 200: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_preambleTransMax= PreambleTransMax_n200; - break; -#endif - - default: - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_preambleTransMax choice: 3,4,5,6,7,8,10,20,50,100,200!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_preambleTransMax); - break; - } - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_raResponseWindowSize= (eMTCconfig.ccparams.rach_raResponseWindowSize==10)?7:eMTCconfig.ccparams.rach_raResponseWindowSize-2; - - if ((eMTCconfig.ccparams.rach_raResponseWindowSize<0)||(eMTCconfig.ccparams.rach_raResponseWindowSize==9)||(eMTCconfig.ccparams.rach_raResponseWindowSize>10)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_raResponseWindowSize choice: 2,3,4,5,6,7,8,10!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_raResponseWindowSize); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_macContentionResolutionTimer= (eMTCconfig.ccparams.rach_macContentionResolutionTimer/8)-1; - - if ((eMTCconfig.ccparams.rach_macContentionResolutionTimer<8) || (eMTCconfig.ccparams.rach_macContentionResolutionTimer>64) || ((eMTCconfig.ccparams.rach_macContentionResolutionTimer&7)!=0)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_macContentionResolutionTimer choice: 8,16,...,56,64!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_macContentionResolutionTimer); - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_maxHARQ_Msg3Tx= eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx; - - if ((eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx<0) || (eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx>8)) - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for rach_maxHARQ_Msg3Tx choice: 1..8!\n", - RC.config_file_name, i, eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx); - - switch (eMTCconfig.ccparams.pcch_defaultPagingCycle) { - case 32: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf32; - break; - - case 64: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf64; - break; - - case 128: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf128; - break; - - case 256: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_defaultPagingCycle= PCCH_Config__defaultPagingCycle_rf256; - break; - - default: - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_defaultPagingCycle choice: 32,64,128,256!\n", - RC.config_file_name, i, eMTCconfig.ccparams.pcch_defaultPagingCycle); - break; - } - - if (strcmp(eMTCconfig.ccparams.pcch_nB, "fourT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_fourT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "twoT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_twoT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "halfT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_halfT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "quarterT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_quarterT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneEighthT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneEighthT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneSixteenthT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneSixteenthT; - } else if (strcmp(eMTCconfig.ccparams.pcch_nB, "oneThirtySecondT") == 0) { - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].pcch_nB= PCCH_Config__nB_oneThirtySecondT; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n", - RC.config_file_name, i, eMTCconfig.ccparams.pcch_nB); - - switch (eMTCconfig.ccparams.bcch_modificationPeriodCoeff) { - case 2: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n2; - break; - - case 4: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n4; - break; - - case 8: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n8; - break; - - case 16: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].bcch_modificationPeriodCoeff= BCCH_Config__modificationPeriodCoeff_n16; - break; - - default: - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for bcch_modificationPeriodCoeff choice: 2,4,8,16", - RC.config_file_name, i, eMTCconfig.ccparams.bcch_modificationPeriodCoeff); - break; - } - - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t300= eMTCconfig.ccparams.ue_TimersAndConstants_t300; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t301= eMTCconfig.ccparams.ue_TimersAndConstants_t301; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t310= eMTCconfig.ccparams.ue_TimersAndConstants_t310; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= eMTCconfig.ccparams.ue_TimersAndConstants_t311; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n310= eMTCconfig.ccparams.ue_TimersAndConstants_n310; - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_n311= eMTCconfig.ccparams.ue_TimersAndConstants_n311; - - switch (eMTCconfig.ccparams.ue_TransmissionMode) { - case 1: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm1; - break; - - case 2: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm2; - break; - - case 3: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm3; - break; - - case 4: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm4; - break; - - case 5: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm5; - break; - - case 6: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm6; - break; - - case 7: - RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TransmissionMode= AntennaInfoDedicated__transmissionMode_tm7; - break; - - default: - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for ue_TransmissionMode choice: 1,2,3,4,5,6,7", - RC.config_file_name, i, eMTCconfig.ccparams.ue_TransmissionMode); - break; - } - - - - - RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = CALLOC(1, sizeof(long)); - if (!strcmp(eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13, "r16")) { - *RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = 0; - } else if (!strcmp(eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13, "r32")) { - *RRC_CONFIGURATION_REQ(msg_p).pdsch_maxNumRepetitionCEmodeA_r13[j] = 1; - } else { - AssertFatal (0, - "Failed to parse eNB configuration file %s, pdsch_maxNumRepetitionCEmodeA_r13 unknown value!\n", - RC.config_file_name); - } - - - RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] = CALLOC(1, sizeof(long)); - if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r8")) { - *RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] = 0; - } else if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r16")) { - *RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] = 1; - } else if (!strcmp(eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, "r32")) { - *RRC_CONFIGURATION_REQ(msg_p).pusch_maxNumRepetitionCEmodeA_r13[j] = 2; - } else { - AssertFatal (0, - "Failed to parse eNB configuration file %s, pusch_maxNumRepetitionCEmodeA_r13 unknown value!\n", - RC.config_file_name); - } - - char rachCELevelInfoListPath[MAX_OPTNAME_SIZE * 2]; - config_getlist(&rachcelevellist, NULL, 0, brparamspath); - RRC_CONFIGURATION_REQ (msg_p).rach_CE_LevelInfoList_r13_size[j] = rachcelevellist.numelt; - int rachCEInfoIndex; - for (rachCEInfoIndex = 0; rachCEInfoIndex < rachcelevellist.numelt; rachCEInfoIndex++) { - sprintf(rachCELevelInfoListPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13, rachCEInfoIndex); - config_get(rachcelevelParams, sizeof(rachcelevelParams) / sizeof(paramdef_t), rachCELevelInfoListPath); - - RRC_CONFIGURATION_REQ (msg_p).firstPreamble_r13[j][rachCEInfoIndex] = eMTCconfig.firstPreamble_r13; - RRC_CONFIGURATION_REQ (msg_p).lastPreamble_r13[j][rachCEInfoIndex] = eMTCconfig.lastPreamble_r13; - - RRC_CONFIGURATION_REQ (msg_p).ra_ResponseWindowSize_r13[j][rachCEInfoIndex] = eMTCconfig.ra_ResponseWindowSize_r13; - AssertFatal(eMTCconfig.ra_ResponseWindowSize_r13 == 20 || - eMTCconfig.ra_ResponseWindowSize_r13 == 50 || - eMTCconfig.ra_ResponseWindowSize_r13 == 80 || - eMTCconfig.ra_ResponseWindowSize_r13 == 120 || - eMTCconfig.ra_ResponseWindowSize_r13 == 180 || - eMTCconfig.ra_ResponseWindowSize_r13 == 240 || - eMTCconfig.ra_ResponseWindowSize_r13 == 320 || - eMTCconfig.ra_ResponseWindowSize_r13 == 400, - "Illegal ra_ResponseWindowSize_r13 %d\n",eMTCconfig.ra_ResponseWindowSize_r13); - - RRC_CONFIGURATION_REQ (msg_p).mac_ContentionResolutionTimer_r13[j][rachCEInfoIndex] = eMTCconfig.mac_ContentionResolutionTimer_r13; - AssertFatal(eMTCconfig.mac_ContentionResolutionTimer_r13 == 80 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 100 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 120 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 80 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 160 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 200 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 240 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 480 || - eMTCconfig.mac_ContentionResolutionTimer_r13 == 960, - "Illegal mac_ContentionResolutionTimer_r13 %d\n", - eMTCconfig.mac_ContentionResolutionTimer_r13); - - RRC_CONFIGURATION_REQ (msg_p).rar_HoppingConfig_r13[j][rachCEInfoIndex] = eMTCconfig.rar_HoppingConfig_r13; - AssertFatal(eMTCconfig.rar_HoppingConfig_r13 == 0 || eMTCconfig.rar_HoppingConfig_r13 == 1, - "illegal rar_HoppingConfig_r13 %d\n",eMTCconfig.rar_HoppingConfig_r13); - } // end for loop (rach ce level info) - - char rsrpRangeListPath[MAX_OPTNAME_SIZE * 2]; - config_getlist(&rsrprangelist, NULL, 0, brparamspath); - RRC_CONFIGURATION_REQ (msg_p).rsrp_range_list_size[j] = rsrprangelist.numelt; - - - int rsrprangeindex; - for (rsrprangeindex = 0; rsrprangeindex < rsrprangelist.numelt; rsrprangeindex++) { - sprintf(rsrpRangeListPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_RSRP_RANGE_LIST, rsrprangeindex); - config_get(rsrprangeParams, sizeof(rsrprangeParams) / sizeof(paramdef_t), rsrpRangeListPath); - RRC_CONFIGURATION_REQ (msg_p).rsrp_range[j][rsrprangeindex] = eMTCconfig.rsrp_range_br; - - } - - - char prachparameterscePath[MAX_OPTNAME_SIZE * 2]; - config_getlist(&prachParamslist, NULL, 0, brparamspath); - RRC_CONFIGURATION_REQ (msg_p).prach_parameters_list_size[j] = prachParamslist.numelt; - - int prachparamsindex; - for (prachparamsindex = 0; prachparamsindex < prachParamslist.numelt; prachparamsindex++) { - sprintf(prachparameterscePath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13, prachparamsindex); - config_get(prachParams, sizeof(prachParams) / sizeof(paramdef_t), prachparameterscePath); - - RRC_CONFIGURATION_REQ (msg_p).prach_config_index[j][prachparamsindex] = eMTCconfig.prach_config_index_br; - RRC_CONFIGURATION_REQ (msg_p).prach_freq_offset[j][prachparamsindex] = eMTCconfig.prach_freq_offset_br; - - RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prachparamsindex] = calloc(1, sizeof(long)); - *RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prachparamsindex] = eMTCconfig.prach_StartingSubframe_r13; - - RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prachparamsindex] = calloc(1, sizeof(long)); - *RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prachparamsindex] = eMTCconfig.maxNumPreambleAttemptCE_r13-3; - AssertFatal(eMTCconfig.maxNumPreambleAttemptCE_r13 > 2 && eMTCconfig.maxNumPreambleAttemptCE_r13 <11, - "prachparamsindex %d: Illegal maxNumPreambleAttemptCE_r13 %d\n", - prachparamsindex,eMTCconfig.maxNumPreambleAttemptCE_r13); - - RRC_CONFIGURATION_REQ (msg_p).numRepetitionPerPreambleAttempt_r13[j][prachparamsindex] = eMTCconfig.numRepetitionPerPreambleAttempt_r13; - AssertFatal(eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 1 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 2 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 4 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 8 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 16 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 32 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 64 || - eMTCconfig.numRepetitionPerPreambleAttempt_r13 == 128, - "illegal numReptitionPerPreambleAttempt %d\n", - eMTCconfig.numRepetitionPerPreambleAttempt_r13); - - RRC_CONFIGURATION_REQ (msg_p).mpdcch_NumRepetition_RA_r13[j][prachparamsindex] = eMTCconfig.mpdcch_NumRepetition_RA_r13; - AssertFatal (eMTCconfig.mpdcch_NumRepetition_RA_r13 == 1 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 2 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 4 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 8 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 16 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 32 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 64 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 128 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 256 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 512 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 1024 || - eMTCconfig.mpdcch_NumRepetition_RA_r13 == 2048, - "illegal mpdcch_NumRepeition_RA_r13 %d\n", - eMTCconfig.mpdcch_NumRepetition_RA_r13); - - - RRC_CONFIGURATION_REQ (msg_p).prach_HoppingConfig_r13[j][prachparamsindex] = eMTCconfig.prach_HoppingConfig_r13; - - AssertFatal (eMTCconfig.prach_HoppingConfig_r13 >=0 && eMTCconfig.prach_HoppingConfig_r13 < 2, - "Illegal prach_HoppingConfig_r13 %d\n",eMTCconfig.prach_HoppingConfig_r13); - - - int maxavailablenarrowband_count = prachParams[7].numelt; - - RRC_CONFIGURATION_REQ (msg_p).max_available_narrow_band_size[j][prachparamsindex] = maxavailablenarrowband_count; - int narrow_band_index; - for (narrow_band_index = 0; narrow_band_index < maxavailablenarrowband_count; narrow_band_index++) { - RRC_CONFIGURATION_REQ (msg_p).max_available_narrow_band[j][prachparamsindex][narrow_band_index] = prachParams[7].iptr[narrow_band_index]; - } - } - - char n1PUCCHInfoParamsPath[MAX_OPTNAME_SIZE * 2]; - config_getlist(&n1PUCCHInfoList, NULL, 0, brparamspath); - RRC_CONFIGURATION_REQ (msg_p).pucch_info_value_size[j] = n1PUCCHInfoList.numelt; - - int n1PUCCHinfolistindex; - for (n1PUCCHinfolistindex = 0; n1PUCCHinfolistindex < n1PUCCHInfoList.numelt; n1PUCCHinfolistindex++) { - sprintf(n1PUCCHInfoParamsPath, "%s.%s.[%i]", brparamspath, ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13, n1PUCCHinfolistindex); - config_get(n1PUCCH_ANR13Params, sizeof(n1PUCCH_ANR13Params) / sizeof(paramdef_t), n1PUCCHInfoParamsPath); - RRC_CONFIGURATION_REQ (msg_p).pucch_info_value[j][n1PUCCHinfolistindex] = eMTCconfig.pucch_info_value; - } - - char PCCHConfigv1310Path[MAX_OPTNAME_SIZE*2 + 16]; - sprintf(PCCHConfigv1310Path, "%s.%s", brparamspath, ENB_CONFIG_STRING_PCCH_CONFIG_V1310); - config_get(pcchv1310Params, sizeof(pcchv1310Params)/sizeof(paramdef_t), PCCHConfigv1310Path); - - - - /** PCCH CONFIG V1310 */ - - RRC_CONFIGURATION_REQ(msg_p).pcch_config_v1310[j] = TRUE; - RRC_CONFIGURATION_REQ(msg_p).paging_narrowbands_r13[j] = eMTCconfig.paging_narrowbands_r13; - RRC_CONFIGURATION_REQ(msg_p).mpdcch_numrepetition_paging_r13[j] = eMTCconfig.mpdcch_numrepetition_paging_r13; - AssertFatal (eMTCconfig.mpdcch_numrepetition_paging_r13 == 1 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 2 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 4 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 8 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 16 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 32 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 64 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 128 || - eMTCconfig.mpdcch_numrepetition_paging_r13 == 256, - "illegal mpdcch_numrepetition_paging_r13 %d\n", - eMTCconfig.mpdcch_numrepetition_paging_r13); - - - // RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = CALLOC(1, sizeof(long)); - // if (!strcmp(nb_v1310, "one64thT")) { - // *RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = 0; - // } else if (!strcmp(nb_v1310, "one128thT")) { - // *RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = 1; - // } else if (!strcmp(nb_v1310, "one256thT")) { - // *RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = 2; - // } else { - // AssertFatal(0, - // "Failed to parse eNB configuration file %s, nb_v1310, unknown value !\n", - // RC.config_file_name); - // } - - - - RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = CALLOC(1, sizeof(long)); - // ++cnt; // check this ,, the conter is up above - if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n1")) { - *RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 0; - } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n2")) { - *RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 1; - } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n4")) { - *RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 2; - } else if (!strcmp(eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, "n8")) { - *RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = 3; - } else { - AssertFatal (0, - "Failed to parse eNB configuration file %s, pucch_NumRepetitionCE_Msg4_Level0_r13 unknown value!\n", - RC.config_file_name); - } - - - - /** SIB2 FREQ HOPPING PARAMETERS R13 */ - RRC_CONFIGURATION_REQ(msg_p).sib2_freq_hoppingParameters_r13_exists[j] = TRUE; - - char sib2FreqHoppingParametersR13Path[MAX_OPTNAME_SIZE*2 + 16]; - sprintf(sib2FreqHoppingParametersR13Path, "%s.%s", brparamspath, ENB_CONFIG_STRING_SIB2_FREQ_HOPPINGPARAMETERS_R13); - config_get(sib2freqhoppingParams, sizeof(sib2freqhoppingParams)/sizeof(paramdef_t), sib2FreqHoppingParametersR13Path); - - - RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = CALLOC(1, sizeof(long)); - if (!strcmp(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13, "FDD")) { - *RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = 0; - RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val; - AssertFatal(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==2 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==4 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==8, - "illegal sib2_interval_ULHoppingConfigCommonModeA_r13_val %d\n", - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val); - } else if (!strcmp(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13, "TDD")) { - *RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = 1; - RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val; - AssertFatal(eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==1 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==5 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==10 || - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val==20, - "illegal sib2_interval_ULHoppingConfigCommonModeA_r13_val %d\n", - eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val); - } else { - AssertFatal (1==0, - "Failed to parse eNB configuration file %s, sib2_interval_ULHoppingConfigCommonModeA_r13 unknown value !!\n", - RC.config_file_name); - } - RRC_CONFIGURATION_REQ (msg_p).eMTC_configured=1; - } // BR parameters > 0 - else { - printf("No eMTC configuration, skipping it\n"); - RRC_CONFIGURATION_REQ (msg_p).eMTC_configured=0; - } + if (eMTCconfig.eMTC_configured > 0) fill_eMTC_configuration(msg_p,&eMTCconfig, i,j,RC.config_file_name,brparamspath); + else printf("No eMTC configuration, skipping it\n"); + + // Sidelink configuration char SLparamspath[MAX_OPTNAME_SIZE*2 + 16]; sprintf(SLparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_SL_PARAMETERS); config_get( SLParams, sizeof(SLParams)/sizeof(paramdef_t), SLparamspath); // Sidelink Resource pool information RRC_CONFIGURATION_REQ (msg_p).SL_configured=SLconfig.sidelink_configured&1; - if (SLconfig.sidelink_configured==1) { - - //SIB18 - if (strcmp(SLconfig.rxPool_sc_CP_Len,"normal")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_normal; - } else if (strcmp(SLconfig.rxPool_sc_CP_Len,"extended")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_CP_Len[j] = SL_CP_Len_r12_extended; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_CP_Len choice: normal,extended!\n", - RC.config_file_name, i, SLconfig.rxPool_sc_CP_Len); - - if (strcmp(SLconfig.rxPool_sc_Period,"sf40")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf40; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf60")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf60; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf70")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf70; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf80")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf80; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf120")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf120; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf140")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf140; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf160")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf160; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf240")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf240; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf280")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf280; - } else if (strcmp(SLconfig.rxPool_sc_Period,"sf320")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_sf320; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare6")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare6; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare5")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare5; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare4")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare4; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare3")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare3; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare2")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare2; - } else if (strcmp(SLconfig.rxPool_sc_Period,"spare")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_sc_Period[j] = SL_PeriodComm_r12_spare; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_sc_Period choice: sf40,sf60,sf70,sf80,sf120,sf140,sf160,sf240,sf280,sf320,spare6,spare5,spare4,spare3,spare2,spare!\n", - RC.config_file_name, i, SLconfig.rxPool_sc_Period); - - if (strcmp(SLconfig.rxPool_data_CP_Len,"normal")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_normal; - } else if (strcmp(SLconfig.rxPool_data_CP_Len,"extended")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_data_CP_Len[j] = SL_CP_Len_r12_extended; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_data_CP_Len choice: normal,extended!\n", - RC.config_file_name, i, SLconfig.rxPool_data_CP_Len); - - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Num[j] = SLconfig.rxPool_ResourceConfig_prb_Num; - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_Start[j] = SLconfig.rxPool_ResourceConfig_prb_Start; - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_prb_End[j] = SLconfig.rxPool_ResourceConfig_prb_End; - - if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n", - RC.config_file_name, i, SLconfig.rxPool_ResourceConfig_offsetIndicator_present); - - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_offsetIndicator_choice[j] = SLconfig.rxPool_ResourceConfig_offsetIndicator_choice; - - if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12; - } else if (strcmp(SLconfig.rxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) { - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n", - RC.config_file_name, i, SLconfig.rxPool_ResourceConfig_subframeBitmap_present); - - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_buf; - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_size; - RRC_CONFIGURATION_REQ (msg_p).rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused; - - //SIB19 - for discRxPool - if (strcmp(SLconfig.discRxPool_cp_Len,"normal")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_normal; - } else if (strcmp(SLconfig.discRxPool_cp_Len,"extended")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_cp_Len[j] = SL_CP_Len_r12_extended; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_cp_Len choice: normal,extended!\n", - RC.config_file_name, i, SLconfig.discRxPool_cp_Len); - - if (strcmp(SLconfig.discRxPool_discPeriod,"rf32")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf64")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf128")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf256")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf512")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf1024")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"rf16")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310; - } else if (strcmp(SLconfig.discRxPool_discPeriod,"spare")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n", - RC.config_file_name, i, SLconfig.discRxPool_discPeriod); - - RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRetx[j] = SLconfig.discRxPool_numRetx; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_numRepetition[j] = SLconfig.discRxPool_numRepetition; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Num[j] = SLconfig.discRxPool_ResourceConfig_prb_Num; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_Start[j] = SLconfig.discRxPool_ResourceConfig_prb_Start; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_prb_End[j] = SLconfig.discRxPool_ResourceConfig_prb_End; - - if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prSmall")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_offsetIndicator_present,"prLarge")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n", - RC.config_file_name, i, SLconfig.discRxPool_ResourceConfig_offsetIndicator_present); - - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_offsetIndicator_choice[j] = SLconfig.discRxPool_ResourceConfig_offsetIndicator_choice; - - if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs4")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs8")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs12")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs16")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs30")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs40")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12; - } else if (strcmp(SLconfig.discRxPool_ResourceConfig_subframeBitmap_present,"prBs42")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPool_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n", - RC.config_file_name, i, SLconfig.discRxPool_ResourceConfig_subframeBitmap_present); - - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_size; - RRC_CONFIGURATION_REQ (msg_p).discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused; - - //SIB19 - For discRxPoolPS - if (strcmp(SLconfig.discRxPoolPS_cp_Len,"normal")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_normal; - } else if (strcmp(SLconfig.discRxPoolPS_cp_Len,"extended")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_cp_Len[j] = SL_CP_Len_r12_extended; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_cp_Len choice: normal,extended!\n", - RC.config_file_name, i, SLconfig.discRxPoolPS_cp_Len); - - if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf32")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf32; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf64")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf64; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf128")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf128; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf256")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf256; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf512")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf512; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf1024")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf1024; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"rf16")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_rf16_v1310; - } else if (strcmp(SLconfig.discRxPoolPS_discPeriod,"spare")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_discPeriod[j] = SL_DiscResourcePool_r12__discPeriod_r12_spare; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_discPeriod choice: rf32,rf64,rf128,rf512,rf1024,rf16,spare!\n", - RC.config_file_name, i, SLconfig.discRxPoolPS_discPeriod); - - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRetx[j] = SLconfig.discRxPoolPS_numRetx; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_numRepetition[j] = SLconfig.discRxPoolPS_numRepetition; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Num[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_Num; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_Start[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_Start; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_prb_End[j] = SLconfig.discRxPoolPS_ResourceConfig_prb_End; - - if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_NOTHING; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prSmall")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_small_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present,"prLarge")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_present[j] = SL_OffsetIndicator_r12_PR_large_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_offsetIndicator_present choice: prNothing,prSmal,prLarge!\n", - RC.config_file_name, i, SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_present); - - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_offsetIndicator_choice[j] = SLconfig.discRxPoolPS_ResourceConfig_offsetIndicator_choice; - - if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prNothing")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_NOTHING; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs4")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs4_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs8")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs8_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs12")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs12_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs16")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs16_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs30")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs30_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs40")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs40_r12; - } else if (strcmp(SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present,"prBs42")==0) { - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_present[j] = SubframeBitmapSL_r12_PR_bs42_r12; - } else - AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for discRxPoolPS_ResourceConfig_subframeBitmap_present choice: prNothing,prBs4,prBs8,prBs12,prBs16,prBs30,prBs40,prBs42!\n", - RC.config_file_name, i, SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_present); - - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size; - RRC_CONFIGURATION_REQ (msg_p).discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[j] = SLconfig.discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused; - } + if (SLconfig.sidelink_configured==1) fill_SL_configuration(msg_p,&SLconfig,i,j,RC.config_file_name); + else printf("No SL configuration skipping it\n"); } } + + char srb1path[MAX_OPTNAME_SIZE*2 + 8]; sprintf(srb1path,"%s.%s",enbpath,ENB_CONFIG_STRING_SRB1); config_get( SRB1Params,sizeof(SRB1Params)/sizeof(paramdef_t), srb1path); diff --git a/openair2/ENB_APP/enb_config.h b/openair2/ENB_APP/enb_config.h index ed1b4aeaa2..2e224850eb 100755 --- a/openair2/ENB_APP/enb_config.h +++ b/openair2/ENB_APP/enb_config.h @@ -48,6 +48,7 @@ #endif #include "RRC/LTE/rrc_defs.h" #include +#include "enb_paramdef.h" #define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\ struct in_addr inp;\ @@ -108,5 +109,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc); int RCconfig_S1(MessageDef *msg_p, uint32_t i); int RCconfig_X2(MessageDef *msg_p, uint32_t i); +void fill_SL_configuration(MessageDef *msg_p, ccparams_sidelink_t *SLconfig,int cell_idx,int cc_idx,char *config_fname); +void fill_eMTC_configuration(MessageDef *msg_p, ccparams_eMTC_t *eMTCconfig, int cell_idx,int cc_idx,char *config_fname,char *brparamspath); + #endif /* ENB_CONFIG_H_ */ /** @} */ diff --git a/openair2/ENB_APP/enb_paramdef.h b/openair2/ENB_APP/enb_paramdef.h index eae4e32482..0ed2d1bdf9 100755 --- a/openair2/ENB_APP/enb_paramdef.h +++ b/openair2/ENB_APP/enb_paramdef.h @@ -30,6 +30,8 @@ * \warning */ +#ifndef ENB_PARAMDEF_H_ +#define ENB_PARAMDEF_H_ #include "common/config/config_paramdesc.h" #include "RRC_paramsvalues.h" @@ -1031,3 +1033,4 @@ typedef struct srb1_params_s { #include "enb_paramdef_emtc.h" #include "enb_paramdef_sidelink.h" +#endif diff --git a/openair2/ENB_APP/enb_paramdef_emtc.h b/openair2/ENB_APP/enb_paramdef_emtc.h index 41205ab63d..ba8483ef9f 100644 --- a/openair2/ENB_APP/enb_paramdef_emtc.h +++ b/openair2/ENB_APP/enb_paramdef_emtc.h @@ -159,151 +159,240 @@ typedef struct ccparams_eMTC_s { #define EMTCPARAMS_DESC(eMTCconfig) { \ - {"eMTC_configured", NULL, 0, iptr:&eMTCconfig.eMTC_configured, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_ROOT, NULL, 0, iptr:&eMTCconfig.ccparams.prach_root, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX, NULL, 0, iptr:&eMTCconfig.ccparams.prach_config_index, defintval:0, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PRACH_HIGH_SPEED, NULL, 0, strptr:&eMTCconfig.ccparams.prach_high_speed, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION, NULL, 0, iptr:&eMTCconfig.ccparams.prach_zero_correlation, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET, NULL, 0, iptr:&eMTCconfig.ccparams.prach_freq_offset, defintval:2, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT, NULL, 0, iptr:&eMTCconfig.ccparams.pucch_delta_shift, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUCCH_NRB_CQI, NULL, 0, iptr:&eMTCconfig.ccparams.pucch_nRB_CQI, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUCCH_NCS_AN, NULL, 0, iptr:&eMTCconfig.ccparams.pucch_nCS_AN, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUCCH_N1_AN, NULL, 0, iptr:&eMTCconfig.ccparams.pucch_n1_AN, defintval:32, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PDSCH_RS_EPRE, NULL, 0, iptr:&eMTCconfig.ccparams.pdsch_referenceSignalPower, defintval:-29, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PDSCH_PB, NULL, 0, iptr:&eMTCconfig.ccparams.pdsch_p_b, defintval:0, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PUSCH_N_SB, NULL, 0, iptr:&eMTCconfig.ccparams.pusch_n_SB, defintval:1, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE, NULL, 0, strptr:&eMTCconfig.ccparams.pusch_hoppingMode, defstrval:"interSubFrame", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET, NULL, 0, iptr:&eMTCconfig.ccparams.pusch_hoppingOffset, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM, NULL, 0, strptr:&eMTCconfig.ccparams.pusch_enable64QAM, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN, NULL, 0, strptr:&eMTCconfig.ccparams.pusch_groupHoppingEnabled, defstrval:"ENABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT, NULL, 0, iptr:&eMTCconfig.ccparams.pusch_groupAssignment, defintval:0, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN, NULL, 0, strptr:&eMTCconfig.ccparams.pusch_sequenceHoppingEnabled, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUSCH_NDMRS1, NULL, 0, iptr:&eMTCconfig.ccparams.pusch_nDMRS1, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PHICH_DURATION, NULL, 0, strptr:&eMTCconfig.ccparams.phich_duration, defstrval:"NORMAL", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PHICH_RESOURCE, NULL, 0, strptr:&eMTCconfig.ccparams.phich_resource, defstrval:"ONESIXTH", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SRS_ENABLE, NULL, 0, strptr:&eMTCconfig.ccparams.srs_enable, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG, NULL, 0, iptr:&eMTCconfig.ccparams.srs_BandwidthConfig, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG, NULL, 0, iptr:&eMTCconfig.ccparams.srs_SubframeConfig, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG, NULL, 0, strptr:&eMTCconfig.ccparams.srs_ackNackST, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SRS_MAXUPPTS, NULL, 0, strptr:&eMTCconfig.ccparams.srs_MaxUpPts, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL, NULL, 0, iptr:&eMTCconfig.ccparams.pusch_p0_Nominal, defintval:-90, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PUSCH_ALPHA, NULL, 0, strptr:&eMTCconfig.ccparams.pusch_alpha, defstrval:"AL1", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL, NULL, 0, iptr:&eMTCconfig.ccparams.pucch_p0_Nominal, defintval:-96, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE, NULL, 0, iptr:&eMTCconfig.ccparams.msg3_delta_Preamble, defintval:6, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1, NULL, 0, strptr:&eMTCconfig.ccparams.pucch_deltaF_Format1, defstrval:"DELTAF2", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b, NULL, 0, strptr:&eMTCconfig.ccparams.pucch_deltaF_Format1b, defstrval:"deltaF3", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2, NULL, 0, strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2, defstrval:"deltaF0", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A, NULL, 0, strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2a, defstrval:"deltaF0", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B, NULL, 0, strptr:&eMTCconfig.ccparams.pucch_deltaF_Format2b, defstrval:"deltaF0", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES, NULL, 0, iptr:&eMTCconfig.ccparams.rach_numberOfRA_Preambles, defstrval:"n4", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG, NULL, 0, strptr:&eMTCconfig.ccparams.rach_preamblesGroupAConfig, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA, NULL, 0, iptr:&eMTCconfig.ccparams.rach_sizeOfRA_PreamblesGroupA, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA, NULL, 0, iptr:&eMTCconfig.ccparams.rach_messageSizeGroupA, defintval:56, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB, NULL, 0, strptr:&eMTCconfig.ccparams.rach_messagePowerOffsetGroupB, defstrval:"minusinfinity", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP, NULL, 0, iptr:&eMTCconfig.ccparams.rach_powerRampingStep, defintval:4, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER, NULL, 0, iptr:&eMTCconfig.ccparams.rach_preambleInitialReceivedTargetPower, defintval:-100, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX, NULL, 0, iptr:&eMTCconfig.ccparams.rach_preambleTransMax, defintval:10, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE, NULL, 0, iptr:&eMTCconfig.ccparams.rach_raResponseWindowSize, defintval:10, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER, NULL, 0, iptr:&eMTCconfig.ccparams.rach_macContentionResolutionTimer, defintval:48, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX, NULL, 0, iptr:&eMTCconfig.ccparams.rach_maxHARQ_Msg3Tx, defintval:4, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE, NULL, 0, iptr:&eMTCconfig.ccparams.pcch_defaultPagingCycle, defintval:128, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_PCCH_NB, NULL, 0, strptr:&eMTCconfig.ccparams.pcch_nB, defstrval:"oneT", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF, NULL, 0, iptr:&eMTCconfig.ccparams.bcch_modificationPeriodCoeff, defintval:2, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG, NULL, 0, strptr:&eMTCconfig.ccparams.rach_preamblesGroupAConfig, defstrval:"", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_T300, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t300, defintval:1000, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_T301, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t301, defintval:1000, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_T310, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t310, defintval:1000, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_T311, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_t311, defintval:10000, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_N310, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_n310, defintval:20, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UETIMERS_N311, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TimersAndConstants_n311, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&eMTCconfig.ccparams.ue_TransmissionMode, defintval:1, TYPE_UINT, 0}, \ - {ENB_CONFIG_STRING_SCHEDULING_INFO_SIB1_BR_R13, NULL, 0, iptr:&eMTCconfig.schedulingInfoSIB1_BR_r13, defintval:4, TYPE_UINT, 0}, \ - {ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310, NULL, 0, strptr:&eMTCconfig.prach_ConfigCommon_v1310, defstrval:"ENABLE", TYPE_STRING, 0}, \ - {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13, NULL, 0, strptr:&eMTCconfig.mpdcch_startSF_CSS_RA_r13, defstrval:"fdd-r13", TYPE_STRING, 0}, \ - {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL, NULL, 0, strptr:&eMTCconfig.mpdcch_startSF_CSS_RA_r13_val, defstrval:"v1", TYPE_STRING, 0}, \ - {ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13, NULL, 0, iptr:&eMTCconfig.prach_HoppingOffset_r13, defintval:0, TYPE_INT, 0}, \ - {ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13, NULL, 0, strptr:&eMTCconfig.pdsch_maxNumRepetitionCEmodeA_r13, defstrval:"r16", TYPE_STRING, 0}, \ - {ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13, NULL, 0, strptr:&eMTCconfig.pusch_maxNumRepetitionCEmodeA_r13, defstrval:"r8", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_CELL_SELECTION_INFO_CE_R13, NULL, 0, strptr:&eMTCconfig.cellSelectionInfoCE_r13, defstrval:"ENABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_Q_RX_LEV_MIN_CE_R13, NULL, 0, iptr:&eMTCconfig.q_RxLevMinCE_r13, defintval:-70, TYPE_INT, 0}, \ -{ENB_CONFIG_STRING_BANDWIDTH_REDUCED_ACCESS_RELATED_INFO_R13, NULL, 0, strptr:&eMTCconfig.bandwidthReducedAccessRelatedInfo_r13, defstrval:"ENABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SI_WINDOW_LENGTH_BR_R13, NULL, 0, strptr:&eMTCconfig.si_WindowLength_BR_r13, defstrval:"ms20", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SI_REPETITION_PATTERN_R13, NULL, 0, strptr:&eMTCconfig.si_RepetitionPattern_r13, defstrval:"everyRF", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_R13, NULL, 0, strptr:&eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_r13, defstrval:"subframePattern40-r13", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_VAL_R13, NULL, 0, i64ptr:&eMTCconfig.fdd_DownlinkOrTddSubframeBitmapBR_val_r13, defint64val:0xFFFFFFFFFF, TYPE_UINT64, 0}, \ -{ENB_CONFIG_STRING_START_SYMBOL_BR_R13, NULL, 0, iptr:&eMTCconfig.startSymbolBR_r13, defintval:3, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_SI_HOPPING_CONFIG_COMMON_R13, NULL, 0, strptr:&eMTCconfig.si_HoppingConfigCommon_r13 , defstrval:"off", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_SI_VALIDITY_TIME_R13, NULL, 0, strptr:&eMTCconfig.si_ValidityTime_r13, defstrval:"true", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_DL_R13, NULL, 0, strptr:&eMTCconfig.freqHoppingParametersDL_r13, defstrval:"DISABLE", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13, NULL, 0, strptr:&eMTCconfig.mpdcch_pdsch_HoppingNB_r13, defstrval:"nb2", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13, NULL, 0, strptr:&eMTCconfig.interval_DLHoppingConfigCommonModeA_r13, defstrval:"interval-FDD-r13", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL, NULL, 0, iptr:&eMTCconfig.interval_DLHoppingConfigCommonModeA_r13_val, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13, NULL, 0, strptr:&eMTCconfig.interval_DLHoppingConfigCommonModeB_r13, defstrval:"interval-FDD-r13", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL, NULL, 0, iptr:&eMTCconfig.interval_DLHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13, NULL, 0, iptr:&eMTCconfig.mpdcch_pdsch_HoppingOffset_r13, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13, NULL, 0, strptr:&eMTCconfig.preambleTransMax_CE_r13, defstrval:"n10", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0, NULL, 0, strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level0_r13, defstrval:"n1", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1, NULL, 0, strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level1_r13, defstrval:"", TYPE_STRING, 0}, \ -{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2, NULL, 0, strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level2_r13, defstrval:"", TYPE_STRING, 0}, \ - {ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3, NULL, 0, strptr:&eMTCconfig.pucch_NumRepetitionCE_Msg4_Level3_r13, defstrval:"", TYPE_STRING, 0} \ + {"eMTC_configured", NULL, 0, iptr:&eMTCconfig->eMTC_configured, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_ROOT, NULL, 0, iptr:&eMTCconfig->ccparams.prach_root, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX, NULL, 0, iptr:&eMTCconfig->ccparams.prach_config_index, defintval:0, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PRACH_HIGH_SPEED, NULL, 0, strptr:&eMTCconfig->ccparams.prach_high_speed, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PRACH_ZERO_CORRELATION, NULL, 0, iptr:&eMTCconfig->ccparams.prach_zero_correlation, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET, NULL, 0, iptr:&eMTCconfig->ccparams.prach_freq_offset, defintval:2, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTA_SHIFT, NULL, 0, iptr:&eMTCconfig->ccparams.pucch_delta_shift, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUCCH_NRB_CQI, NULL, 0, iptr:&eMTCconfig->ccparams.pucch_nRB_CQI, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUCCH_NCS_AN, NULL, 0, iptr:&eMTCconfig->ccparams.pucch_nCS_AN, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUCCH_N1_AN, NULL, 0, iptr:&eMTCconfig->ccparams.pucch_n1_AN, defintval:32, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PDSCH_RS_EPRE, NULL, 0, iptr:&eMTCconfig->ccparams.pdsch_referenceSignalPower, defintval:-29, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PDSCH_PB, NULL, 0, iptr:&eMTCconfig->ccparams.pdsch_p_b, defintval:0, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PUSCH_N_SB, NULL, 0, iptr:&eMTCconfig->ccparams.pusch_n_SB, defintval:1, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PUSCH_HOPPINGMODE, NULL, 0, strptr:&eMTCconfig->ccparams.pusch_hoppingMode, defstrval:"interSubFrame", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUSCH_HOPPINGOFFSET, NULL, 0, iptr:&eMTCconfig->ccparams.pusch_hoppingOffset, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUSCH_ENABLE64QAM, NULL, 0, strptr:&eMTCconfig->ccparams.pusch_enable64QAM, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN, NULL, 0, strptr:&eMTCconfig->ccparams.pusch_groupHoppingEnabled, defstrval:"ENABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUSCH_GROUP_ASSIGNMENT, NULL, 0, iptr:&eMTCconfig->ccparams.pusch_groupAssignment, defintval:0, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN, NULL, 0, strptr:&eMTCconfig->ccparams.pusch_sequenceHoppingEnabled, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUSCH_NDMRS1, NULL, 0, iptr:&eMTCconfig->ccparams.pusch_nDMRS1, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PHICH_DURATION, NULL, 0, strptr:&eMTCconfig->ccparams.phich_duration, defstrval:"NORMAL", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PHICH_RESOURCE, NULL, 0, strptr:&eMTCconfig->ccparams.phich_resource, defstrval:"ONESIXTH", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SRS_ENABLE, NULL, 0, strptr:&eMTCconfig->ccparams.srs_enable, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SRS_BANDWIDTH_CONFIG, NULL, 0, iptr:&eMTCconfig->ccparams.srs_BandwidthConfig, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_SRS_SUBFRAME_CONFIG, NULL, 0, iptr:&eMTCconfig->ccparams.srs_SubframeConfig, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG, NULL, 0, strptr:&eMTCconfig->ccparams.srs_ackNackST, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SRS_MAXUPPTS, NULL, 0, strptr:&eMTCconfig->ccparams.srs_MaxUpPts, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUSCH_PO_NOMINAL, NULL, 0, iptr:&eMTCconfig->ccparams.pusch_p0_Nominal, defintval:-90, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PUSCH_ALPHA, NULL, 0, strptr:&eMTCconfig->ccparams.pusch_alpha, defstrval:"AL1", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_PO_NOMINAL, NULL, 0, iptr:&eMTCconfig->ccparams.pucch_p0_Nominal, defintval:-96, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_MSG3_DELTA_PREAMBLE, NULL, 0, iptr:&eMTCconfig->ccparams.msg3_delta_Preamble, defintval:6, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1, NULL, 0, strptr:&eMTCconfig->ccparams.pucch_deltaF_Format1, defstrval:"DELTAF2", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT1b, NULL, 0, strptr:&eMTCconfig->ccparams.pucch_deltaF_Format1b, defstrval:"deltaF3", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2, NULL, 0, strptr:&eMTCconfig->ccparams.pucch_deltaF_Format2, defstrval:"deltaF0", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2A, NULL, 0, strptr:&eMTCconfig->ccparams.pucch_deltaF_Format2a, defstrval:"deltaF0", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_DELTAF_FORMAT2B, NULL, 0, strptr:&eMTCconfig->ccparams.pucch_deltaF_Format2b, defstrval:"deltaF0", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_RACH_NUM_RA_PREAMBLES, NULL, 0, iptr:&eMTCconfig->ccparams.rach_numberOfRA_Preambles, defintval:4, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG, NULL, 0, strptr:&eMTCconfig->ccparams.rach_preamblesGroupAConfig, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA, NULL, 0, iptr:&eMTCconfig->ccparams.rach_sizeOfRA_PreamblesGroupA, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA, NULL, 0, iptr:&eMTCconfig->ccparams.rach_messageSizeGroupA, defintval:56, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB, NULL, 0, strptr:&eMTCconfig->ccparams.rach_messagePowerOffsetGroupB, defstrval:"minusinfinity", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP, NULL, 0, iptr:&eMTCconfig->ccparams.rach_powerRampingStep, defintval:4, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER, NULL, 0, iptr:&eMTCconfig->ccparams.rach_preambleInitialReceivedTargetPower, defintval:-100, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX, NULL, 0, iptr:&eMTCconfig->ccparams.rach_preambleTransMax, defintval:10, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE, NULL, 0, iptr:&eMTCconfig->ccparams.rach_raResponseWindowSize, defintval:10, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER, NULL, 0, iptr:&eMTCconfig->ccparams.rach_macContentionResolutionTimer, defintval:48, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX, NULL, 0, iptr:&eMTCconfig->ccparams.rach_maxHARQ_Msg3Tx, defintval:4, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE, NULL, 0, iptr:&eMTCconfig->ccparams.pcch_defaultPagingCycle, defintval:128, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_PCCH_NB, NULL, 0, strptr:&eMTCconfig->ccparams.pcch_nB, defstrval:"oneT", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF, NULL, 0, iptr:&eMTCconfig->ccparams.bcch_modificationPeriodCoeff, defintval:2, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RACH_PREAMBLESGROUPACONFIG, NULL, 0, strptr:&eMTCconfig->ccparams.rach_preamblesGroupAConfig, defstrval:"", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_T300, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_t300, defintval:1000, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_T301, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_t301, defintval:1000, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_T310, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_t310, defintval:1000, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_T311, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_t311, defintval:10000, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_N310, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_n310, defintval:20, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UETIMERS_N311, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TimersAndConstants_n311, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&eMTCconfig->ccparams.ue_TransmissionMode, defintval:1, TYPE_UINT, 0}, \ + {ENB_CONFIG_STRING_SCHEDULING_INFO_SIB1_BR_R13, NULL, 0, iptr:&eMTCconfig->schedulingInfoSIB1_BR_r13, defintval:4, TYPE_UINT, 0}, \ + {ENB_CONFIG_STRING_PRACH_CONFIG_COMMON_V1310, NULL, 0, strptr:&eMTCconfig->prach_ConfigCommon_v1310, defstrval:"ENABLE", TYPE_STRING, 0}, \ + {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13, NULL, 0, strptr:&eMTCconfig->mpdcch_startSF_CSS_RA_r13, defstrval:"fdd-r13", TYPE_STRING, 0}, \ + {ENB_CONFIG_STRING_MPDCCH_START_SF_CSS_RA_R13_VAL, NULL, 0, strptr:&eMTCconfig->mpdcch_startSF_CSS_RA_r13_val, defstrval:"v1", TYPE_STRING, 0}, \ + {ENB_CONFIG_STRING_PRACH_HOPPING_OFFSET_R13, NULL, 0, iptr:&eMTCconfig->prach_HoppingOffset_r13, defintval:0, TYPE_INT, 0}, \ + {ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13, NULL, 0, strptr:&eMTCconfig->pdsch_maxNumRepetitionCEmodeA_r13, defstrval:"r16", TYPE_STRING, 0}, \ + {ENB_CONFIG_STRING_PUSCH_MAX_NUM_REPETITION_CE_MODE_A_R13, NULL, 0, strptr:&eMTCconfig->pusch_maxNumRepetitionCEmodeA_r13, defstrval:"r8", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_CELL_SELECTION_INFO_CE_R13, NULL, 0, strptr:&eMTCconfig->cellSelectionInfoCE_r13, defstrval:"ENABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_Q_RX_LEV_MIN_CE_R13, NULL, 0, iptr:&eMTCconfig->q_RxLevMinCE_r13, defintval:-70, TYPE_INT, 0}, \ +{ENB_CONFIG_STRING_BANDWIDTH_REDUCED_ACCESS_RELATED_INFO_R13, NULL, 0, strptr:&eMTCconfig->bandwidthReducedAccessRelatedInfo_r13, defstrval:"ENABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SI_WINDOW_LENGTH_BR_R13, NULL, 0, strptr:&eMTCconfig->si_WindowLength_BR_r13, defstrval:"ms20", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SI_REPETITION_PATTERN_R13, NULL, 0, strptr:&eMTCconfig->si_RepetitionPattern_r13, defstrval:"everyRF", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_R13, NULL, 0, strptr:&eMTCconfig->fdd_DownlinkOrTddSubframeBitmapBR_r13, defstrval:"subframePattern40-r13", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_FDD_DOWNLINK_OR_TDD_SUBFRAME_BITMAP_BR_VAL_R13, NULL, 0, i64ptr:&eMTCconfig->fdd_DownlinkOrTddSubframeBitmapBR_val_r13, defint64val:0xFFFFFFFFFF, TYPE_UINT64, 0}, \ +{ENB_CONFIG_STRING_START_SYMBOL_BR_R13, NULL, 0, iptr:&eMTCconfig->startSymbolBR_r13, defintval:3, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_SI_HOPPING_CONFIG_COMMON_R13, NULL, 0, strptr:&eMTCconfig->si_HoppingConfigCommon_r13 , defstrval:"off", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_SI_VALIDITY_TIME_R13, NULL, 0, strptr:&eMTCconfig->si_ValidityTime_r13, defstrval:"true", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_DL_R13, NULL, 0, strptr:&eMTCconfig->freqHoppingParametersDL_r13, defstrval:"DISABLE", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13, NULL, 0, strptr:&eMTCconfig->mpdcch_pdsch_HoppingNB_r13, defstrval:"nb2", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13, NULL, 0, strptr:&eMTCconfig->interval_DLHoppingConfigCommonModeA_r13, defstrval:"interval-FDD-r13", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL, NULL, 0, iptr:&eMTCconfig->interval_DLHoppingConfigCommonModeA_r13_val, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13, NULL, 0, strptr:&eMTCconfig->interval_DLHoppingConfigCommonModeB_r13, defstrval:"interval-FDD-r13", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL, NULL, 0, iptr:&eMTCconfig->interval_DLHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13, NULL, 0, iptr:&eMTCconfig->mpdcch_pdsch_HoppingOffset_r13, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13, NULL, 0, strptr:&eMTCconfig->preambleTransMax_CE_r13, defstrval:"n10", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0, NULL, 0, strptr:&eMTCconfig->pucch_NumRepetitionCE_Msg4_Level0_r13, defstrval:"n1", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1, NULL, 0, strptr:&eMTCconfig->pucch_NumRepetitionCE_Msg4_Level1_r13, defstrval:"", TYPE_STRING, 0}, \ +{ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2, NULL, 0, strptr:&eMTCconfig->pucch_NumRepetitionCE_Msg4_Level2_r13, defstrval:"", TYPE_STRING, 0}, \ + {ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3, NULL, 0, strptr:&eMTCconfig->pucch_NumRepetitionCE_Msg4_Level3_r13, defstrval:"", TYPE_STRING, 0} \ } +#define EMTCPARAMS_CHECK { \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s1a= { config_check_modify_integer, UETIMER_T300_OKVALUES, UETIMER_T300_MODVALUES,8}} , \ + { .s1a= { config_check_modify_integer, UETIMER_T301_OKVALUES, UETIMER_T301_MODVALUES,8}} , \ + { .s1a= { config_check_modify_integer, UETIMER_T310_OKVALUES, UETIMER_T310_MODVALUES,7}} , \ + { .s1a= { config_check_modify_integer, UETIMER_T311_OKVALUES, UETIMER_T311_MODVALUES,7}} , \ + { .s1a= { config_check_modify_integer, UETIMER_N310_OKVALUES, UETIMER_N310_MODVALUES,8}} , \ + { .s1a= { config_check_modify_integer, UETIMER_N311_OKVALUES, UETIMER_N311_MODVALUES,8}} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ + { .s5= {NULL }} , \ +} #define SYSTEM_INFO_VALUE_TAG_SI_DESC(eMTCconfig) { \ -{"systemInfoValueTagSi_r13", NULL, 0, iptr:&eMTCconfig.systemInfoValueTagSi_r13, defintval:0, TYPE_UINT, 0} \ +{"systemInfoValueTagSi_r13", NULL, 0, iptr:&eMTCconfig->systemInfoValueTagSi_r13, defintval:0, TYPE_UINT, 0} \ } #define SI_INFO_BR_DESC(eMTCconfig) { \ -{"si_Narrowband_r13", NULL, 0, iptr:&eMTCconfig.si_Narrowband_r13, defintval:5, TYPE_UINT, 0}, \ -{"si_TBS_r13", NULL, 0, iptr:&eMTCconfig.si_TBS_r13, defintval:5, TYPE_UINT, 0} \ +{"si_Narrowband_r13", NULL, 0, iptr:&eMTCconfig->si_Narrowband_r13, defintval:5, TYPE_UINT, 0}, \ +{"si_TBS_r13", NULL, 0, iptr:&eMTCconfig->si_TBS_r13, defintval:5, TYPE_UINT, 0} \ } #define RSRP_RANGE_LIST_DESC(eMTCconfig) { \ -{"rsrp_range_br", NULL, 0, iptr:&eMTCconfig.rsrp_range_br, defintval:0, TYPE_UINT, 0} \ +{"rsrp_range_br", NULL, 0, iptr:&eMTCconfig->rsrp_range_br, defintval:0, TYPE_UINT, 0} \ } #define RACH_CE_LEVELINFOLIST_R13_DESC(eMTCconfig) { \ -{ENB_CONFIG_STRING_FIRST_PREAMBLE_R13, NULL, 0, iptr:&eMTCconfig.firstPreamble_r13, defintval:60, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_LAST_PREAMBLE_R13, NULL, 0, iptr:&eMTCconfig.lastPreamble_r13, defintval:63, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13, NULL, 0, iptr:&eMTCconfig.ra_ResponseWindowSize_r13, defintval:20, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13, NULL, 0, iptr:&eMTCconfig.mac_ContentionResolutionTimer_r13, defintval:80, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13, NULL, 0, iptr:&eMTCconfig.rar_HoppingConfig_r13, defintval:0, TYPE_UINT, 0}\ +{ENB_CONFIG_STRING_FIRST_PREAMBLE_R13, NULL, 0, iptr:&eMTCconfig->firstPreamble_r13, defintval:60, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_LAST_PREAMBLE_R13, NULL, 0, iptr:&eMTCconfig->lastPreamble_r13, defintval:63, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13, NULL, 0, iptr:&eMTCconfig->ra_ResponseWindowSize_r13, defintval:20, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13, NULL, 0, iptr:&eMTCconfig->mac_ContentionResolutionTimer_r13, defintval:80, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13, NULL, 0, iptr:&eMTCconfig->rar_HoppingConfig_r13, defintval:0, TYPE_UINT, 0}\ } #define PRACH_PARAMS_CE_R13_DESC(eMTCconfig) { \ -{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR, NULL, 0, iptr:&eMTCconfig.prach_config_index_br, defintval:3, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR, NULL, 0, iptr:&eMTCconfig.prach_freq_offset_br, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13, NULL, 0, iptr:&eMTCconfig.prach_StartingSubframe_r13, defintval:0, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13, NULL, 0, iptr:&eMTCconfig.maxNumPreambleAttemptCE_r13, defintval:10, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13, NULL, 0, iptr:&eMTCconfig.numRepetitionPerPreambleAttempt_r13, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13, NULL, 0, iptr:&eMTCconfig.mpdcch_NumRepetition_RA_r13, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13, NULL, 0, iptr:&eMTCconfig.prach_HoppingConfig_r13, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR, NULL, 0, iptr:&eMTCconfig->prach_config_index_br, defintval:3, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR, NULL, 0, iptr:&eMTCconfig->prach_freq_offset_br, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13, NULL, 0, iptr:&eMTCconfig->prach_StartingSubframe_r13, defintval:0, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13, NULL, 0, iptr:&eMTCconfig->maxNumPreambleAttemptCE_r13, defintval:10, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13, NULL, 0, iptr:&eMTCconfig->numRepetitionPerPreambleAttempt_r13, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13, NULL, 0, iptr:&eMTCconfig->mpdcch_NumRepetition_RA_r13, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13, NULL, 0, iptr:&eMTCconfig->prach_HoppingConfig_r13, defintval:0, TYPE_UINT, 0}, \ {ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND, NULL, 0, uptr:NULL, defintarrayval:NULL, TYPE_INTARRAY, 0} \ } #define N1PUCCH_AN_INFOLIST_R13_DESC(eMTCconfig) { \ -{ENB_CONFIG_STRING_PUCCH_INFO_VALUE, NULL, 0, iptr:&eMTCconfig.pucch_info_value, defintval:0, TYPE_UINT, 0} \ +{ENB_CONFIG_STRING_PUCCH_INFO_VALUE, NULL, 0, iptr:&eMTCconfig->pucch_info_value, defintval:0, TYPE_UINT, 0} \ } #define PCCH_CONFIG_V1310_DESC(eMTCconfig) { \ -{ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13, NULL, 0, iptr:&eMTCconfig.paging_narrowbands_r13, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13, NULL, 0, iptr:&eMTCconfig.mpdcch_numrepetition_paging_r13, defintval:1, TYPE_UINT, 0}, \ -{ENB_CONFIG_STRING_NB_V1310, NULL, 0, iptr:&eMTCconfig.nb_v1310, defintval:256, TYPE_UINT, 0} \ +{ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13, NULL, 0, iptr:&eMTCconfig->paging_narrowbands_r13, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13, NULL, 0, iptr:&eMTCconfig->mpdcch_numrepetition_paging_r13, defintval:1, TYPE_UINT, 0}, \ +{ENB_CONFIG_STRING_NB_V1310, NULL, 0, iptr:&eMTCconfig->nb_v1310, defintval:256, TYPE_UINT, 0} \ } #define SIB2_FREQ_HOPPING_R13_DESC(eMTCconfig) { \ -{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13, NULL, 0, iptr:&eMTCconfig.sib2_mpdcch_pdsch_hoppingNB_r13, defintval:0, TYPE_UINT, 0}, \ -{"sib2_interval_DLHoppingConfigCommonModeA_r13", NULL, 0, strptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeA_r13, defstrval:"FDD", TYPE_STRING, 0}, \ -{"sib2_interval_DLHoppingConfigCommonModeA_r13_val", NULL, 0, iptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeA_r13_val, defintval:0, TYPE_UINT, 0}, \ -{"sib2_interval_DLHoppingConfigCommonModeB_r13", NULL, 0, strptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeB_r13, defstrval:"FDD", TYPE_STRING, 0}, \ -{"sib2_interval_DLHoppingConfigCommonModeB_r13_val", NULL, 0, iptr:&eMTCconfig.sib2_interval_DLHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ -{"sib2_interval_ULHoppingConfigCommonModeA_r13", NULL, 0, strptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13, defstrval:"FDD", TYPE_STRING, 0}, \ -{"sib2_interval_ULHoppingConfigCommonModeA_r13_val", NULL, 0, iptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeA_r13_val, defintval:4, TYPE_UINT, 0}, \ -{"sib2_interval_ULHoppingConfigCommonModeB_r13", NULL, 0, strptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeB_r13, defstrval:"FDD", TYPE_STRING, 0}, \ -{"sib2_interval_ULHoppingConfigCommonModeB_r13_val", NULL, 0, iptr:&eMTCconfig.sib2_interval_ULHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ -{"sib2_mpdcch_pdsch_hoppingOffset_r13", NULL, 0, iptr:&eMTCconfig.sib2_mpdcch_pdsch_hoppingOffset_r13, defintval:1, TYPE_UINT, 0} \ +{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13, NULL, 0, iptr:&eMTCconfig->sib2_mpdcch_pdsch_hoppingNB_r13, defintval:0, TYPE_UINT, 0}, \ +{"sib2_interval_DLHoppingConfigCommonModeA_r13", NULL, 0, strptr:&eMTCconfig->sib2_interval_DLHoppingConfigCommonModeA_r13, defstrval:"FDD", TYPE_STRING, 0}, \ +{"sib2_interval_DLHoppingConfigCommonModeA_r13_val", NULL, 0, iptr:&eMTCconfig->sib2_interval_DLHoppingConfigCommonModeA_r13_val, defintval:0, TYPE_UINT, 0}, \ +{"sib2_interval_DLHoppingConfigCommonModeB_r13", NULL, 0, strptr:&eMTCconfig->sib2_interval_DLHoppingConfigCommonModeB_r13, defstrval:"FDD", TYPE_STRING, 0}, \ +{"sib2_interval_DLHoppingConfigCommonModeB_r13_val", NULL, 0, iptr:&eMTCconfig->sib2_interval_DLHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ +{"sib2_interval_ULHoppingConfigCommonModeA_r13", NULL, 0, strptr:&eMTCconfig->sib2_interval_ULHoppingConfigCommonModeA_r13, defstrval:"FDD", TYPE_STRING, 0}, \ +{"sib2_interval_ULHoppingConfigCommonModeA_r13_val", NULL, 0, iptr:&eMTCconfig->sib2_interval_ULHoppingConfigCommonModeA_r13_val, defintval:4, TYPE_UINT, 0}, \ +{"sib2_interval_ULHoppingConfigCommonModeB_r13", NULL, 0, strptr:&eMTCconfig->sib2_interval_ULHoppingConfigCommonModeB_r13, defstrval:"FDD", TYPE_STRING, 0}, \ +{"sib2_interval_ULHoppingConfigCommonModeB_r13_val", NULL, 0, iptr:&eMTCconfig->sib2_interval_ULHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \ +{"sib2_mpdcch_pdsch_hoppingOffset_r13", NULL, 0, iptr:&eMTCconfig->sib2_mpdcch_pdsch_hoppingOffset_r13, defintval:1, TYPE_UINT, 0} \ } diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 00a13cc924..97fcffd4f6 100755 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -1619,7 +1619,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP, unsigned char sched_subframeP, - uint16_t *emtc_active) + int *emtc_active) { int UE_id; rnti_t rnti = -1; diff --git a/openair2/LAYER2/MAC/mac_proto.h b/openair2/LAYER2/MAC/mac_proto.h index e0fdade419..bfdb26ee24 100755 --- a/openair2/LAYER2/MAC/mac_proto.h +++ b/openair2/LAYER2/MAC/mac_proto.h @@ -113,6 +113,12 @@ void schedule_ulsch_rnti(module_id_t module_idP, int slice_idx, frame_t frameP, unsigned char sched_subframe, uint16_t * first_rb); +void schedule_ulsch_rnti_emtc(module_id_t module_idP, + frame_t frameP, + sub_frame_t subframeP, + unsigned char sched_subframeP, + int *emtc_active); + /** \brief Second stage of DLSCH scheduling, after schedule_SI, schedule_RA and schedule_dlsch have been called. This routine first allocates random frequency assignments for SI and RA SDUs using distributed VRB allocations and adds the corresponding DCI SDU to the DCI buffer for PHY. It then loops over the UE specific DCIs previously allocated and fills in the remaining DCI fields related to frequency allocation. It assumes localized allocation of type 0 (DCI.rah=0). The allocation is done for tranmission modes 1,2,4. @param Mod_id Instance of eNB @param frame Frame index @@ -133,7 +139,9 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP, void schedule_ue_spec(module_id_t module_idP, int slice_idxP, frame_t frameP,sub_frame_t subframe, int *mbsfn_flag); - +void schedule_ue_spec_br(module_id_t module_idP, + frame_t frameP, + sub_frame_t subframeP); void schedule_ue_spec_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframe,int *mbsfn_flag); void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP); diff --git a/openair2/LAYER2/MAC/rar_tools.c b/openair2/LAYER2/MAC/rar_tools.c index 22c20da021..0e6e403301 100755 --- a/openair2/LAYER2/MAC/rar_tools.c +++ b/openair2/LAYER2/MAC/rar_tools.c @@ -126,9 +126,8 @@ unsigned short fill_rar_br(eNB_MAC_INST *eNB, COMMON_channels_t *cc = &eNB->common_channels[CC_id]; uint8_t *rar = (uint8_t *)(dlsch_buffer+1); - int i; uint32_t rballoc,reps; - uint32_t mcs,TPC,ULdelay,cqireq,mpdcch_nb_index; + uint32_t TPC,ULdelay,cqireq,mpdcch_nb_index; int input_buffer_length; diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index 62db7df304..1514a9f9bd 100755 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -1018,7 +1018,6 @@ uint8_t do_SIB23(uint8_t Mod_id, SystemInformationBlockType3_t **sib3 = &RC.rrc[Mod_id]->carrier[CC_id].sib3; #if defined(Rel10) || defined(Rel14) SystemInformationBlockType13_r9_t **sib13 = &RC.rrc[Mod_id]->carrier[CC_id].sib13; - uint8_t MBMS_flag = RC.rrc[Mod_id]->carrier[CC_id].MBMS_flag; #endif #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) @@ -1046,7 +1045,7 @@ uint8_t do_SIB23(uint8_t Mod_id, } #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - LOG_I(RRC,"[eNB %d] Configuration SIB2/3, MBMS = %d\n", Mod_id, MBMS_flag); + LOG_I(RRC,"[eNB %d] Configuration SIB2/3, eMBMS = %d\n", Mod_id, configuration->eMBMS_configured); #else LOG_I(RRC,"[eNB %d] Configuration SIB2/3\n", Mod_id); #endif @@ -1063,7 +1062,7 @@ uint8_t do_SIB23(uint8_t Mod_id, #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - if ((MBMS_flag > 0) && (brOption==FALSE)) { + if ((configuration->eMBMS_configured > 0) && (brOption==FALSE)) { sib13_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); memset(sib13_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); sib13_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920; @@ -1073,22 +1072,23 @@ uint8_t do_SIB23(uint8_t Mod_id, #endif #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) + if (configuration->SL_configured > 0) { //TTN - for D2D - sib18_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - sib19_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - sib21_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - memset(sib18_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - memset(sib19_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - memset(sib21_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); - - sib18_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250; - sib19_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250; - sib21_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v1430; - - *sib18 = &sib18_part->choice.sib18_v1250; - *sib19 = &sib19_part->choice.sib19_v1250; - *sib21 = &sib21_part->choice.sib21_v1430; - + sib18_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + sib19_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + sib21_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + memset(sib18_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + memset(sib19_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + memset(sib21_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + + sib18_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250; + sib19_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250; + sib21_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v1430; + + *sib18 = &sib18_part->choice.sib18_v1250; + *sib19 = &sib19_part->choice.sib19_v1250; + *sib21 = &sib21_part->choice.sib21_v1430; + } #endif @@ -1701,7 +1701,7 @@ uint8_t do_SIB23(uint8_t Mod_id, #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - if (MBMS_flag > 0) { + if (configuration->eMBMS_configured > 0) { LOG_I(RRC,"Adding MBSFN subframe Configuration 1 to SIB2\n"); MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1; (*sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct MBSFN_SubframeConfigList)); @@ -1721,7 +1721,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig1); - if (MBMS_flag == 4 ) { + if (configuration->eMBMS_configured == 4 ) { LOG_I(RRC,"Adding MBSFN subframe Configuration 2 to SIB2\n"); MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig2; sib2_mbsfn_SubframeConfig2= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig2)); @@ -1791,7 +1791,7 @@ uint8_t do_SIB23(uint8_t Mod_id, // fill in all elements of SIB13 if present #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0)) - if (MBMS_flag > 0 ) { + if (configuration->eMBMS_configured > 0 ) { // Notification for mcch change (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9= MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; (*sib13)->notificationConfig_r9.notificationOffset_r9= 0; @@ -1822,7 +1822,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); //MBSFN Area 2: currently only activated for eMBMS relaying - if (MBMS_flag == 4 ) { + if (configuration->eMBMS_configured == 4 ) { MBSFN_Area2= CALLOC(1, sizeof(*MBSFN_Area2)); MBSFN_Area2->mbsfn_AreaId_r9= 2; MBSFN_Area2->non_MBSFNregionLength= MBSFN_AreaInfo_r9__non_MBSFNregionLength_s2; @@ -1850,295 +1850,297 @@ uint8_t do_SIB23(uint8_t Mod_id, #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - //TTN - for D2D - // SIB18 - //commRxPool_r12 - (*sib18)->commConfig_r12 = CALLOC (1, sizeof(*(*sib18)->commConfig_r12)); - SL_CommRxPoolList= &(*sib18)->commConfig_r12->commRxPool_r12; - memset(SL_CommRxPoolList,0,sizeof(*SL_CommRxPoolList)); - - SL_CommResourcePool = CALLOC(1, sizeof(*SL_CommResourcePool)); - memset(SL_CommResourcePool,0,sizeof(*SL_CommResourcePool)); - - SL_CommResourcePool->sc_CP_Len_r12 = configuration->rxPool_sc_CP_Len[CC_id]; - SL_CommResourcePool->sc_Period_r12 = configuration->rxPool_sc_Period[CC_id]; - SL_CommResourcePool->data_CP_Len_r12 = configuration->rxPool_data_CP_Len[CC_id]; - //sc_TF_ResourceConfig_r12 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_Num_r12 = configuration->rxPool_ResourceConfig_prb_Num[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_Start_r12 = configuration->rxPool_ResourceConfig_prb_Start[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_End_r12 = configuration->rxPool_ResourceConfig_prb_End[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present = configuration->rxPool_ResourceConfig_offsetIndicator_present[CC_id]; - - if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { - SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->rxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; - } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ - SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->rxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; + if (configuration->SL_configured>0) { + //TTN - for D2D + // SIB18 + //commRxPool_r12 + (*sib18)->commConfig_r12 = CALLOC (1, sizeof(*(*sib18)->commConfig_r12)); + SL_CommRxPoolList= &(*sib18)->commConfig_r12->commRxPool_r12; + memset(SL_CommRxPoolList,0,sizeof(*SL_CommRxPoolList)); + + SL_CommResourcePool = CALLOC(1, sizeof(*SL_CommResourcePool)); + memset(SL_CommResourcePool,0,sizeof(*SL_CommResourcePool)); + + SL_CommResourcePool->sc_CP_Len_r12 = configuration->rxPool_sc_CP_Len[CC_id]; + SL_CommResourcePool->sc_Period_r12 = configuration->rxPool_sc_Period[CC_id]; + SL_CommResourcePool->data_CP_Len_r12 = configuration->rxPool_data_CP_Len[CC_id]; + //sc_TF_ResourceConfig_r12 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_Num_r12 = configuration->rxPool_ResourceConfig_prb_Num[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_Start_r12 = configuration->rxPool_ResourceConfig_prb_Start[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.prb_End_r12 = configuration->rxPool_ResourceConfig_prb_End[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present = configuration->rxPool_ResourceConfig_offsetIndicator_present[CC_id]; + + if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { + SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->rxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; + } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ + SL_CommResourcePool->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->rxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; + } + + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present = configuration->rxPool_ResourceConfig_subframeBitmap_present[CC_id]; + if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ + //for BS4 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ + //for BS8 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ + //for BS12 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ + //for BS16 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ + //for BS30 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ + //for BS40 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ + //for BS42 + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } + + //dataHoppingConfig_r12 + SL_CommResourcePool->dataHoppingConfig_r12.hoppingParameter_r12 = 0; + SL_CommResourcePool->dataHoppingConfig_r12.numSubbands_r12 = SL_HoppingConfigComm_r12__numSubbands_r12_ns1; + SL_CommResourcePool->dataHoppingConfig_r12.rb_Offset_r12 = 0; + + //ue_SelectedResourceConfig_r12 + SL_CommResourcePool->ue_SelectedResourceConfig_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->ue_SelectedResourceConfig_r12)); + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_Num_r12 = 20; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_Start_r12 = 5; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_End_r12 = 44; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.offsetIndicator_r12.present = SL_OffsetIndicator_r12_PR_small_r12; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = 0 ; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.present = SubframeBitmapSL_r12_PR_bs40_r12; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = 5; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = CALLOC(1,5); + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = 0; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[0] = 0xF0; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[1] = 0xFF; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[2] = 0xFF; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[3] = 0xFF; + SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[4] = 0xFF; + //SL_CommResourcePool->ue_SelectedResourceConfig_r12->trpt_Subset_r12 = CALLOC (1, sizeof(*SL_CommResourcePool->ue_SelectedResourceConfig_r12->trpt_Subset_r12)); + //rxParametersNCell_r12 + SL_CommResourcePool->rxParametersNCell_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->rxParametersNCell_r12)); + SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12)); + SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12->subframeAssignment = 0 ; + SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12->specialSubframePatterns = 0; + SL_CommResourcePool->rxParametersNCell_r12->syncConfigIndex_r12 = 0; + //txParameters_r12 + SL_CommResourcePool->txParameters_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->txParameters_r12)); + SL_CommResourcePool->txParameters_r12->sc_TxParameters_r12.alpha_r12 = Alpha_r12_al0; + SL_CommResourcePool->txParameters_r12->sc_TxParameters_r12.p0_r12 = 0; + + SL_CommResourcePool->ext1 = NULL ; + //end SL_CommResourcePool + //add SL_CommResourcePool to SL_CommRxPoolList + ASN_SEQUENCE_ADD(&SL_CommRxPoolList->list,SL_CommResourcePool); + //end commRxPool_r12 + + //TODO: commTxPoolNormalCommon_r12, similar to commRxPool_r12 + //TODO: commTxPoolExceptional_r12 + //TODO: commSyncConfig_r12 + // may add commTxResourceUC-ReqAllowed with Ext1 + (*sib18)->ext1 = NULL; + (*sib18)->lateNonCriticalExtension = NULL; + // end SIB18 + + // SIB19 + // fill in all elements of SIB19 if present + + //discConfig_r12 + (*sib19)->discConfig_r12 = CALLOC (1, sizeof(*(*sib19)->discConfig_r12)); + SL_DiscRxPoolList = &(*sib19)->discConfig_r12->discRxPool_r12; + memset(SL_DiscRxPoolList,0,sizeof(*SL_DiscRxPoolList)); + //fill SL_DiscResourcePool + SL_DiscResourcePool = CALLOC(1, sizeof(*SL_DiscResourcePool)); + + SL_DiscResourcePool->cp_Len_r12 = configuration->discRxPool_cp_Len[CC_id]; + SL_DiscResourcePool->discPeriod_r12 = configuration->discRxPool_discPeriod[CC_id]; + //sc_TF_ResourceConfig_r12 + SL_DiscResourcePool->numRetx_r12 = configuration->discRxPool_numRetx[CC_id]; + SL_DiscResourcePool->numRepetition_r12 = configuration->discRxPool_numRepetition[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.prb_Num_r12 = configuration->discRxPool_ResourceConfig_prb_Num[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.prb_Start_r12 = configuration->discRxPool_ResourceConfig_prb_Start[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.prb_End_r12 = configuration->discRxPool_ResourceConfig_prb_End[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present = configuration->discRxPool_ResourceConfig_offsetIndicator_present[CC_id]; + if (SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { + SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->discRxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; + } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ + SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->discRxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; + } + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present = configuration->discRxPool_ResourceConfig_subframeBitmap_present[CC_id]; + if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ + //for BS4 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ + //for BS8 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ + //for BS12 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ + //for BS16 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ + //for BS30 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ + //for BS40 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ + //for BS42 + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } + + //add SL_DiscResourcePool to SL_DiscRxPoolList + ASN_SEQUENCE_ADD(&SL_DiscRxPoolList->list,SL_DiscResourcePool); + + /* + //for DiscRxPoolPS + (*sib19)->ext1 = CALLOC (1, sizeof(*(*sib19)->ext1)); + (*sib19)->ext1->discConfigPS_13 = CALLOC (1, sizeof(*((*sib19)->ext1->discConfigPS_13))); + + SL_DiscRxPoolPSList = &(*sib19)->ext1->discConfigPS_13->discRxPoolPS_r13; + memset(SL_DiscRxPoolPSList,0,sizeof(*SL_DiscRxPoolPSList)); + //fill SL_DiscResourcePool + SL_DiscResourcePoolPS = CALLOC(1, sizeof(*SL_DiscResourcePoolPS)); + + SL_DiscResourcePoolPS->cp_Len_r12 = configuration->discRxPoolPS_cp_Len[CC_id]; + SL_DiscResourcePoolPS->discPeriod_r12 = configuration->discRxPoolPS_discPeriod[CC_id]; + //sc_TF_ResourceConfig_r12 + SL_DiscResourcePoolPS->numRetx_r12 = configuration->discRxPoolPS_numRetx[CC_id]; + SL_DiscResourcePoolPS->numRepetition_r12 = configuration->discRxPoolPS_numRepetition[CC_id]; + + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_Num_r12 = configuration->discRxPoolPS_ResourceConfig_prb_Num[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_Start_r12 = configuration->discRxPoolPS_ResourceConfig_prb_Start[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_End_r12 = configuration->discRxPoolPS_ResourceConfig_prb_End[CC_id]; + + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_present[CC_id]; + if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_choice[CC_id] ; + } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_choice[CC_id] ; + } + + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_present[CC_id]; + if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ + //for BS4 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ + //for BS8 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ + //for BS12 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ + //for BS16 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ + //for BS30 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ + //for BS40 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ + //for BS42 + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; + SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; + } + + //add SL_DiscResourcePool to SL_DiscRxPoolList + ASN_SEQUENCE_ADD(&SL_DiscRxPoolPSList->list,SL_DiscResourcePoolPS); + */ + + (*sib19)->lateNonCriticalExtension = NULL; + //end SIB19 + + //SIB21 + (*sib21)->sl_V2X_ConfigCommon_r14 = CALLOC (1, sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14)); + //SL_V2X_ConfigCommon= (*sib21)->sl_V2X_ConfigCommon_r14; + memset((*sib21)->sl_V2X_ConfigCommon_r14,0,sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14)); + + struct SL_CommRxPoolListV2X_r14 *SL_CommRxPoolListV2X; + struct SL_CommResourcePoolV2X_r14 *SL_CommResourcePoolV2X; + (*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14 = CALLOC(1, sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14)); + SL_CommRxPoolListV2X = (*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14; + + SL_CommResourcePoolV2X = CALLOC(1, sizeof(*SL_CommResourcePoolV2X)); + memset(SL_CommResourcePoolV2X,0,sizeof(*SL_CommResourcePoolV2X)); + + SL_CommResourcePoolV2X->sl_OffsetIndicator_r14 = CALLOC(1, sizeof(*SL_CommResourcePoolV2X->sl_OffsetIndicator_r14)); + SL_CommResourcePoolV2X->sl_OffsetIndicator_r14->present = SL_OffsetIndicator_r12_PR_small_r12; + SL_CommResourcePoolV2X->sl_OffsetIndicator_r14->choice.small_r12 = 0; + SL_CommResourcePoolV2X->sl_Subframe_r14.present = SubframeBitmapSL_r14_PR_bs40_r14; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.size = 5; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf = CALLOC(1,5); + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.bits_unused = 0; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[0] = 0xF0; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[1] = 0xFF; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[2] = 0xFF; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[3] = 0xFF; + SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[4] = 0xFF; + + SL_CommResourcePoolV2X->adjacencyPSCCH_PSSCH_r14 = 1; + SL_CommResourcePoolV2X->sizeSubchannel_r14 = 10; + SL_CommResourcePoolV2X->numSubchannel_r14 = 5; + SL_CommResourcePoolV2X->startRB_Subchannel_r14 = 10; + + //rxParametersNCell_r12 + SL_CommResourcePoolV2X->rxParametersNCell_r14 = CALLOC (1, sizeof (*SL_CommResourcePoolV2X->rxParametersNCell_r14)); + SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14 = CALLOC (1, sizeof (*SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14)); + SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14->subframeAssignment = 0 ; + SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14->specialSubframePatterns = 0; + SL_CommResourcePoolV2X->rxParametersNCell_r14->syncConfigIndex_r14 = 0; + + ASN_SEQUENCE_ADD(&SL_CommRxPoolListV2X->list,SL_CommResourcePoolV2X); + //end SIB21 } - - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present = configuration->rxPool_ResourceConfig_subframeBitmap_present[CC_id]; - if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ - //for BS4 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ - //for BS8 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ - //for BS12 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ - //for BS16 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ - //for BS30 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ - //for BS40 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ - //for BS42 - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = (uint8_t *)configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_CommResourcePool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } - - //dataHoppingConfig_r12 - SL_CommResourcePool->dataHoppingConfig_r12.hoppingParameter_r12 = 0; - SL_CommResourcePool->dataHoppingConfig_r12.numSubbands_r12 = SL_HoppingConfigComm_r12__numSubbands_r12_ns1; - SL_CommResourcePool->dataHoppingConfig_r12.rb_Offset_r12 = 0; - - //ue_SelectedResourceConfig_r12 - SL_CommResourcePool->ue_SelectedResourceConfig_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->ue_SelectedResourceConfig_r12)); - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_Num_r12 = 20; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_Start_r12 = 5; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.prb_End_r12 = 44; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.offsetIndicator_r12.present = SL_OffsetIndicator_r12_PR_small_r12; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = 0 ; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.present = SubframeBitmapSL_r12_PR_bs40_r12; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = 5; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = CALLOC(1,5); - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = 0; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[0] = 0xF0; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[1] = 0xFF; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[2] = 0xFF; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[3] = 0xFF; - SL_CommResourcePool->ue_SelectedResourceConfig_r12->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf[4] = 0xFF; - //SL_CommResourcePool->ue_SelectedResourceConfig_r12->trpt_Subset_r12 = CALLOC (1, sizeof(*SL_CommResourcePool->ue_SelectedResourceConfig_r12->trpt_Subset_r12)); - //rxParametersNCell_r12 - SL_CommResourcePool->rxParametersNCell_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->rxParametersNCell_r12)); - SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12)); - SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12->subframeAssignment = 0 ; - SL_CommResourcePool->rxParametersNCell_r12->tdd_Config_r12->specialSubframePatterns = 0; - SL_CommResourcePool->rxParametersNCell_r12->syncConfigIndex_r12 = 0; - //txParameters_r12 - SL_CommResourcePool->txParameters_r12 = CALLOC (1, sizeof (*SL_CommResourcePool->txParameters_r12)); - SL_CommResourcePool->txParameters_r12->sc_TxParameters_r12.alpha_r12 = Alpha_r12_al0; - SL_CommResourcePool->txParameters_r12->sc_TxParameters_r12.p0_r12 = 0; - - SL_CommResourcePool->ext1 = NULL ; - //end SL_CommResourcePool - //add SL_CommResourcePool to SL_CommRxPoolList - ASN_SEQUENCE_ADD(&SL_CommRxPoolList->list,SL_CommResourcePool); - //end commRxPool_r12 - - //TODO: commTxPoolNormalCommon_r12, similar to commRxPool_r12 - //TODO: commTxPoolExceptional_r12 - //TODO: commSyncConfig_r12 - // may add commTxResourceUC-ReqAllowed with Ext1 - (*sib18)->ext1 = NULL; - (*sib18)->lateNonCriticalExtension = NULL; - // end SIB18 - - // SIB19 - // fill in all elements of SIB19 if present - - //discConfig_r12 - (*sib19)->discConfig_r12 = CALLOC (1, sizeof(*(*sib19)->discConfig_r12)); - SL_DiscRxPoolList = &(*sib19)->discConfig_r12->discRxPool_r12; - memset(SL_DiscRxPoolList,0,sizeof(*SL_DiscRxPoolList)); - //fill SL_DiscResourcePool - SL_DiscResourcePool = CALLOC(1, sizeof(*SL_DiscResourcePool)); - - SL_DiscResourcePool->cp_Len_r12 = configuration->discRxPool_cp_Len[CC_id]; - SL_DiscResourcePool->discPeriod_r12 = configuration->discRxPool_discPeriod[CC_id]; - //sc_TF_ResourceConfig_r12 - SL_DiscResourcePool->numRetx_r12 = configuration->discRxPool_numRetx[CC_id]; - SL_DiscResourcePool->numRepetition_r12 = configuration->discRxPool_numRepetition[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.prb_Num_r12 = configuration->discRxPool_ResourceConfig_prb_Num[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.prb_Start_r12 = configuration->discRxPool_ResourceConfig_prb_Start[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.prb_End_r12 = configuration->discRxPool_ResourceConfig_prb_End[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present = configuration->discRxPool_ResourceConfig_offsetIndicator_present[CC_id]; - if (SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { - SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->discRxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; - } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ - SL_DiscResourcePool->tf_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->discRxPool_ResourceConfig_offsetIndicator_choice[CC_id] ; - } - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present = configuration->discRxPool_ResourceConfig_subframeBitmap_present[CC_id]; - if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ - //for BS4 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ - //for BS8 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ - //for BS12 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ - //for BS16 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ - //for BS30 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ - //for BS40 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ - //for BS42 - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = (uint8_t *)configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePool->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } - - //add SL_DiscResourcePool to SL_DiscRxPoolList - ASN_SEQUENCE_ADD(&SL_DiscRxPoolList->list,SL_DiscResourcePool); - -/* - //for DiscRxPoolPS - (*sib19)->ext1 = CALLOC (1, sizeof(*(*sib19)->ext1)); - (*sib19)->ext1->discConfigPS_13 = CALLOC (1, sizeof(*((*sib19)->ext1->discConfigPS_13))); - - SL_DiscRxPoolPSList = &(*sib19)->ext1->discConfigPS_13->discRxPoolPS_r13; - memset(SL_DiscRxPoolPSList,0,sizeof(*SL_DiscRxPoolPSList)); - //fill SL_DiscResourcePool - SL_DiscResourcePoolPS = CALLOC(1, sizeof(*SL_DiscResourcePoolPS)); - - SL_DiscResourcePoolPS->cp_Len_r12 = configuration->discRxPoolPS_cp_Len[CC_id]; - SL_DiscResourcePoolPS->discPeriod_r12 = configuration->discRxPoolPS_discPeriod[CC_id]; - //sc_TF_ResourceConfig_r12 - SL_DiscResourcePoolPS->numRetx_r12 = configuration->discRxPoolPS_numRetx[CC_id]; - SL_DiscResourcePoolPS->numRepetition_r12 = configuration->discRxPoolPS_numRepetition[CC_id]; - - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_Num_r12 = configuration->discRxPoolPS_ResourceConfig_prb_Num[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_Start_r12 = configuration->discRxPoolPS_ResourceConfig_prb_Start[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.prb_End_r12 = configuration->discRxPoolPS_ResourceConfig_prb_End[CC_id]; - - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_present[CC_id]; - if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_small_r12 ) { - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12 = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_choice[CC_id] ; - } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.present == SL_OffsetIndicator_r12_PR_large_r12 ){ - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.offsetIndicator_r12.choice.large_r12 = configuration->discRxPoolPS_ResourceConfig_offsetIndicator_choice[CC_id] ; - } - - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_present[CC_id]; - if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs4_r12){ - //for BS4 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs4_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs8_r12){ - //for BS8 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs8_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs12_r12){ - //for BS12 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs12_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs16_r12){ - //for BS16 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs30_r12){ - //for BS30 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs30_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs40_r12){ - //for BS40 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - }else if (SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.present == SubframeBitmapSL_r12_PR_bs42_r12){ - //for BS42 - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.size = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size[CC_id]; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.buf = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf[CC_id];; - SL_DiscResourcePoolPS->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs42_r12.bits_unused = configuration->discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused[CC_id]; - } - - //add SL_DiscResourcePool to SL_DiscRxPoolList - ASN_SEQUENCE_ADD(&SL_DiscRxPoolPSList->list,SL_DiscResourcePoolPS); -*/ - - (*sib19)->lateNonCriticalExtension = NULL; - //end SIB19 - - //SIB21 - (*sib21)->sl_V2X_ConfigCommon_r14 = CALLOC (1, sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14)); - //SL_V2X_ConfigCommon= (*sib21)->sl_V2X_ConfigCommon_r14; - memset((*sib21)->sl_V2X_ConfigCommon_r14,0,sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14)); - - struct SL_CommRxPoolListV2X_r14 *SL_CommRxPoolListV2X; - struct SL_CommResourcePoolV2X_r14 *SL_CommResourcePoolV2X; - (*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14 = CALLOC(1, sizeof(*(*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14)); - SL_CommRxPoolListV2X = (*sib21)->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14; - - SL_CommResourcePoolV2X = CALLOC(1, sizeof(*SL_CommResourcePoolV2X)); - memset(SL_CommResourcePoolV2X,0,sizeof(*SL_CommResourcePoolV2X)); - - SL_CommResourcePoolV2X->sl_OffsetIndicator_r14 = CALLOC(1, sizeof(*SL_CommResourcePoolV2X->sl_OffsetIndicator_r14)); - SL_CommResourcePoolV2X->sl_OffsetIndicator_r14->present = SL_OffsetIndicator_r12_PR_small_r12; - SL_CommResourcePoolV2X->sl_OffsetIndicator_r14->choice.small_r12 = 0; - SL_CommResourcePoolV2X->sl_Subframe_r14.present = SubframeBitmapSL_r14_PR_bs40_r14; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.size = 5; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf = CALLOC(1,5); - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.bits_unused = 0; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[0] = 0xF0; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[1] = 0xFF; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[2] = 0xFF; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[3] = 0xFF; - SL_CommResourcePoolV2X->sl_Subframe_r14.choice.bs40_r14.buf[4] = 0xFF; - - SL_CommResourcePoolV2X->adjacencyPSCCH_PSSCH_r14 = 1; - SL_CommResourcePoolV2X->sizeSubchannel_r14 = 10; - SL_CommResourcePoolV2X->numSubchannel_r14 = 5; - SL_CommResourcePoolV2X->startRB_Subchannel_r14 = 10; - - //rxParametersNCell_r12 - SL_CommResourcePoolV2X->rxParametersNCell_r14 = CALLOC (1, sizeof (*SL_CommResourcePoolV2X->rxParametersNCell_r14)); - SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14 = CALLOC (1, sizeof (*SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14)); - SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14->subframeAssignment = 0 ; - SL_CommResourcePoolV2X->rxParametersNCell_r14->tdd_Config_r14->specialSubframePatterns = 0; - SL_CommResourcePoolV2X->rxParametersNCell_r14->syncConfigIndex_r14 = 0; - - ASN_SEQUENCE_ADD(&SL_CommRxPoolListV2X->list,SL_CommResourcePoolV2X); - //end SIB21 #endif - + bcch_message->message.present = BCCH_DL_SCH_MessageType_PR_c1; bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType__c1_PR_systemInformation; @@ -2158,7 +2160,7 @@ uint8_t do_SIB23(uint8_t Mod_id, sib3_part); #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - if (MBMS_flag > 0) { + if (configuration->eMBMS_configured > 0) { ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part); } #endif diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index 0faffc3983..d29a26a427 100755 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -140,11 +140,8 @@ openair_rrc_on( static void init_SI( const protocol_ctxt_t* const ctxt_pP, - const int CC_id -#if defined(ENABLE_ITTI) - , + const int CC_id, RrcConfigurationReq * configuration -#endif ) //----------------------------------------------------------------------------- { @@ -176,20 +173,12 @@ init_SI( LOG_I(RRC, "configuration->schedulingInfoSIB1_BR_r13[CC_id] %d\n",(int)configuration->schedulingInfoSIB1_BR_r13[CC_id]); #endif do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id], -#ifdef ENABLE_ITTI configuration->N_RB_DL[CC_id], (int)configuration->radioresourceconfig[CC_id].phich_resource, (int)configuration->radioresourceconfig[CC_id].phich_duration, 0 -#else - 50, 0, 0, 0 -#endif #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) -#ifdef ENABLE_ITTI ,configuration->schedulingInfoSIB1_BR_r13[CC_id] -#else - ,0 -#endif #endif ); @@ -205,9 +194,7 @@ init_SI( #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) ,FALSE #endif -#if defined(ENABLE_ITTI) , configuration -#endif ); AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255"); @@ -219,9 +206,7 @@ init_SI( RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_BR = (uint8_t*) malloc16(32); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_BR = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id ,TRUE -#if defined(ENABLE_ITTI) , configuration -#endif ); } #endif @@ -234,9 +219,7 @@ init_SI( #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) ,FALSE #endif -#if defined(ENABLE_ITTI) , configuration -#endif ); AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255"); @@ -252,10 +235,8 @@ init_SI( #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) ,TRUE #endif -#if defined(ENABLE_ITTI) ,configuration ); -#endif } #endif @@ -315,7 +296,6 @@ init_SI( RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset); } -#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0)) // SIB13 for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count; i++) { LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n", @@ -329,80 +309,83 @@ init_SI( PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9); } -#endif } else memset((void*)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13)); //TTN - SIB 18 - for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count; j++) { - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - j+1, - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 rxPool_sc_CP_Len: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_CP_Len_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 sc_Period_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_Period_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 data_CP_Len_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->data_CP_Len_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Num_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Num_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Start_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Start_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_End_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_End_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 offsetIndicator: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 subframeBitmap_choice_bs_buf: %s \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf); + if (configuration->SL_configured>0) { + for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count; j++) { + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + j+1, + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 rxPool_sc_CP_Len: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_CP_Len_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 sc_Period_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_Period_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 data_CP_Len_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->data_CP_Len_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Num_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Num_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Start_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Start_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_End_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_End_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 offsetIndicator: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 subframeBitmap_choice_bs_buf: %s \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf); + + } + + + + for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count; j++) { + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + j+1, + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 cp_Len_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->cp_Len_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 discPeriod_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->discPeriod_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRetx_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRetx_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRepetition_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRepetition_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Num_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Num_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Start_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Start_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_End_r12: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_End_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 offsetIndicator: %ld \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12); + LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 subframeBitmap_choice_bs_buf: %s \n", + PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf); + + } } - //TTN - SIB 19 - for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count; j++) { - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - j+1, - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 cp_Len_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->cp_Len_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 discPeriod_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->discPeriod_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRetx_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRetx_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRepetition_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRepetition_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Num_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Num_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Start_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Start_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_End_r12: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_End_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 offsetIndicator: %ld \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12); - LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 subframeBitmap_choice_bs_buf: %s \n", - PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), - RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf); - - } - -#endif +#endif // (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n", diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf index 382cc9d2fc..d33a9dc41f 100755 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.emtc.conf @@ -15,9 +15,7 @@ eNBs = // Tracking area code, 0x0000 and 0xfffe are reserved values tracking_area_code = "1"; - mobile_country_code = "208"; - - mobile_network_code = "92"; + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2;} ); tr_s_preference = "local_mac" @@ -106,10 +104,10 @@ eNBs = ue_TimersAndConstants_n311 = "n1"; ue_TransmissionMode = "tm1"; - # BR Parameters - br_parameters : + # eMTC Parameters + emtc_parameters : { - + eMTC_configured = 1; #hyperSFN_r13 = 0; #eDRX_Allowed_r13 = 0; #q_QualMinRSRQ_CE_r13 = ; @@ -155,9 +153,9 @@ eNBs = # SIB23 frame_type = "FDD"; - preambleTransMax_CE_r13 = "n10"; #6 + preambleTransMax_CE_r13 = 10; #6 - rach_numberOfRA_Preambles = "n60"; #14 + rach_numberOfRA_Preambles = 60; #14 rach_powerRampingStep = 4; rach_preambleInitialReceivedTargetPower = -110; rach_preambleTransMax = 10; @@ -171,8 +169,8 @@ eNBs = { firstPreamble_r13 = 60; lastPreamble_r13 = 63; - ra_ResponseWindowSize_r13 = "sf20"; #0 - mac_ContentionResolutionTimer_r13 = "sf80"; #0 + ra_ResponseWindowSize_r13 = 20; #0 + mac_ContentionResolutionTimer_r13 = 80; #0 rar_HoppingConfig_r13 = "off"; #1; } ); @@ -252,11 +250,11 @@ eNBs = { prach_config_index_br = 3; prach_freq_offset_br = 2; - prach_StartingSubframe_r13 = 0; - maxNumPreambleAttemptCE_r13 = "n10"; #6 - numRepetitionPerPreambleAttempt_r13 = "n1"; #0 - mpdcch_NumRepetition_RA_r13 = "r1"; #0 - prach_HoppingConfig_r13 = "off"; #1 + prach_StartingSubframe_r13 = 2; + maxNumPreambleAttemptCE_r13 = 10; #6 + numRepetitionPerPreambleAttempt_r13 = 1; #0 + mpdcch_NumRepetition_RA_r13 = 1; #0 + prach_HoppingConfig_r13 = 0; #1 max_available_narrow_band = [3]; } ); @@ -370,6 +368,9 @@ eNBs = ENB_INTERFACE_NAME_FOR_S1U = "lo"; ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; log_config : @@ -393,31 +394,34 @@ eNBs = ); MACRLCs = ( - { - num_cc = 1; - tr_s_preference = "local_L1"; - tr_n_preference = "local_RRC"; + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; } ); L1s = ( { - num_cc = 1; - tr_n_preference = "local_mac"; - } + num_cc = 1; + tr_n_preference = "local_mac"; + } ); RUs = ( { - local_rf = "yes" - nb_tx = 1 - nb_rx = 1 - att_tx = 0 - att_rx = 0; - bands = [13]; - max_pdschReferenceSignalPower = -27; - max_rxgain = 125; - eNB_instances = [0]; + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [13]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; } );