Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
78408cc6
Commit
78408cc6
authored
Oct 15, 2017
by
mohamed.said
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added missing definitions in enb_paramdef.h ,, assigned some br values in enb_config.c
parent
06e9aacc
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
896 additions
and
323 deletions
+896
-323
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+858
-302
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+38
-21
No files found.
openair2/ENB_APP/enb_config.c
View file @
78408cc6
...
...
@@ -355,15 +355,11 @@ void RCconfig_macrlc() {
int
RCconfig_RRC
(
MessageDef
*
msg_p
,
uint32_t
i
,
eNB_RRC_INST
*
rrc
)
{
int
num_enbs
=
0
;
int
num_component_carriers
=
0
;
int
k
=
0
;
int32_t
enb_id
=
0
;
int
nb_cc
=
0
;
int
parse_errors
=
0
;
int
num_mme_address
=
0
;
int
num_otg_elements
=
0
;
...
...
@@ -411,7 +407,6 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
int
pucch_delta_shift
=
0
;
int
pucch_nRB_CQI
=
0
;
int
pucch_nCS_AN
=
0
;
int
pucch_n1_AN
=
0
;
int
pdsch_referenceSignalPower
=
0
;
...
...
@@ -453,7 +448,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
int
rach_raResponseWindowSize
=
0
;
int
rach_macContentionResolutionTimer
=
0
;
int
rach_maxHARQ_Msg3Tx
=
0
;
const
char
*
pcch_defaultPagingCycle
=
0
;
const
char
*
pcch_defaultPagingCycle
=
NULL
;
const
char
*
pcch_nB
=
NULL
;
int
bcch_modificationPeriodCoeff
=
0
;
...
...
@@ -604,9 +599,16 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
paramlist_def_t
CCsParamList
=
{
ENB_CONFIG_STRING_COMPONENT_CARRIERS
,
NULL
,
0
};
paramdef_t
brParams
[]
=
BRPARAMS_DESC
;
//paramdef_t siInfoBRParams[] = SI_INFO_BR_DESC;
paramdef_t
schedulingInfoBrParams
[]
=
SI_INFO_BR_DESC
;
paramlist_def_t
schedulingInfoBrParamList
=
{
ENB_CONFIG_STRING_SCHEDULING_INFO_BR
,
NULL
,
0
};
//paramdef_t rsrprangeParams[] = RSRP_RANGE_LIST_DESC;
//paramdef_t rachcelevelParams[] = RACH_CE_LEVELINFOLIST_R13_DESC;
paramdef_t
rachcelevelParams
[]
=
RACH_CE_LEVELINFOLIST_R13_DESC
;
paramlist_def_t
rachcelevellist
=
{
ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13
,
NULL
,
0
};
//paramdef_t prachParams[] = PRACH_PARAMS_CE_R13_DESC;
//paramdef_t n1PUCCH_ANR13Params[] = N1PUCCH_AN_INFOLIST_R13_DESC;
//paramdef_t pcchv1310Params[] = PCCH_CONFIG_V1310_DESC;
...
...
@@ -699,9 +701,9 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
for
(
k
=
0
;
k
<
num_enbs
;
k
++
)
for
(
k
=
0
;
k
<
num_enbs
;
k
++
)
{
if
(
strcmp
(
ENBSParams
[
ENB_ACTIVE_ENBS_IDX
].
strlistptr
[
k
],
*
(
ENBParamList
.
paramarray
[
i
][
ENB_ENB_NAME_IDX
].
strptr
)
)
==
0
)
if
(
strcmp
(
ENBSParams
[
ENB_ACTIVE_ENBS_IDX
].
strlistptr
[
k
],
*
(
ENBParamList
.
paramarray
[
i
][
ENB_ENB_NAME_IDX
].
strptr
)
)
==
0
)
{
char
enbpath
[
MAX_OPTNAME_SIZE
+
8
];
...
...
@@ -733,7 +735,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
// Parse optional physical parameters
sprintf
(
enbpath
,
"%s.[%i]"
,
ENB_CONFIG_STRING_ENB_LIST
,
k
);
config_getlist
(
&
CCsParamList
,
NULL
,
0
,
enbpath
);
config_getlist
(
&
CCsParamList
,
NULL
,
0
,
enbpath
);
printf
(
"[KOGO][TESTING]: CC List count: %d
\n
"
,
CCsParamList
.
numelt
);
LOG_I
(
RRC
,
"num component carriers %d
\n
"
,
num_component_carriers
);
...
...
@@ -750,7 +752,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
for
(
j
=
0
;
j
<
CCsParamList
.
numelt
;
j
++
)
{
sprintf
(
ccspath
,
"%s.%s.[%i]"
,
enbpath
,
ENB_CONFIG_STRING_COMPONENT_CARRIERS
,
j
);
sprintf
(
ccspath
,
"%s.%s.[%i]"
,
enbpath
,
ENB_CONFIG_STRING_COMPONENT_CARRIERS
,
j
);
config_get
(
CCsParams
,
sizeof
(
CCsParams
)
/
sizeof
(
paramdef_t
),
ccspath
);
...
...
@@ -1825,85 +1827,29 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
//#ifdef Rel14
char
brparamspath
[
MAX_OPTNAME_SIZE
*
2
+
16
];
sprintf
(
brparamspath
,
"%s.%s"
,
ccspath
,
ENB_CONFIG_STRING_COMPONENT_BR_PARAMETERS
);
config_get
(
brParams
,
sizeof
(
brParams
)
/
sizeof
(
paramdef_t
),
brparamspath
);
/*setting_br13 = config_setting_get_member(component_carrier, ENB_CONFIG_STRING_BR);
sprintf
(
brparamspath
,
"%s.%s"
,
ccspath
,
ENB_CONFIG_STRING_COMPONENT_BR_PARAMETERS
);
config_get
(
brParams
,
sizeof
(
brParams
)
/
sizeof
(
paramdef_t
),
brparamspath
);
int
cnt_pucch_NumRepetitionCE
=
0
;
if (setting_br13 != NULL) {*/
int
cnt
=
0
;
/*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);
} else {*/
RRC_CONFIGURATION_REQ
(
msg_p
).
schedulingInfoSIB1_BR_r13
[
j
]
=
schedulingInfoSIB1_BR_r13
;
//}
/*system_info_value_tag_SI_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST);
int num_system_info;
if (system_info_value_tag_SI_list != NULL)
{
num_system_info = config_setting_length(system_info_value_tag_SI_list);
for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx)
{
system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx);
if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) )
{
AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++);
}
RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13;
}
}
else
{
num_system_info = 0;
}
RRC_CONFIGURATION_REQ (msg_p).system_info_value_tag_SI_size[j] = num_system_info;
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_CELLSELECTIONINFOCE, &cellSelectionInfoCE_r13) && !strcmp(cellSelectionInfoCE_r13, "ENABLE"))
{
if
(
!
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
}
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"))
{
printf("Enabling BR access SI scheduling parameters\n");
RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = TRUE;
if (!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_SI_WINDOWLENGTH_BR, &si_WindowLength_BR_r13) ||
!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_SI_REPETITIONPATTERN, &si_RepetitionPattern_r13) ||
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_STARTSYMBOLBR, &startSymbolBR_r13) ||
!config_setting_lookup_string(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);
}
if
(
!
strcmp
(
bandwidthReducedAccessRelatedInfo_r13
,
"ENABLE"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
bandwidthReducedAccessRelatedInfo_r13
[
j
]
=
TRUE
;
if
(
!
strcmp
(
si_WindowLength_BR_r13
,
"ms20"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
si_WindowLength_BR_r13
[
j
]
=
0
;
}
else
if
(
!
strcmp
(
si_WindowLength_BR_r13
,
"ms40"
))
{
...
...
@@ -1933,6 +1879,616 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
RRC_CONFIGURATION_REQ
(
msg_p
).
si_RepetitionPattern_r13
[
j
]
=
3
;
}
}
else
{
RRC_CONFIGURATION_REQ
(
msg_p
).
bandwidthReducedAccessRelatedInfo_r13
[
j
]
=
FALSE
;
}
char
schedulingInfoBrPath
[
MAX_OPTNAME_SIZE
*
2
];
config_getlist
(
&
schedulingInfoBrParamList
,
NULL
,
0
,
brparamspath
);
int
siInfoindex
;
for
(
siInfoindex
=
0
;
siInfoindex
<
schedulingInfoBrParamList
.
numelt
;
siInfoindex
++
)
{
sprintf
(
schedulingInfoBrPath
,
"%s.%s.[%i]"
,
brparamspath
,
ENB_CONFIG_STRING_SCHEDULING_INFO_LIST
,
siInfoindex
);
config_get
(
schedulingInfoBrParams
,
sizeof
(
schedulingInfoBrParams
)
/
sizeof
(
paramdef_t
),
schedulingInfoBrPath
);
RRC_CONFIGURATION_REQ
(
msg_p
).
si_Narrowband_r13
[
j
][
siInfoindex
]
=
si_Narrowband_r13
;
RRC_CONFIGURATION_REQ
(
msg_p
).
si_TBS_r13
[
j
][
siInfoindex
]
=
si_TBS_r13
;
printf
(
"[DEBUGGING][KOGO] si_narrowband_r13 = %d
\n
"
,
si_Narrowband_r13
);
printf
(
"[DEBUGGING][KOGO] si_TBS_r13 = %d
\n
"
,
si_TBS_r13
);
}
// kogo -- recheck
RRC_CONFIGURATION_REQ
(
msg_p
).
fdd_DownlinkOrTddSubframeBitmapBR_r13
[
j
]
=
CALLOC
(
1
,
sizeof
(
BOOLEAN_t
));
if
(
!
strcmp
(
fdd_DownlinkOrTddSubframeBitmapBR_r13
,
"subframePattern40-r13"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
fdd_DownlinkOrTddSubframeBitmapBR_r13
[
j
]
=
TRUE
;
RRC_CONFIGURATION_REQ
(
msg_p
).
fdd_DownlinkOrTddSubframeBitmapBR_val_r13
[
j
]
=
fdd_DownlinkOrTddSubframeBitmapBR_val_r13
;
}
else
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
fdd_DownlinkOrTddSubframeBitmapBR_r13
[
j
]
=
FALSE
;
}
printf
(
"[DEBUGGING][KOGO] fdd_DownlinkOrTddSubframeBitmapBR_val_r13 = %x
\n
"
,
fdd_DownlinkOrTddSubframeBitmapBR_val_r13
);
RRC_CONFIGURATION_REQ
(
msg_p
).
startSymbolBR_r13
[
j
]
=
startSymbolBR_r13
;
printf
(
"[DEBUGGING][KOGO] startSymbolBR_r13 = %d
\n
"
,
startSymbolBR_r13
);
if
(
!
strcmp
(
si_HoppingConfigCommon_r13
,
"off"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
si_HoppingConfigCommon_r13
[
j
]
=
1
;
}
else
if
(
!
strcmp
(
si_HoppingConfigCommon_r13
,
"on"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
si_HoppingConfigCommon_r13
[
j
]
=
0
;
}
RRC_CONFIGURATION_REQ
(
msg_p
).
si_ValidityTime_r13
[
j
]
=
calloc
(
1
,
sizeof
(
long
));
if
(
!
strcmp
(
si_ValidityTime_r13
,
"true"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
si_ValidityTime_r13
[
j
]
=
0
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d si_ValidityTime_r13 unknown value!
\n
"
,
RC
.
config_file_name
,
i
);
}
printf
(
"DEBUGGING][KOGO][CHAR*]: si_ValidityTime_r13: %s - %d
\n
"
,
si_ValidityTime_r13
,
*
RRC_CONFIGURATION_REQ
(
msg_p
).
si_ValidityTime_r13
[
j
]);
if
(
!
strcmp
(
freqHoppingParametersDL_r13
,
"ENABLE"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
freqHoppingParametersDL_r13
[
j
]
=
TRUE
;
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
;
RRC_CONFIGURATION_REQ
(
msg_p
).
mpdcch_pdsch_HoppingNB_r13
[
j
]
=
calloc
(
1
,
sizeof
(
long
));
if
(
!
strcmp
(
mpdcch_pdsch_HoppingNB_r13
,
"nb2"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
mpdcch_pdsch_HoppingNB_r13
[
j
]
=
0
;
}
else
if
(
!
strcmp
(
mpdcch_pdsch_HoppingNB_r13
,
"nb4"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
mpdcch_pdsch_HoppingNB_r13
[
j
]
=
1
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d mpdcch_pdsch_HoppingNB_r13 unknown value!
\n
"
,
RC
.
config_file_name
,
i
);
}
// kogo -- recheck -- optional
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
).
freqHoppingParametersDL_r13
[
j
]
=
FALSE
;
}
/** ------------------------------SIB23------------------------------------------ */
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
calloc
(
1
,
sizeof
(
long
));
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n3"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
0
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n4"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
1
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n5"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
2
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n6"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
3
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n7"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
4
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n8"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
5
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n10"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
6
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n20"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
7
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n50"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
8
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n100"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
9
;
}
else
if
(
!
strcmp
(
preambleTransMax_CE_r13
,
"n200"
))
{
*
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
preambleTransMax_CE_r13
=
10
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d preambleTransMax_CE_r13 unknown value!
\n
"
,
RC
.
config_file_name
,
i
);
}
printf
(
"[DEBUGGING][KOGO]: preambleTransMax_CE_r13 = %s
\n
"
,
preambleTransMax_CE_r13
);
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n4"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
4
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n8"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
8
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n12"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
12
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n16"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
16
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n20"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
20
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n24"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
24
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n28"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
28
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n32"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
32
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n36"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
36
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n40"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
40
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n44"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
44
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n48"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
48
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n52"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
52
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n56"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
56
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n60"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
60
/
4
)
-
1
;
}
else
if
(
!
strcmp
(
rach_numberOfRA_Preambles
,
"n64"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_numberOfRA_Preambles
=
(
64
/
4
)
-
1
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_numberOfRA_Preambles choice: 4,8,12,...,64!
\n
"
,
RC
.
config_file_name
,
i
,
rach_numberOfRA_Preambles
);
}
printf
(
"[DEBUGGING][KOGO]: rach_numberOfRA_Preambles = %s
\n
"
,
rach_numberOfRA_Preambles
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_powerRampingStep
=
rach_powerRampingStep
/
2
;
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleInitialReceivedTargetPower
=
(
rach_preambleInitialReceivedTargetPower
+
120
)
/
2
;
if
((
rach_preambleInitialReceivedTargetPower
<-
120
)
||
(
rach_preambleInitialReceivedTargetPower
>-
90
)
||
((
rach_preambleInitialReceivedTargetPower
&
1
)
!=
0
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_preambleInitialReceivedTargetPower choice: -120,-118,...,-90 !
\n
"
,
RC
.
config_file_name
,
i
,
rach_preambleInitialReceivedTargetPower
);
switch
(
rach_preambleTransMax
)
{
case
3
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n3
;
break
;
case
4
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n4
;
break
;
case
5
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n5
;
break
;
case
6
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n6
;
break
;
case
7
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n7
;
break
;
case
8
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n8
;
break
;
case
10
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n10
;
break
;
case
20
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n20
;
break
;
case
50
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n50
;
break
;
case
100
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n100
;
break
;
case
200
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_preambleTransMax
=
PreambleTransMax_n200
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_preambleTransMax choice: 3,4,5,6,7,8,10,20,50,100,200!
\n
"
,
RC
.
config_file_name
,
i
,
rach_preambleTransMax
);
break
;
}
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_raResponseWindowSize
=
(
rach_raResponseWindowSize
==
10
)
?
7
:
rach_raResponseWindowSize
-
2
;
if
((
rach_raResponseWindowSize
<
0
)
||
(
rach_raResponseWindowSize
==
9
)
||
(
rach_raResponseWindowSize
>
10
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_raResponseWindowSize choice: 2,3,4,5,6,7,8,10!
\n
"
,
RC
.
config_file_name
,
i
,
rach_preambleTransMax
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_macContentionResolutionTimer
=
(
rach_macContentionResolutionTimer
/
8
)
-
1
;
if
((
rach_macContentionResolutionTimer
<
8
)
||
(
rach_macContentionResolutionTimer
>
64
)
||
((
rach_macContentionResolutionTimer
&
7
)
!=
0
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_macContentionResolutionTimer choice: 8,16,...,56,64!
\n
"
,
RC
.
config_file_name
,
i
,
rach_preambleTransMax
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
rach_maxHARQ_Msg3Tx
=
rach_maxHARQ_Msg3Tx
;
if
((
rach_maxHARQ_Msg3Tx
<
0
)
||
(
rach_maxHARQ_Msg3Tx
>
8
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_maxHARQ_Msg3Tx choice: 1..8!
\n
"
,
RC
.
config_file_name
,
i
,
rach_preambleTransMax
);
char
rachCELevelInfoListPath
[
MAX_OPTNAME_SIZE
*
2
];
config_getlist
(
&
rachcelevellist
,
NULL
,
0
,
brparamspath
);
int
rachCEInfoIndex
;
for
(
rachCEInfoIndex
=
0
;
rachCEInfoIndex
<
rachcelevellist
.
numelt
;
rachCEInfoIndex
++
)
{
sprintf
(
rachCELevelInfoListPath
,
"%s.%s.[%i]"
,
brparamspath
,
ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13
,
rachCEInfoIndex
);
config_get
(
rachcelevelParams
,
sizeof
(
rachcelevelParams
)
/
sizeof
(
paramdef_t
),
rachCELevelInfoListPath
);
RRC_CONFIGURATION_REQ
(
msg_p
).
firstPreamble_r13
[
j
][
rachCEInfoIndex
]
=
firstPreamble_r13
;
RRC_CONFIGURATION_REQ
(
msg_p
).
lastPreamble_r13
[
j
][
rachCEInfoIndex
]
=
lastPreamble_r13
;
printf
(
"DEBUGGING][KOGO]: firstPreamble_r13: %d
\n
"
,
firstPreamble_r13
);
printf
(
"DEBUGGING][KOGO]: lastPreamble_r13: %d
\n
"
,
lastPreamble_r13
);
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf20"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
0
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf50"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
1
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf80"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
2
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf120"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
3
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf180"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
4
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf240"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
5
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf320"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
6
;
}
else
if
(
!
strcmp
(
ra_ResponseWindowSize_r13
,
"sf400"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
ra_ResponseWindowSize_r13
[
j
][
rachCEInfoIndex
]
=
7
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, ra_ResponseWindowSize_r13 unknown value!
\n
"
,
RC
.
config_file_name
);
}
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf80"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
0
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf100"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
1
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf120"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
2
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf160"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
3
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf200"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
4
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf240"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
5
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf480"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
6
;
}
else
if
(
!
strcmp
(
mac_ContentionResolutionTimer_r13
,
"sf960"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
mac_ContentionResolutionTimer_r13
[
j
][
rachCEInfoIndex
]
=
7
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, mac_ContentionResolutionTimer_r13 unknown value!
\n
"
,
RC
.
config_file_name
);
}
if
(
!
strcmp
(
rar_HoppingConfig_r13
,
"on"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rar_HoppingConfig_r13
[
j
][
rachCEInfoIndex
]
=
0
;
}
else
if
(
!
strcmp
(
rar_HoppingConfig_r13
,
"off"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
rar_HoppingConfig_r13
[
j
][
rachCEInfoIndex
]
=
1
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, rar_HoppingConfig_r13 unknown value!
\n
"
,
RC
.
config_file_name
);
}
}
// end for loop (rach ce level info)
printf
(
"DEBUGGING][KOGO]: ra_ResponseWindowSize_r13: %s
\n
"
,
ra_ResponseWindowSize_r13
);
printf
(
"DEBUGGING][KOGO]: mac_ContentionResolutionTimer_r13: %s
\n
"
,
mac_ContentionResolutionTimer_r13
);
printf
(
"DEBUGGING][KOGO]: rar_HoppingConfig_r13: %s
\n
"
,
rar_HoppingConfig_r13
);
/** BCCH CONFIG */
switch
(
bcch_modificationPeriodCoeff
)
{
case
2
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
bcch_modificationPeriodCoeff
=
BCCH_Config__modificationPeriodCoeff_n2
;
break
;
case
4
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
bcch_modificationPeriodCoeff
=
BCCH_Config__modificationPeriodCoeff_n4
;
break
;
case
8
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
bcch_modificationPeriodCoeff
=
BCCH_Config__modificationPeriodCoeff_n8
;
break
;
case
16
:
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
bcch_modificationPeriodCoeff
=
BCCH_Config__modificationPeriodCoeff_n16
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for bcch_modificationPeriodCoeff choice: 2,4,8,16"
,
RC
.
config_file_name
,
i
,
bcch_modificationPeriodCoeff
);
break
;
}
/** PCCH CONFIG */
if
(
!
strcmp
(
pcch_defaultPagingCycle
,
"rf32"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_defaultPagingCycle
=
PCCH_Config__defaultPagingCycle_rf32
;
}
else
if
(
!
strcmp
(
pcch_defaultPagingCycle
,
"rf64"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_defaultPagingCycle
=
PCCH_Config__defaultPagingCycle_rf64
;
}
else
if
(
!
strcmp
(
pcch_defaultPagingCycle
,
"rf128"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_defaultPagingCycle
=
PCCH_Config__defaultPagingCycle_rf128
;
}
else
if
(
!
strcmp
(
pcch_defaultPagingCycle
,
"rf256"
))
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_defaultPagingCycle
=
PCCH_Config__defaultPagingCycle_rf256
;
}
else
{
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pcch_defaultPagingCycle choice: 32,64,128,256!
\n
"
,
RC
.
config_file_name
,
i
,
pcch_defaultPagingCycle
);
}
printf
(
"[DEBUGGING][KOGO]: pcch_defaultPagingCycle_br = %d
\n
"
,
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_defaultPagingCycle
);
if
(
strcmp
(
pcch_nB
,
"fourT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_fourT
;
}
else
if
(
strcmp
(
pcch_nB
,
"twoT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_twoT
;
}
else
if
(
strcmp
(
pcch_nB
,
"oneT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_oneT
;
}
else
if
(
strcmp
(
pcch_nB
,
"halfT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_halfT
;
}
else
if
(
strcmp
(
pcch_nB
,
"quarterT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_quarterT
;
}
else
if
(
strcmp
(
pcch_nB
,
"oneEighthT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_oneEighthT
;
}
else
if
(
strcmp
(
pcch_nB
,
"oneSixteenthT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_oneSixteenthT
;
}
else
if
(
strcmp
(
pcch_nB
,
"oneThirtySecondT"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pcch_nB
=
PCCH_Config__nB_oneThirtySecondT
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pcch_nB choice: fourT,twoT,oneT,halfT,quarterT,oneighthT,oneSixteenthT,oneThirtySecondT !
\n
"
,
RC
.
config_file_name
,
i
,
pcch_defaultPagingCycle
);
/** PRACH CONFIG */
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_root
=
prach_root
;
if
((
prach_root
<
0
)
||
(
prach_root
>
1023
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_root choice: 0..1023 !
\n
"
,
RC
.
config_file_name
,
i
,
prach_root
);
printf
(
"DEBUGGING][KOGO]: prach_root: %d
\n
"
,
prach_root
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_config_index
=
prach_config_index
;
if
((
prach_config_index
<
0
)
||
(
prach_config_index
>
63
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_config_index choice: 0..1023 !
\n
"
,
RC
.
config_file_name
,
i
,
prach_config_index
);
printf
(
"DEBUGGING][KOGO]: prach_config_index: %d
\n
"
,
prach_config_index
);
if
(
!
prach_high_speed
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_PRACH_HIGH_SPEED
);
else
if
(
strcmp
(
prach_high_speed
,
"ENABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_high_speed
=
TRUE
;
}
else
if
(
strcmp
(
prach_high_speed
,
"DISABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_high_speed
=
FALSE
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for prach_config choice: ENABLE,DISABLE !
\n
"
,
RC
.
config_file_name
,
i
,
prach_high_speed
);
printf
(
"DEBUGGING][KOGO]: prach_high_speed: %s
\n
"
,
prach_high_speed
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_zero_correlation
=
prach_zero_correlation
;
if
((
prach_zero_correlation
<
0
)
||
(
prach_zero_correlation
>
15
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_zero_correlation choice: 0..15!
\n
"
,
RC
.
config_file_name
,
i
,
prach_zero_correlation
);
printf
(
"DEBUGGING][KOGO]: prach_zero_correlation: %d
\n
"
,
prach_zero_correlation
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
prach_freq_offset
=
prach_freq_offset
;
if
((
prach_freq_offset
<
0
)
||
(
prach_freq_offset
>
94
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_freq_offset choice: 0..94!
\n
"
,
RC
.
config_file_name
,
i
,
prach_freq_offset
);
printf
(
"DEBUGGING][KOGO]: prach_freq_offset: %d
\n
"
,
prach_freq_offset
);
/** PDSCH Config Common */
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pdsch_referenceSignalPower
=
pdsch_referenceSignalPower
;
if
((
pdsch_referenceSignalPower
<-
60
)
||
(
pdsch_referenceSignalPower
>
50
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pdsch_referenceSignalPower choice:-60..50!
\n
"
,
RC
.
config_file_name
,
i
,
pdsch_referenceSignalPower
);
printf
(
"DEBUGGING][KOGO]: pdsch_referenceSignalPower: %d
\n
"
,
pdsch_referenceSignalPower
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pdsch_p_b
=
pdsch_p_b
;
if
((
pdsch_p_b
<
0
)
||
(
pdsch_p_b
>
3
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pdsch_p_b choice: 0..3!
\n
"
,
RC
.
config_file_name
,
i
,
pdsch_p_b
);
printf
(
"DEBUGGING][KOGO]: pdsch_p_b: %d
\n
"
,
pdsch_p_b
);
/** PUSCH Config Common */
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_n_SB
=
pusch_n_SB
;
if
((
pusch_n_SB
<
1
)
||
(
pusch_n_SB
>
4
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_n_SB choice: 1..4!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_n_SB
);
printf
(
"DEBUGGING][KOGO]: pusch_n_SB: %d
\n
"
,
pusch_n_SB
);
if
(
!
pusch_hoppingMode
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_PUSCH_HOPPINGMODE
);
else
if
(
strcmp
(
pusch_hoppingMode
,
"interSubFrame"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_hoppingMode
=
PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame
;
}
else
if
(
strcmp
(
pusch_hoppingMode
,
"intraAndInterSubFrame"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_hoppingMode
=
PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_hoppingMode
);
printf
(
"DEBUGGING][KOGO]: pusch_hoppingMode: %s
\n
"
,
pusch_hoppingMode
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_hoppingOffset
=
pusch_hoppingOffset
;
if
((
pusch_hoppingOffset
<
0
)
||
(
pusch_hoppingOffset
>
98
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_hoppingOffset choice: 0..98!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_hoppingMode
);
printf
(
"DEBUGGING][KOGO]: pusch_hoppingOffset: %d
\n
"
,
pusch_hoppingOffset
);
if
(
!
pusch_enable64QAM
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_PUSCH_ENABLE64QAM
);
else
if
(
strcmp
(
pusch_enable64QAM
,
"ENABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_enable64QAM
=
TRUE
;
}
else
if
(
strcmp
(
pusch_enable64QAM
,
"DISABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_enable64QAM
=
FALSE
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_enable64QAM choice: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_enable64QAM
);
printf
(
"DEBUGGING][KOGO]: pusch_enable64QAM: %s
\n
"
,
pusch_enable64QAM
);
if
(
!
pusch_groupHoppingEnabled
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN
);
else
if
(
strcmp
(
pusch_groupHoppingEnabled
,
"ENABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_groupHoppingEnabled
=
TRUE
;
}
else
if
(
strcmp
(
pusch_groupHoppingEnabled
,
"DISABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_groupHoppingEnabled
=
FALSE
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_groupHoppingEnabled
);
printf
(
"DEBUGGING][KOGO]: pusch_groupHoppingEnabled: %s
\n
"
,
pusch_groupHoppingEnabled
);
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_groupAssignment
=
pusch_groupAssignment
;
if
((
pusch_groupAssignment
<
0
)
||
(
pusch_groupAssignment
>
29
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_groupAssignment choice: 0..29!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_groupAssignment
);
printf
(
"DEBUGGING][KOGO]: pusch_groupAssignment: %d
\n
"
,
pusch_groupAssignment
);
if
(
!
pusch_sequenceHoppingEnabled
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN
);
else
if
(
strcmp
(
pusch_sequenceHoppingEnabled
,
"ENABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_sequenceHoppingEnabled
=
TRUE
;
}
else
if
(
strcmp
(
pusch_sequenceHoppingEnabled
,
"DISABLE"
)
==
0
)
{
RRC_CONFIGURATION_REQ
(
msg_p
).
radioresourceconfig_BR
[
j
].
pusch_sequenceHoppingEnabled
=
FALSE
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!
\n
"
,
RC
.
config_file_name
,
i
,
pusch_sequenceHoppingEnabled
);
printf
(
"DEBUGGING][KOGO]: pusch_sequenceHoppingEnabled: %s
\n
"
,
pusch_sequenceHoppingEnabled
);
/** PUCCH Config Common */
/** TO BE CONTINUED */
/*system_info_value_tag_SI_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST);
int num_system_info;
if (system_info_value_tag_SI_list != NULL)
{
num_system_info = config_setting_length(system_info_value_tag_SI_list);
for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx)
{
system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx);
if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) )
{
AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++);
}
RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13;
}
}
else
{
num_system_info = 0;
}
RRC_CONFIGURATION_REQ (msg_p).system_info_value_tag_SI_size[j] = num_system_info;
if (config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_BRAccessRelatedInfo, &bandwidthReducedAccessRelatedInfo_r13) && !strcmp(bandwidthReducedAccessRelatedInfo_r13, "ENABLE"))
{
printf("Enabling BR access SI scheduling parameters\n");
RRC_CONFIGURATION_REQ(msg_p).bandwidthReducedAccessRelatedInfo_r13[j] = TRUE;
if (!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_SI_WINDOWLENGTH_BR, &si_WindowLength_BR_r13) ||
!config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_SI_REPETITIONPATTERN, &si_RepetitionPattern_r13) ||
!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_STARTSYMBOLBR, &startSymbolBR_r13) ||
!config_setting_lookup_string(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).startSymbolBR_r13[j] = startSymbolBR_r13;
...
...
@@ -3403,7 +3959,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc)
RC.config_file_name, i, rach_preambleInitialReceivedTargetPower);
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_powerRampingStep
= rach_powerRampingStep/
2;
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].rach_powerRampingStep
= rach_powerRampingStep /
2;
if ((rach_powerRampingStep<0) || (rach_powerRampingStep>6) || ((rach_powerRampingStep&1)!=0))
AssertFatal (0,
...
...
@@ -4791,7 +5347,7 @@ void RCConfig(void) {
if
(
RC
.
nb_inst
>
0
)
{
RC
.
nb_CC
=
(
int
*
)
malloc
((
1
+
RC
.
nb_inst
)
*
sizeof
(
int
));
for
(
int
i
=
0
;
i
<
RC
.
nb_inst
;
i
++
)
{
sprintf
(
aprefix
,
"%s.[%i]"
,
ENB_CONFIG_STRING_ENB_LIST
,
i
);
sprintf
(
aprefix
,
"%s.[%i]"
,
ENB_CONFIG_STRING_ENB_LIST
,
i
);
config_getlist
(
&
CCsParamList
,
NULL
,
0
,
aprefix
);
RC
.
nb_CC
[
i
]
=
CCsParamList
.
numelt
;
}
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
78408cc6
...
...
@@ -306,6 +306,7 @@ static int DEFENBS[] = {0};
/* component carries configuration parameters name */
#define ENB_CONFIG_STRING_FRAME_TYPE "frame_type"
#define ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13 "preambleTransMax_CE_r13"
#define ENB_CONFIG_STRING_PBCH_REPETITION "pbch_repetition"
#define ENB_CONFIG_STRING_TDD_CONFIG "tdd_config"
#define ENB_CONFIG_STRING_TDD_CONFIG_S "tdd_config_s"
...
...
@@ -534,6 +535,7 @@ static int DEFENBS[] = {0};
{ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL, NULL, 0, iptr:&interval_DLHoppingConfigCommonModeB_r13_val, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13, NULL, 0, iptr:&mpdcch_pdsch_HoppingOffset_r13, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_FRAME_TYPE, NULL, 0, strptr:&frame_type, defstrval:"FDD", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_PREAMBLE_TRANSMAX_CE_R13, NULL, 0, strptr:&preambleTransMax_CE_r13, defstrval:"n10", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG, NULL, 0, iptr:&tdd_config, defintval:3, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG_S, NULL, 0, iptr:&tdd_config_s, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_PREFIX_TYPE, NULL, 0, strptr:&prefix_type, defstrval:"NORMAL", TYPE_STRING, 0}, \
...
...
@@ -591,7 +593,7 @@ static int DEFENBS[] = {0};
{ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE, NULL, 0, iptr:&rach_raResponseWindowSize, defintval:10, TYPE_INT, 0}, \
{ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER, NULL, 0, iptr:&rach_macContentionResolutionTimer, defintval:48, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_RACH_MAXHARQMSG3TX, NULL, 0, iptr:&rach_maxHARQ_Msg3Tx, defintval:4, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE, NULL, 0,
iptr:&pcch_defaultPagingCycle, defintval:128, TYPE_INT,
0}, \
{ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE, NULL, 0,
strptr:&pcch_defaultPagingCycle, defstrval:"rf128", TYPE_STRING,
0}, \
{ENB_CONFIG_STRING_PCCH_NB, NULL, 0, strptr:&pcch_nB, defstrval:"oneT", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF, NULL, 0, iptr:&bcch_modificationPeriodCoeff, defintval:2, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UETIMERS_T300, NULL, 0, strptr:&ue_TimersAndConstants_t300, defstrval:"ms1000", TYPE_STRING, 0}, \
...
...
@@ -626,25 +628,40 @@ static int DEFENBS[] = {0};
}
#define ENB_CONFIG_STRING_FIRST_PREAMBLE_R13 "firstPreamble_r13"
#define ENB_CONFIG_STRING_LAST_PREAMBLE_R13 "lastPreamble_r13"
#define ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13 "ra_ResponseWindowSize_r13"
#define ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13 "mac_ContentionResolutionTimer_r13"
#define ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13 "rar_HoppingConfig_r13 "
#define ENB_CONFIG_STRING_RACH_CE_LEVELINFOLIST_R13 "rach_CE_LevelInfoList_r13"
#define RACH_CE_LEVELINFOLIST_R13_DESC { \
{
"firstPreamble_r13"
, NULL, 0, iptr:&firstPreamble_r13, defintval:60, TYPE_UINT, 0}, \
{
"lastPreamble_r13"
, NULL, 0, iptr:&lastPreamble_r13, defintval:63, TYPE_UINT, 0}, \
{
"ra_ResponseWindowSize_r13",
NULL, 0, iptr:&ra_ResponseWindowSize_r13, defintval:"sf20", TYPE_STRING, 0}, \
{
"mac_ContentionResolutionTimer_r13",
NULL, 0, iptr:&mac_ContentionResolutionTimer_r13, defintval:"sf80", TYPE_STRING, 0}, \
{
"rar_HoppingConfig_r13"
, NULL, 0, iptr:&rar_HoppingConfig_r13, defintval:"off", TYPE_STRING, 0}\
{
ENB_CONFIG_STRING_FIRST_PREAMBLE_R13
, NULL, 0, iptr:&firstPreamble_r13, defintval:60, TYPE_UINT, 0}, \
{
ENB_CONFIG_STRING_LAST_PREAMBLE_R13
, NULL, 0, iptr:&lastPreamble_r13, defintval:63, TYPE_UINT, 0}, \
{
ENB_CONFIG_STRING_RA_RESPONSE_WINDOW_SIZE_R13,
NULL, 0, iptr:&ra_ResponseWindowSize_r13, defintval:"sf20", TYPE_STRING, 0}, \
{
ENB_CONFIG_STRING_MAC_CONTENTION_RESOLUTION_TIMER_R13,
NULL, 0, iptr:&mac_ContentionResolutionTimer_r13, defintval:"sf80", TYPE_STRING, 0}, \
{
ENB_CONFIG_STRING_RAR_HOPPING_CONFIG_R13
, NULL, 0, iptr:&rar_HoppingConfig_r13, defintval:"off", TYPE_STRING, 0}\
}
#define ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR "prach_config_index_br"
#define ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR "prach_freq_offset_br"
#define ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13 "prach_StartingSubframe_r13"
#define ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13 "maxNumPreambleAttemptCE_r13"
#define ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13 "numRepetitionPerPreambleAttempt_r13"
#define ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13 "mpdcch_NumRepetition_RA_r13"
#define ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13 "prach_HoppingConfig_r13"
#define ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND "max_available_narrow_band"
#define ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13 "prach_parameters_ce_r13"
#define PRACH_PARAMS_CE_R13_DESC { \
{
"prach_config_index_br", NULL, 0, iptr:&prach_config_index_br, defintval:3, TYPE_UINT, 0}, \
{
"prach_freq_offset_br"
,
NULL
,
0
,
iptr
:&
prach_freq_offset_br
,
defintval
:
1
,
TYPE_UINT
,
0
},
\
{
"prach_StartingSubframe_r13"
,
NULL
,
0
,
iptr
:&
prach_StartingSubframe_r13
,
defintval
:
0
,
TYPE_UINT
,
0
},
\
{
"maxNumPreambleAttemptCE_r13"
,
NULL
,
0
,
iptr
:&
maxNumPreambleAttemptCE_r13
,
defintval
:
"n10"
,
TYPE_STRING
,
0
},
\
{
"numRepetitionPerPreambleAttempt_r13"
,
NULL
,
0
,
iptr
:&
numRepetitionPerPreambleAttempt_r13
,
defintval
:
"n1"
,
TYPE_STRING
,
0
},
\
{
"mpdcch_NumRepetition_RA_r13"
,
NULL
,
0
,
iptr
:&
mpdcch_NumRepetition_RA_r13
,
defintval
:
"r1"
,
TYPE_STRING
,
0
},
\
{
"prach_HoppingConfig_r13"
,
NULL
,
0
,
iptr
:&
prach_HoppingConfig_r13
,
defintval
:
"off"
,
TYPE_STRING
,
0
},
\
{
"max_available_narrow_band"
,
NULL
,
0
,
iptr
:&
maxavailablenarrowband
,
defintval
:
2
,
TYPE_UINT
,
0
}
\
{
ENB_CONFIG_STRING_PRACH_CONFIG_INDEX_BR, NULL, 0, iptr:&prach_config_index_br, defintval:3, TYPE_UINT, 0}, \
{
ENB_CONFIG_STRING_PRACH_FREQ_OFFSET_BR, NULL, 0, iptr:&prach_freq_offset_br, defintval:1, TYPE_UINT, 0}, \
{
ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13, NULL, 0, iptr:&prach_StartingSubframe_r13, defintval:0, TYPE_UINT, 0}, \
{
ENB_CONFIG_STRING_MAX_NUM_PER_PREAMBLE_ATTEMPT_CE_R13, NULL, 0, iptr:&maxNumPreambleAttemptCE_r13, defintval:"n10", TYPE_STRING, 0}, \
{
ENB_CONFIG_STRING_NUM_REPETITION_PER_PREAMBLE_ATTEMPT_R13, NULL, 0, iptr:&numRepetitionPerPreambleAttempt_r13, defintval:"n1", TYPE_STRING, 0}, \
{
ENB_CONFIG_STRING_MPDCCH_NUM_REPETITION_RA_R13, NULL, 0, iptr:&mpdcch_NumRepetition_RA_r13, defintval:"r1", TYPE_STRING, 0}, \
{
ENB_CONFIG_STRING_PRACH_HOPPING_CONFIG_R13, NULL, 0, iptr:&prach_HoppingConfig_r13, defintval:"off", TYPE_STRING, 0}, \
{
ENB_CONFIG_SRING_MAX_AVAILABLE_NARROW_BAND, NULL, 0, iptr:&maxavailablenarrowband, defintval:2, TYPE_UINT, 0} \
}
#define ENB_CONFIG_STRING_N1PUCCH_AN_INFOLIST_R13 "n1PUCCH_AN_InfoList_r13"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment