adding all changes from ornage private branch
This commit is contained in:
@@ -166,6 +166,43 @@ typedef struct RrcConfigurationReq_s {
|
|||||||
long ue_TimersAndConstants_n310[MAX_NUM_CCs];
|
long ue_TimersAndConstants_n310[MAX_NUM_CCs];
|
||||||
long ue_TimersAndConstants_n311[MAX_NUM_CCs];
|
long ue_TimersAndConstants_n311[MAX_NUM_CCs];
|
||||||
long ue_TransmissionMode[MAX_NUM_CCs];
|
long ue_TransmissionMode[MAX_NUM_CCs];
|
||||||
|
|
||||||
|
|
||||||
|
//MIB
|
||||||
|
long schedulingInfoSIB1_BR_r13[MAX_NUM_CCs];
|
||||||
|
//SIB1 BR options
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t* hyperSFN_r13[MAX_NUM_CCs];
|
||||||
|
long* eDRX_Allowed_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t cellSelectionInfoCE_r13[MAX_NUM_CCs];
|
||||||
|
long q_RxLevMinCE_r13[MAX_NUM_CCs];
|
||||||
|
long* q_QualMinRSRQ_CE_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t bandwidthReducedAccessRelatedInfo_r13[MAX_NUM_CCs];
|
||||||
|
long si_WindowLength_BR_r13[MAX_NUM_CCs];
|
||||||
|
long si_RepetitionPattern_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t fdd_DownlinkOrTddSubframeBitmapBR_r13[MAX_NUM_CCs];
|
||||||
|
uint64_t fdd_DownlinkOrTddSubframeBitmapBR_val_r13[MAX_NUM_CCs];
|
||||||
|
uint16_t fdd_UplinkSubframeBitmapBR_r13[MAX_NUM_CCs];
|
||||||
|
long startSymbolBR_r13[MAX_NUM_CCs];
|
||||||
|
long si_HoppingConfigCommon_r13[MAX_NUM_CCs];
|
||||||
|
long* si_ValidityTime_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t freqHoppingParametersDL_r13[MAX_NUM_CCs];
|
||||||
|
long* mpdcch_pdsch_HoppingNB_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t interval_DLHoppingConfigCommonModeA_r13[MAX_NUM_CCs];
|
||||||
|
long interval_DLHoppingConfigCommonModeA_r13_val[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t interval_DLHoppingConfigCommonModeB_r13[MAX_NUM_CCs];
|
||||||
|
long interval_DLHoppingConfigCommonModeB_r13_val[MAX_NUM_CCs];
|
||||||
|
long* mpdcch_pdsch_HoppingOffset_r13[MAX_NUM_CCs];
|
||||||
|
|
||||||
|
|
||||||
|
//SIB2 BR Options
|
||||||
|
long* preambleTransMax_CE_r13[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t prach_ConfigCommon_v1310[MAX_NUM_CCs];
|
||||||
|
BOOLEAN_t* mpdcch_startSF_CSS_RA_r13[MAX_NUM_CCs];
|
||||||
|
long mpdcch_startSF_CSS_RA_r13_val[MAX_NUM_CCs];
|
||||||
|
long* prach_HoppingOffset_r13[MAX_NUM_CCs];
|
||||||
|
|
||||||
} RrcConfigurationReq;
|
} RrcConfigurationReq;
|
||||||
|
|
||||||
// UE: NAS -> RRC messages
|
// UE: NAS -> RRC messages
|
||||||
|
|||||||
+416
-80
@@ -299,6 +299,38 @@
|
|||||||
#define CONFIG_STRING_RU_MAX_RXGAIN "max_rxgain"
|
#define CONFIG_STRING_RU_MAX_RXGAIN "max_rxgain"
|
||||||
#define CONFIG_STRING_RU_IF_COMPRESSION "if_compression"
|
#define CONFIG_STRING_RU_IF_COMPRESSION "if_compression"
|
||||||
|
|
||||||
|
#define ENB_CONFIG_STRING_BR "br_parameters"
|
||||||
|
#define ENB_CONFIG_STRING_schedulingInfoSIB1 "schedulingInfoSIB1_BR_r13"
|
||||||
|
|
||||||
|
#define ENB_CONFIG_STRING_HYPERSFN "hyperSFN_r13"
|
||||||
|
#define ENB_CONFIG_STRING_EDRX_ALLOWED "eDRX_Allowed_r13"
|
||||||
|
#define ENB_CONFIG_STRING_CELLSELECTIONINFOCE "cellSelectionInfoCE_r13"
|
||||||
|
#define ENB_CONFIG_STRING_Q_RXLEVMINCE "q_RxLevMinCE_r13"
|
||||||
|
#define ENB_CONFIG_STRING_Q_QUALMINRSRQ_CE "q_QualMinRSRQ_CE_r13"
|
||||||
|
#define ENB_CONFIG_STRING_BRAccessRelatedInfo "bandwidthReducedAccessRelatedInfo_r13"
|
||||||
|
|
||||||
|
#define ENB_CONFIG_STRING_SI_WINDOWLENGTH_BR "si_WindowLength_BR_r13"
|
||||||
|
#define ENB_CONFIG_STRING_SI_REPETITIONPATTERN "si_RepetitionPattern_r13"
|
||||||
|
#define ENB_CONFIG_STRING_FDD_DLORTDD_SFB_BR "fdd_DownlinkOrTddSubframeBitmapBR_r13"
|
||||||
|
#define ENB_CONFIG_STRING_FDD_DLORTDDSFB_BR_VAL "fdd_DownlinkOrTddSubframeBitmapBR_val_r13"
|
||||||
|
#define ENB_CONFIG_STRING_FDD_ULSUBFRAMEBITMAPBR "fdd_UplinkSubframeBitmapBR_r13"
|
||||||
|
#define ENB_CONFIG_STRING_STARTSYMBOLBR "startSymbolBR_r13"
|
||||||
|
#define ENB_CONFIG_STRING_SI_HOPPINGCONFIGCOMMON "si_HoppingConfigCommon_r13"
|
||||||
|
#define ENB_CONFIG_STRING_SI_VALIDITYTIME "si_ValidityTime_r13"
|
||||||
|
#define ENB_CONFIG_STRING_FREQHOPPINGPARAMETERSDL "freqHoppingParametersDL_r13"
|
||||||
|
#define ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPINGNB "mpdcch_pdsch_HoppingNB_r13"
|
||||||
|
#define ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEA "interval_DLHoppingConfigCommonModeA_r13"
|
||||||
|
#define ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEA_VAL "interval_DLHoppingConfigCommonModeA_r13_val"
|
||||||
|
#define ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB "interval_DLHoppingConfigCommonModeB_r13"
|
||||||
|
#define ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB_VAL "interval_DLHoppingConfigCommonModeB_r13_val"
|
||||||
|
#define ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPINGOFFSET "mpdcch_pdsch_HoppingOffset_r13"
|
||||||
|
|
||||||
|
|
||||||
|
#define ENB_CONFIG_STRING_PREAMBLETRANSMAX_CE_R13 "preambleTransMax_CE_r13"
|
||||||
|
#define ENB_CONFIG_STRING_PRACH_CONFIGCOMMON_V1310 "prach_ConfigCommon_v1310"
|
||||||
|
#define ENB_CONFIG_STRING_MPDCCH_STARTSF_CSS_RA_R13 "mpdcch_startSF_CSS_RA_r13"
|
||||||
|
#define ENB_CONFIG_STRING_MPDCCH_STARTSF_CSS_RA_R13_VAL "mpdcch_startSF_CSS_RA_r13_val"
|
||||||
|
#define ENB_CONFIG_STRING_PRACH_HOPPINGOFFSET_R13 "prach_HoppingOffset_r13"
|
||||||
#define KHz (1000UL)
|
#define KHz (1000UL)
|
||||||
#define MHz (1000 * KHz)
|
#define MHz (1000 * KHz)
|
||||||
|
|
||||||
@@ -881,6 +913,9 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
config_setting_t *setting_enb = NULL;
|
config_setting_t *setting_enb = NULL;
|
||||||
config_setting_t *setting_otg = NULL;
|
config_setting_t *setting_otg = NULL;
|
||||||
config_setting_t *subsetting_otg = NULL;
|
config_setting_t *subsetting_otg = NULL;
|
||||||
|
#if defined(Rel14)
|
||||||
|
config_setting_t *setting_br13 = NULL;
|
||||||
|
#endif // REL14
|
||||||
int parse_errors = 0;
|
int parse_errors = 0;
|
||||||
int num_enbs = 0;
|
int num_enbs = 0;
|
||||||
int num_mme_address = 0;
|
int num_mme_address = 0;
|
||||||
@@ -1041,7 +1076,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
config_destroy(&cfg);
|
config_destroy(&cfg);
|
||||||
AssertFatal (0, "Failed to parse eNB configuration file %s!\n", RC.config_file_name);
|
AssertFatal (0, "Failed to parse eNB configuration file %s!\n", RC.config_file_name);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
config_destroy(&cfg);
|
config_destroy(&cfg);
|
||||||
AssertFatal(0, "No eNB configuration file provided!\n");
|
AssertFatal(0, "No eNB configuration file provided!\n");
|
||||||
}
|
}
|
||||||
@@ -1052,13 +1088,16 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
if (strcasecmp(astring , ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
|
if (strcasecmp(astring , ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
|
||||||
asn_debug = 0;
|
asn_debug = 0;
|
||||||
asn1_xer_print = 0;
|
asn1_xer_print = 0;
|
||||||
} else if (strcasecmp(astring , ENB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
|
}
|
||||||
|
else if (strcasecmp(astring, ENB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
|
||||||
asn_debug = 1;
|
asn_debug = 1;
|
||||||
asn1_xer_print = 1;
|
asn1_xer_print = 1;
|
||||||
} else if (strcasecmp(astring , ENB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
|
}
|
||||||
|
else if (strcasecmp(astring, ENB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
|
||||||
asn_debug = 1;
|
asn_debug = 1;
|
||||||
asn1_xer_print = 2;
|
asn1_xer_print = 2;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
asn_debug = 0;
|
asn_debug = 0;
|
||||||
asn1_xer_print = 0;
|
asn1_xer_print = 0;
|
||||||
}
|
}
|
||||||
@@ -1326,9 +1365,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
|
||||||
else if (strcmp(prefix_type, "NORMAL") == 0) {
|
else if (strcmp(prefix_type, "NORMAL") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = NORMAL;
|
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = NORMAL;
|
||||||
} else if (strcmp(prefix_type, "EXTENDED") == 0) {
|
}
|
||||||
|
else if (strcmp(prefix_type, "EXTENDED") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = EXTENDED;
|
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = EXTENDED;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
|
||||||
RC.config_file_name, i, prefix_type);
|
RC.config_file_name, i, prefix_type);
|
||||||
@@ -1340,9 +1381,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PBCH_REPETITION);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PBCH_REPETITION);
|
||||||
else if (strcmp(pbch_repetition, "TRUE") == 0) {
|
else if (strcmp(pbch_repetition, "TRUE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pbch_repetition[j] = 1;
|
RRC_CONFIGURATION_REQ(msg_p).pbch_repetition[j] = 1;
|
||||||
} else if (strcmp(pbch_repetition, "FALSE") == 0) {
|
}
|
||||||
|
else if (strcmp(pbch_repetition, "FALSE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pbch_repetition[j] = 0;
|
RRC_CONFIGURATION_REQ(msg_p).pbch_repetition[j] = 0;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pbch_repetition choice: TRUE or FALSE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pbch_repetition choice: TRUE or FALSE !\n",
|
||||||
RC.config_file_name, i, pbch_repetition);
|
RC.config_file_name, i, pbch_repetition);
|
||||||
@@ -1370,9 +1413,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(frame_type, "FDD") == 0) {
|
if (strcmp(frame_type, "FDD") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).frame_type[j] = FDD;
|
RRC_CONFIGURATION_REQ(msg_p).frame_type[j] = FDD;
|
||||||
} else if (strcmp(frame_type, "TDD") == 0) {
|
}
|
||||||
|
else if (strcmp(frame_type, "TDD") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).frame_type[j] = TDD;
|
RRC_CONFIGURATION_REQ(msg_p).frame_type[j] = TDD;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for frame_type choice: FDD or TDD !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for frame_type choice: FDD or TDD !\n",
|
||||||
RC.config_file_name, i, frame_type);
|
RC.config_file_name, i, frame_type);
|
||||||
@@ -1398,9 +1443,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PREFIX_TYPE);
|
||||||
else if (strcmp(prefix_type, "NORMAL") == 0) {
|
else if (strcmp(prefix_type, "NORMAL") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = NORMAL;
|
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = NORMAL;
|
||||||
} else if (strcmp(prefix_type, "EXTENDED") == 0) {
|
}
|
||||||
|
else if (strcmp(prefix_type, "EXTENDED") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = EXTENDED;
|
RRC_CONFIGURATION_REQ(msg_p).prefix_type[j] = EXTENDED;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
|
||||||
RC.config_file_name, i, prefix_type);
|
RC.config_file_name, i, prefix_type);
|
||||||
@@ -1456,9 +1503,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED);
|
||||||
else if (strcmp(prach_high_speed, "ENABLE") == 0) {
|
else if (strcmp(prach_high_speed, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prach_high_speed[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).prach_high_speed[j] = TRUE;
|
||||||
} else if (strcmp(prach_high_speed, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(prach_high_speed, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).prach_high_speed[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).prach_high_speed[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prach_config choice: ENABLE,DISABLE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for prach_config choice: ENABLE,DISABLE !\n",
|
||||||
RC.config_file_name, i, prach_high_speed);
|
RC.config_file_name, i, prach_high_speed);
|
||||||
@@ -1535,9 +1584,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE);
|
||||||
else if (strcmp(pusch_hoppingMode, "interSubFrame") == 0) {
|
else if (strcmp(pusch_hoppingMode, "interSubFrame") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame;
|
||||||
} else if (strcmp(pusch_hoppingMode,"intraAndInterSubFrame")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_hoppingMode, "intraAndInterSubFrame") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!\n",
|
||||||
RC.config_file_name, i, pusch_hoppingMode);
|
RC.config_file_name, i, pusch_hoppingMode);
|
||||||
@@ -1555,9 +1606,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM);
|
||||||
else if (strcmp(pusch_enable64QAM, "ENABLE") == 0) {
|
else if (strcmp(pusch_enable64QAM, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_enable64QAM[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_enable64QAM[j] = TRUE;
|
||||||
} else if (strcmp(pusch_enable64QAM, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(pusch_enable64QAM, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_enable64QAM[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_enable64QAM[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n",
|
||||||
RC.config_file_name, i, pusch_enable64QAM);
|
RC.config_file_name, i, pusch_enable64QAM);
|
||||||
@@ -1568,9 +1621,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN);
|
||||||
else if (strcmp(pusch_groupHoppingEnabled, "ENABLE") == 0) {
|
else if (strcmp(pusch_groupHoppingEnabled, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_groupHoppingEnabled[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_groupHoppingEnabled[j] = TRUE;
|
||||||
} else if (strcmp(pusch_groupHoppingEnabled, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(pusch_groupHoppingEnabled, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_groupHoppingEnabled[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_groupHoppingEnabled[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!\n",
|
||||||
RC.config_file_name, i, pusch_groupHoppingEnabled);
|
RC.config_file_name, i, pusch_groupHoppingEnabled);
|
||||||
@@ -1589,9 +1644,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN);
|
RC.config_file_name, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN);
|
||||||
else if (strcmp(pusch_sequenceHoppingEnabled, "ENABLE") == 0) {
|
else if (strcmp(pusch_sequenceHoppingEnabled, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_sequenceHoppingEnabled[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_sequenceHoppingEnabled[j] = TRUE;
|
||||||
} else if (strcmp(pusch_sequenceHoppingEnabled, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(pusch_sequenceHoppingEnabled, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_sequenceHoppingEnabled[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_sequenceHoppingEnabled[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!\n",
|
||||||
RC.config_file_name, i, pusch_sequenceHoppingEnabled);
|
RC.config_file_name, i, pusch_sequenceHoppingEnabled);
|
||||||
@@ -1605,22 +1662,28 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(phich_duration, "NORMAL") == 0) {
|
if (strcmp(phich_duration, "NORMAL") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_duration[j] = PHICH_Config__phich_Duration_normal;
|
RRC_CONFIGURATION_REQ(msg_p).phich_duration[j] = PHICH_Config__phich_Duration_normal;
|
||||||
} else if (strcmp(phich_duration,"EXTENDED")==0) {
|
}
|
||||||
|
else if (strcmp(phich_duration, "EXTENDED") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_duration[j] = PHICH_Config__phich_Duration_extended;
|
RRC_CONFIGURATION_REQ(msg_p).phich_duration[j] = PHICH_Config__phich_Duration_extended;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_duration choice: NORMAL,EXTENDED!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_duration choice: NORMAL,EXTENDED!\n",
|
||||||
RC.config_file_name, i, phich_duration);
|
RC.config_file_name, i, phich_duration);
|
||||||
|
|
||||||
if (strcmp(phich_resource, "ONESIXTH") == 0) {
|
if (strcmp(phich_resource, "ONESIXTH") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_oneSixth;
|
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_oneSixth;
|
||||||
} else if (strcmp(phich_resource,"HALF")==0) {
|
}
|
||||||
|
else if (strcmp(phich_resource, "HALF") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_half;
|
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_half;
|
||||||
} else if (strcmp(phich_resource,"ONE")==0) {
|
}
|
||||||
|
else if (strcmp(phich_resource, "ONE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_one;
|
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_one;
|
||||||
} else if (strcmp(phich_resource,"TWO")==0) {
|
}
|
||||||
|
else if (strcmp(phich_resource, "TWO") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_two;
|
RRC_CONFIGURATION_REQ(msg_p).phich_resource[j] = PHICH_Config__phich_Resource_two;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for phich_resource choice: ONESIXTH,HALF,ONE,TWO!\n",
|
"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, phich_resource);
|
RC.config_file_name, i, phich_resource);
|
||||||
@@ -1631,9 +1694,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(srs_enable, "ENABLE") == 0) {
|
if (strcmp(srs_enable, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_enable[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_enable[j] = TRUE;
|
||||||
} else if (strcmp(srs_enable, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(srs_enable, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_enable[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_enable[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
|
||||||
RC.config_file_name, i, srs_enable);
|
RC.config_file_name, i, srs_enable);
|
||||||
@@ -1663,18 +1728,22 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(srs_ackNackST, "ENABLE") == 0) {
|
if (strcmp(srs_ackNackST, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_ackNackST[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_ackNackST[j] = TRUE;
|
||||||
} else if (strcmp(srs_ackNackST, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(srs_ackNackST, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_ackNackST[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_ackNackST[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_BandwidthConfig choice: ENABLE,DISABLE !\n",
|
||||||
RC.config_file_name, i, srs_ackNackST);
|
RC.config_file_name, i, srs_ackNackST);
|
||||||
|
|
||||||
if (strcmp(srs_MaxUpPts, "ENABLE") == 0) {
|
if (strcmp(srs_MaxUpPts, "ENABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_MaxUpPts[j] = TRUE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_MaxUpPts[j] = TRUE;
|
||||||
} else if (strcmp(srs_MaxUpPts, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(srs_MaxUpPts, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).srs_MaxUpPts[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).srs_MaxUpPts[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_MaxUpPts choice: ENABLE,DISABLE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for srs_MaxUpPts choice: ENABLE,DISABLE !\n",
|
||||||
RC.config_file_name, i, srs_MaxUpPts);
|
RC.config_file_name, i, srs_MaxUpPts);
|
||||||
@@ -1690,37 +1759,51 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
#ifndef Rel14
|
#ifndef Rel14
|
||||||
if (strcmp(pusch_alpha, "AL0") == 0) {
|
if (strcmp(pusch_alpha, "AL0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al0;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al0;
|
||||||
} else if (strcmp(pusch_alpha,"AL04")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL04") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al04;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al04;
|
||||||
} else if (strcmp(pusch_alpha,"AL05")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL05") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al05;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al05;
|
||||||
} else if (strcmp(pusch_alpha,"AL06")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL06") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al06;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al06;
|
||||||
} else if (strcmp(pusch_alpha,"AL07")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL07") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al07;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al07;
|
||||||
} else if (strcmp(pusch_alpha,"AL08")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL08") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al08;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al08;
|
||||||
} else if (strcmp(pusch_alpha,"AL09")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL09") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al09;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al09;
|
||||||
} else if (strcmp(pusch_alpha,"AL1")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL1") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al1;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = UplinkPowerControlCommon__alpha_al1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (strcmp(pusch_alpha, "AL0") == 0) {
|
if (strcmp(pusch_alpha, "AL0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al0;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al0;
|
||||||
} else if (strcmp(pusch_alpha,"AL04")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL04") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al04;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al04;
|
||||||
} else if (strcmp(pusch_alpha,"AL05")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL05") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al05;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al05;
|
||||||
} else if (strcmp(pusch_alpha,"AL06")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL06") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al06;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al06;
|
||||||
} else if (strcmp(pusch_alpha,"AL07")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL07") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al07;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al07;
|
||||||
} else if (strcmp(pusch_alpha,"AL08")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL08") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al08;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al08;
|
||||||
} else if (strcmp(pusch_alpha,"AL09")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL09") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al09;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al09;
|
||||||
} else if (strcmp(pusch_alpha,"AL1")==0) {
|
}
|
||||||
|
else if (strcmp(pusch_alpha, "AL1") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al1;
|
RRC_CONFIGURATION_REQ(msg_p).pusch_alpha[j] = Alpha_r12_al1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1746,22 +1829,28 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(pucch_deltaF_Format1, "deltaF_2") == 0) {
|
if (strcmp(pucch_deltaF_Format1, "deltaF_2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF_2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF_2;
|
||||||
} else if (strcmp(pucch_deltaF_Format1,"deltaF0")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format1, "deltaF0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF0;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF0;
|
||||||
} else if (strcmp(pucch_deltaF_Format1,"deltaF2")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format1, "deltaF2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1 choice: deltaF_2,dltaF0,deltaF2!\n",
|
"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, pucch_deltaF_Format1);
|
RC.config_file_name, i, pucch_deltaF_Format1);
|
||||||
|
|
||||||
if (strcmp(pucch_deltaF_Format1b, "deltaF1") == 0) {
|
if (strcmp(pucch_deltaF_Format1b, "deltaF1") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF1;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF1;
|
||||||
} else if (strcmp(pucch_deltaF_Format1b,"deltaF3")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format1b, "deltaF3") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF3;
|
||||||
} else if (strcmp(pucch_deltaF_Format1b,"deltaF5")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format1b, "deltaF5") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format1b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format1b choice: deltaF1,dltaF3,deltaF5!\n",
|
"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, pucch_deltaF_Format1b);
|
RC.config_file_name, i, pucch_deltaF_Format1b);
|
||||||
@@ -1769,35 +1858,45 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(pucch_deltaF_Format2, "deltaF_2") == 0) {
|
if (strcmp(pucch_deltaF_Format2, "deltaF_2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF_2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF_2;
|
||||||
} else if (strcmp(pucch_deltaF_Format2,"deltaF0")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2, "deltaF0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF0;
|
||||||
} else if (strcmp(pucch_deltaF_Format2,"deltaF1")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2, "deltaF1") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF1;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF1;
|
||||||
} else if (strcmp(pucch_deltaF_Format2,"deltaF2")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2, "deltaF2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
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",
|
"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, pucch_deltaF_Format2);
|
RC.config_file_name, i, pucch_deltaF_Format2);
|
||||||
|
|
||||||
if (strcmp(pucch_deltaF_Format2a, "deltaF_2") == 0) {
|
if (strcmp(pucch_deltaF_Format2a, "deltaF_2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF_2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF_2;
|
||||||
} else if (strcmp(pucch_deltaF_Format2a,"deltaF0")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2a, "deltaF0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF0;
|
||||||
} else if (strcmp(pucch_deltaF_Format2a,"deltaF2")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2a, "deltaF2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2a[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2a choice: deltaF_2,dltaF0,deltaF2!\n",
|
"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, pucch_deltaF_Format2a);
|
RC.config_file_name, i, pucch_deltaF_Format2a);
|
||||||
|
|
||||||
if (strcmp(pucch_deltaF_Format2b, "deltaF_2") == 0) {
|
if (strcmp(pucch_deltaF_Format2b, "deltaF_2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF_2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF_2;
|
||||||
} else if (strcmp(pucch_deltaF_Format2b,"deltaF0")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2b, "deltaF0") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF0;
|
||||||
} else if (strcmp(pucch_deltaF_Format2b,"deltaF2")==0) {
|
}
|
||||||
|
else if (strcmp(pucch_deltaF_Format2b, "deltaF2") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2;
|
RRC_CONFIGURATION_REQ(msg_p).pucch_deltaF_Format2b[j] = DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pucch_deltaF_Format2b choice: deltaF_2,dltaF0,deltaF2!\n",
|
"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, pucch_deltaF_Format2b);
|
RC.config_file_name, i, pucch_deltaF_Format2b);
|
||||||
@@ -1884,14 +1983,17 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
else if (strcmp(rach_messagePowerOffsetGroupB,"dB18")==0) {
|
else if (strcmp(rach_messagePowerOffsetGroupB,"dB18")==0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18;
|
RRC_CONFIGURATION_REQ(msg_p).rach_messagePowerOffsetGroupB[j] = RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
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",
|
"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, rach_messagePowerOffsetGroupB);
|
RC.config_file_name, i, rach_messagePowerOffsetGroupB);
|
||||||
|
|
||||||
} else if (strcmp(rach_preamblesGroupAConfig, "DISABLE") == 0) {
|
}
|
||||||
|
else if (strcmp(rach_preamblesGroupAConfig, "DISABLE") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).rach_preamblesGroupAConfig[j] = FALSE;
|
RRC_CONFIGURATION_REQ(msg_p).rach_preamblesGroupAConfig[j] = FALSE;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !\n",
|
||||||
RC.config_file_name, i, rach_preamblesGroupAConfig);
|
RC.config_file_name, i, rach_preamblesGroupAConfig);
|
||||||
@@ -2062,21 +2164,29 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (strcmp(pcch_nB, "fourT") == 0) {
|
if (strcmp(pcch_nB, "fourT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_fourT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_fourT;
|
||||||
} else if (strcmp(pcch_nB, "twoT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "twoT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_twoT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_twoT;
|
||||||
} else if (strcmp(pcch_nB, "oneT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "oneT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneT;
|
||||||
} else if (strcmp(pcch_nB, "halfT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "halfT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_halfT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_halfT;
|
||||||
} else if (strcmp(pcch_nB, "quarterT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "quarterT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_quarterT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_quarterT;
|
||||||
} else if (strcmp(pcch_nB, "oneEighthT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "oneEighthT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneEighthT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneEighthT;
|
||||||
} else if (strcmp(pcch_nB, "oneSixteenthT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "oneSixteenthT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneSixteenthT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneSixteenthT;
|
||||||
} else if (strcmp(pcch_nB, "oneThirtySecondT") == 0) {
|
}
|
||||||
|
else if (strcmp(pcch_nB, "oneThirtySecondT") == 0) {
|
||||||
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneThirtySecondT;
|
RRC_CONFIGURATION_REQ(msg_p).pcch_nB[j] = PCCH_Config__nB_oneThirtySecondT;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !\n",
|
||||||
RC.config_file_name, i, pcch_defaultPagingCycle);
|
RC.config_file_name, i, pcch_defaultPagingCycle);
|
||||||
@@ -2375,6 +2485,227 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, ue_TransmissionMode);
|
RC.config_file_name, i, ue_TransmissionMode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setting_br13 = config_setting_get_member(setting_enb, ENB_CONFIG_STRING_BR);
|
||||||
|
if (setting_br13 != NULL)
|
||||||
|
{
|
||||||
|
int hyperSFN_r13;
|
||||||
|
int eDRX_Allowed_r13;
|
||||||
|
int q_RxLevMinCE_r13;
|
||||||
|
int q_QualMinRSRQ_CE_r13;
|
||||||
|
int si_WindowLength_BR_r13;
|
||||||
|
int si_RepetitionPattern_r13;
|
||||||
|
uint64_t fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
|
||||||
|
int startSymbolBR_r13;
|
||||||
|
int si_HoppingConfigCommon_r13;
|
||||||
|
int si_ValidityTime_r13;
|
||||||
|
int mpdcch_pdsch_HoppingNB_r13;
|
||||||
|
int interval_DLHoppingConfigCommonModeA_r13_val;
|
||||||
|
int interval_DLHoppingConfigCommonModeB_r13_val;
|
||||||
|
int mpdcch_pdsch_HoppingOffset_r13;
|
||||||
|
int preambleTransMax_CE_r13;
|
||||||
|
int mpdcch_startSF_CSS_RA_r13_val;
|
||||||
|
int prach_HoppingOffset_r13;
|
||||||
|
int schedulingInfoSIB1_BR_r13;
|
||||||
|
char* cellSelectionInfoCE_r13 = NULL;
|
||||||
|
char* bandwidthReducedAccessRelatedInfo_r13 = NULL;
|
||||||
|
char* fdd_DownlinkOrTddSubframeBitmapBR_r13 = NULL;
|
||||||
|
char* fdd_UplinkSubframeBitmapBR_r13 = NULL;
|
||||||
|
char* freqHoppingParametersDL_r13 = NULL;
|
||||||
|
char* interval_DLHoppingConfigCommonModeA_r13 = NULL;
|
||||||
|
char* interval_DLHoppingConfigCommonModeB_r13 = NULL;
|
||||||
|
char* prach_ConfigCommon_v1310 = NULL;
|
||||||
|
char* mpdcch_startSF_CSS_RA_r13;
|
||||||
|
|
||||||
|
|
||||||
|
if (!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_schedulingInfoSIB1, &schedulingInfoSIB1_BR_r13))
|
||||||
|
AssertFatal(0,
|
||||||
|
"Failed to parse eNB configuration file %s, enb %d schedulingInfoSIB1_BR_r13!\n",
|
||||||
|
RC.config_file_name, i);
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).schedulingInfoSIB1_BR_r13[j] = schedulingInfoSIB1_BR_r13;
|
||||||
|
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_HYPERSFN, &hyperSFN_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).hyperSFN_r13[j] = calloc(1, sizeof(uint16_t));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).hyperSFN_r13[j] = (uint16_t)hyperSFN_r13;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).hyperSFN_r13[j] = NULL;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_EDRX_ALLOWED, &eDRX_Allowed_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).eDRX_Allowed_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).eDRX_Allowed_r13[j] = eDRX_Allowed_r13;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).eDRX_Allowed_r13[j] = NULL;
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_CELLSELECTIONINFOCE, &cellSelectionInfoCE_r13) && !strcmp(cellSelectionInfoCE_r13, "ENABLE"))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).cellSelectionInfoCE_r13[j] = TRUE;
|
||||||
|
if (!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_Q_RXLEVMINCE, &q_RxLevMinCE_r13))
|
||||||
|
{
|
||||||
|
AssertFatal(0,
|
||||||
|
"Failed to parse eNB configuration file %s, enb %d q_RxLevMinCE_r13!\n",
|
||||||
|
RC.config_file_name, i);
|
||||||
|
|
||||||
|
}
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).q_RxLevMinCE_r13[j] = q_RxLevMinCE_r13;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_Q_QUALMINRSRQ_CE, &q_QualMinRSRQ_CE_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).q_QualMinRSRQ_CE_r13[j] = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).cellSelectionInfoCE_r13[j] = FALSE;
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_BRAccessRelatedInfo, &bandwidthReducedAccessRelatedInfo_r13) && !strcmp(bandwidthReducedAccessRelatedInfo_r13, "ENABLE"))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = TRUE;
|
||||||
|
if (!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_SI_WINDOWLENGTH_BR, &si_WindowLength_BR_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_SI_REPETITIONPATTERN, &si_RepetitionPattern_r13) ||
|
||||||
|
!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_FDD_DLORTDD_SFB_BR, &fdd_DownlinkOrTddSubframeBitmapBR_r13) ||
|
||||||
|
!config_setting_lookup_int64(setting_br13, ENB_CONFIG_STRING_FDD_DLORTDDSFB_BR_VAL, &fdd_DownlinkOrTddSubframeBitmapBR_val_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_FDD_ULSUBFRAMEBITMAPBR, &fdd_UplinkSubframeBitmapBR_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_STARTSYMBOLBR, &startSymbolBR_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_SI_HOPPINGCONFIGCOMMON, &si_HoppingConfigCommon_r13))
|
||||||
|
{
|
||||||
|
AssertFatal(0,
|
||||||
|
"Failed to parse eNB configuration file %s, enb %d si_WindowLength_BR_r13, si_RepetitionPattern_r13, fdd_DownlinkOrTddSubframeBitmapBR_r13, fdd_UplinkSubframeBitmapBR_r13!\n",
|
||||||
|
RC.config_file_name, i);
|
||||||
|
|
||||||
|
}
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).si_WindowLength_BR_r13[j] = si_WindowLength_BR_r13;
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).si_RepetitionPattern_r13[j] = si_RepetitionPattern_r13;
|
||||||
|
if (!strcmp(fdd_DownlinkOrTddSubframeBitmapBR_r13, "subframePattern40-r13"))
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = FALSE;
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_r13[j] = TRUE;
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).fdd_DownlinkOrTddSubframeBitmapBR_val_r13[j] = fdd_DownlinkOrTddSubframeBitmapBR_val_r13;
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).fdd_UplinkSubframeBitmapBR_r13[j] = fdd_UplinkSubframeBitmapBR_r13;
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = si_HoppingConfigCommon_r13;
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).startSymbolBR_r13[j] = startSymbolBR_r13;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_Q_QUALMINRSRQ_CE, &si_ValidityTime_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = si_ValidityTime_r13;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = FALSE;
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_FREQHOPPINGPARAMETERSDL, &freqHoppingParametersDL_r13) && !strcmp(freqHoppingParametersDL_r13, "ENABLE"))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).freqHoppingParametersDL_r13[j] = TRUE;
|
||||||
|
if (!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB, &interval_DLHoppingConfigCommonModeA_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB_VAL, &interval_DLHoppingConfigCommonModeA_r13_val) ||
|
||||||
|
!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB, &interval_DLHoppingConfigCommonModeB_r13) ||
|
||||||
|
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_INTERVAL_DLHOPPINGCONFIGCOMMONMODEB_VAL, &interval_DLHoppingConfigCommonModeB_r13_val))
|
||||||
|
{
|
||||||
|
AssertFatal(0,
|
||||||
|
"Failed to parse eNB configuration file %s, enb %d si_WindowLength_BR_r13, si_RepetitionPattern_r13, fdd_DownlinkOrTddSubframeBitmapBR_r13, fdd_UplinkSubframeBitmapBR_r13!\n",
|
||||||
|
RC.config_file_name, i);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!strcmp(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] = interval_DLHoppingConfigCommonModeA_r13_val;
|
||||||
|
|
||||||
|
if (!strcmp(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] = interval_DLHoppingConfigCommonModeB_r13_val;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPINGNB, &mpdcch_pdsch_HoppingNB_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = mpdcch_pdsch_HoppingNB_r13;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingNB_r13[j] = NULL;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPINGOFFSET, &mpdcch_pdsch_HoppingOffset_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = mpdcch_pdsch_HoppingOffset_r13;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_pdsch_HoppingOffset_r13[j] = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).freqHoppingParametersDL_r13[j] = FALSE;
|
||||||
|
|
||||||
|
/////SIB2 Parameters
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PREAMBLETRANSMAX_CE_R13, &preambleTransMax_CE_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).preambleTransMax_CE_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).preambleTransMax_CE_r13[j] = preambleTransMax_CE_r13;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).preambleTransMax_CE_r13[j] = NULL;
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_PRACH_CONFIGCOMMON_V1310, &prach_ConfigCommon_v1310) && !strcmp(prach_ConfigCommon_v1310, "ENABLE"))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).prach_ConfigCommon_v1310[j] = TRUE;
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_MPDCCH_STARTSF_CSS_RA_R13, &mpdcch_startSF_CSS_RA_r13))
|
||||||
|
{
|
||||||
|
if (!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_MPDCCH_STARTSF_CSS_RA_R13_VAL, &mpdcch_startSF_CSS_RA_r13_val))
|
||||||
|
{
|
||||||
|
AssertFatal(0,
|
||||||
|
"Failed to parse eNB configuration file %s, enb %d mpdcch_startSF_CSS_RA_r13_val!\n",
|
||||||
|
RC.config_file_name, i);
|
||||||
|
|
||||||
|
}
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_startSF_CSS_RA_r13[j] = calloc(1, sizeof(BOOLEAN_t));
|
||||||
|
if (!strcmp(mpdcch_startSF_CSS_RA_r13, "tdd-r13"))
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).mpdcch_startSF_CSS_RA_r13[j] = FALSE;
|
||||||
|
else
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).mpdcch_startSF_CSS_RA_r13[j] = TRUE;
|
||||||
|
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_startSF_CSS_RA_r13_val[j] = mpdcch_startSF_CSS_RA_r13_val;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).mpdcch_startSF_CSS_RA_r13[j] = NULL;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PRACH_HOPPINGOFFSET_R13, &prach_HoppingOffset_r13))
|
||||||
|
{
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).prach_HoppingOffset_r13[j] = calloc(1, sizeof(long));
|
||||||
|
*RRC_CONFIGURATION_REQ(msg_p).prach_HoppingOffset_r13[j] = prach_HoppingOffset_r13;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).prach_HoppingOffset_r13[j] = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).prach_ConfigCommon_v1310[j] = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
RRC_CONFIGURATION_REQ(msg_p).schedulingInfoSIB1_BR_r13[j] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2540,9 +2871,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (srb1_timer_poll_retransmit <= 250) {
|
if (srb1_timer_poll_retransmit <= 250) {
|
||||||
rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 5) / 5;
|
rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 5) / 5;
|
||||||
} else if (srb1_timer_poll_retransmit <= 500) {
|
}
|
||||||
|
else if (srb1_timer_poll_retransmit <= 500) {
|
||||||
rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 300) / 50 + 50;
|
rrc->srb1_timer_poll_retransmit = (srb1_timer_poll_retransmit - 300) / 50 + 50;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_poll_retransmit %u!\n",
|
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_poll_retransmit %u!\n",
|
||||||
RC.config_file_name, i, srb1_timer_poll_retransmit);
|
RC.config_file_name, i, srb1_timer_poll_retransmit);
|
||||||
@@ -2550,9 +2883,11 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
|
|
||||||
if (srb1_timer_status_prohibit <= 250) {
|
if (srb1_timer_status_prohibit <= 250) {
|
||||||
rrc->srb1_timer_status_prohibit = srb1_timer_status_prohibit / 5;
|
rrc->srb1_timer_status_prohibit = srb1_timer_status_prohibit / 5;
|
||||||
} else if ((srb1_timer_poll_retransmit >= 300) && (srb1_timer_poll_retransmit <= 500)) {
|
}
|
||||||
|
else if ((srb1_timer_poll_retransmit >= 300) && (srb1_timer_poll_retransmit <= 500)) {
|
||||||
rrc->srb1_timer_status_prohibit = (srb1_timer_status_prohibit - 300) / 50 + 51;
|
rrc->srb1_timer_status_prohibit = (srb1_timer_status_prohibit - 300) / 50 + 51;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
AssertFatal(0,
|
AssertFatal(0,
|
||||||
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_status_prohibit %u!\n",
|
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_status_prohibit %u!\n",
|
||||||
RC.config_file_name, i, srb1_timer_status_prohibit);
|
RC.config_file_name, i, srb1_timer_status_prohibit);
|
||||||
@@ -2689,7 +3024,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
RC.config_file_name, i, srb1_timer_reordering);
|
RC.config_file_name, i, srb1_timer_reordering);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rrc->srb1_timer_poll_retransmit = T_PollRetransmit_ms80;
|
rrc->srb1_timer_poll_retransmit = T_PollRetransmit_ms80;
|
||||||
rrc->srb1_timer_reordering = T_Reordering_ms35;
|
rrc->srb1_timer_reordering = T_Reordering_ms35;
|
||||||
rrc->srb1_timer_status_prohibit = T_StatusProhibit_ms0;
|
rrc->srb1_timer_status_prohibit = T_StatusProhibit_ms0;
|
||||||
|
|||||||
+1309
-164
File diff suppressed because it is too large
Load Diff
@@ -67,7 +67,7 @@ uint8_t get_adjacent_cell_mod_id(uint16_t phyCellId);
|
|||||||
@param phich_duration PHICH duration parameter
|
@param phich_duration PHICH duration parameter
|
||||||
@param frame radio frame number
|
@param frame radio frame number
|
||||||
@return size of encoded bit stream in bytes*/
|
@return size of encoded bit stream in bytes*/
|
||||||
uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich_Resource, uint32_t phich_duration, uint32_t frame);
|
uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich_Resource, uint32_t phich_duration, uint32_t frame, uint32_t schedulingInfoSIB1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Generate configuration for SIB1 (eNB).
|
\brief Generate configuration for SIB1 (eNB).
|
||||||
|
|||||||
@@ -155,9 +155,10 @@ init_SI(
|
|||||||
#ifdef ENABLE_ITTI
|
#ifdef ENABLE_ITTI
|
||||||
configuration->N_RB_DL[CC_id],
|
configuration->N_RB_DL[CC_id],
|
||||||
configuration->phich_resource[CC_id],
|
configuration->phich_resource[CC_id],
|
||||||
configuration->phich_duration[CC_id]
|
configuration->phich_duration[CC_id],
|
||||||
|
configuration->schedulingInfoSIB1_BR_r13[CC_id]
|
||||||
#else
|
#else
|
||||||
50,0,0
|
50, 0, 0, 1
|
||||||
#endif
|
#endif
|
||||||
,0);
|
,0);
|
||||||
|
|
||||||
@@ -3731,6 +3732,7 @@ rrc_eNB_generate_RRCConnectionSetup(
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
|
|
||||||
|
bool is_mtc = false;
|
||||||
LogicalChannelConfig_t *SRB1_logicalChannelConfig; //,*SRB2_logicalChannelConfig;
|
LogicalChannelConfig_t *SRB1_logicalChannelConfig; //,*SRB2_logicalChannelConfig;
|
||||||
SRB_ToAddModList_t **SRB_configList;
|
SRB_ToAddModList_t **SRB_configList;
|
||||||
SRB_ToAddMod_t *SRB1_config;
|
SRB_ToAddMod_t *SRB1_config;
|
||||||
@@ -3740,15 +3742,26 @@ rrc_eNB_generate_RRCConnectionSetup(
|
|||||||
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
||||||
|
|
||||||
SRB_configList = &ue_context_pP->ue_context.SRB_configList;
|
SRB_configList = &ue_context_pP->ue_context.SRB_configList;
|
||||||
|
if (is_mtc) {
|
||||||
|
do_RRCConnectionSetup_BR(ctxt_pP,
|
||||||
|
ue_context_pP,
|
||||||
|
CC_id,
|
||||||
|
(uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
|
||||||
|
(uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
|
||||||
|
rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
|
||||||
|
SRB_configList,
|
||||||
|
&ue_context_pP->ue_context.physicalConfigDedicated);
|
||||||
|
} else {
|
||||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
|
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size =
|
||||||
do_RRCConnectionSetup(ctxt_pP,
|
do_RRCConnectionSetup(ctxt_pP,
|
||||||
ue_context_pP,
|
ue_context_pP,
|
||||||
CC_id,
|
CC_id,
|
||||||
(uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
|
(uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload,
|
||||||
(uint8_t) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
|
(uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB, //at this point we do not have the UE capability information, so it can only be TM1 or TM2
|
||||||
rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
|
rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
|
||||||
SRB_configList,
|
SRB_configList,
|
||||||
&ue_context_pP->ue_context.physicalConfigDedicated);
|
&ue_context_pP->ue_context.physicalConfigDedicated);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection Setup\n");
|
LOG_F(RRC,"[MSG] RRC Connection Setup\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user