maintain NR configuration

This commit is contained in:
WEI-TAI CHEN
2018-05-03 10:48:52 -07:00
parent fa21ee4548
commit fa42fa81eb
13 changed files with 1154 additions and 13470 deletions
+11 -13
View File
@@ -32,21 +32,19 @@
#ifndef __NRRRC_PARAMSVALUES__H__
#define __NRRRC_PARAMSVALUES__H__
/* cell configuration section name */
#define GNB_CONFIG_STRING_GNB_LIST "gNBs"
#define GNB_CONFIG_STRING_GNB_LIST "gNBs"
/* component carriers configuration section name */
#define GNB_CONFIG_STRING_COMPONENT_CARRIERS "component_carriers"
#define GNB_CONFIG_STRING_COMPONENT_CARRIERS "component_carriers"
#define GNB_CONFIG_STRING_FRAME_TYPE "frame_type"
#define GNB_CONFIG_STRING_TDD_CONFIG "tdd_config"
#define GNB_CONFIG_STRING_TDD_CONFIG_S "tdd_config_s"
#define GNB_CONFIG_STRING_PREFIX_TYPE "prefix_type"
#define GNB_CONFIG_STRING_PREFIX_TYPE_UL "prefix_type_UL"
#define GNB_CONFIG_STRING_EUTRA_BAND "eutra_band"
#define GNB_CONFIG_STRING_DOWNLINK_FREQUENCY "downlink_frequency"
#define GNB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET "uplink_frequency_offset"
#define GNB_CONFIG_STRING_NID_CELL "Nid_cell"
#define GNB_CONFIG_STRING_N_RB_DL "N_RB_DL"
#define GNB_CONFIG_STRING_CELL_MBSFN "Nid_cell_mbsfn"
#define GNB_CONFIG_STRING_FRAME_TYPE "frame_type"
#define GNB_CONFIG_STRING_DL_PREFIX_TYPE "DL_prefix_type"
#define GNB_CONFIG_STRING_UL_PREFIX_TYPE "UL_prefix_type"
#define GNB_CONFIG_STRING_EUTRA_BAND "eutra_band"
#define GNB_CONFIG_STRING_DOWNLINK_FREQUENCY "downlink_frequency"
#define GNB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET "uplink_frequency_offset"
#define GNB_CONFIG_STRING_NID_CELL "Nid_cell"
#define GNB_CONFIG_STRING_N_RB_DL "N_RB_DL"
#define GNB_CONFIG_STRING_CELL_MBSFN "Nid_cell_mbsfn"
#define FRAMETYPE_OKVALUES {"FDD","TDD"}
+78 -78
View File
@@ -55,7 +55,7 @@ extern RAN_CONTEXT_t RC;
/*------------------------------------------------------------------------------*/
# if defined(ENABLE_USE_MME)
# define ENB_REGISTER_RETRY_DELAY 10
# define GNB_REGISTER_RETRY_DELAY 10
# endif
/*------------------------------------------------------------------------------*/
@@ -84,72 +84,72 @@ static void configure_phy(module_id_t enb_id, const Enb_properties_array_t* enb_
*/
/*------------------------------------------------------------------------------*/
static void configure_rrc(uint32_t enb_id)
static void configure_nrrrc(uint32_t gnb_id)
{
MessageDef *msg_p = NULL;
// int CC_id;
msg_p = itti_alloc_new_message (TASK_ENB_APP, RRC_CONFIGURATION_REQ);
msg_p = itti_alloc_new_message (TASK_GNB_APP, NRRRC_CONFIGURATION_REQ);
if (RC.rrc[enb_id]) {
RCconfig_NRRRC(msg_p,enb_id, RC.rrc[enb_id]);
if (RC.nr_rrc[gnb_id]) {
RCconfig_NRRRC(msg_p,gnb_id, RC.nr_rrc[gnb_id]);
LOG_I(ENB_APP,"Sending configuration message to RRC task\n");
itti_send_msg_to_task (TASK_RRC_GNB, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
LOG_I(GNB_APP,"Sending configuration message to NR_RRC task\n");
itti_send_msg_to_task (TASK_RRC_GNB, GNB_MODULE_ID_TO_INSTANCE(gnb_id), msg_p);
}
else AssertFatal(0,"RRC context for eNB %d not allocated\n",enb_id);
else AssertFatal(0,"NRRRC context for gNB %d not allocated\n",gnb_id);
}
/*------------------------------------------------------------------------------*/
# if defined(ENABLE_USE_MME)
static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//, const Enb_properties_array_t *enb_properties)
static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//, const Enb_properties_array_t *enb_properties)
{
uint32_t enb_id;
uint32_t gnb_id;
MessageDef *msg_p;
uint32_t register_enb_pending = 0;
uint32_t register_gnb_pending = 0;
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
for (gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) {
{
s1ap_register_enb_req_t *s1ap_register_eNB;
s1ap_register_gnb_req_t *s1ap_register_gNB;
/* note: there is an implicit relationship between the data structure and the message name */
msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
msg_p = itti_alloc_new_message (TASK_GNB_APP, S1AP_REGISTER_GNB_REQ);
RCconfig_S1(msg_p, enb_id);
RCconfig_S1(msg_p, gnb_id);
if (enb_id == 0) RCconfig_gtpu();
if (gnb_id == 0) RCconfig_gtpu();
s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
LOG_I(ENB_APP,"default drx %d\n",s1ap_register_eNB->default_drx);
s1ap_register_gNB = &S1AP_REGISTER_GNB_REQ(msg_p);
LOG_I(GNB_APP,"default drx %d\n",s1ap_register_gNB->default_drx);
LOG_I(ENB_APP,"[eNB %d] eNB_app_register for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
LOG_I(GNB_APP,"[gNB %d] gNB_app_register for instance %d\n", gnb_id, GNB_MODULE_ID_TO_INSTANCE(gnb_id));
itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
itti_send_msg_to_task (TASK_S1AP, GNB_MODULE_ID_TO_INSTANCE(gnb_id), msg_p);
register_enb_pending++;
register_gnb_pending++;
}
}
return register_enb_pending;
return register_gnb_pending;
}
# endif
#endif
/*------------------------------------------------------------------------------*/
void *eNB_app_task(void *args_p)
void *gNB_app_task(void *args_p)
{
#if defined(ENABLE_ITTI)
uint32_t enb_nb = RC.nb_inst;
uint32_t enb_id_start = 0;
uint32_t enb_id_end = enb_id_start + enb_nb;
uint32_t gnb_nb = RC.nb_nr_inst;
uint32_t gnb_id_start = 0;
uint32_t gnb_id_end = gnb_id_start + gnb_nb;
# if defined(ENABLE_USE_MME)
uint32_t register_enb_pending;
uint32_t registered_enb;
long enb_register_retry_timer_id;
uint32_t register_gnb_pending;
uint32_t registered_gnb;
long gnb_register_retry_timer_id;
# endif
uint32_t enb_id;
uint32_t gnb_id;
MessageDef *msg_p = NULL;
const char *msg_name = NULL;
instance_t instance;
@@ -157,99 +157,99 @@ void *eNB_app_task(void *args_p)
/* for no gcc warnings */
(void)instance;
itti_mark_task_ready (TASK_ENB_APP);
itti_mark_task_ready (TASK_GNB_APP);
LOG_I(PHY, "%s() Task ready initialise structures\n", __FUNCTION__);
RCconfig_L1();
//RCconfig_L1();
RCconfig_macrlc();
//RCconfig_macrlc();
LOG_I(PHY, "%s() RC.nb_L1_inst:%d\n", __FUNCTION__, RC.nb_L1_inst);
if (RC.nb_L1_inst>0) AssertFatal(l1_north_init_eNB()==0,"could not initialize L1 north interface\n");
if (RC.nb_L1_inst>0) AssertFatal(l1_north_init_gNB()==0,"could not initialize L1 north interface\n");
AssertFatal (enb_nb <= RC.nb_inst,
"Number of eNB is greater than eNB defined in configuration file (%d/%d)!",
enb_nb, RC.nb_inst);
AssertFatal (gnb_nb <= RC.nb_nr_inst,
"Number of gNB is greater than gNB defined in configuration file (%d/%d)!",
gnb_nb, RC.nb_nr_inst);
LOG_I(ENB_APP,"Allocating eNB_RRC_INST for %d instances\n",RC.nb_inst);
LOG_I(GNB_APP,"Allocating gNB_RRC_INST for %d instances\n",RC.nb_nr_inst);
RC.rrc = (eNB_RRC_INST **)malloc(RC.nb_inst*sizeof(eNB_RRC_INST *));
LOG_I(PHY, "%s() RC.nb_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_inst, RC.rrc);
RC.rrc = (gNB_RRC_INST **)malloc(RC.nb_nr_inst*sizeof(gNB_RRC_INST *));
LOG_I(PHY, "%s() RC.nb_nr_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_nr_inst, RC.rrc);
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
RC.rrc[enb_id] = (eNB_RRC_INST*)malloc(sizeof(eNB_RRC_INST));
LOG_I(PHY, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, enb_id, RC.rrc[enb_id], enb_id+1, enb_id_end);
memset((void *)RC.rrc[enb_id],0,sizeof(eNB_RRC_INST));
configure_rrc(enb_id);
for (gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) {
RC.rrc[gnb_id] = (gNB_RRC_INST*)malloc(sizeof(gNB_RRC_INST));
LOG_I(PHY, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, gnb_id, RC.rrc[gnb_id], gnb_id+1, gnb_id_end);
memset((void *)RC.rrc[gnb_id],0,sizeof(gNB_RRC_INST));
configure_nrrrc(gnb_id);
}
# if defined(ENABLE_USE_MME)
/* Try to register each eNB */
registered_enb = 0;
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
/* Try to register each gNB */
registered_gnb = 0;
register_gnb_pending = gNB_app_register (gnb_id_start, gnb_id_end);//, gnb_properties_p);
# else
/* Start L2L1 task */
msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
msg_p = itti_alloc_new_message(TASK_GNB_APP, INITIALIZE_MESSAGE);
itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
# endif
do {
// Wait for a message
itti_receive_msg (TASK_ENB_APP, &msg_p);
itti_receive_msg (TASK_GNB_APP, &msg_p);
msg_name = ITTI_MSG_NAME (msg_p);
instance = ITTI_MSG_INSTANCE (msg_p);
switch (ITTI_MSG_ID(msg_p)) {
case TERMINATE_MESSAGE:
LOG_W(ENB_APP, " *** Exiting ENB_APP thread\n");
LOG_W(GNB_APP, " *** Exiting GNB_APP thread\n");
itti_exit_task ();
break;
case MESSAGE_TEST:
LOG_I(ENB_APP, "Received %s\n", ITTI_MSG_NAME(msg_p));
LOG_I(GNB_APP, "Received %s\n", ITTI_MSG_NAME(msg_p));
break;
# if defined(ENABLE_USE_MME)
case S1AP_REGISTER_ENB_CNF:
LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
LOG_I(GNB_APP, "[gNB %d] Received %s: associated MME %d\n", instance, msg_name,
S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
DevAssert(register_enb_pending > 0);
register_enb_pending--;
DevAssert(register_gnb_pending > 0);
register_gnb_pending--;
/* Check if at least eNB is registered with one MME */
/* Check if at least gNB is registered with one MME */
if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
registered_enb++;
registered_gnb++;
}
/* Check if all register eNB requests have been processed */
if (register_enb_pending == 0) {
if (registered_enb == enb_nb) {
/* If all eNB are registered, start L2L1 task */
/* Check if all register gNB requests have been processed */
if (register_gnb_pending == 0) {
if (registered_gnb == gnb_nb) {
/* If all gNB are registered, start L2L1 task */
MessageDef *msg_init_p;
msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
msg_init_p = itti_alloc_new_message (TASK_GNB_APP, INITIALIZE_MESSAGE);
itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
} else {
uint32_t not_associated = enb_nb - registered_enb;
uint32_t not_associated = gnb_nb - registered_gnb;
LOG_W(ENB_APP, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
LOG_W(GNB_APP, " %d gNB %s not associated with a MME, retrying registration in %d seconds ...\n",
not_associated, not_associated > 1 ? "are" : "is", GNB_REGISTER_RETRY_DELAY);
/* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
NULL, &enb_register_retry_timer_id) < 0) {
LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
/* Restart the gNB registration process in GNB_REGISTER_RETRY_DELAY seconds */
if (timer_setup (GNB_REGISTER_RETRY_DELAY, 0, TASK_GNB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
NULL, &gnb_register_retry_timer_id) < 0) {
LOG_E(GNB_APP, " Can not start gNB register retry timer, use \"sleep\" instead!\n");
sleep(ENB_REGISTER_RETRY_DELAY);
sleep(GNB_REGISTER_RETRY_DELAY);
/* Restart the registration process */
registered_enb = 0;
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
registered_gnb = 0;
register_gnb_pending = gNB_app_register (gnb_id_start, gnb_id_end);//, gnb_properties_p);
}
}
}
@@ -257,26 +257,26 @@ void *eNB_app_task(void *args_p)
break;
case S1AP_DEREGISTERED_ENB_IND:
LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
LOG_W(GNB_APP, "[gNB %d] Received %s: associated MME %d\n", instance, msg_name,
S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
/* TODO handle recovering of registration */
break;
case TIMER_HAS_EXPIRED:
LOG_I(ENB_APP, " Received %s: timer_id %ld\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
LOG_I(GNB_APP, " Received %s: timer_id %ld\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
if (TIMER_HAS_EXPIRED (msg_p).timer_id == gnb_register_retry_timer_id) {
/* Restart the registration process */
registered_enb = 0;
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
registered_gnb = 0;
register_gnb_pending = gNB_app_register(gnb_id_start, gnb_id_end);//, gnb_properties_p);
}
break;
# endif
default:
LOG_E(ENB_APP, "Received unexpected message %s\n", msg_name);
LOG_E(GNB_APP, "Received unexpected message %s\n", msg_name);
break;
}
+231 -163
View File
@@ -32,184 +32,193 @@
int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
int num_gnbs = 0;
int num_component_carriers = 0;
int j,k = 0;
int32_t gnb_id = 0;
int num_gnbs = 0;
int num_component_carriers = 0;
int j,k = 0;
int32_t gnb_id = 0;
int nb_cc = 0;
char* frame_type = NULL;
char* prefix_type = NULL;
int nb_cc = 0;
char* frame_type = NULL;
char* DL_prefix_type = NULL;
char* UL_prefix_type = NULL;
int32_t eutra_band = 0;
long long int downlink_frequency = 0;
int32_t uplink_frequency_offset = 0;
int32_t Nid_cell = 0;
// int32_t Nid_cell_mbsfn = 0;
int32_t N_RB_DL = 0;
int32_t nb_antenna_ports = 0;
int32_t eutra_band = 0;
long long int downlink_frequency = 0;
int32_t uplink_frequency_offset = 0;
int32_t Nid_cell = 0;
int32_t N_RB_DL = 0;
int32_t nb_antenna_ports = 0;
///NR
//MIB
int32_t MIB_subCarrierSpacingCommon = 0;
int32_t MIB_dmrs_TypeA_Position = 0;
uint32_t pdcch_ConfigSIB1 = 0;
//SIB1
int32_t SIB1_frequencyOffsetSSB = 0;
int32_t SIB1_ssb_PeriodicityServingCell = 0;
int32_t SIB1_ss_PBCH_BlockPower = 0;
//NR FrequencyInfoDL
long absoluteFrequencySSB = 0;
uint32_t ssb_SubcarrierOffset = 0;
long DL_FreqBandIndicatorNR = 0;
long DL_absoluteFrequencyPointA = 0;
int32_t absoluteFrequencySSB = 0;
uint32_t ssb_SubcarrierOffset = 0;
int32_t DL_FreqBandIndicatorNR = 0;
int32_t DL_absoluteFrequencyPointA = 0;
//NR DL SCS-SpecificCarrier
uint32_t DL_offsetToCarrier = 0;
long DL_SubcarrierSpacing = 0;
long DL_SCS_SpecificCarrier_k0 = 0;
uint32_t DL_carrierBandwidth = 0;
uint32_t DL_offsetToCarrier = 0;
int32_t DL_SubcarrierSpacing = 0;
int32_t DL_SCS_SpecificCarrier_k0 = 0;
uint32_t DL_carrierBandwidth = 0;
// NR BWP-DownlinkCommon
uint32_t DL_locationAndBandwidth = 0;
//NR_prefix_type_t DL_prefix_type[MAX_NUM_CCs];
uint32_t DL_locationAndBandwidth = 0;
//NR FrequencyInfoUL
long UL_FreqBandIndicatorNR = 0;
long UL_absoluteFrequencyPointA = 0;
long FrequencyInfoUL_p_Max = 0;
long frequencyShift7p5khz = 0;
int32_t UL_FreqBandIndicatorNR = 0;
int32_t UL_absoluteFrequencyPointA = 0;
int32_t FrequencyInfoUL_p_Max = 0;
int32_t frequencyShift7p5khz = 0;
//NR UL SCS-SpecificCarrier
uint32_t UL_offsetToCarrier = 0;
long UL_SubcarrierSpacing = 0;
long UL_SCS_SpecificCarrier_k0 = 0;
uint32_t UL_carrierBandwidth = 0;
uint32_t UL_offsetToCarrier = 0;
int32_t UL_SubcarrierSpacing = 0;
int32_t UL_SCS_SpecificCarrier_k0 = 0;
uint32_t UL_carrierBandwidth = 0;
// NR BWP-UplinkCommon
uint32_t UL_locationAndBandwidth = 0;
//NR_prefix_type_t UL_prefix_type;
uint32_t UL_locationAndBandwidth = 0;
long ssb_periodicityServingCell = 0;
long dmrs_TypeA_Position = 0;
long NIA_SubcarrierSpacing = 0;
long ss_PBCH_BlockPower = 0;
int32_t subCarrierSpacingCommon = 0;
uint32_t pdcch_ConfigSIB1 = 0;
int32_t frequencyOffsetSSB = 0;
int32_t ServingCellConfigCommon_ssb_periodicityServingCell = 0;
int32_t ServingCellConfigCommon_dmrs_TypeA_Position = 0;
int32_t NIA_SubcarrierSpacing = 0;
int32_t ServingCellConfigCommon_ss_PBCH_BlockPower = 0;
//NR TDD-UL-DL-ConfigCommon
long referenceSubcarrierSpacing = 0;
long dl_UL_TransmissionPeriodicity = 0;
long nrofDownlinkSlots = 0;
long nrofDownlinkSymbols = 0;
long nrofUplinkSlots = 0;
long nrofUplinkSymbols = 0;
int32_t referenceSubcarrierSpacing = 0;
int32_t dl_UL_TransmissionPeriodicity = 0;
int32_t nrofDownlinkSlots = 0;
int32_t nrofDownlinkSymbols = 0;
int32_t nrofUplinkSlots = 0;
int32_t nrofUplinkSymbols = 0;
//NR RACH-ConfigCommon
long rach_totalNumberOfRA_Preambles = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one = 0;
long rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen = 0;
char* rach_groupBconfigured = NULL;
long rach_ra_Msg3SizeGroupA = 0;
long rach_messagePowerOffsetGroupB = 0;
long rach_numberOfRA_PreamblesGroupA = 0;
long rach_ra_ContentionResolutionTimer = 0;
long rsrp_ThresholdSSB = 0;
long rsrp_ThresholdSSB_SUL = 0;
long prach_RootSequenceIndex_choice = 0;
uint32_t prach_RootSequenceIndex_l839 = 0;
uint32_t prach_RootSequenceIndex_l139 = 0;
long prach_msg1_SubcarrierSpacing = 0;
long restrictedSetConfig = 0;
long msg3_transformPrecoding = 0;
int32_t rach_totalNumberOfRA_Preambles = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one = 0;
int32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight = 0;
uint32_t rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen = 0;
char* rach_groupBconfigured = NULL;
int32_t rach_ra_Msg3SizeGroupA = 0;
int32_t rach_messagePowerOffsetGroupB = 0;
int32_t rach_numberOfRA_PreamblesGroupA = 0;
int32_t rach_ra_ContentionResolutionTimer = 0;
int32_t rsrp_ThresholdSSB = 0;
int32_t rsrp_ThresholdSSB_SUL = 0;
int32_t prach_RootSequenceIndex_choice = 0;
uint32_t prach_RootSequenceIndex_l839 = 0;
uint32_t prach_RootSequenceIndex_l139 = 0;
int32_t prach_msg1_SubcarrierSpacing = 0;
int32_t restrictedSetConfig = 0;
int32_t msg3_transformPrecoding = 0;
//ssb-perRACH-OccasionAndCB-PreamblesPerSSB not sure
//NR RACH-ConfigGeneric
long prach_ConfigurationIndex = 0;
long prach_msg1_FDM = 0;
long prach_msg1_FrequencyStart = 0;
long zeroCorrelationZoneConfig = 0;
long preambleReceivedTargetPower = 0;
long preambleTransMax = 0;
long powerRampingStep = 0;
long ra_ResponseWindow = 0;
int32_t prach_ConfigurationIndex = 0;
int32_t prach_msg1_FDM = 0;
int32_t prach_msg1_FrequencyStart = 0;
int32_t zeroCorrelationZoneConfig = 0;
int32_t preambleReceivedTargetPower = 0;
int32_t preambleTransMax = 0;
int32_t powerRampingStep = 0;
int32_t ra_ResponseWindow = 0;
//PUSCH-ConfigCommon
char* groupHoppingEnabledTransformPrecoding = NULL;
long msg3_DeltaPreamble = 0;
long p0_NominalWithGrant = 0;
char* groupHoppingEnabledTransformPrecoding = NULL;
int32_t msg3_DeltaPreamble = 0;
int32_t p0_NominalWithGrant = 0;
///PUSCH-TimeDomainResourceAllocation
long PUSCH_TimeDomainResourceAllocation_k2 = 0;
long PUSCH_TimeDomainResourceAllocation_mappingType = 0;
int32_t PUSCH_TimeDomainResourceAllocation_k2 = 0;
int32_t PUSCH_TimeDomainResourceAllocation_mappingType = 0;
//PUCCH-ConfigCommon
long pucch_GroupHopping = 0;
long p0_nominal = 0;
int32_t pucch_GroupHopping = 0;
int32_t p0_nominal = 0;
//PDSCH-ConfigCOmmon
//PDSCH-TimeDomainResourceAllocation
long PDSCH_TimeDomainResourceAllocation_k0 = 0;
long PDSCH_TimeDomainResourceAllocation_mappingType = 0;
int32_t PDSCH_TimeDomainResourceAllocation_k0 = 0;
int32_t PDSCH_TimeDomainResourceAllocation_mappingType = 0;
//RateMatchPattern is used to configure one rate matching pattern for PDSCH
long rateMatchPatternId = 0;
long RateMatchPattern_patternType = 0;
long symbolsInResourceBlock = 0;
long periodicityAndPattern = 0;
long RateMatchPattern_controlResourceSet = 0;
long RateMatchPattern_subcarrierSpacing = 0;
long RateMatchPattern_mode = 0;
int32_t rateMatchPatternId = 0;
int32_t RateMatchPattern_patternType = 0;
int32_t symbolsInResourceBlock = 0;
int32_t periodicityAndPattern = 0;
int32_t RateMatchPattern_controlResourceSet = 0;
int32_t RateMatchPattern_subcarrierSpacing = 0;
int32_t RateMatchPattern_mode = 0;
//PDCCH-ConfigCommon
long searchSpaceSIB1 = 0;
long searchSpaceOtherSystemInformation = 0;
long pagingSearchSpace = 0;
long ra_SearchSpace = 0;
long rach_ra_ControlResourceSet = 0;
int32_t searchSpaceSIB1 = 0;
int32_t searchSpaceOtherSystemInformation = 0;
int32_t pagingSearchSpace = 0;
int32_t ra_SearchSpace = 0;
int32_t rach_ra_ControlResourceSet = 0;
//NR PDCCH-ConfigCommon commonControlResourcesSets
long PDCCH_common_controlResourceSetId = 0;
long PDCCH_common_ControlResourceSet_duration = 0;
long PDCCH_cce_REG_MappingType = 0;
long PDCCH_reg_BundleSize = 0;
long PDCCH_interleaverSize = 0;
long PDCCH_shiftIndex = 0;
long PDCCH_precoderGranularity = 0;
char* tci_PresentInDCI = NULL;
int32_t PDCCH_common_controlResourceSetId = 0;
int32_t PDCCH_common_ControlResourceSet_duration = 0;
int32_t PDCCH_cce_REG_MappingType = 0;
int32_t PDCCH_reg_BundleSize = 0;
int32_t PDCCH_interleaverSize = 0;
int32_t PDCCH_shiftIndex = 0;
int32_t PDCCH_precoderGranularity = 0;
char* tci_PresentInDCI = NULL;
//NR PDCCH-ConfigCommon commonSearchSpaces
long SearchSpaceId = 0;
long commonSearchSpaces_controlResourceSetId = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_choice = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl1 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl2 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl4 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl5 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl8 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl10 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl16 = 0;
long SearchSpace_monitoringSlotPeriodicityAndOffset_sl20 = 0;
long SearchSpace_nrofCandidates_aggregationLevel1 = 0;
long SearchSpace_nrofCandidates_aggregationLevel2 = 0;
long SearchSpace_nrofCandidates_aggregationLevel4 = 0;
long SearchSpace_nrofCandidates_aggregationLevel8 = 0;
long SearchSpace_nrofCandidates_aggregationLevel16 = 0;
long SearchSpace_searchSpaceType = 0;
long Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 = 0;
long Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 = 0;
long Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 = 0;
long Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 = 0;
long Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 = 0;
long Common_dci_Format2_3_monitoringPeriodicity = 0;
long Common_dci_Format2_3_nrofPDCCH_Candidates = 0;
long ue_Specific__dci_Formats = 0;
int32_t SearchSpaceId = 0;
int32_t commonSearchSpaces_controlResourceSetId = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_choice = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl1 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl2 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl4 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl5 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl8 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl10 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl16 = 0;
int32_t SearchSpace_monitoringSlotPeriodicityAndOffset_sl20 = 0;
int32_t SearchSpace_nrofCandidates_aggregationLevel1 = 0;
int32_t SearchSpace_nrofCandidates_aggregationLevel2 = 0;
int32_t SearchSpace_nrofCandidates_aggregationLevel4 = 0;
int32_t SearchSpace_nrofCandidates_aggregationLevel8 = 0;
int32_t SearchSpace_nrofCandidates_aggregationLevel16 = 0;
int32_t SearchSpace_searchSpaceType = 0;
int32_t Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 = 0;
int32_t Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 = 0;
int32_t Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 = 0;
int32_t Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 = 0;
int32_t Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 = 0;
int32_t Common_dci_Format2_3_monitoringPeriodicity = 0;
int32_t Common_dci_Format2_3_nrofPDCCH_Candidates = 0;
int32_t ue_Specific__dci_Formats = 0;
int32_t my_int;
int32_t my_int;
paramdef_t GNBSParams[] = GNBSPARAMS_DESC;
////////// Identification parameters
paramdef_t GNBParams[] = GNBPARAMS_DESC;
paramlist_def_t GNBParamList = {GNB_CONFIG_STRING_GNB_LIST,NULL,0};
////////// Physical parameters
checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
paramdef_t CCsParams[] = CCPARAMS_DESC;
paramlist_def_t CCsParamList = {GNB_CONFIG_STRING_COMPONENT_CARRIERS,NULL,0};
@@ -217,7 +226,7 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
paramdef_t SRB1Params[] = SRB1PARAMS_DESC;
/* get global parameters, defined outside any section in the config file */
config_get( GNBSParams,sizeof(GNBSParams)/sizeof(paramdef_t),NULL);
num_gnbs = GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt;
AssertFatal (i<num_gnbs,"Failed to parse config file no %ith element in %s \n",i, GNB_CONFIG_STRING_ACTIVE_GNBS);
@@ -241,7 +250,7 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
#endif
if (num_gnbs>0) {
// Output a list of all gNBs.
// Output a list of all gNBs. ////////// Identification parameters
config_getlist( &GNBParamList,GNBParams,sizeof(GNBParams)/sizeof(paramdef_t),NULL);
if (GNBParamList.paramarray[i][GNB_GNB_ID_IDX].uptr == NULL) {
@@ -316,18 +325,30 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
// "Failed to parse gNB configuration file %s, gnb %d illegal tdd_config_s %d (should be 0-%d)!",
// RC.config_file_name, i, tdd_config_s, TDD_Config__specialSubframePatterns_ssp8);
if (!prefix_type){
if (!DL_prefix_type){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d define %s: NORMAL,EXTENDED!\n",
RC.config_file_name, i, GNB_CONFIG_STRING_PREFIX_TYPE);
}else if (strcmp(prefix_type, "NORMAL") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = NORMAL;
}else if (strcmp(prefix_type, "EXTENDED") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).prefix_type[j] = EXTENDED;
RC.config_file_name, i, GNB_CONFIG_STRING_DL_PREFIX_TYPE);
}else if (strcmp(DL_prefix_type, "NORMAL") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).DL_prefix_type[j] = NORMAL;
}else if (strcmp(DL_prefix_type, "EXTENDED") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).DL_prefix_type[j] = EXTENDED;
}else {
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for prefix_type choice: NORMAL or EXTENDED !\n",
RC.config_file_name, i, prefix_type);
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for DL_prefix_type choice: NORMAL or EXTENDED !\n",
RC.config_file_name, i, DL_prefix_type);
}
if (!UL_prefix_type){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d define %s: NORMAL,EXTENDED!\n",
RC.config_file_name, i, GNB_CONFIG_STRING_UL_PREFIX_TYPE);
}else if (strcmp(UL_prefix_type, "NORMAL") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).UL_prefix_type[j] = NORMAL;
}else if (strcmp(UL_prefix_type, "EXTENDED") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).UL_prefix_type[j] = EXTENDED;
}else {
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%s\" for UL_prefix_type choice: NORMAL or EXTENDED !\n",
RC.config_file_name, i, UL_prefix_type);
}
NRRRC_CONFIGURATION_REQ (msg_p).eutra_band[j] = eutra_band;
NRRRC_CONFIGURATION_REQ (msg_p).downlink_frequency[j] = (uint32_t) downlink_frequency;
NRRRC_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[j] = (unsigned int) uplink_frequency_offset;
@@ -388,11 +409,57 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
////////////////////////////////////////////////////////////////////////////////
//---------------------------NR--------Configuration--------------------------//
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////MIB///////////////////////////////
NRRRC_CONFIGURATION_REQ (msg_p).MIB_subCarrierSpacingCommon[j] = MIB_subCarrierSpacingCommon;
if ((MIB_subCarrierSpacingCommon !=15) && (MIB_subCarrierSpacingCommon !=30) && (MIB_subCarrierSpacingCommon !=60) && (MIB_subCarrierSpacingCommon !=120)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for MIB_subCarrierSpacingCommon choice: 15,30,60,120 !\n",
RC.config_file_name, i, MIB_subCarrierSpacingCommon);
}
NRRRC_CONFIGURATION_REQ (msg_p).MIB_dmrs_TypeA_Position[j] = MIB_dmrs_TypeA_Position;
if ((MIB_dmrs_TypeA_Position !=2) && (MIB_dmrs_TypeA_Position !=3)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for MIB_dmrs_TypeA_Position choice:2,3 !\n",
RC.config_file_name, i, MIB_dmrs_TypeA_Position);
}
NRRRC_CONFIGURATION_REQ (msg_p).pdcch_ConfigSIB1[j] = pdcch_ConfigSIB1;
if ((pdcch_ConfigSIB1 <0) || (pdcch_ConfigSIB1 > 255)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for pdcch_ConfigSIB1 choice: 0..3279165 !\n",
RC.config_file_name, i, pdcch_ConfigSIB1);
}
////////////////////////////////SIB1//////////////////////////////
if (strcmp(SIB1_frequencyOffsetSSB , "khz-5") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).SIB1_frequencyOffsetSSB[j] = -5;
}else if (strcmp(SIB1_frequencyOffsetSSB , "khz5") == 0) {
NRRRC_CONFIGURATION_REQ (msg_p).SIB1_frequencyOffsetSSB[j] = 5;
}else {
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SIB1_frequencyOffsetSSB !\n",
RC.config_file_name, i, SIB1_frequencyOffsetSSB);
}
NRRRC_CONFIGURATION_REQ (msg_p).SIB1_ssb_PeriodicityServingCell[j] = SIB1_ssb_PeriodicityServingCell;
if ((SIB1_ssb_PeriodicityServingCell !=5) &&
(SIB1_ssb_PeriodicityServingCell !=10) &&
(SIB1_ssb_PeriodicityServingCell !=20) &&
(SIB1_ssb_PeriodicityServingCell !=40) &&
(SIB1_ssb_PeriodicityServingCell !=80) &&
(SIB1_ssb_PeriodicityServingCell !=160)&&){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SIB1_ssb_PeriodicityServingCell choice: 5,10,20,40,80,160 !\n",
RC.config_file_name, i, SIB1_ssb_PeriodicityServingCell);
}
NRRRC_CONFIGURATION_REQ (msg_p).SIB1_ss_PBCH_BlockPower[j] = SIB1_ss_PBCH_BlockPower;
if ((SIB1_ss_PBCH_BlockPower < -60) || (SIB1_ss_PBCH_BlockPower > 50)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for SIB1_ss_PBCH_BlockPower choice: -60..50 !\n",
RC.config_file_name, i, SIB1_ss_PBCH_BlockPower);
}
////////////////////////////////NR FrequencyInfoDL//////////////////////////////
NRRRC_CONFIGURATION_REQ (msg_p).absoluteFrequencySSB[j] = absoluteFrequencySSB;
if ((absoluteFrequencySSB <0) || (absoluteFrequencySSB > 3279165)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for FreqBandIndicatorNR choice: 0..3279165 !\n",
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for absoluteFrequencySSB choice: 0..3279165 !\n",
RC.config_file_name, i, absoluteFrequencySSB);
}
@@ -556,49 +623,50 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
RC.config_file_name, i, UL_locationAndBandwidth);
}
switch (ssb_periodicityServingCell) {
switch (ServingCellConfigCommon_ssb_periodicityServingCell) {
case 5:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms5;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms5;
break;
case 10:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms10;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms10;
break;
case 20:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms20;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms20;
break;
case 40:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms40;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms40;
break;
case 80:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms80;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms80;
break;
case 160:
NRRRC_CONFIGURATION_REQ (msg_p).ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms160;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ssb_periodicityServingCell[j] = ServingCellConfigCommon__ssb_periodicityServingCell_ms160;
break;
default:
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ssb_periodicityServingCell choice: -6,0,6 !\n",
RC.config_file_name, i, ssb_periodicityServingCell);
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ServingCellConfigCommon_ssb_periodicityServingCell choice: -6,0,6 !\n",
RC.config_file_name, i, ServingCellConfigCommon_ssb_periodicityServingCell);
break;
}
switch (dmrs_TypeA_Position) {
switch (ServingCellConfigCommon_dmrs_TypeA_Position) {
case 2:
NRRRC_CONFIGURATION_REQ (msg_p).dmrs_TypeA_Position[j] = ServingCellConfigCommon__dmrs_TypeA_Position_pos2;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_dmrs_TypeA_Position[j] = ServingCellConfigCommon__dmrs_TypeA_Position_pos2;
break;
case 3:
NRRRC_CONFIGURATION_REQ (msg_p).dmrs_TypeA_Position[j] = ServingCellConfigCommon__dmrs_TypeA_Position_pos3;
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_dmrs_TypeA_Position[j] = ServingCellConfigCommon__dmrs_TypeA_Position_pos3;
break;
default:
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for dmrs_TypeA_Position choice: -6,0,6 !\n",
RC.config_file_name, i, dmrs_TypeA_Position);
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ServingCellConfigCommon_dmrs_TypeA_Position choice: -6,0,6 !\n",
RC.config_file_name, i, ServingCellConfigCommon_dmrs_TypeA_Position);
break;
}
@@ -616,10 +684,10 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
RC.config_file_name, i, NIA_SubcarrierSpacing);
}
NRRRC_CONFIGURATION_REQ (msg_p).ss_PBCH_BlockPower[j] = ss_PBCH_BlockPower;
if ((ss_PBCH_BlockPower < -60) || (ss_PBCH_BlockPower > 50)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ss_PBCH_BlockPower choice: 0..11 !\n",
RC.config_file_name, i, ss_PBCH_BlockPower);
NRRRC_CONFIGURATION_REQ (msg_p).ServingCellConfigCommon_ss_PBCH_BlockPower[j] = ServingCellConfigCommon_ss_PBCH_BlockPower;
if ((ServingCellConfigCommon_ss_PBCH_BlockPower < -60) || (ServingCellConfigCommon_ss_PBCH_BlockPower > 50)){
AssertFatal (0,"Failed to parse gNB configuration file %s, gnb %d unknown value \"%d\" for ServingCellConfigCommon_ss_PBCH_BlockPower choice: 0..11 !\n",
RC.config_file_name, i, ServingCellConfigCommon_ss_PBCH_BlockPower);
}
/////////////////////////////////NR TDD-UL-DL-ConfigCommon///////////////////////////
@@ -1937,7 +2005,7 @@ void NRRCConfig(void) {
for (int i=0;i<RC.nb_nr_inst;i++) {
sprintf(aprefix,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,i);
config_getlist( &CCsParamList,NULL,0, aprefix);
RC.nb_CC[i] = CCsParamList.numelt;
RC.nb_CC[i] = CCsParamList.numelt;
}
}
+412 -155
View File
@@ -34,16 +34,16 @@
#include "NRRRC_paramsvalues.h"
#define GNB_CONFIG_STRING_CC_NODE_FUNCTION "node_function"
#define GNB_CONFIG_STRING_CC_NODE_TIMING "node_timing"
#define GNB_CONFIG_STRING_CC_NODE_SYNCH_REF "node_synch_ref"
#define GNB_CONFIG_STRING_CC_NODE_FUNCTION "node_function"
#define GNB_CONFIG_STRING_CC_NODE_TIMING "node_timing"
#define GNB_CONFIG_STRING_CC_NODE_SYNCH_REF "node_synch_ref"
// OTG config per GNB-UE DL
#define GNB_CONF_STRING_OTG_CONFIG "otg_config"
#define GNB_CONF_STRING_OTG_UE_ID "ue_id"
#define GNB_CONF_STRING_OTG_APP_TYPE "app_type"
#define GNB_CONF_STRING_OTG_BG_TRAFFIC "bg_traffic"
#define GNB_CONF_STRING_OTG_CONFIG "otg_config"
#define GNB_CONF_STRING_OTG_UE_ID "ue_id"
#define GNB_CONF_STRING_OTG_APP_TYPE "app_type"
#define GNB_CONF_STRING_OTG_BG_TRAFFIC "bg_traffic"
#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
extern int asn_debug;
@@ -65,10 +65,10 @@ typedef enum {
lastel = 5
} NRRC_config_functions_t;
#define CONFIG_STRING_ACTIVE_RUS "Active_RUs"
#define CONFIG_STRING_ACTIVE_RUS "Active_RUs"
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/* RUs configuration section name */
#define CONFIG_STRING_RU_LIST "RUs"
#define CONFIG_STRING_RU_LIST "RUs"
#define CONFIG_STRING_RU_CONFIG "ru_config"
/* RUs configuration parameters name */
@@ -135,7 +135,7 @@ typedef enum {
{CONFIG_STRING_RU_GNB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
}
/*---------------------------------------------------------------------------------------------------------------------------------------*/
@@ -147,8 +147,8 @@ typedef enum {
/* global parameters, not under a specific section */
#define GNB_CONFIG_STRING_ASN1_VERBOSITY "Asn1_verbosity"
#define GNB_CONFIG_STRING_ACTIVE_GNBS "Active_gNBs"
#define GNB_CONFIG_STRING_ASN1_VERBOSITY "Asn1_verbosity"
#define GNB_CONFIG_STRING_ACTIVE_GNBS "Active_gNBs"
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* global configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
@@ -187,7 +187,7 @@ typedef enum {
#define GNBPARAMS_DESC {\
{GNB_CONFIG_STRING_GNB_ID, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_CELL_TYPE, NULL, 0, strptr:NULL, defstrval:"CELL_MACRO_GNB", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_GNB_NAME, NULL, 0, strptr:NULL, defstrval:"OAIeNodeB", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_GNB_NAME, NULL, 0, strptr:NULL, defstrval:"OAIgNodeB", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_TRACKING_AREA_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_MOBILE_COUNTRY_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_MOBILE_NETWORK_CODE, NULL, 0, strptr:NULL, defstrval:"0", TYPE_STRING, 0}, \
@@ -220,185 +220,442 @@ typedef enum {
/* component carries configuration parameters name */
#define GNB_CONFIG_STRING_NB_ANT_PORTS "nb_antenna_ports"
#define GNB_CONFIG_STRING_NB_ANT_TX "nb_antennas_tx"
#define GNB_CONFIG_STRING_NB_ANT_RX "nb_antennas_rx"
#define GNB_CONFIG_STRING_TX_GAIN "tx_gain"
#define GNB_CONFIG_STRING_RX_GAIN "rx_gain"
#define GNB_CONFIG_STRING_NB_ANT_PORTS "nb_antenna_ports"
#define GNB_CONFIG_STRING_NB_ANT_TX "nb_antennas_tx"
#define GNB_CONFIG_STRING_NB_ANT_RX "nb_antennas_rx"
#define GNB_CONFIG_STRING_TX_GAIN "tx_gain"
#define GNB_CONFIG_STRING_RX_GAIN "rx_gain"
///NR
//MIB
#define GNB_CONFIG_STRING_MIB_SUBCARRIERSPACINGCOMMON "MIB_subCarrierSpacingCommon"
#define GNB_CONFIG_STRING_MIB_DMRS_TYPEA_POSITION "MIB_dmrs_TypeA_Position"
#define GNB_CONFIG_STRING_PDCCH_CONFIGSIB1 "pdcch_ConfigSIB1"
//SIB1
#define GNB_CONFIG_STRING_SIB1_FREQUENCYOFFSETSSB "SIB1_frequencyOffsetSSB"
#define GNB_CONFIG_STRING_SIB1_SSB_PERIODICITYSERVINGCELL "SIB1_ssb_PeriodicityServingCell"
#define GNB_CONFIG_STRING_SIB1_SS_PBCH_BLOCKPOWER "SIB1_ss_PBCH_BlockPower"
//NR FREQUENCYINFODL
#define GNB_CONFIG_STRING_ABSOLUTEFREQUENCYSSB "absoluteFrequencySSB"
#define GNB_CONFIG_STRING_SSB_SUBCARRIEROFFSET "SubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_FREQBANDINDICATORNR "DL_FreqBandIndicatorNR"
#define GNB_CONFIG_STRING_DL_ABSOLUTEFREQUENCYPOINTA "DL_absoluteFrequencyPointA"
#define GNB_CONFIG_STRING_ABSOLUTEFREQUENCYSSB "absoluteFrequencySSB"
#define GNB_CONFIG_STRING_SSB_SUBCARRIEROFFSET "SubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_FREQBANDINDICATORNR "DL_FreqBandIndicatorNR"
#define GNB_CONFIG_STRING_DL_ABSOLUTEFREQUENCYPOINTA "DL_absoluteFrequencyPointA"
//NR DL SCS-SPECIFICCARRIER
#define GNB_CONFIG_STRING_DL_OFFSETTOCARRIER "DL_offsetToCarrier"
#define GNB_CONFIG_STRING_DL_SUBCARRIERSPACING "DL_SubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_SCS_SPECIFICCARRIER_K0 "DL_SCS_SpecificCarrier_k0"
#define GNB_CONFIG_STRING_DL_CARRIERBANDWIDTH "DL_carrierBandwidth"
#define GNB_CONFIG_STRING_DL_OFFSETTOCARRIER "DL_offsetToCarrier"
#define GNB_CONFIG_STRING_DL_SUBCARRIERSPACING "DL_SubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_SCS_SPECIFICCARRIER_K0 "DL_SCS_SpecificCarrier_k0"
#define GNB_CONFIG_STRING_DL_CARRIERBANDWIDTH "DL_carrierBandwidth"
// NR BWP-DOWNLINKCOMMON
#define GNB_CONFIG_STRING_DL_LOCATIONANDBANDWIDTH "DL_locationAndBandwidth"
///#define GNB_CONFIG_STRING_DL_PREFIX_TYPE;
#define GNB_CONFIG_STRING_DL_LOCATIONANDBANDWIDTH "DL_locationAndBandwidth"
//NR FREQUENCYINFOUL
#define GNB_CONFIG_STRING_UL_FREQBANDINDICATORNR "UL_FreqBandIndicatorNR"
#define GNB_CONFIG_STRING_UL_ABSOLUTEFREQUENCYPOINTA "UL_absoluteFrequencyPointA"
#define GNB_CONFIG_STRING_FREQUENCYINFOUL_P_MAX "FrequencyInfoUL_p_Max"
#define GNB_CONFIG_STRING_FREQUENCYSHIFT7P5KHZ "frequencyShift7p5khz"
#define GNB_CONFIG_STRING_UL_FREQBANDINDICATORNR "UL_FreqBandIndicatorNR"
#define GNB_CONFIG_STRING_UL_ABSOLUTEFREQUENCYPOINTA "UL_absoluteFrequencyPointA"
#define GNB_CONFIG_STRING_FREQUENCYINFOUL_P_MAX "FrequencyInfoUL_p_Max"
#define GNB_CONFIG_STRING_FREQUENCYSHIFT7P5KHZ "frequencyShift7p5khz"
//NR UL SCS-SPECIFICCARRIER
#define GNB_CONFIG_STRING_UL_OFFSETTOCARRIER "UL_offsetToCarrier"
#define GNB_CONFIG_STRING_UL_SUBCARRIERSPACING "UL_SubcarrierSpacing"
#define GNB_CONFIG_STRING_UL_SCS_SPECIFICCARRIER_K0 "UL_SCS_SpecificCarrier_k0"
#define GNB_CONFIG_STRING_UL_CARRIERBANDWIDTH "UL_carrierBandwidth"
#define GNB_CONFIG_STRING_UL_OFFSETTOCARRIER "UL_offsetToCarrier"
#define GNB_CONFIG_STRING_UL_SUBCARRIERSPACING "UL_SubcarrierSpacing"
#define GNB_CONFIG_STRING_UL_SCS_SPECIFICCARRIER_K0 "UL_SCS_SpecificCarrier_k0"
#define GNB_CONFIG_STRING_UL_CARRIERBANDWIDTH "UL_carrierBandwidth"
// NR BWP-UPLINKCOMMON
#define GNB_CONFIG_STRING_UL_LOCATIONANDBANDWIDTH "UL_locationAndBandwidth"
//NR_PREFIX_TYPE_T UL_PREFIX_TYPE[MAX_NUM_CCS];
#define GNB_CONFIG_STRING_SSB_PERIODICITYSERVINGCELL "ssb_periodicityServingCell"
#define GNB_CONFIG_STRING_DMRS_TYPEA_POSITION "dmrs_TypeA_Position"
#define GNB_CONFIG_STRING_NIA_SUBCARRIERSPACING "NIA_SubcarrierSpacing"
#define GNB_CONFIG_STRING_SS_PBCH_BLOCKPOWER "ss_PBCH_BlockPower"
#define GNB_CONFIG_STRING_UL_LOCATIONANDBANDWIDTH "UL_locationAndBandwidth"
#define GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_SSB_PERIODICITYSERVINGCELL "ServingCellConfigCommon_ssb_periodicityServingCell"
#define GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_DMRS_TYPEA_POSITION "ServingCellConfigCommon_dmrs_TypeA_Position"
#define GNB_CONFIG_STRING_NIA_SUBCARRIERSPACING "NIA_SubcarrierSpacing"
#define GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_SS_PBCH_BLOCKPOWER "ServingCellConfigCommon_ss_PBCH_BlockPower"
//NR TDD-UL-DL-CONFIGCOMMON
#define GNB_CONFIG_STRING_REFERENCESUBCARRIERSPACING "referenceSubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_UL_TRANSMISSIONPERIODICITY "dl_UL_TransmissionPeriodicity"
#define GNB_CONFIG_STRING_NROFDOWNLINKSLOTS "nrofDownlinkSlots"
#define GNB_CONFIG_STRING_NROFDOWNLINKSYMBOLS "nrofDownlinkSymbols"
#define GNB_CONFIG_STRING_NROFUPLINKSLOTS "nrofUplinkSlots"
#define GNB_CONFIG_STRING_NROFUPLINKSYMBOLS "nrofUplinkSymbols"
#define GNB_CONFIG_STRING_REFERENCESUBCARRIERSPACING "referenceSubcarrierSpacing"
#define GNB_CONFIG_STRING_DL_UL_TRANSMISSIONPERIODICITY "dl_UL_TransmissionPeriodicity"
#define GNB_CONFIG_STRING_NROFDOWNLINKSLOTS "nrofDownlinkSlots"
#define GNB_CONFIG_STRING_NROFDOWNLINKSYMBOLS "nrofDownlinkSymbols"
#define GNB_CONFIG_STRING_NROFUPLINKSLOTS "nrofUplinkSlots"
#define GNB_CONFIG_STRING_NROFUPLINKSYMBOLS "nrofUplinkSymbols"
//NR RACH-CONFIGCOMMON
#define GNB_CONFIG_STRING_RACH_TOTALNUMBEROFRA_PREAMBLES "rach_totalNumberOfRA_Preambles"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_CHOICE "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEEIGHTH "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEFOURTH "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEHALF "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONE "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_TWO "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_FOUR "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_EIGHT "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_SIXTEEN "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen"
#define GNB_CONFIG_STRING_RACH_GROUPBCONFIGURED "rach_groupBconfigured "
#define GNB_CONFIG_STRING_RACH_RA_MSG3SIZEGROUPA "rach_ra_Msg3SizeGroupA"
#define GNB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB "rach_messagePowerOffsetGroupB"
#define GNB_CONFIG_STRING_RACH_NUMBEROFRA_PREAMBLESGROUPA "rach_numberOfRA_PreamblesGroupA"
#define GNB_CONFIG_STRING_RACH_RA_CONTENTIONRESOLUTIONTIMER "rach_ra_ContentionResolutionTimer"
#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB "rsrp_ThresholdSSB"
#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB_SUL "rsrp_ThresholdSSB_SUL"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_CHOICE "prach_RootSequenceIndex_choice"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L839 "prach_RootSequenceIndex_l839"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L139 "prach_RootSequenceIndex_l139"
#define GNB_CONFIG_STRING_PRACH_MSG1_SUBCARRIERSPACING "prach_msg1_SubcarrierSpacing"
#define GNB_CONFIG_STRING_RESTRICTEDSETCONFIG "restrictedSetConfig"
#define GNB_CONFIG_STRING_MSG3_TRANSFORMPRECODING "msg3_transformPrecoding"
#define GNB_CONFIG_STRING_RACH_TOTALNUMBEROFRA_PREAMBLES "rach_totalNumberOfRA_Preambles"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_CHOICE "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEEIGHTH "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEFOURTH "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEHALF "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONE "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_TWO "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_FOUR "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_EIGHT "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight"
#define GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_SIXTEEN "rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen"
#define GNB_CONFIG_STRING_RACH_GROUPBCONFIGURED "rach_groupBconfigured"
#define GNB_CONFIG_STRING_RACH_RA_MSG3SIZEGROUPA "rach_ra_Msg3SizeGroupA"
#define GNB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB "rach_messagePowerOffsetGroupB"
#define GNB_CONFIG_STRING_RACH_NUMBEROFRA_PREAMBLESGROUPA "rach_numberOfRA_PreamblesGroupA"
#define GNB_CONFIG_STRING_RACH_RA_CONTENTIONRESOLUTIONTIMER "rach_ra_ContentionResolutionTimer"
#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB "rsrp_ThresholdSSB"
#define GNB_CONFIG_STRING_RSRP_THRESHOLDSSB_SUL "rsrp_ThresholdSSB_SUL"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_CHOICE "prach_RootSequenceIndex_choice"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L839 "prach_RootSequenceIndex_l839"
#define GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L139 "prach_RootSequenceIndex_l139"
#define GNB_CONFIG_STRING_PRACH_MSG1_SUBCARRIERSPACING "prach_msg1_SubcarrierSpacing"
#define GNB_CONFIG_STRING_RESTRICTEDSETCONFIG "restrictedSetConfig"
#define GNB_CONFIG_STRING_MSG3_TRANSFORMPRECODING "msg3_transformPrecoding"
//SSB-PERRACH-OCCASIONANDCB-PREAMBLESPERSSB NOT SURE
//NR RACH-CONFIGGENERIC
#define GNB_CONFIG_STRING_PRACH_CONFIGURATIONINDEX "prach_ConfigurationIndex"
#define GNB_CONFIG_STRING_PRACH_MSG1_FDM "prach_msg1_FDM"
#define GNB_CONFIG_STRING_PRACH_MSG1_FREQUENCYSTART "prach_msg1_FrequencyStart"
#define GNB_CONFIG_STRING_ZEROCORRELATIONZONECONFIG "zeroCorrelationZoneConfig"
#define GNB_CONFIG_STRING_PREAMBLERECEIVEDTARGETPOWER "preambleReceivedTargetPower"
#define GNB_CONFIG_STRING_PREAMBLETRANSMAX "preambleTransMax"
#define GNB_CONFIG_STRING_POWERRAMPINGSTEP "powerRampingStep"
#define GNB_CONFIG_STRING_RA_RESPONSEWINDOW "ra_ResponseWindow"
#define GNB_CONFIG_STRING_PRACH_CONFIGURATIONINDEX "prach_ConfigurationIndex"
#define GNB_CONFIG_STRING_PRACH_MSG1_FDM "prach_msg1_FDM"
#define GNB_CONFIG_STRING_PRACH_MSG1_FREQUENCYSTART "prach_msg1_FrequencyStart"
#define GNB_CONFIG_STRING_ZEROCORRELATIONZONECONFIG "zeroCorrelationZoneConfig"
#define GNB_CONFIG_STRING_PREAMBLERECEIVEDTARGETPOWER "preambleReceivedTargetPower"
#define GNB_CONFIG_STRING_PREAMBLETRANSMAX "preambleTransMax"
#define GNB_CONFIG_STRING_POWERRAMPINGSTEP "powerRampingStep"
#define GNB_CONFIG_STRING_RA_RESPONSEWINDOW "ra_ResponseWindow"
//PUSCH-CONFIGCOMMON
#define GNB_CONFIG_STRING_GROUPHOPPINGENABLEDTRANSFORMPRECODING "groupHoppingEnabledTransformPrecoding"
#define GNB_CONFIG_STRING_MSG3_DELTAPREAMBLE "msg3_DeltaPreamble"
#define GNB_CONFIG_STRING_P0_NOMINALWITHGRANT "p0_NominalWithGrant"
#define GNB_CONFIG_STRING_GROUPHOPPINGENABLEDTRANSFORMPRECODING "groupHoppingEnabledTransformPrecoding"
#define GNB_CONFIG_STRING_MSG3_DELTAPREAMBLE "msg3_DeltaPreamble"
#define GNB_CONFIG_STRING_P0_NOMINALWITHGRANT "p0_NominalWithGrant"
///PUSCH-TIMEDOMAINRESOURCEALLOCATION
#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_K2 "PUSCH_TimeDomainResourceAllocation_k2"
#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE "PUSCH_TimeDomainResourceAllocation_mappingType"
#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_K2 "PUSCH_TimeDomainResourceAllocation_k2"
#define GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE "PUSCH_TimeDomainResourceAllocation_mappingType"
//PUCCH-CONFIGCOMMON
#define GNB_CONFIG_STRING_PUCCH_GROUPHOPPING "pucch_GroupHopping"
#define GNB_CONFIG_STRING_P0_NOMINAL "p0_nominal"
#define GNB_CONFIG_STRING_PUCCH_GROUPHOPPING "pucch_GroupHopping"
#define GNB_CONFIG_STRING_P0_NOMINAL "p0_nominal"
//PDSCH-CONFIGCOMMON
//PDSCH-TIMEDOMAINRESOURCEALLOCATION
#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_K0 "PDSCH_TimeDomainResourceAllocation_k0"
#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE "PDSCH_TimeDomainResourceAllocation_mappingType"
#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_K0 "PDSCH_TimeDomainResourceAllocation_k0"
#define GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE "PDSCH_TimeDomainResourceAllocation_mappingType"
//RATEMATCHPATTERN IS USED TO CONFIGURE ONE RATE MATCHING PATTERN FOR PDSCH
#define GNB_CONFIG_STRING_RATEMATCHPATTERNID "rateMatchPatternId"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_PATTERNTYPE "RateMatchPattern_patternType"
#define GNB_CONFIG_STRING_SYMBOLSINRESOURCEBLOCK "symbolsInResourceBlock"
#define GNB_CONFIG_STRING_PERIODICITYANDPATTERN "periodicityAndPattern"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_CONTROLRESOURCESET "RateMatchPattern_controlResourceSet"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_SUBCARRIERSPACING "RateMatchPattern_subcarrierSpacing"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_MODE "RateMatchPattern_mode"
#define GNB_CONFIG_STRING_RATEMATCHPATTERNID "rateMatchPatternId"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_PATTERNTYPE "RateMatchPattern_patternType"
#define GNB_CONFIG_STRING_SYMBOLSINRESOURCEBLOCK "symbolsInResourceBlock"
#define GNB_CONFIG_STRING_PERIODICITYANDPATTERN "periodicityAndPattern"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_CONTROLRESOURCESET "RateMatchPattern_controlResourceSet"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_SUBCARRIERSPACING "RateMatchPattern_subcarrierSpacing"
#define GNB_CONFIG_STRING_RATEMATCHPATTERN_MODE "RateMatchPattern_mode"
//PDCCH-CONFIGCOMMON
#define GNB_CONFIG_STRING_SEARCHSPACESIB1 "searchSpaceSIB1"
#define GNB_CONFIG_STRING_SEARCHSPACEOTHERSYSTEMINFORMATION "searchSpaceOtherSystemInformation"
#define GNB_CONFIG_STRING_PAGINGSEARCHSPACE "pagingSearchSpace"
#define GNB_CONFIG_STRING_RA_SEARCHSPACE "ra_SearchSpace"
#define GNB_CONFIG_STRING_RACH_RA_CONTROLRESOURCESET "rach_ra_ControlResourceSet"
#define GNB_CONFIG_STRING_SEARCHSPACESIB1 "searchSpaceSIB1"
#define GNB_CONFIG_STRING_SEARCHSPACEOTHERSYSTEMINFORMATION "searchSpaceOtherSystemInformation"
#define GNB_CONFIG_STRING_PAGINGSEARCHSPACE "pagingSearchSpace"
#define GNB_CONFIG_STRING_RA_SEARCHSPACE "ra_SearchSpace"
#define GNB_CONFIG_STRING_RACH_RA_CONTROLRESOURCESET "rach_ra_ControlResourceSet"
//NR PDCCH-CONFIGCOMMON COMMONCONTROLRESOURCESSETS
#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESETID "PDCCH_common_controlResourceSetId"
#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESET_DURATION "PDCCH_common_ControlResourceSet_duration"
#define GNB_CONFIG_STRING_PDCCH_CCE_REG_MAPPINGTYPE "PDCCH_cce_REG_MappingType"
#define GNB_CONFIG_STRING_PDCCH_REG_BUNDLESIZE "PDCCH_reg_BundleSize"
#define GNB_CONFIG_STRING_PDCCH_INTERLEAVERSIZE "PDCCH_interleaverSize"
#define GNB_CONFIG_STRING_PDCCH_SHIFTINDEX "PDCCH_shiftIndex"
#define GNB_CONFIG_STRING_PDCCH_PRECODERGRANULARITY "PDCCH_precoderGranularity"
#define GNB_CONFIG_STRING_TCI_PRESENTINDCI "tci_PresentInDCI"
#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESETID "PDCCH_common_controlResourceSetId"
#define GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESET_DURATION "PDCCH_common_ControlResourceSet_duration"
#define GNB_CONFIG_STRING_PDCCH_CCE_REG_MAPPINGTYPE "PDCCH_cce_REG_MappingType"
#define GNB_CONFIG_STRING_PDCCH_REG_BUNDLESIZE "PDCCH_reg_BundleSize"
#define GNB_CONFIG_STRING_PDCCH_INTERLEAVERSIZE "PDCCH_interleaverSize"
#define GNB_CONFIG_STRING_PDCCH_SHIFTINDEX "PDCCH_shiftIndex"
#define GNB_CONFIG_STRING_PDCCH_PRECODERGRANULARITY "PDCCH_precoderGranularity"
#define GNB_CONFIG_STRING_TCI_PRESENTINDCI "tci_PresentInDCI"
//NR PDCCH-ConfigCommon commonSearchSpaces
#define GNB_CONFIG_STRING_SEARCHSPACEID "SearchSpaceId"
#define GNB_CONFIG_STRING_COMMONSEARCHSPACES_CONTROLRESOURCESETID "commonSearchSpaces_controlResourceSetId"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_CHOICE "SearchSpace_monitoringSlotPeriodicityAndOffset_choice"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL1 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl1"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL2 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl2"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL4 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl4"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL5 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl5"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL8 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl8"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL10 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl10"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL16 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl16"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL20 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl20"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL1 "SearchSpace_nrofCandidates_aggregationLevel1"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL2 "SearchSpace_nrofCandidates_aggregationLevel2"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL4 "SearchSpace_nrofCandidates_aggregationLevel4"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL8 "SearchSpace_nrofCandidates_aggregationLevel8"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL16 "SearchSpace_nrofCandidates_aggregationLevel16"
#define GNB_CONFIG_STRING_SEARCHSPACE_SEARCHSPACETYPE "SearchSpace_searchSpaceType"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL1 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL2 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL4 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL8 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL16 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY "Common_dci_Format2_3_monitoringPeriodicity"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES "Common_dci_Format2_3_nrofPDCCH_Candidates"
#define GNB_CONFIG_STRING_UE_SPECIFIC__DCI_FORMATS "ue_Specific__dci_Formats"
#define GNB_CONFIG_STRING_SEARCHSPACEID "SearchSpaceId"
#define GNB_CONFIG_STRING_COMMONSEARCHSPACES_CONTROLRESOURCESETID "commonSearchSpaces_controlResourceSetId"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_CHOICE "SearchSpace_monitoringSlotPeriodicityAndOffset_choice"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL1 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl1"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL2 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl2"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL4 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl4"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL5 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl5"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL8 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl8"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL10 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl10"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL16 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl16"
#define GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL20 "SearchSpace_monitoringSlotPeriodicityAndOffset_sl20"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL1 "SearchSpace_nrofCandidates_aggregationLevel1"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL2 "SearchSpace_nrofCandidates_aggregationLevel2"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL4 "SearchSpace_nrofCandidates_aggregationLevel4"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL8 "SearchSpace_nrofCandidates_aggregationLevel8"
#define GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL16 "SearchSpace_nrofCandidates_aggregationLevel16"
#define GNB_CONFIG_STRING_SEARCHSPACE_SEARCHSPACETYPE "SearchSpace_searchSpaceType"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL1 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL2 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL4 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL8 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL16 "Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY "Common_dci_Format2_3_monitoringPeriodicity"
#define GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES "Common_dci_Format2_3_nrofPDCCH_Candidates"
#define GNB_CONFIG_STRING_UE_SPECIFIC__DCI_FORMATS "ue_Specific__dci_Formats"
//PDCCH-CONFIGCOMMON
//CONTROLRESOURCESET
#define GNB_CONFIG_STRING_CONTROLRESOURCESETID = 0;
#define GNB_CONFIG_STRING_FREQUENCYDOMAINRESOURCES = 0;
#define GNB_CONFIG_STRING_CONTROLRESOURCESET_DURATION = 0;
#define GNB_CONFIG_STRING_PRECODERGRANULARITY = 0; //CORRESPONDS TO L1 PARAMETER 'CORESET-PRECODER-GRANUALITY'
#define GNB_CONFIG_STRING_TCI_PRESENTINDCI = NULL;
//SEARCHSPACE
#define GNB_CONFIG_STRING_SEARCHSPACEID = 0;
#define GNB_CONFIG_STRING_DCI_FORMAT2_3_MONITORINGPERIODICITY = 0;
#define GNB_CONFIG_STRING_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES = 0;
// NR SYNCHRONIZATION SIGNAL BLOCK
#define GNB_CONFIG_STRING_SSB_PERIODICITYSERVINGCELL = 0;
#define GNB_CONFIG_STRING_SS_PBCH_BLOCKPOWER = 0;
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* component carriers configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt checked_param */
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define NRCCPARAMS_DESC { \
{GNB_CONFIG_STRING_FRAME_TYPE, NULL, 0, strptr:&frame_type, defstrval:"FDD", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_DL_prefix_type, NULL, 0, strptr:&DL_prefix_type, defstrval:"NORMAL", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_UL_prefix_type, NULL, 0, strptr:&UL_prefix_type, defstrval:"NORMAL", TYPE_STRING, 0}, \
{GNB_CONFIG_STRING_EUTRA_BAND, NULL, 0, iptr:&eutra_band, defintval:7, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DOWNLINK_FREQUENCY, NULL, 0, i64ptr:(int64_t *)&downlink_frequency, defint64val:2680000000, TYPE_UINT64, 0}, \
{GNB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET, NULL, 0, iptr:&uplink_frequency_offset, defintval:-120000000, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NID_CELL, NULL, 0, iptr:&Nid_cell, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_N_RB_DL, NULL, 0, iptr:&N_RB_DL, defintval:25, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NB_ANT_PORTS, NULL, 0, iptr:&nb_antenna_ports, defintval:1, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_MIB_SUBCARRIERSPACINGCOMMON, NULL, 0, iptr:&MIB_subCarrierSpacingCommon, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_MIB_DMRS_TYPEA_POSITION, NULL, 0, iptr:&MIB_dmrs_TypeA_Position, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_CONFIGSIB1, NULL, 0, iptr:&pdcch_ConfigSIB1, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SIB1_FREQUENCYOFFSETSSB, NULL, 0, iptr:&SIB1_frequencyOffsetSSB, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SIB1_SSB_PERIODICITYSERVINGCELL, NULL, 0, iptr:&SIB1_ssb_PeriodicityServingCell, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SIB1_SS_PBCH_BLOCKPOWER, NULL, 0, iptr:&SIB1_ss_PBCH_BlockPower, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_ABSOLUTEFREQUENCYSSB, NULL, 0, iptr:&absoluteFrequencySSB, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SSB_SUBCARRIEROFFSET, NULL, 0, iptr:&ssb_SubcarrierOffset, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_FREQBANDINDICATORNR, NULL, 0, iptr:&DL_FreqBandIndicatorNR, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_ABSOLUTEFREQUENCYPOINTA, NULL, 0, iptr:&DL_absoluteFrequencyPointA, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_OFFSETTOCARRIER, NULL, 0, iptr:&DL_offsetToCarrier, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_SUBCARRIERSPACING, NULL, 0, iptr:&DL_SubcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_SCS_SPECIFICCARRIER_K0, NULL, 0, iptr:&DL_SCS_SpecificCarrier_k0, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_CARRIERBANDWIDTH, NULL, 0, iptr:&DL_carrierBandwidth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_LOCATIONANDBANDWIDTH, NULL, 0, iptr:&DL_locationAndBandwidth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_FREQBANDINDICATORNR, NULL, 0, iptr:&UL_FreqBandIndicatorNR, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_ABSOLUTEFREQUENCYPOINTA, NULL, 0, iptr:&UL_absoluteFrequencyPointA, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_FREQUENCYINFOUL_P_MAX, NULL, 0, iptr:&FrequencyInfoUL_p_Max, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_FREQUENCYSHIFT7P5KHZ, NULL, 0, iptr:&frequencyShift7p5khz, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_OFFSETTOCARRIER, NULL, 0, iptr:&UL_offsetToCarrier, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_SUBCARRIERSPACING, NULL, 0, iptr:&UL_SubcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_SCS_SPECIFICCARRIER_K0, NULL, 0, iptr:&UL_SCS_SpecificCarrier_k0, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_CARRIERBANDWIDTH, NULL, 0, iptr:&UL_carrierBandwidth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UL_LOCATIONANDBANDWIDTH, NULL, 0, iptr:&UL_locationAndBandwidth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_SSB_PERIODICITYSERVINGCELL, NULL, 0, iptr:&ServingCellConfigCommon_ssb_periodicityServingCell, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_DMRS_TYPEA_POSITION, NULL, 0, iptr:&ServingCellConfigCommon_dmrs_TypeA_Position, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NIA_SUBCARRIERSPACING, NULL, 0, iptr:&NIA_SubcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON_SS_PBCH_BLOCKPOWER, NULL, 0, iptr:&ServingCellConfigCommon_ss_PBCH_BlockPower, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_REFERENCESUBCARRIERSPACING, NULL, 0, iptr:&referenceSubcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_DL_UL_TRANSMISSIONPERIODICITY, NULL, 0, iptr:&dl_UL_TransmissionPeriodicity, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NROFDOWNLINKSLOTS, NULL, 0, iptr:&nrofDownlinkSlots, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NROFDOWNLINKSYMBOLS, NULL, 0, iptr:&nrofDownlinkSymbols, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NROFUPLINKSLOTS, NULL, 0, iptr:&nrofUplinkSlots, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_NROFUPLINKSYMBOLS, NULL, 0, iptr:&nrofUplinkSymbols, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_TOTALNUMBEROFRA_PREAMBLES, NULL, 0, iptr:&rach_totalNumberOfRA_Preambles, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_CHOICE, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEEIGHTH, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEFOURTH, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEHALF, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONE, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_TWO, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_FOUR, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_EIGHT, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_SIXTEEN, NULL, 0, iptr:&rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_GROUPBCONFIGURED, NULL, 0, iptr:&rach_groupBconfigured, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_RA_MSG3SIZEGROUPA, NULL, 0, iptr:&rach_ra_Msg3SizeGroupA, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB, NULL, 0, iptr:&rach_messagePowerOffsetGroupB, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_NUMBEROFRA_PREAMBLESGROUPA, NULL, 0, iptr:&rach_numberOfRA_PreamblesGroupA, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_RA_CONTENTIONRESOLUTIONTIMER, NULL, 0, iptr:&rach_ra_ContentionResolutionTimer, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RSRP_THRESHOLDSSB, NULL, 0, iptr:&rsrp_ThresholdSSB, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RSRP_THRESHOLDSSB_SUL, NULL, 0, iptr:&rsrp_ThresholdSSB_SUL, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_CHOICE, NULL, 0, iptr:&prach_RootSequenceIndex_choice, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L839, NULL, 0, iptr:&prach_RootSequenceIndex_l839, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_ROOTSEQUENCEINDEX_L139, NULL, 0, iptr:&prach_RootSequenceIndex_l139, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_MSG1_SUBCARRIERSPACING, NULL, 0, iptr:&prach_msg1_SubcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RESTRICTEDSETCONFIG, NULL, 0, iptr:&restrictedSetConfig, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_MSG3_TRANSFORMPRECODING, NULL, 0, iptr:&msg3_transformPrecoding, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_CONFIGURATIONINDEX, NULL, 0, iptr:&prach_ConfigurationIndex, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_MSG1_FDM, NULL, 0, iptr:&prach_msg1_FDM, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PRACH_MSG1_FREQUENCYSTART, NULL, 0, iptr:&prach_msg1_FrequencyStart, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_ZEROCORRELATIONZONECONFIG, NULL, 0, iptr:&zeroCorrelationZoneConfig, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PREAMBLERECEIVEDTARGETPOWER, NULL, 0, iptr:&preambleReceivedTargetPower, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PREAMBLETRANSMAX, NULL, 0, iptr:&preambleTransMax, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_POWERRAMPINGSTEP, NULL, 0, iptr:&powerRampingStep, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RA_RESPONSEWINDOW, NULL, 0, iptr:&ra_ResponseWindow, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_GROUPHOPPINGENABLEDTRANSFORMPRECODING, NULL, 0, iptr:&groupHoppingEnabledTransformPrecoding, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_MSG3_DELTAPREAMBLE, NULL, 0, iptr:&msg3_DeltaPreamble, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_P0_NOMINALWITHGRANT, NULL, 0, iptr:&p0_NominalWithGrant, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_K2, NULL, 0, iptr:&PUSCH_TimeDomainResourceAllocation_k2, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PUSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE, NULL, 0, iptr:&PUSCH_TimeDomainResourceAllocation_mappingType, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PUCCH_GROUPHOPPING, NULL, 0, iptr:&pucch_GroupHopping, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_P0_NOMINAL, NULL, 0, iptr:&p0_nominal, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_K0, NULL, 0, iptr:&PDSCH_TimeDomainResourceAllocation_k0, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE, NULL, 0, iptr:&PDSCH_TimeDomainResourceAllocation_mappingType, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RATEMATCHPATTERNID, NULL, 0, iptr:&rateMatchPatternId, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RATEMATCHPATTERN_PATTERNTYPE, NULL, 0, iptr:&RateMatchPattern_patternType, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SYMBOLSINRESOURCEBLOCK, NULL, 0, iptr:&symbolsInResourceBlock, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PERIODICITYANDPATTERN, NULL, 0, iptr:&periodicityAndPattern, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RATEMATCHPATTERN_CONTROLRESOURCESET, NULL, 0, iptr:&RateMatchPattern_controlResourceSet, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RATEMATCHPATTERN_SUBCARRIERSPACING, NULL, 0, iptr:&RateMatchPattern_subcarrierSpacing, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RATEMATCHPATTERN_MODE, NULL, 0, iptr:&RateMatchPattern_mode, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACESIB1, NULL, 0, iptr:&searchSpaceSIB1, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACEOTHERSYSTEMINFORMATION, NULL, 0, iptr:&searchSpaceOtherSystemInformation, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PAGINGSEARCHSPACE, NULL, 0, iptr:&pagingSearchSpace, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RA_SEARCHSPACE, NULL, 0, iptr:&ra_SearchSpace, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_RACH_RA_CONTROLRESOURCESET, NULL, 0, iptr:&rach_ra_ControlResourceSet, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESETID, NULL, 0, iptr:&PDCCH_common_controlResourceSetId, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_COMMON_CONTROLRESOURCESET_DURATION, NULL, 0, iptr:&PDCCH_common_ControlResourceSet_duration, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_CCE_REG_MAPPINGTYPE, NULL, 0, iptr:&PDCCH_cce_REG_MappingType, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_REG_BUNDLESIZE, NULL, 0, iptr:&PDCCH_reg_BundleSize, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_INTERLEAVERSIZE, NULL, 0, iptr:&PDCCH_interleaverSize, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_SHIFTINDEX, NULL, 0, iptr:&PDCCH_shiftIndex, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_PDCCH_PRECODERGRANULARITY, NULL, 0, iptr:&PDCCH_precoderGranularity, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_TCI_PRESENTINDCI, NULL, 0, iptr:&tci_PresentInDCI, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACEID, NULL, 0, iptr:&SearchSpaceId, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMONSEARCHSPACES_CONTROLRESOURCESETID, NULL, 0, iptr:&commonSearchSpaces_controlResourceSetId, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_CHOICE, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_choice, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL1, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl1, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL2, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl2, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL4, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl4, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL5, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl5, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL8, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl8, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL10, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl10, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL16, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl16, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL20, NULL, 0, iptr:&SearchSpace_monitoringSlotPeriodicityAndOffset_sl20, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL1, NULL, 0, iptr:&SearchSpace_nrofCandidates_aggregationLevel1, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL2, NULL, 0, iptr:&SearchSpace_nrofCandidates_aggregationLevel2, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL4, NULL, 0, iptr:&SearchSpace_nrofCandidates_aggregationLevel4, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL8, NULL, 0, iptr:&SearchSpace_nrofCandidates_aggregationLevel8, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL16, NULL, 0, iptr:&SearchSpace_nrofCandidates_aggregationLevel16, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_SEARCHSPACE_SEARCHSPACETYPE, NULL, 0, iptr:&SearchSpace_searchSpaceType, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL1, NULL, 0, iptr:&Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL2, NULL, 0, iptr:&Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL4, NULL, 0, iptr:&Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL8, NULL, 0, iptr:&Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL16, NULL, 0, iptr:&Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY, NULL, 0, iptr:&Common_dci_Format2_3_monitoringPeriodicity, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES, NULL, 0, iptr:&Common_dci_Format2_3_nrofPDCCH_Candidates, defintval:0, TYPE_UINT, 0}, \
{GNB_CONFIG_STRING_UE_SPECIFIC__DCI_FORMATS, NULL, 0, iptr:&ue_Specific__dci_Formats, defintval:0, TYPE_UINT, 0}, \
}
/* component carries configuration parameters name */
#define ENB_CONFIG_FRAME_TYPE_IDX 0
#define ENB_CONFIG_DL_PREFIX_TYPE_IDX 1
#define ENB_CONFIG_UL_PREFIX_TYPE_IDX 1
#define ENB_CONFIG_EUTRA_BAND_IDX 2
#define ENB_CONFIG_DOWNLINK_FREQUENCY_IDX 3
#define ENB_CONFIG_UPLINK_FREQUENCY_OFFSET_IDX 4
#define ENB_CONFIG_NID_CELL_IDX 5
#define ENB_CONFIG_N_RB_DL_IDX 6
#define GNB_CONFIG_NB_ANT_PORTS_IDX
#define GNB_CONFIG_NB_ANT_TX_IDX
#define GNB_CONFIG_NB_ANT_RX_IDX
#define GNB_CONFIG_TX_GAIN_IDX
#define GNB_CONFIG_RX_GAIN_IDX
#define GNB_CONFIG_MIB_SUBCARRIERSPACINGCOMMON_IDX
#define GNB_CONFIG_MIB_DMRS_TYPEA_POSITION_IDX
#define GNB_CONFIG_PDCCH_CONFIGSIB1_IDX
#define GNB_CONFIG_SIB1_FREQUENCYOFFSETSSB_IDX
#define GNB_CONFIG_SIB1_SSB_PERIODICITYSERVINGCELL_IDX
#define GNB_CONFIG_SIB1_SS_PBCH_BLOCKPOWER_IDX
#define GNB_CONFIG_ABSOLUTEFREQUENCYSSB_IDX
#define GNB_CONFIG_SSB_SUBCARRIEROFFSET_IDX
#define GNB_CONFIG_DL_FREQBANDINDICATORNR_IDX
#define GNB_CONFIG_DL_ABSOLUTEFREQUENCYPOINTA_IDX
#define GNB_CONFIG_DL_OFFSETTOCARRIER_IDX
#define GNB_CONFIG_DL_SUBCARRIERSPACING_IDX
#define GNB_CONFIG_DL_SCS_SPECIFICCARRIER_K0_IDX
#define GNB_CONFIG_DL_CARRIERBANDWIDTH_IDX
#define GNB_CONFIG_DL_LOCATIONANDBANDWIDTH_IDX
#define GNB_CONFIG_UL_FREQBANDINDICATORNR_IDX
#define GNB_CONFIG_UL_ABSOLUTEFREQUENCYPOINTA_IDX
#define GNB_CONFIG_FREQUENCYINFOUL_P_MAX_IDX
#define GNB_CONFIG_FREQUENCYSHIFT7P5KHZ_IDX
#define GNB_CONFIG_UL_OFFSETTOCARRIER_IDX
#define GNB_CONFIG_UL_SUBCARRIERSPACING_IDX
#define GNB_CONFIG_UL_SCS_SPECIFICCARRIER_K0_IDX
#define GNB_CONFIG_UL_CARRIERBANDWIDTH_IDX
#define GNB_CONFIG_UL_LOCATIONANDBANDWIDTH_IDX
#define GNB_CONFIG_SUBCARRIERSPACINGCOMMON_IDX
#define GNB_CONFIG_PDCCH_CONFIGSIB1_IDX
#define GNB_CONFIG_FREQUENCYOFFSETSSB_IDX
#define GNB_CONFIG_SERVINGCELLCONFIGCOMMON_SSB_PERIODICITYSERVINGCELL_IDX
#define GNB_CONFIG_SERVINGCELLCONFIGCOMMON_DMRS_TYPEA_POSITION_IDX
#define GNB_CONFIG_NIA_SUBCARRIERSPACING_IDX
#define GNB_CONFIG_SERVINGCELLCONFIGCOMMON_SS_PBCH_BLOCKPOWER_IDX
#define GNB_CONFIG_REFERENCESUBCARRIERSPACING_IDX
#define GNB_CONFIG_DL_UL_TRANSMISSIONPERIODICITY_IDX
#define GNB_CONFIG_NROFDOWNLINKSLOTS_IDX
#define GNB_CONFIG_NROFDOWNLINKSYMBOLS_IDX
#define GNB_CONFIG_NROFUPLINKSLOTS_IDX
#define GNB_CONFIG_NROFUPLINKSYMBOLS_IDX
#define GNB_CONFIG_RACH_TOTALNUMBEROFRA_PREAMBLES_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_CHOICE_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEEIGHTH_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEFOURTH_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONEHALF_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_ONE_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_TWO_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_FOUR_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_EIGHT_IDX
#define GNB_CONFIG_RACH_SSB_PERRACH_OCCASIONANDCB_PREAMBLESPERSSB_SIXTEEN_IDX
#define GNB_CONFIG_RACH_GROUPBCONFIGURED_IDX
#define GNB_CONFIG_RACH_RA_MSG3SIZEGROUPA_IDX
#define GNB_CONFIG_RACH_MESSAGEPOWEROFFSETGROUPB_IDX
#define GNB_CONFIG_RACH_NUMBEROFRA_PREAMBLESGROUPA_IDX
#define GNB_CONFIG_RACH_RA_CONTENTIONRESOLUTIONTIMER_IDX
#define GNB_CONFIG_RSRP_THRESHOLDSSB_IDX
#define GNB_CONFIG_RSRP_THRESHOLDSSB_SUL_IDX
#define GNB_CONFIG_PRACH_ROOTSEQUENCEINDEX_CHOICE_IDX
#define GNB_CONFIG_PRACH_ROOTSEQUENCEINDEX_L839_IDX
#define GNB_CONFIG_PRACH_ROOTSEQUENCEINDEX_L139_IDX
#define GNB_CONFIG_PRACH_MSG1_SUBCARRIERSPACING_IDX
#define GNB_CONFIG_RESTRICTEDSETCONFIG_IDX
#define GNB_CONFIG_MSG3_TRANSFORMPRECODING_IDX
#define GNB_CONFIG_PRACH_CONFIGURATIONINDEX_IDX
#define GNB_CONFIG_PRACH_MSG1_FDM_IDX
#define GNB_CONFIG_PRACH_MSG1_FREQUENCYSTART_IDX
#define GNB_CONFIG_ZEROCORRELATIONZONECONFIG_IDX
#define GNB_CONFIG_PREAMBLERECEIVEDTARGETPOWER_IDX
#define GNB_CONFIG_PREAMBLETRANSMAX_IDX
#define GNB_CONFIG_POWERRAMPINGSTEP_IDX
#define GNB_CONFIG_RA_RESPONSEWINDOW_IDX
#define GNB_CONFIG_GROUPHOPPINGENABLEDTRANSFORMPRECODING_IDX
#define GNB_CONFIG_MSG3_DELTAPREAMBLE_IDX
#define GNB_CONFIG_P0_NOMINALWITHGRANT_IDX
#define GNB_CONFIG_PUSCH_TIMEDOMAINRESOURCEALLOCATION_K2_IDX
#define GNB_CONFIG_PUSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE_IDX
#define GNB_CONFIG_PUCCH_GROUPHOPPING_IDX
#define GNB_CONFIG_P0_NOMINAL_IDX
#define GNB_CONFIG_PDSCH_TIMEDOMAINRESOURCEALLOCATION_K0_IDX
#define GNB_CONFIG_PDSCH_TIMEDOMAINRESOURCEALLOCATION_MAPPINGTYPE_IDX
#define GNB_CONFIG_RATEMATCHPATTERNID_IDX
#define GNB_CONFIG_RATEMATCHPATTERN_PATTERNTYPE_IDX
#define GNB_CONFIG_SYMBOLSINRESOURCEBLOCK_IDX
#define GNB_CONFIG_PERIODICITYANDPATTERN_IDX
#define GNB_CONFIG_RATEMATCHPATTERN_CONTROLRESOURCESET_IDX
#define GNB_CONFIG_RATEMATCHPATTERN_SUBCARRIERSPACING_IDX
#define GNB_CONFIG_RATEMATCHPATTERN_MODE_IDX
#define GNB_CONFIG_SEARCHSPACESIB1_IDX
#define GNB_CONFIG_SEARCHSPACEOTHERSYSTEMINFORMATION_IDX
#define GNB_CONFIG_PAGINGSEARCHSPACE_IDX
#define GNB_CONFIG_RA_SEARCHSPACE_IDX
#define GNB_CONFIG_RACH_RA_CONTROLRESOURCESET_IDX
#define GNB_CONFIG_PDCCH_COMMON_CONTROLRESOURCESETID_IDX
#define GNB_CONFIG_PDCCH_COMMON_CONTROLRESOURCESET_DURATION_IDX
#define GNB_CONFIG_PDCCH_CCE_REG_MAPPINGTYPE_IDX
#define GNB_CONFIG_PDCCH_REG_BUNDLESIZE_IDX
#define GNB_CONFIG_PDCCH_INTERLEAVERSIZE_IDX
#define GNB_CONFIG_PDCCH_SHIFTINDEX_IDX
#define GNB_CONFIG_PDCCH_PRECODERGRANULARITY_IDX
#define GNB_CONFIG_TCI_PRESENTINDCI_IDX
#define GNB_CONFIG_SEARCHSPACEID_IDX
#define GNB_CONFIG_COMMONSEARCHSPACES_CONTROLRESOURCESETID_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_CHOICE_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL1_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL2_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL4_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL5_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL8_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL10_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL16_IDX
#define GNB_CONFIG_SEARCHSPACE_MONITORINGSLOTPERIODICITYANDOFFSET_SL20_IDX
#define GNB_CONFIG_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL1_IDX
#define GNB_CONFIG_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL2_IDX
#define GNB_CONFIG_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL4_IDX
#define GNB_CONFIG_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL8_IDX
#define GNB_CONFIG_SEARCHSPACE_NROFCANDIDATES_AGGREGATIONLEVEL16_IDX
#define GNB_CONFIG_SEARCHSPACE_SEARCHSPACETYPE_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL1_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL2_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL4_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL8_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_0_NROFCANDIDATES_SFI_AGGREGATIONLEVEL16_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_3_MONITORINGPERIODICITY_IDX
#define GNB_CONFIG_COMMON_DCI_FORMAT2_3_NROFPDCCH_CANDIDATES_IDX
#define GNB_CONFIG_UE_SPECIFIC__DCI_FORMATS_IDX