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
wangjie
OpenXG-RAN
Commits
13052361
Commit
13052361
authored
Dec 16, 2017
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
config parser code finished
parent
cba2a21a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1241 additions
and
32 deletions
+1241
-32
openair2/ENB_APP/enb_config.h
openair2/ENB_APP/enb_config.h
+13
-6
openair2/ENB_APP/enb_config_NB_IoT.c
openair2/ENB_APP/enb_config_NB_IoT.c
+1228
-26
No files found.
openair2/ENB_APP/enb_config.h
View file @
13052361
...
...
@@ -283,7 +283,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP);
const
Enb_properties_array_t
*
enb_config_get
(
void
);
// ***
NB-IoT
*** //
// ***
***************************************************** NB-IoT *******************************************************
*** //
typedef
struct
Enb_properties_NB_IoT_s
{
/* Unique eNB_id to identify the eNB within EPC.
...
...
@@ -409,18 +409,18 @@ typedef struct Enb_properties_NB_IoT_s {
long
pcch_defaultPagingCycle_NB
[
1
+
MAX_NUM_CCs
];
long
nprach_CP_Length
[
1
+
MAX_NUM_CCs
];
long
nprach_rsrp_range
[
1
+
MAX_NUM_CCs
];
c
onst
char
*
nprach_SubcarrierMSG3_RangeStart
;
c
har
*
nprach_SubcarrierMSG3_RangeStart
;
long
maxNumPreambleAttemptCE_NB
[
1
+
MAX_NUM_CCs
];
long
npdsch_nrs_Power
[
1
+
MAX_NUM_CCs
];
long
npusch_ack_nack_numRepetitions_NB
[
1
+
MAX_NUM_CCs
];
long
npusch_srs_SubframeConfig_NB
[
1
+
MAX_NUM_CCs
];
long
npusch_threeTone_CyclicShift_r13
[
1
+
MAX_NUM_CCs
];
long
npusch_sixTone_CyclicShift_r13
[
1
+
MAX_NUM_CCs
];
long
npusch_groupHoppingEnabled
[
1
+
MAX_NUM_CCs
];
BOOLEAN_t
npusch_groupHoppingEnabled
[
1
+
MAX_NUM_CCs
];
long
npusch_groupAssignmentNPUSCH_r13
[
1
+
MAX_NUM_CCs
];
long
dl_GapThreshold_NB
[
1
+
MAX_NUM_CCs
];
long
dl_GapPeriodicity_NB
[
1
+
MAX_NUM_CCs
];
c
onst
c
har
*
dl_GapDurationCoeff_NB
;
char
*
dl_GapDurationCoeff_NB
;
long
npusch_p0_NominalNPUSCH
[
1
+
MAX_NUM_CCs
];
long
npusch_alpha
[
1
+
MAX_NUM_CCs
];
long
deltaPreambleMsg3
[
1
+
MAX_NUM_CCs
];
...
...
@@ -439,7 +439,7 @@ typedef struct Enb_properties_NB_IoT_s {
long
numRepetitionsPerPreambleAttempt
[
1
+
MAX_NUM_CCs
];
long
npdcch_NumRepetitions_RA
[
1
+
MAX_NUM_CCs
];
long
npdcch_StartSF_CSS_RA
[
1
+
MAX_NUM_CCs
];
c
onst
char
*
npdcch_Offset_RA
;
c
har
*
npdcch_Offset_RA
;
//****************************************
long
srb1_timer_poll_retransmit
;
...
...
@@ -506,9 +506,16 @@ typedef struct Enb_properties_NB_IoT_s {
#endif
}
Enb_properties_NB_IoT_t
;
const
Enb_properties_array_t
*
enb_config_init_NB_IoT
(
char
*
lib_config_file_name_pP
);
typedef
struct
Enb_properties_array_NB_IoT_s
{
int
number
;
Enb_properties_NB_IoT_t
*
properties
[
MAX_ENB
];
}
Enb_properties_array_NB_IoT_t
;
void
enb_config_display_NB_IoT
(
void
);
const
Enb_properties_array_NB_IoT_t
*
enb_config_init_NB_IoT
(
char
*
lib_config_file_name_pP
);
const
Enb_properties_array_NB_IoT_t
*
enb_config_get_NB_IoT
(
void
);
#endif
/* ENB_CONFIG_H_ */
/** @} */
openair2/ENB_APP/enb_config_NB_IoT.c
View file @
13052361
...
...
@@ -53,6 +53,10 @@
#include "LAYER2/MAC/extern.h"
#include "PHY/extern.h"
#include "SystemInformationBlockType2-NB-r13.h"
//#include "RACH-ConfigCommon-NB-r13.h"
//#include "DL-GapConfig-NB-r13"
/* those macros are here to help diagnose problems in configuration files
* if the lookup fails, a warning is printed
* (yes we can use the function name for the macro itself, the C preprocessor
...
...
@@ -244,7 +248,7 @@
#define ENB_CONFIG_STRING_OSA_LOG_LEVEL "osa_log_level"
#define ENB_CONFIG_STRING_OSA_LOG_VERBOSITY "osa_log_verbosity"
//
//******************************** NB-IoT parameters **************************************************************
//********************************
*****
NB-IoT parameters **************************************************************
//
//************* RRC parameters in the config file of merge branch
...
...
@@ -258,20 +262,18 @@
#define ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE_NB_IOT "pcch_defaultPagingCycle_NB"
#define ENB_CONFIG_STRING_NPRACH_CP_LENGTH_NB_IOT "nprach_CP_Length"
#define ENB_CONFIG_STRING_NPRACH_RSRP_RANGE_NB_IOT "nprach_rsrp_range"
#define ENB_CONFIG_STRING_NPRACH_SUBCARRIERMSG3_RANGESTART_NB_IOT "nprach_SubcarrierMSG3_RangeStart"
#define ENB_CONFIG_STRING_MAXNUM_PREAMBLE_ATTEMPT_CE_NB_IOT "maxNumPreambleAttemptCE_NB"
#define ENB_CONFIG_STRING_NPDSCH_NRS_POWER_NB_IOT "npdsch_nrs_Power"
#define ENB_CONFIG_STRING_NPUSCH_ACK_NACK_NUMREPETITIONS_NB_IOT "npusch_ack_nack_numRepetitions_NB"
#define ENB_CONFIG_STRING_NPUSCH_SRS_SUBFRAMECONFIG_NB_IOT "npusch_srs_SubframeConfig_NB"
#define ENB_CONFIG_STRING_NPUSCH_THREETONE_CYCLICSHIFT_R13_NB_IOT "npusch_threeTone_CyclicShift_r13"
#define ENB_CONFIG_STRING_NPUSCH_SIXTONE_CYCLICSHIFT_R13_NB_IOT "npusch_sixTone_CyclicShift_r13"
#define ENB_CONFIG_STRING_NPUSCH_GROUP
HOPPINGENABLED_NB_IOT
"npusch_groupHoppingEnabled"
#define ENB_CONFIG_STRING_NPUSCH_GROUP
_HOPPING_EN_NB_IOT
"npusch_groupHoppingEnabled"
#define ENB_CONFIG_STRING_NPUSCH_GROUPASSIGNMENTNPUSH_R13_NB_IOT "npusch_groupAssignmentNPUSCH_r13"
#define ENB_CONFIG_STRING_DL_GAPTHRESHOLD_NB_IOT "dl_GapThreshold_NB"
#define ENB_CONFIG_STRING_DL_GAPPERIODICITY_NB_IOT "dl_GapPeriodicity_NB"
#define ENB_CONFIG_STRING_DL_GAPDURATIONCOEFF_NB_IOT "dl_GapDurationCoeff_NB"
#define ENB_CONFIG_STRING_NPUSCH_P0NOMINALPUSH_NB_IOT "npusch_p0_NominalNPUSCH"
#define ENB_CONFIG_STRING_NPUSCH_AL
FA_NB_IOT
"npusch_alpha"
#define ENB_CONFIG_STRING_NPUSCH_AL
PHA_NB_IOT
"npusch_alpha"
#define ENB_CONFIG_STRING_DELTAPREAMBLEMSG3_NB_IOT "deltaPreambleMsg3"
#define ENB_CONFIG_STRING_UETIMERS_T300_NB_IOT "ue_TimersAndConstants_t300_NB"
...
...
@@ -288,10 +290,13 @@
#define ENB_CONFIG_STRING_NPRACH_STARTTIME_NB_IOT "nprach_StartTime"
#define ENB_CONFIG_STRING_NPRACH_SUBCARRIEROFFSET_NB_IOT "nprach_SubcarrierOffset"
#define ENB_CONFIG_STRING_NPRACH_NUMSUBCARRIERS_NB_IOT "nprach_NumSubcarriers"
#define ENB_CONFIG_STRING_NPRACH_SUBCARRIERMSG3_RANGESTART_NB_IOT "nprach_SubcarrierMSG3_RangeStart"
#define ENB_CONFIG_STRING_MAXNUM_PREAMBLE_ATTEMPT_CE_NB_IOT "maxNumPreambleAttemptCE_NB"
#define ENB_CONFIG_STRING_NUMREPETITIONSPERPREAMBLEATTEMPT_NB_IOT "numRepetitionsPerPreambleAttempt"
#define ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT "npdcch_NumRepetitions_RA"
#define ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT "npdcch_StartSF_CSS_RA"
#define ENB_CONFIG_STRING_NPDCCH_OFFSET_RA_NB_IOT "npdcch_Offset_RA"
//*********************************************************************************************************************
#define KHz (1000UL)
...
...
@@ -339,9 +344,9 @@ static const eutra_band_t eutra_bands[] = {
{
44
,
703
*
MHz
,
803
*
MHz
,
703
*
MHz
,
803
*
MHz
,
TDD
},
};
Enb_properties_array_t
enb_properties
;
Enb_properties_array_
NB_IoT_
t
enb_properties
;
void
enb_config_display
(
void
)
void
enb_config_display
_NB_IoT
(
void
)
{
int
i
,
j
;
...
...
@@ -579,7 +584,7 @@ extern int asn1_xer_print;
#else
#define libconfig_int int
#endif
const
Enb_properties_array_t
*
enb_config_init_NB_IoT
(
char
*
lib_config_file_name_pP
)
const
Enb_properties_array_
NB_IoT_
t
*
enb_config_init_NB_IoT
(
char
*
lib_config_file_name_pP
)
{
config_t
cfg
;
config_setting_t
*
setting
=
NULL
;
...
...
@@ -726,10 +731,10 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
char
*
address
=
NULL
;
char
*
cidr
=
NULL
;
char
*
astring
=
NULL
;
char
*
flexran_agent_interface_name
=
NULL
;
char
*
flexran_agent_ipv4_address
=
NULL
;
libconfig_int
flexran_agent_port
=
0
;
char
*
flexran_agent_cache
=
NULL
;
char
*
flexran_agent_interface_name
=
NULL
;
char
*
flexran_agent_ipv4_address
=
NULL
;
libconfig_int
flexran_agent_port
=
0
;
char
*
flexran_agent_cache
=
NULL
;
libconfig_int
otg_ue_id
=
0
;
char
*
otg_app_type
=
NULL
;
char
*
otg_bg_traffic
=
NULL
;
...
...
@@ -766,20 +771,18 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
libconfig_int
pcch_defaultPagingCycle_NB
=
0
;
libconfig_int
nprach_CP_Length
=
0
;
libconfig_int
nprach_rsrp_range
=
0
;
const
char
*
nprach_SubcarrierMSG3_RangeStart
=
NULL
;
libconfig_int
maxNumPreambleAttemptCE_NB
=
0
;
libconfig_int
npdsch_nrs_Power
=
0
;
libconfig_int
npusch_ack_nack_numRepetitions_NB
=
0
;
libconfig_int
npusch_srs_SubframeConfig_NB
=
0
;
libconfig_int
npusch_threeTone_CyclicShift_r13
=
0
;
libconfig_int
npusch_sixTone_CyclicShift_r13
=
0
;
libconfig_int
npusch_groupHoppingEnabled
=
0
;
const
char
*
npusch_groupHoppingEnabled
=
NULL
;
libconfig_int
npusch_groupAssignmentNPUSCH_r13
=
0
;
libconfig_int
dl_GapThreshold_NB
=
0
;
libconfig_int
dl_GapPeriodicity_NB
=
0
;
const
char
*
dl_GapDurationCoeff_NB
=
NULL
;
libconfig_int
npusch_p0_NominalNPUSCH
=
0
;
libconfig_int
npusch_alpha
=
0
;
const
char
*
npusch_alpha
=
NULL
;
libconfig_int
deltaPreambleMsg3
=
0
;
libconfig_int
ue_TimersAndConstants_t300_NB
=
0
;
...
...
@@ -793,6 +796,8 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
libconfig_int
nprach_StartTime
=
0
;
libconfig_int
nprach_SubcarrierOffset
=
0
;
libconfig_int
nprach_NumSubcarriers
=
0
;
const
char
*
nprach_SubcarrierMSG3_RangeStart
=
NULL
;
libconfig_int
maxNumPreambleAttemptCE_NB
=
0
;
libconfig_int
numRepetitionsPerPreambleAttempt
=
0
;
libconfig_int
npdcch_NumRepetitions_RA
=
0
;
libconfig_int
npdcch_StartSF_CSS_RA
=
0
;
...
...
@@ -1013,29 +1018,27 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_UETIMERS_N311
,
&
ue_TimersAndConstants_n311
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_UE_TRANSMISSION_MODE
,
&
ue_TransmissionMode
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE_NB_IOT
,
&
rach_raResponseWindowSize_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER_NB_IOT
,
&
rach_macContentionResolutionTimer_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_POWERRAMPINGSTEP_NB_IOT
,
&
rach_powerRampingStep_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_PREAMBLEINITIALRECEIVEDTARGETPOWER_NB_IOT
,
&
rach_preambleInitialReceivedTargetPower_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_PREAMBLETRANSMAX_CE_NB_IOT
,
&
rach_preambleTransMax_CE_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_RARESPONSEWINDOWSIZE_NB_IOT
,
&
rach_raResponseWindowSize_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_MACCONTENTIONRESOLUTIONTIMER_NB_IOT
,
&
rach_macContentionResolutionTimer_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_BCCH_MODIFICATIONPERIODCOEFF_NB_IOT
,
&
bcch_modificationPeriodCoeff_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_PCCH_DEFAULT_PAGING_CYCLE_NB_IOT
,
&
pcch_defaultPagingCycle_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_CP_LENGTH_NB_IOT
,
&
nprach_CP_Length
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_RSRP_RANGE_NB_IOT
,
&
nprach_rsrp_range
)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_SUBCARRIERMSG3_RANGESTART_NB_IOT
,
&
nprach_SubcarrierMSG3_RangeStart
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_MAXNUM_PREAMBLE_ATTEMPT_CE_NB_IOT
,
&
maxNumPreambleAttemptCE_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPDSCH_NRS_POWER_NB_IOT
,
&
npdsch_nrs_Power
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_ACK_NACK_NUMREPETITIONS_NB_IOT
,
&
npusch_ack_nack_numRepetitions_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_SRS_SUBFRAMECONFIG_NB_IOT
,
&
npusch_srs_SubframeConfig_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_THREETONE_CYCLICSHIFT_R13_NB_IOT
,
&
npusch_threeTone_CyclicShift_r13
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_SIXTONE_CYCLICSHIFT_R13_NB_IOT
,
&
npusch_sixTone_CyclicShift_r13
)
&&
config_setting_lookup_
int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_GROUPHOPPINGENABLED
_NB_IOT
,
&
npusch_groupHoppingEnabled
)
&&
config_setting_lookup_
string
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_GROUP_HOPPING_EN
_NB_IOT
,
&
npusch_groupHoppingEnabled
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_GROUPASSIGNMENTNPUSH_R13_NB_IOT
,
&
npusch_groupAssignmentNPUSCH_r13
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_DL_GAPTHRESHOLD_NB_IOT
,
&
dl_GapThreshold_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_DL_GAPPERIODICITY_NB_IOT
,
&
dl_GapPeriodicity_NB
)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_DL_GAPDURATIONCOEFF_NB_IOT
,
&
dl_GapDurationCoeff_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_P0NOMINALPUSH_NB_IOT
,
&
npusch_p0_NominalNPUSCH
)
&&
config_setting_lookup_
int
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_ALF
A_NB_IOT
,
&
npusch_alpha
)
&&
config_setting_lookup_
string
(
component_carrier
,
ENB_CONFIG_STRING_NPUSCH_ALPH
A_NB_IOT
,
&
npusch_alpha
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_DELTAPREAMBLEMSG3_NB_IOT
,
&
deltaPreambleMsg3
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_UETIMERS_T300_NB_IOT
,
&
ue_TimersAndConstants_t300_NB
)
...
...
@@ -1049,6 +1052,8 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_STARTTIME_NB_IOT
,
&
nprach_StartTime
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_SUBCARRIEROFFSET_NB_IOT
,
&
nprach_SubcarrierOffset
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_NUMSUBCARRIERS_NB_IOT
,
&
nprach_NumSubcarriers
)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_NPRACH_SUBCARRIERMSG3_RANGESTART_NB_IOT
,
&
nprach_SubcarrierMSG3_RangeStart
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_MAXNUM_PREAMBLE_ATTEMPT_CE_NB_IOT
,
&
maxNumPreambleAttemptCE_NB
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NUMREPETITIONSPERPREAMBLEATTEMPT_NB_IOT
,
&
numRepetitionsPerPreambleAttempt
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPDCCH_NUMREPETITIONS_RA_NB_IOT
,
&
npdcch_NumRepetitions_RA
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_NPDCCH_STARTSF_CSS_RA_NB_IOT
,
&
npdcch_StartSF_CSS_RA
)
...
...
@@ -2107,8 +2112,1203 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
lib_config_file_name_pP
,
i
,
ue_TransmissionMode
);
break
;
}
//****************************************************************************************************************
//************************************ NB-IoT part ***************************************************************
//****************************************************************************************************************
switch
(
rach_raResponseWindowSize_NB
)
{
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp2
;
break
;
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp4
;
break
;
case
5
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp5
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp6
;
break
;
case
7
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp7
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp8
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
RACH_Info_NB_r13__ra_ResponseWindowSize_r13_pp10
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_raResponseWindowSize_NB choice: 2,3,4,5,6,7,8,10 "
,
lib_config_file_name_pP
,
i
,
rach_raResponseWindowSize_NB
);
break
;
}
switch
(
rach_macContentionResolutionTimer_NB
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp2
;
break
;
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp4
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer_NB
[
j
]
=
RACH_Info_NB_r13__mac_ContentionResolutionTimer_r13_pp64
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_macContentionResolutionTimer_NB choice: 1,2,3,4,8,16,32,64 "
,
lib_config_file_name_pP
,
i
,
rach_macContentionResolutionTimer_NB
);
break
;
}
switch
(
rach_powerRampingStep_NB
)
{
case
0
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep_NB
[
j
]
=
PowerRampingParameters__powerRampingStep_dB0
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep_NB
[
j
]
=
PowerRampingParameters__powerRampingStep_dB2
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep_NB
[
j
]
=
PowerRampingParameters__powerRampingStep_dB4
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep_NB
[
j
]
=
PowerRampingParameters__powerRampingStep_dB6
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_powerRampingStep_NB choice: 0,2,4,6 "
,
lib_config_file_name_pP
,
i
,
rach_powerRampingStep_NB
);
break
;
}
switch
(
rach_preambleInitialReceivedTargetPower_NB
)
{
case
-
120
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_120
;
break
;
case
-
118
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_118
;
break
;
case
-
116
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_116
;
break
;
case
-
114
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_114
;
break
;
case
-
112
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_112
;
break
;
case
-
110
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_110
;
break
;
case
-
108
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_108
;
break
;
case
-
106
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_106
;
break
;
case
-
104
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_104
;
break
;
case
-
102
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_102
;
break
;
case
-
100
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_100
;
break
;
case
-
98
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_98
;
break
;
case
-
96
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_96
;
break
;
case
-
94
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_94
;
break
;
case
-
92
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_92
;
break
;
case
-
90
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower_NB
[
j
]
=
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_90
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_120 choice: 120,118,116,114,112,110,108,106,104,102,100,98,96,94,92,90 "
,
lib_config_file_name_pP
,
i
,
PowerRampingParameters__preambleInitialReceivedTargetPower_dBm_120
);
break
;
//************************************ NB-IoT part *****************************
}
switch
(
rach_preambleTransMax_CE_NB
)
{
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n4
;
break
;
case
5
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n5
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n6
;
break
;
case
7
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n7
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n8
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n10
;
break
;
case
20
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n20
;
break
;
case
50
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n50
;
break
;
case
100
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n100
;
break
;
case
200
:
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleTransMax_CE_NB
[
j
]
=
PreambleTransMax_n200
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_preambleTransMax_CE_NB choice: 3,4,5,6,7,8,10,20,50,100,200 "
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax_CE_NB
);
break
;
}
switch
(
bcch_modificationPeriodCoeff_NB
)
{
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n16
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n16
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n16
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for bcch_modificationPeriodCoeff_NB choice: 16,32,64,128 "
,
lib_config_file_name_pP
,
i
,
bcch_modificationPeriodCoeff_NB
);
break
;
}
switch
(
pcch_defaultPagingCycle_NB
)
{
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
pcch_defaultPagingCycle_NB
[
j
]
=
PCCH_Config_NB_r13__defaultPagingCycle_r13_rf128
;
break
;
case
256
:
enb_properties
.
properties
[
enb_properties_index
]
->
pcch_defaultPagingCycle_NB
[
j
]
=
PCCH_Config_NB_r13__defaultPagingCycle_r13_rf256
;
break
;
case
512
:
enb_properties
.
properties
[
enb_properties_index
]
->
pcch_defaultPagingCycle_NB
[
j
]
=
PCCH_Config_NB_r13__defaultPagingCycle_r13_rf512
;
break
;
case
1024
:
enb_properties
.
properties
[
enb_properties_index
]
->
pcch_defaultPagingCycle_NB
[
j
]
=
PCCH_Config_NB_r13__defaultPagingCycle_r13_rf1024
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pcch_defaultPagingCycle_NB choice: 128,256,512,1024 "
,
lib_config_file_name_pP
,
i
,
pcch_defaultPagingCycle_NB
);
break
;
}
switch
(
nprach_CP_Length
)
{
case
0
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_CP_Length
[
j
]
=
NPRACH_ConfigSIB_NB_r13__nprach_CP_Length_r13_us66dot7
;
break
;
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_CP_Length
[
j
]
=
NPRACH_ConfigSIB_NB_r13__nprach_CP_Length_r13_us266dot7
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_CP_Length choice: 0,1 "
,
lib_config_file_name_pP
,
i
,
nprach_CP_Length
);
break
;
}
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_rsrp_range
[
j
]
=
nprach_rsrp_range
;
if
((
nprach_rsrp_range
<
0
)
||
(
nprach_rsrp_range
>
96
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_rsrp_range choice: 0..96 !
\n
"
,
lib_config_file_name_pP
,
i
,
nprach_rsrp_range
);
enb_properties
.
properties
[
enb_properties_index
]
->
npdsch_nrs_Power
[
j
]
=
npdsch_nrs_Power
;
if
((
npdsch_nrs_Power
<-
60
)
||
(
npdsch_nrs_Power
>
50
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npdsch_nrs_Power choice: -60..50 !
\n
"
,
lib_config_file_name_pP
,
i
,
npdsch_nrs_Power
);
switch
(
npusch_ack_nack_numRepetitions_NB
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r2
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r4
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_ack_nack_numRepetitions_NB
[
j
]
=
ACK_NACK_NumRepetitions_NB_r13_r128
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_ack_nack_numRepetitions_NB choice: 1,2,4,8,16,32,64,128 "
,
lib_config_file_name_pP
,
i
,
npusch_ack_nack_numRepetitions_NB
);
break
;
}
switch
(
npusch_srs_SubframeConfig_NB
)
{
case
0
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc0
;
break
;
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc2
;
break
;
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc4
;
break
;
case
5
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc5
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc6
;
break
;
case
7
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc7
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc8
;
break
;
case
9
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc9
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc10
;
break
;
case
11
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc11
;
break
;
case
12
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc12
;
break
;
case
13
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc13
;
break
;
case
14
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc14
;
break
;
case
15
:
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_srs_SubframeConfig_NB
[
j
]
=
NPUSCH_ConfigCommon_NB_r13__srs_SubframeConfig_r13_sc15
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_srs_SubframeConfig_NB choice: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 "
,
lib_config_file_name_pP
,
i
,
npusch_srs_SubframeConfig_NB
);
break
;
}
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_threeTone_CyclicShift_r13
[
j
]
=
npusch_threeTone_CyclicShift_r13
;
if
((
npusch_threeTone_CyclicShift_r13
<
0
)
||
(
npusch_threeTone_CyclicShift_r13
>
2
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_threeTone_CyclicShift_r13 choice: 0..2 !
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_threeTone_CyclicShift_r13
);
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_sixTone_CyclicShift_r13
[
j
]
=
npusch_sixTone_CyclicShift_r13
;
if
((
npusch_sixTone_CyclicShift_r13
<
0
)
||
(
npusch_sixTone_CyclicShift_r13
>
3
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_sixTone_CyclicShift_r13 choice: 0..3 !
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_sixTone_CyclicShift_r13
);
if
(
!
npusch_groupHoppingEnabled
)
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_NPUSCH_GROUP_HOPPING_EN_NB_IOT
);
else
if
(
strcmp
(
npusch_groupHoppingEnabled
,
"ENABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_groupHoppingEnabled
[
j
]
=
TRUE
;
}
else
if
(
strcmp
(
npusch_groupHoppingEnabled
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_groupHoppingEnabled
[
j
]
=
FALSE
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for npusch_groupHoppingEnabled choice: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_groupHoppingEnabled
);
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_groupAssignmentNPUSCH_r13
[
j
]
=
npusch_groupAssignmentNPUSCH_r13
;
if
((
npusch_groupAssignmentNPUSCH_r13
<
0
)
||
(
npusch_groupAssignmentNPUSCH_r13
>
29
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_groupAssignmentNPUSCH_r13 choice: 0..29!
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_groupAssignmentNPUSCH_r13
);
switch
(
dl_GapThreshold_NB
)
{
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapThreshold_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapThreshold_r13_n32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapThreshold_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapThreshold_r13_n64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapThreshold_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapThreshold_r13_n128
;
break
;
case
256
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapThreshold_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapThreshold_r13_n256
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for dl_GapThreshold_NB choice: 32,64,128,256 "
,
lib_config_file_name_pP
,
i
,
dl_GapThreshold_NB
);
break
;
}
switch
(
dl_GapPeriodicity_NB
)
{
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapPeriodicity_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapPeriodicity_r13_sf64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapPeriodicity_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapPeriodicity_r13_sf128
;
break
;
case
256
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapPeriodicity_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapPeriodicity_r13_sf256
;
break
;
case
512
:
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapPeriodicity_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapPeriodicity_r13_sf512
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for dl_GapPeriodicity_NB choice: 64,128,256,512 "
,
lib_config_file_name_pP
,
i
,
dl_GapPeriodicity_NB
);
break
;
}
if
(
strcmp
(
dl_GapDurationCoeff_NB
,
"oneEighth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapDurationCoeff_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapDurationCoeff_r13_oneEighth
;
}
else
if
(
strcmp
(
dl_GapDurationCoeff_NB
,
"oneFourth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapDurationCoeff_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapDurationCoeff_r13_oneFourth
;
}
else
if
(
strcmp
(
dl_GapDurationCoeff_NB
,
"threeEighth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapDurationCoeff_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapDurationCoeff_r13_threeEighth
;
}
else
if
(
strcmp
(
dl_GapDurationCoeff_NB
,
"oneHalf"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
dl_GapDurationCoeff_NB
[
j
]
=
DL_GapConfig_NB_r13__dl_GapDurationCoeff_r13_oneHalf
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for dl_GapDurationCoeff_NB choice: oneEighth,oneFourth,threeEighth,oneHalf !
\n
"
,
lib_config_file_name_pP
,
i
,
dl_GapDurationCoeff_NB
);
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_p0_NominalNPUSCH
[
j
]
=
npusch_p0_NominalNPUSCH
;
if
((
npusch_p0_NominalNPUSCH
<
-
126
)
||
(
npusch_p0_NominalNPUSCH
>
24
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npusch_p0_NominalNPUSCH choice: -126..24 !
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_p0_NominalNPUSCH
);
if
(
strcmp
(
npusch_alpha
,
"AL0"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al0
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL04"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al04
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL05"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al05
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL06"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al06
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL07"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al07
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL08"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al08
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL09"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al09
;
}
else
if
(
strcmp
(
npusch_alpha
,
"AL1"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npusch_alpha
[
j
]
=
UplinkPowerControlCommon_NB_r13__alpha_r13_al1
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for npusch_alpha choice: AL0,AL04,AL05,AL06,AL07,AL08,AL09,AL1!
\n
"
,
lib_config_file_name_pP
,
i
,
npusch_alpha
);
enb_properties
.
properties
[
enb_properties_index
]
->
deltaPreambleMsg3
[
j
]
=
deltaPreambleMsg3
;
if
((
deltaPreambleMsg3
<
-
1
)
||
(
deltaPreambleMsg3
>
6
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for deltaPreambleMsg3 choice: -1..6 !
\n
"
,
lib_config_file_name_pP
,
i
,
deltaPreambleMsg3
);
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize_NB
[
j
]
=
(
rach_raResponseWindowSize_NB
==
10
)
?
7
:
rach_raResponseWindowSize_NB
-
2
;
if
((
rach_raResponseWindowSize_NB
<
0
)
||
(
rach_raResponseWindowSize_NB
==
9
)
||
(
rach_raResponseWindowSize_NB
>
10
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_raResponseWindowSize_NB choice: 2,3,4,5,6,7,8,10!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax
);
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep
[
j
]
=
rach_powerRampingStep
/
2
;
if
((
rach_powerRampingStep
<
0
)
||
(
rach_powerRampingStep
>
6
)
||
((
rach_powerRampingStep
&
1
)
!=
0
))
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_powerRampingStep choice: 0,2,4,6 !
\n
"
,
lib_config_file_name_pP
,
i
,
rach_powerRampingStep
);
switch
(
bcch_modificationPeriodCoeff_NB
)
{
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n16
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n32
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n64
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
bcch_modificationPeriodCoeff_NB
[
j
]
=
BCCH_Config_NB_r13__modificationPeriodCoeff_r13_n128
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for bcch_modificationPeriodCoeff_NB choice: 16,32,64,128"
,
lib_config_file_name_pP
,
i
,
bcch_modificationPeriodCoeff_NB
);
break
;
}
//************************************************************************* NB-IoT Timer ************************************************************
switch
(
ue_TimersAndConstants_t300_NB
)
{
case
2500
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms2500
;
break
;
case
4000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms4000
;
break
;
case
6000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms6000
;
break
;
case
10000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms10000
;
break
;
case
15000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms15000
;
break
;
case
25000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms25000
;
break
;
case
40000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms40000
;
break
;
case
60000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t300_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t300_r13_ms60000
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t300_NB choice: 2500,4000,6000,10000,15000,25000,40000,60000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t300_NB
);
break
;
}
switch
(
ue_TimersAndConstants_t301_NB
)
{
case
2500
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms2500
;
break
;
case
4000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms4000
;
break
;
case
6000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms6000
;
break
;
case
10000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms10000
;
break
;
case
15000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms15000
;
break
;
case
25000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms25000
;
break
;
case
40000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms40000
;
break
;
case
60000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t301_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t301_r13_ms60000
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t301_NB choice: 2500,4000,6000,10000,15000,25000,40000,60000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t301_NB
);
break
;
}
switch
(
ue_TimersAndConstants_t310_NB
)
{
case
0
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms0
;
break
;
case
200
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms200
;
break
;
case
500
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms500
;
break
;
case
1000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms1000
;
break
;
case
2000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms2000
;
break
;
case
4000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms4000
;
break
;
case
8000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t310_r13_ms8000
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t310_NB choice: 0,200,500,1000,2000,4000,8000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t310_NB
);
break
;
}
switch
(
ue_TimersAndConstants_t311_NB
)
{
case
1000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms1000
;
break
;
case
3000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms3000
;
break
;
case
5000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms5000
;
break
;
case
10000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms10000
;
break
;
case
15000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms15000
;
break
;
case
20000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms20000
;
break
;
case
30000
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_t311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__t311_r13_ms30000
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t311_NB choice: 1000,3000,5000,10000,150000,20000,30000"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t311_NB
);
break
;
}
switch
(
ue_TimersAndConstants_n310_NB
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n2
;
break
;
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n4
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n6
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n8
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n10
;
break
;
case
20
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n310_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n310_r13_n20
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_n310_NB choice: 1,2,3,4,6,8,10,20"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_n310_NB
);
break
;
}
switch
(
ue_TimersAndConstants_n311_NB
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n2
;
break
;
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n4
;
break
;
case
5
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n5
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n6
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n8
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TimersAndConstants_n311_NB
[
j
]
=
UE_TimersAndConstants_NB_r13__n311_r13_n10
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_n311_NB choice: 1,2,3,4,5,6,8,10"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_n311_NB
);
break
;
}
//************************************************************************** NBPRACH NB-IoT *****************************************************
switch
(
nprach_Periodicity
)
{
case
40
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms40
;
break
;
case
80
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms80
;
break
;
case
160
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms160
;
break
;
case
240
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms240
;
break
;
case
320
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms320
;
break
;
case
640
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms640
;
break
;
case
1280
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms1280
;
break
;
case
2560
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_Periodicity
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_Periodicity_r13_ms2560
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_Periodicity choice: 40,80,160,240,320,640,1280,2560"
,
lib_config_file_name_pP
,
i
,
nprach_Periodicity
);
break
;
}
switch
(
nprach_StartTime
)
{
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms128
;
break
;
case
256
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms256
;
break
;
case
512
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms512
;
break
;
case
1024
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_StartTime
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_StartTime_r13_ms1024
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_StartTime choice: 8,16,32,64,128,256,512,1024"
,
lib_config_file_name_pP
,
i
,
nprach_StartTime
);
break
;
}
switch
(
nprach_SubcarrierOffset
)
{
case
40
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n0
;
break
;
case
80
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n12
;
break
;
case
160
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n24
;
break
;
case
240
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n36
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n2
;
break
;
case
18
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n18
;
break
;
case
34
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierOffset
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_n34
;
break
;
//case 1:
// enb_properties.properties[enb_properties_index]->nprach_SubcarrierOffset[j] = NPRACH_Parameters_NB_r13__nprach_SubcarrierOffset_r13_spare1;
// break;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_SubcarrierOffset choice: 0,12,24,36,2,18,34"
,
lib_config_file_name_pP
,
i
,
nprach_SubcarrierOffset
);
break
;
}
switch
(
nprach_NumSubcarriers
)
{
case
12
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_NumSubcarriers
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_NumSubcarriers_r13_n12
;
break
;
case
24
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_NumSubcarriers
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_NumSubcarriers_r13_n24
;
break
;
case
36
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_NumSubcarriers
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_NumSubcarriers_r13_n36
;
break
;
case
48
:
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_NumSubcarriers
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_NumSubcarriers_r13_n48
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nprach_NumSubcarriers choice: 12,24,36,48"
,
lib_config_file_name_pP
,
i
,
nprach_NumSubcarriers
);
break
;
}
if
(
strcmp
(
nprach_SubcarrierMSG3_RangeStart
,
"zero"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierMSG3_RangeStart
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_zero
;
}
else
if
(
strcmp
(
nprach_SubcarrierMSG3_RangeStart
,
"oneThird"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierMSG3_RangeStart
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_oneThird
;
}
else
if
(
strcmp
(
nprach_SubcarrierMSG3_RangeStart
,
"twoThird"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierMSG3_RangeStart
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_twoThird
;
}
else
if
(
strcmp
(
nprach_SubcarrierMSG3_RangeStart
,
"one"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
nprach_SubcarrierMSG3_RangeStart
[
j
]
=
NPRACH_Parameters_NB_r13__nprach_SubcarrierMSG3_RangeStart_r13_one
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for nprach_SubcarrierMSG3_RangeStart choice: zero,oneThird,twoThird,one !
\n
"
,
lib_config_file_name_pP
,
i
,
nprach_SubcarrierMSG3_RangeStart
);
switch
(
maxNumPreambleAttemptCE_NB
)
{
case
3
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n3
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n4
;
break
;
case
5
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n5
;
break
;
case
6
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n6
;
break
;
case
7
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n7
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n8
;
break
;
case
10
:
enb_properties
.
properties
[
enb_properties_index
]
->
maxNumPreambleAttemptCE_NB
[
j
]
=
NPRACH_Parameters_NB_r13__maxNumPreambleAttemptCE_r13_n10
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for maxNumPreambleAttemptCE_NB choice: 3,4,5,6,7,8,10"
,
lib_config_file_name_pP
,
i
,
maxNumPreambleAttemptCE_NB
);
break
;
}
switch
(
numRepetitionsPerPreambleAttempt
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n2
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n4
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
numRepetitionsPerPreambleAttempt
[
j
]
=
NPRACH_Parameters_NB_r13__numRepetitionsPerPreambleAttempt_r13_n128
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for numRepetitionsPerPreambleAttempt choice: 1,2,4,8,16,32,64,128"
,
lib_config_file_name_pP
,
i
,
numRepetitionsPerPreambleAttempt
);
break
;
}
switch
(
npdcch_NumRepetitions_RA
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r1
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r2
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r4
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r64
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r128
;
break
;
case
256
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r256
;
break
;
case
512
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r512
;
break
;
case
1024
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r1024
;
break
;
case
2048
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_NumRepetitions_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_NumRepetitions_RA_r13_r2048
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npdcch_NumRepetitions_RA choice: 1,2,4,8,16,32,64,128,512,1024,2048"
,
lib_config_file_name_pP
,
i
,
npdcch_NumRepetitions_RA
);
break
;
}
switch
(
npdcch_StartSF_CSS_RA
)
{
case
1
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v1dot5
;
break
;
case
2
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v2
;
break
;
case
4
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v4
;
break
;
case
8
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v8
;
break
;
case
16
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v16
;
break
;
case
32
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v32
;
break
;
case
64
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v48
;
break
;
case
128
:
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_StartSF_CSS_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_StartSF_CSS_RA_r13_v64
;
break
;
default:
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for npdcch_StartSF_CSS_RA choice: 1.5,2,4,8,16,32,48,64"
,
lib_config_file_name_pP
,
i
,
npdcch_StartSF_CSS_RA
);
break
;
}
if
(
strcmp
(
npdcch_Offset_RA
,
"zero"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_Offset_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_Offset_RA_r13_zero
;
}
else
if
(
strcmp
(
npdcch_Offset_RA
,
"oneEighth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_Offset_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_Offset_RA_r13_oneEighth
;
}
else
if
(
strcmp
(
npdcch_Offset_RA
,
"oneFourth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_Offset_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_Offset_RA_r13_oneFourth
;
}
else
if
(
strcmp
(
npdcch_Offset_RA
,
"threeEighth"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
npdcch_Offset_RA
[
j
]
=
NPRACH_Parameters_NB_r13__npdcch_Offset_RA_r13_threeEighth
;
}
else
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for npdcch_Offset_RA choice: zero,oneEighth,oneFourth,threeEighth !
\n
"
,
lib_config_file_name_pP
,
i
,
npdcch_Offset_RA
);
...
...
@@ -2121,8 +3321,10 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
//****************************************************************************************************************
//****************************************************************************************************************
//****************************************************************************************************************
//*******************************************************************************
}
}
...
...
@@ -2961,12 +4163,12 @@ const Enb_properties_array_t *enb_config_init_NB_IoT(char* lib_config_file_name_
"Failed to parse eNB configuration file %s, mismatch between %u active eNBs and %u corresponding defined eNBs !
\n
"
,
lib_config_file_name_pP
,
num_enb_properties
,
enb_properties_index
);
enb_config_display
();
enb_config_display
_NB_IoT
();
return
&
enb_properties
;
}
const
Enb_properties_array_
t
*
enb_config_get
(
void
)
const
Enb_properties_array_
NB_IoT_t
*
enb_config_get_NB_IoT
(
void
)
{
return
&
enb_properties
;
}
...
...
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