Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
1def70d1
Commit
1def70d1
authored
Sep 21, 2016
by
Rohit Gupta
Browse files
Options
Browse Files
Download
Plain Diff
Merge from develop
parents
ea820537
9af34c39
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
5364 additions
and
2326 deletions
+5364
-2326
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-4
cmake_targets/autotests/README.txt
cmake_targets/autotests/README.txt
+41
-12
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+4476
-2188
cmake_targets/build_oai
cmake_targets/build_oai
+1
-1
openair1/PHY/MODULATION/slot_fep_ul.c
openair1/PHY/MODULATION/slot_fep_ul.c
+32
-19
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+117
-100
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
...S/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
...S/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
+2
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpb210.conf
...S/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpb210.conf
+174
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpx310.conf
...S/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpx310.conf
+171
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpb210.conf
...PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpb210.conf
+174
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpx310.conf
...PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpx310.conf
+172
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
1def70d1
...
...
@@ -548,7 +548,7 @@ elseif (${RF_BOARD} STREQUAL "OAI_USRP")
set
(
HW_SOURCE
${
HW_SOURCE
}
${
OPENAIR_TARGETS
}
/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
)
LINK_DIRECTORIES
(
"/opt/lib"
)
set
(
option_HW_lib
"-luhd -rdynamic -ldl"
)
set
(
option_HW_lib
"-luhd -rdynamic -ldl
-lboost_system
"
)
elseif
(
${
RF_BOARD
}
STREQUAL
"OAI_BLADERF"
)
include_directories
(
"
${
OPENAIR_TARGETS
}
/ARCH/BLADERF/USERSPACE/LIB/"
)
...
...
@@ -1636,7 +1636,6 @@ target_link_libraries (lte-softmodem -ldl
target_link_libraries
(
lte-softmodem
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
sctp
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem
${
LIBBOOST_LIBRARIES
}
-lboost_system
)
#Added manually as it is not found for some reason for USRP
target_link_libraries
(
lte-softmodem
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem
${
T_LIB
}
)
...
...
@@ -1671,7 +1670,6 @@ target_link_libraries (lte-softmodem-nos1
target_link_libraries
(
lte-softmodem-nos1
${
LIBXML2_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1 pthread m
${
CONFIG_LIBRARIES
}
rt crypt
${
CRYPTO_LIBRARIES
}
${
OPENSSL_LIBRARIES
}
${
NETTLE_LIBRARIES
}
${
option_HW_lib
}
${
option_TP_lib
}
${
XFORMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1
${
LIBBOOST_LIBRARIES
}
-lboost_system
)
#Added manually as it is not found for some reason for USRP
target_link_libraries
(
lte-softmodem-nos1
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
lte-softmodem-nos1
${
T_LIB
}
)
...
...
@@ -1694,7 +1692,7 @@ target_link_libraries(rrh_gw
UTIL LFDS
-Wl,--end-group
)
target_link_libraries
(
rrh_gw rt pthread m
)
target_link_libraries
(
rrh_gw
${
option_HW_lib
}
${
option_TP_lib
}
${
LIBBOOST_LIBRARIES
}
-lboost_system
)
#Added manually as it is not found for some reason for USRP
target_link_libraries
(
rrh_gw
${
option_HW_lib
}
${
option_TP_lib
}
)
target_link_libraries
(
rrh_gw
${
LIB_LMS_LIBRARIES
}
)
target_link_libraries
(
rrh_gw
${
T_LIB
}
)
...
...
cmake_targets/autotests/README.txt
View file @
1def70d1
...
...
@@ -104,25 +104,31 @@ Obj.# Case# Test# Description
01 51 06 mbmssim (TBD)
01 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for
TX/1RX, 2TX/2RX
01 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for
1TX/1RX (TM1), 2TX/2RX (TM2)
01 55 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 02 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 03 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 04 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 05 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 55 06 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 07 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 08 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 09 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 10 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 11 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
01 55 06 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 07 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 08 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 09 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 10 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 11 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 2TX/2RX
(TM2)
01 55 12 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 13 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 14 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 15 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 16 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 17 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 55 18 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 55 19 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 55 20 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 55 21 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 55 22 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 55 23 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 56 lte-softmodem tests with USRP B210 RF as eNB and OAI EPC (eNB and EPC are on same machines) w/ Bandrich COTS UE
01 56 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
...
...
@@ -140,7 +146,7 @@ Obj.# Case# Test# Description
01 57 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
01 57 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
01 58 lte-softmodem tests with USRP X310 RF as eNB and ALU EPC w/ Bandrich COTS UE for
`TX/1RX, 2TX/2RX
01 58 lte-softmodem tests with USRP X310 RF as eNB and ALU EPC w/ Bandrich COTS UE for
1TX/1RX (TM1), 2TX/2RX(TM2)
01 58 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 58 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 58 02 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
...
...
@@ -153,6 +159,18 @@ Obj.# Case# Test# Description
01 58 09 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 58 10 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 58 11 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 58 12 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 13 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 14 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 15 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 16 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 17 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
01 58 18 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 58 19 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 58 20 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 58 21 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 58 22 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 58 23 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 59 lte-softmodem tests with USRP X310 RF as eNB and OAI EPC (eNB and EPC are on same machines) w/ Bandrich COTS UE
...
...
@@ -165,7 +183,7 @@ Obj.# Case# Test# Description
01 60 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
01 60 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
01 61 lte-softmodem tests with EXMIMO RF as eNB and ALU EPC w/ Bandrich COTS UE for
`
TX/1RX, 2TX/2RX
01 61 lte-softmodem tests with EXMIMO RF as eNB and ALU EPC w/ Bandrich COTS UE for
1
TX/1RX, 2TX/2RX
01 61 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
01 61 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
01 61 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
...
...
@@ -183,7 +201,7 @@ Obj.# Case# Test# Description
01 63 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
01 63 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
01 65 00 lte-softmodem tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
01 65 00 lte-softmodem tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for
1
TX/1RX
01 65 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
01 65 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
01 65 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
...
...
@@ -225,7 +243,7 @@ Obj.# Case# Test# Description
01 85 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
01 85 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
02 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Sony Experia M4 COTS UE for
TX/1RX
02 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Sony Experia M4 COTS UE for
1TX/1RX and 2TX/2RX (TM2)
02 55 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
02 55 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
02 55 02 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
...
...
@@ -238,7 +256,18 @@ Obj.# Case# Test# Description
02 55 09 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
02 55 10 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
02 55 11 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
02 55 12 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 13 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 14 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 15 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 16 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 17 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
02 55 18 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
02 55 19 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
02 55 20 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
02 55 21 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
02 55 22 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
02 55 23 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
01 64 lte-softmodem-noS1 tests
...
...
cmake_targets/autotests/test_case_list.xml
View file @
1def70d1
This source diff could not be displayed because it is too large. You can
view the blob
instead.
cmake_targets/build_oai
View file @
1def70d1
...
...
@@ -330,7 +330,7 @@ function main() {
#By default: EXMIMO: enable
if
[
"
$FORCE_DEADLINE_SCHEDULER_FLAG_USER
"
=
""
]
;
then
if
[
"
$HW
"
=
"EXMIMO"
]
;
then
DEADLINE_SCHEDULER_FLAG_USER
=
"
Fals
e"
DEADLINE_SCHEDULER_FLAG_USER
=
"
Tru
e"
elif
[
"
$HW
"
=
"ETHERNET"
]
;
then
DEADLINE_SCHEDULER_FLAG_USER
=
"True"
elif
[
"
$HW
"
=
"OAI_USRP"
]
;
then
...
...
openair1/PHY/MODULATION/slot_fep_ul.c
View file @
1def70d1
...
...
@@ -50,6 +50,10 @@ int slot_fep_ul(LTE_DL_FRAME_PARMS *frame_parms,
void
(
*
dft
)(
int16_t
*
,
int16_t
*
,
int
);
int
tmp_dft_in
[
2048
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
unsigned
int
frame_length_samples
=
frame_parms
->
samples_per_tti
*
10
;
unsigned
int
rx_offset
;
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dft
=
dft128
;
...
...
@@ -103,28 +107,37 @@ int slot_fep_ul(LTE_DL_FRAME_PARMS *frame_parms,
#endif
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
rx_offset
=
slot_offset
+
nb_prefix_samples0
;
if
(
l
==
0
)
{
dft
(
#ifndef OFDMA_ULSCH
(
int16_t
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
slot_offset
+
nb_prefix_samples0
],
#else
(
int16_t
*
)
&
eNB_common_vars
->
rxdata
[
eNB_id
][
aa
][((
frame_parms
->
samples_per_tti
>>
1
)
*
Ns
)
+
nb_prefix_samples0
],
#endif
(
int16_t
*
)
&
eNB_common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
);
dft
(
(
int16_t
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
rx_offset
],
(
int16_t
*
)
&
eNB_common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
);
}
else
{
dft
(
#ifndef OFDMA_ULSCH
(
short
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
slot_offset
+
#else
(
short
*
)
&
eNB_common_vars
->
rxdata
[
eNB_id
][
aa
][((
frame_parms
->
samples_per_tti
>>
1
)
*
Ns
)
+
#endif
(
frame_parms
->
ofdm_symbol_size
+
nb_prefix_samples0
+
nb_prefix_samples
)
+
(
frame_parms
->
ofdm_symbol_size
+
nb_prefix_samples
)
*
(
l
-
1
)],
(
short
*
)
&
eNB_common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
);
rx_offset
+=
(
frame_parms
->
ofdm_symbol_size
+
nb_prefix_samples
)
*
l
;
if
(
rx_offset
>
(
frame_length_samples
-
frame_parms
->
ofdm_symbol_size
))
{
memcpy
((
void
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
frame_length_samples
],
(
void
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
0
],
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int
));
}
if
(
(
rx_offset
&
7
)
!=
0
){
memcpy
((
void
*
)
&
tmp_dft_in
,
(
void
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][(
rx_offset
%
frame_length_samples
)],
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int
));
dft
(
(
short
*
)
tmp_dft_in
,
(
short
*
)
&
eNB_common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
);
}
else
{
dft
(
(
short
*
)
&
eNB_common_vars
->
rxdata_7_5kHz
[
eNB_id
][
aa
][
rx_offset
],
(
short
*
)
&
eNB_common_vars
->
rxdataF
[
eNB_id
][
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
);
}
}
}
...
...
openair2/ENB_APP/enb_config.c
View file @
1def70d1
...
...
@@ -61,6 +61,27 @@
#include "LAYER2/MAC/extern.h"
#include "PHY/extern.h"
/* 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
* won't die in an infinite loop)
*/
#define config_setting_lookup_int(setting, name, value) \
(config_setting_lookup_int(setting, name, value) || \
(printf("WARNING: setting '%s' not found in configuration file\n", name), 0))
#define config_setting_lookup_int64(setting, name, value) \
(config_setting_lookup_int64(setting, name, value) || \
(printf("WARNING: setting '%s' not found in configuration file\n", name), 0))
#define config_setting_lookup_float(setting, name, value) \
(config_setting_lookup_float(setting, name, value) || \
(printf("WARNING: setting '%s' not found in configuration file\n", name), 0))
#define config_setting_lookup_bool(setting, name, value) \
(config_setting_lookup_bool(setting, name, value) || \
(printf("WARNING: setting '%s' not found in configuration file\n", name), 0))
#define config_setting_lookup_string(setting, name, value) \
(config_setting_lookup_string(setting, name, value) || \
(printf("WARNING: setting '%s' not found in configuration file\n", name), 0))
#define ENB_CONFIG_STRING_ACTIVE_ENBS "Active_eNBs"
#define ENB_CONFIG_STRING_ENB_LIST "eNBs"
...
...
@@ -524,7 +545,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
int
num_component_carriers
=
0
;
int
i
=
0
;
int
j
=
0
;
int
parse_errors
=
0
;
libconfig_int
enb_id
=
0
;
const
char
*
cc_node_function
=
NULL
;
...
...
@@ -731,7 +751,6 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if
(
setting
!=
NULL
)
{
enb_properties_index
=
0
;
parse_errors
=
0
;
num_enbs
=
config_setting_length
(
setting
);
for
(
i
=
0
;
i
<
num_enbs
;
i
++
)
{
...
...
@@ -758,7 +777,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
)
)
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, %u th enb
\n
"
,
lib_config_file_name_pP
,
i
);
continue
;
// FIXME this prevents segfaults below, not sure what happens after function exit
...
...
@@ -776,7 +795,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
cell_type
,
"CELL_HOME_ENB"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
cell_type
=
CELL_HOME_ENB
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for cell_type choice: CELL_MACRO_ENB or CELL_HOME_ENB !
\n
"
,
lib_config_file_name_pP
,
i
,
cell_type
);
}
...
...
@@ -883,7 +902,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
#endif
))
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, Component Carrier %d!
\n
"
,
lib_config_file_name_pP
,
enb_properties
.
properties
[
enb_properties_index
]
->
nb_cc
++
);
continue
;
// FIXME this prevents segfaults below, not sure what happens after function exit
...
...
@@ -928,17 +947,17 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
enb_properties
.
properties
[
enb_properties_index
]
->
tdd_config
[
j
]
=
tdd_config
;
Assert
Error
(
tdd_config
<=
TDD_Config__subframeAssignment_sa6
,
parse_errors
++
,
Assert
Fatal
(
tdd_config
<=
TDD_Config__subframeAssignment_sa6
,
"Failed to parse eNB configuration file %s, enb %d illegal tdd_config %d (should be 0-%d)!"
,
lib_config_file_name_pP
,
i
,
tdd_config
,
TDD_Config__subframeAssignment_sa6
);
enb_properties
.
properties
[
enb_properties_index
]
->
tdd_config_s
[
j
]
=
tdd_config_s
;
Assert
Error
(
tdd_config_s
<=
TDD_Config__specialSubframePatterns_ssp8
,
parse_errors
++
,
Assert
Fatal
(
tdd_config_s
<=
TDD_Config__specialSubframePatterns_ssp8
,
"Failed to parse eNB configuration file %s, enb %d illegal tdd_config_s %d (should be 0-%d)!"
,
lib_config_file_name_pP
,
i
,
tdd_config_s
,
TDD_Config__specialSubframePatterns_ssp8
);
if
(
!
prefix_type
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: NORMAL,EXTENDED!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PREFIX_TYPE
);
else
if
(
strcmp
(
prefix_type
,
"NORMAL"
)
==
0
)
{
...
...
@@ -946,7 +965,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
prefix_type
,
"EXTENDED"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
prefix_type
[
j
]
=
EXTENDED
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for prefix_type choice: NORMAL or EXTENDED !
\n
"
,
lib_config_file_name_pP
,
i
,
prefix_type
);
}
...
...
@@ -957,7 +976,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
Nid_cell
[
j
]
=
Nid_cell
;
if
(
Nid_cell
>
503
)
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for Nid_cell choice: 0...503 !
\n
"
,
lib_config_file_name_pP
,
i
,
Nid_cell
);
}
...
...
@@ -965,7 +984,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
N_RB_DL
[
j
]
=
N_RB_DL
;
if
((
N_RB_DL
!=
6
)
&&
(
N_RB_DL
!=
15
)
&&
(
N_RB_DL
!=
25
)
&&
(
N_RB_DL
!=
50
)
&&
(
N_RB_DL
!=
75
)
&&
(
N_RB_DL
!=
100
))
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for N_RB_DL choice: 6,15,25,50,75,100 !
\n
"
,
lib_config_file_name_pP
,
i
,
N_RB_DL
);
}
...
...
@@ -975,27 +994,27 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
frame_type
,
"TDD"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
frame_type
[
j
]
=
TDD
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for frame_type choice: FDD or TDD !
\n
"
,
lib_config_file_name_pP
,
i
,
frame_type
);
}
enb_properties
.
properties
[
enb_properties_index
]
->
tdd_config
[
j
]
=
tdd_config
;
Assert
Error
(
tdd_config
<=
TDD_Config__subframeAssignment_sa6
,
parse_errors
++
,
Assert
Fatal
(
tdd_config
<=
TDD_Config__subframeAssignment_sa6
,
"Failed to parse eNB configuration file %s, enb %d illegal tdd_config %d (should be 0-%d)!"
,
lib_config_file_name_pP
,
i
,
tdd_config
,
TDD_Config__subframeAssignment_sa6
);
enb_properties
.
properties
[
enb_properties_index
]
->
tdd_config_s
[
j
]
=
tdd_config_s
;
Assert
Error
(
tdd_config_s
<=
TDD_Config__specialSubframePatterns_ssp8
,
parse_errors
++
,
Assert
Fatal
(
tdd_config_s
<=
TDD_Config__specialSubframePatterns_ssp8
,
"Failed to parse eNB configuration file %s, enb %d illegal tdd_config_s %d (should be 0-%d)!"
,
lib_config_file_name_pP
,
i
,
tdd_config_s
,
TDD_Config__specialSubframePatterns_ssp8
);
if
(
!
prefix_type
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: NORMAL,EXTENDED!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PREFIX_TYPE
);
else
if
(
strcmp
(
prefix_type
,
"NORMAL"
)
==
0
)
{
...
...
@@ -1003,7 +1022,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
prefix_type
,
"EXTENDED"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
prefix_type
[
j
]
=
EXTENDED
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for prefix_type choice: NORMAL or EXTENDED !
\n
"
,
lib_config_file_name_pP
,
i
,
prefix_type
);
}
...
...
@@ -1021,64 +1040,66 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
uplink_frequency_offset
[
j
]
=
(
unsigned
int
)
uplink_frequency_offset
;
parse_errors
+=
enb_check_band_frequencies
(
lib_config_file_name_pP
,
if
(
enb_check_band_frequencies
(
lib_config_file_name_pP
,
enb_properties_index
,
enb_properties
.
properties
[
enb_properties_index
]
->
eutra_band
[
j
],
enb_properties
.
properties
[
enb_properties_index
]
->
downlink_frequency
[
j
],
enb_properties
.
properties
[
enb_properties_index
]
->
uplink_frequency_offset
[
j
],
enb_properties
.
properties
[
enb_properties_index
]
->
frame_type
[
j
]);
enb_properties
.
properties
[
enb_properties_index
]
->
frame_type
[
j
]))
{
AssertFatal
(
0
,
"error calling enb_check_band_frequencies
\n
"
);
}
enb_properties
.
properties
[
enb_properties_index
]
->
nb_antennas_tx
[
j
]
=
nb_antennas_tx
;
if
((
nb_antenna_ports
<
1
)
||
(
nb_antenna_ports
>
2
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nb_antenna_ports choice: 1..2 !
\n
"
,
lib_config_file_name_pP
,
i
,
nb_antenna_ports
);
enb_properties
.
properties
[
enb_properties_index
]
->
nb_antenna_ports
[
j
]
=
nb_antenna_ports
;
if
((
nb_antennas_tx
<
1
)
||
(
nb_antennas_tx
>
64
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nb_antennas_tx choice: 1..4 !
\n
"
,
lib_config_file_name_pP
,
i
,
nb_antennas_tx
);
enb_properties
.
properties
[
enb_properties_index
]
->
nb_antennas_rx
[
j
]
=
nb_antennas_rx
;
if
((
nb_antennas_rx
<
1
)
||
(
nb_antennas_rx
>
4
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for nb_antennas_rx choice: 1..4 !
\n
"
,
lib_config_file_name_pP
,
i
,
nb_antennas_rx
);
enb_properties
.
properties
[
enb_properties_index
]
->
tx_gain
[
j
]
=
tx_gain
;
if
((
tx_gain
<
0
)
||
(
tx_gain
>
127
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for tx_gain choice: 0..127 !
\n
"
,
lib_config_file_name_pP
,
i
,
tx_gain
);
enb_properties
.
properties
[
enb_properties_index
]
->
rx_gain
[
j
]
=
rx_gain
;
if
((
rx_gain
<
0
)
||
(
rx_gain
>
160
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rx_gain choice: 0..160 !
\n
"
,
lib_config_file_name_pP
,
i
,
rx_gain
);
enb_properties
.
properties
[
enb_properties_index
]
->
prach_root
[
j
]
=
prach_root
;
if
((
prach_root
<
0
)
||
(
prach_root
>
1023
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_root choice: 0..1023 !
\n
"
,
lib_config_file_name_pP
,
i
,
prach_root
);
enb_properties
.
properties
[
enb_properties_index
]
->
prach_config_index
[
j
]
=
prach_config_index
;
if
((
prach_config_index
<
0
)
||
(
prach_config_index
>
63
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_config_index choice: 0..1023 !
\n
"
,
lib_config_file_name_pP
,
i
,
prach_config_index
);
if
(
!
prach_high_speed
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PRACH_HIGH_SPEED
);
else
if
(
strcmp
(
prach_high_speed
,
"ENABLE"
)
==
0
)
{
...
...
@@ -1086,21 +1107,21 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
prach_high_speed
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
prach_high_speed
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for prach_config choice: ENABLE,DISABLE !
\n
"
,
lib_config_file_name_pP
,
i
,
prach_high_speed
);
enb_properties
.
properties
[
enb_properties_index
]
->
prach_zero_correlation
[
j
]
=
prach_zero_correlation
;
if
((
prach_zero_correlation
<
0
)
||
(
prach_zero_correlation
>
15
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_zero_correlation choice: 0..15!
\n
"
,
lib_config_file_name_pP
,
i
,
prach_zero_correlation
);
enb_properties
.
properties
[
enb_properties_index
]
->
prach_freq_offset
[
j
]
=
prach_freq_offset
;
if
((
prach_freq_offset
<
0
)
||
(
prach_freq_offset
>
94
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for prach_freq_offset choice: 0..94!
\n
"
,
lib_config_file_name_pP
,
i
,
prach_freq_offset
);
...
...
@@ -1108,21 +1129,21 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_delta_shift
[
j
]
=
pucch_delta_shift
-
1
;
if
((
pucch_delta_shift
<
1
)
||
(
pucch_delta_shift
>
3
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_delta_shift choice: 1..3!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_delta_shift
);
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_nRB_CQI
[
j
]
=
pucch_nRB_CQI
;
if
((
pucch_nRB_CQI
<
0
)
||
(
pucch_nRB_CQI
>
98
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_nRB_CQI choice: 0..98!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_nRB_CQI
);
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_nCS_AN
[
j
]
=
pucch_nCS_AN
;
if
((
pucch_nCS_AN
<
0
)
||
(
pucch_nCS_AN
>
7
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_nCS_AN choice: 0..7!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_nCS_AN
);
...
...
@@ -1130,7 +1151,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_n1_AN
[
j
]
=
pucch_n1_AN
;
if
((
pucch_n1_AN
<
0
)
||
(
pucch_n1_AN
>
2047
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_n1_AN choice: 0..2047!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_n1_AN
);
...
...
@@ -1138,26 +1159,26 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
pdsch_referenceSignalPower
[
j
]
=
pdsch_referenceSignalPower
;
if
((
pdsch_referenceSignalPower
<-
60
)
||
(
pdsch_referenceSignalPower
>
50
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pdsch_referenceSignalPower choice:-60..50!
\n
"
,
lib_config_file_name_pP
,
i
,
pdsch_referenceSignalPower
);
enb_properties
.
properties
[
enb_properties_index
]
->
pdsch_p_b
[
j
]
=
pdsch_p_b
;
if
((
pdsch_p_b
<
0
)
||
(
pdsch_p_b
>
3
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pdsch_p_b choice: 0..3!
\n
"
,
lib_config_file_name_pP
,
i
,
pdsch_p_b
);
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_n_SB
[
j
]
=
pusch_n_SB
;
if
((
pusch_n_SB
<
1
)
||
(
pusch_n_SB
>
4
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_n_SB choice: 1..4!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_n_SB
);
if
(
!
pusch_hoppingMode
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PUSCH_HOPPINGMODE
);
else
if
(
strcmp
(
pusch_hoppingMode
,
"interSubFrame"
)
==
0
)
{
...
...
@@ -1165,19 +1186,19 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pusch_hoppingMode
,
"intraAndInterSubFrame"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_hoppingMode
[
j
]
=
PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_hoppingMode choice: interSubframe,intraAndInterSubframe!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_hoppingMode
);
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_hoppingOffset
[
j
]
=
pusch_hoppingOffset
;
if
((
pusch_hoppingOffset
<
0
)
||
(
pusch_hoppingOffset
>
98
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_hoppingOffset choice: 0..98!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_hoppingMode
);
if
(
!
pusch_enable64QAM
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PUSCH_ENABLE64QAM
);
else
if
(
strcmp
(
pusch_enable64QAM
,
"ENABLE"
)
==
0
)
{
...
...
@@ -1185,12 +1206,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pusch_enable64QAM
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_enable64QAM
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_enable64QAM choice: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_enable64QAM
);
if
(
!
pusch_groupHoppingEnabled
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN
);
else
if
(
strcmp
(
pusch_groupHoppingEnabled
,
"ENABLE"
)
==
0
)
{
...
...
@@ -1198,7 +1219,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pusch_groupHoppingEnabled
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_groupHoppingEnabled
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_groupHoppingEnabled choice: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_groupHoppingEnabled
);
...
...
@@ -1206,12 +1227,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_groupAssignment
[
j
]
=
pusch_groupAssignment
;
if
((
pusch_groupAssignment
<
0
)
||
(
pusch_groupAssignment
>
29
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_groupAssignment choice: 0..29!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_groupAssignment
);
if
(
!
pusch_sequenceHoppingEnabled
)
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN
);
else
if
(
strcmp
(
pusch_sequenceHoppingEnabled
,
"ENABLE"
)
==
0
)
{
...
...
@@ -1219,14 +1240,14 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pusch_sequenceHoppingEnabled
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_sequenceHoppingEnabled
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pusch_sequenceHoppingEnabled choice: ENABLE,DISABLE!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_sequenceHoppingEnabled
);
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_nDMRS1
[
j
]
=
pusch_nDMRS1
;
//cyclic_shift in RRC!
if
((
pusch_nDMRS1
<
0
)
||
(
pusch_nDMRS1
>
7
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_nDMRS1 choice: 0..7!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_nDMRS1
);
...
...
@@ -1235,7 +1256,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
phich_duration
,
"EXTENDED"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
phich_duration
[
j
]
=
extended
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for phich_duration choice: NORMAL,EXTENDED!
\n
"
,
lib_config_file_name_pP
,
i
,
phich_duration
);
...
...
@@ -1248,7 +1269,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
phich_resource
,
"TWO"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
phich_resource
[
j
]
=
two
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for phich_resource choice: ONESIXTH,HALF,ONE,TWO!
\n
"
,
lib_config_file_name_pP
,
i
,
phich_resource
);
...
...
@@ -1257,7 +1278,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
srs_enable
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
srs_enable
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for srs_BandwidthConfig choice: ENABLE,DISABLE !
\n
"
,
lib_config_file_name_pP
,
i
,
srs_enable
);
...
...
@@ -1267,21 +1288,20 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_SRS_ACKNACKST_CONFIG
,
&
srs_ackNackST
)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_SRS_MAXUPPTS
,
&
srs_MaxUpPts
)
))
AssertError
(
0
,
parse_errors
++
,
AssertFatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown values for srs_BandwidthConfig, srs_SubframeConfig, srs_ackNackST, srs_MaxUpPts
\n
"
,
lib_config_file_name_pP
,
i
);
enb_properties
.
properties
[
enb_properties_index
]
->
srs_BandwidthConfig
[
j
]
=
srs_BandwidthConfig
;
if
((
srs_BandwidthConfig
<
0
)
||
(
srs_BandwidthConfig
>
7
))
Assert
Error
(
0
,
parse_errors
++
,
"Failed to parse eNB configuration file %s, enb %d unknown value %d for srs_BandwidthConfig choice: 0...7
\n
"
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value %d for srs_BandwidthConfig choice: 0...7
\n
"
,
lib_config_file_name_pP
,
i
,
srs_BandwidthConfig
);
enb_properties
.
properties
[
enb_properties_index
]
->
srs_SubframeConfig
[
j
]
=
srs_SubframeConfig
;
if
((
srs_SubframeConfig
<
0
)
||
(
srs_SubframeConfig
>
15
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for srs_SubframeConfig choice: 0..15 !
\n
"
,
lib_config_file_name_pP
,
i
,
srs_SubframeConfig
);
...
...
@@ -1290,7 +1310,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
srs_ackNackST
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
srs_ackNackST
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for srs_BandwidthConfig choice: ENABLE,DISABLE !
\n
"
,
lib_config_file_name_pP
,
i
,
srs_ackNackST
);
...
...
@@ -1299,7 +1319,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
srs_MaxUpPts
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
srs_MaxUpPts
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for srs_MaxUpPts choice: ENABLE,DISABLE !
\n
"
,
lib_config_file_name_pP
,
i
,
srs_MaxUpPts
);
}
...
...
@@ -1307,7 +1327,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_p0_Nominal
[
j
]
=
pusch_p0_Nominal
;
if
((
pusch_p0_Nominal
<-
126
)
||
(
pusch_p0_Nominal
>
24
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pusch_p0_Nominal choice: -126..24 !
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_p0_Nominal
);
...
...
@@ -1328,21 +1348,21 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pusch_alpha
,
"AL1"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pusch_alpha
[
j
]
=
UplinkPowerControlCommon__alpha_al1
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_Alpha choice: AL0,AL04,AL05,AL06,AL07,AL08,AL09,AL1!
\n
"
,
lib_config_file_name_pP
,
i
,
pusch_alpha
);
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_p0_Nominal
[
j
]
=
pucch_p0_Nominal
;
if
((
pucch_p0_Nominal
<-
127
)
||
(
pucch_p0_Nominal
>-
96
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pucch_p0_Nominal choice: -127..-96 !
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_p0_Nominal
);
enb_properties
.
properties
[
enb_properties_index
]
->
msg3_delta_Preamble
[
j
]
=
msg3_delta_Preamble
;
if
((
msg3_delta_Preamble
<-
1
)
||
(
msg3_delta_Preamble
>
6
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for msg3_delta_Preamble choice: -1..6 !
\n
"
,
lib_config_file_name_pP
,
i
,
msg3_delta_Preamble
);
...
...
@@ -1354,7 +1374,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pucch_deltaF_Format1
,
"deltaF2"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_deltaF_Format1
[
j
]
=
DeltaFList_PUCCH__deltaF_PUCCH_Format1_deltaF2
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_deltaF_Format1 choice: deltaF_2,dltaF0,deltaF2!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_deltaF_Format1
);
...
...
@@ -1365,7 +1385,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pucch_deltaF_Format1b
,
"deltaF5"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_deltaF_Format1b
[
j
]
=
DeltaFList_PUCCH__deltaF_PUCCH_Format1b_deltaF5
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_deltaF_Format1b choice: deltaF1,dltaF3,deltaF5!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_deltaF_Format1b
);
...
...
@@ -1379,7 +1399,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pucch_deltaF_Format2
,
"deltaF2"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_deltaF_Format2
[
j
]
=
DeltaFList_PUCCH__deltaF_PUCCH_Format2_deltaF2
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_deltaF_Format2 choice: deltaF_2,dltaF0,deltaF1,deltaF2!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_deltaF_Format2
);
...
...
@@ -1390,7 +1410,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pucch_deltaF_Format2a
,
"deltaF2"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_deltaF_Format2a
[
j
]
=
DeltaFList_PUCCH__deltaF_PUCCH_Format2a_deltaF2
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_deltaF_Format2a choice: deltaF_2,dltaF0,deltaF2!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_deltaF_Format2a
);
...
...
@@ -1401,7 +1421,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pucch_deltaF_Format2b
,
"deltaF2"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pucch_deltaF_Format2b
[
j
]
=
DeltaFList_PUCCH__deltaF_PUCCH_Format2b_deltaF2
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for pucch_deltaF_Format2b choice: deltaF_2,dltaF0,deltaF2!
\n
"
,
lib_config_file_name_pP
,
i
,
pucch_deltaF_Format2b
);
...
...
@@ -1411,7 +1431,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
rach_numberOfRA_Preambles
[
j
]
=
(
rach_numberOfRA_Preambles
/
4
)
-
1
;
if
((
rach_numberOfRA_Preambles
<
4
)
||
(
rach_numberOfRA_Preambles
>
64
)
||
((
rach_numberOfRA_Preambles
&
3
)
!=
0
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_numberOfRA_Preambles choice: 4,8,12,...,64!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_numberOfRA_Preambles
);
...
...
@@ -1421,14 +1441,14 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if
(
!
(
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_SIZEOFRA_PREAMBLESGROUPA
,
&
rach_sizeOfRA_PreamblesGroupA
)
&&
config_setting_lookup_int
(
component_carrier
,
ENB_CONFIG_STRING_RACH_MESSAGESIZEGROUPA
,
&
rach_messageSizeGroupA
)
&&
config_setting_lookup_string
(
component_carrier
,
ENB_CONFIG_STRING_RACH_MESSAGEPOWEROFFSETGROUPB
,
&
rach_messagePowerOffsetGroupB
)))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d rach_sizeOfRA_PreamblesGroupA, messageSizeGroupA,messagePowerOffsetGroupB!
\n
"
,
lib_config_file_name_pP
,
i
);
enb_properties
.
properties
[
enb_properties_index
]
->
rach_sizeOfRA_PreamblesGroupA
[
j
]
=
(
rach_sizeOfRA_PreamblesGroupA
/
4
)
-
1
;
if
((
rach_numberOfRA_Preambles
<
4
)
||
(
rach_numberOfRA_Preambles
>
60
)
||
((
rach_numberOfRA_Preambles
&
3
)
!=
0
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_sizeOfRA_PreamblesGroupA choice: 4,8,12,...,60!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_sizeOfRA_PreamblesGroupA
);
...
...
@@ -1451,7 +1471,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_messageSizeGroupA choice: 56,144,208,256!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_messageSizeGroupA
);
break
;
...
...
@@ -1488,21 +1508,21 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
else
if
(
strcmp
(
rach_messagePowerOffsetGroupB
,
"dB18"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
rach_messagePowerOffsetGroupB
[
j
]
=
RACH_ConfigCommon__preambleInfo__preamblesGroupAConfig__messagePowerOffsetGroupB_dB18
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rach_messagePowerOffsetGroupB choice: minusinfinity,dB0,dB5,dB8,dB10,dB12,dB15,dB18!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_messagePowerOffsetGroupB
);
}
else
if
(
strcmp
(
rach_preamblesGroupAConfig
,
"DISABLE"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preamblesGroupAConfig
[
j
]
=
FALSE
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%s
\"
for rach_preamblesGroupAConfig choice: ENABLE,DISABLE !
\n
"
,
lib_config_file_name_pP
,
i
,
rach_preamblesGroupAConfig
);
enb_properties
.
properties
[
enb_properties_index
]
->
rach_preambleInitialReceivedTargetPower
[
j
]
=
(
rach_preambleInitialReceivedTargetPower
+
120
)
/
2
;
if
((
rach_preambleInitialReceivedTargetPower
<-
120
)
||
(
rach_preambleInitialReceivedTargetPower
>-
90
)
||
((
rach_preambleInitialReceivedTargetPower
&
1
)
!=
0
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_preambleInitialReceivedTargetPower choice: -120,-118,...,-90 !
\n
"
,
lib_config_file_name_pP
,
i
,
rach_preambleInitialReceivedTargetPower
);
...
...
@@ -1510,7 +1530,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
rach_powerRampingStep
[
j
]
=
rach_powerRampingStep
/
2
;
if
((
rach_powerRampingStep
<
0
)
||
(
rach_powerRampingStep
>
6
)
||
((
rach_powerRampingStep
&
1
)
!=
0
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
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
);
...
...
@@ -1562,7 +1582,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
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
"
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax
);
break
;
...
...
@@ -1571,7 +1591,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
rach_raResponseWindowSize
[
j
]
=
(
rach_raResponseWindowSize
==
10
)
?
7
:
rach_raResponseWindowSize
-
2
;
if
((
rach_raResponseWindowSize
<
0
)
||
(
rach_raResponseWindowSize
==
9
)
||
(
rach_raResponseWindowSize
>
10
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
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
"
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax
);
...
...
@@ -1579,14 +1599,14 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
rach_macContentionResolutionTimer
[
j
]
=
(
rach_macContentionResolutionTimer
/
8
)
-
1
;
if
((
rach_macContentionResolutionTimer
<
8
)
||
(
rach_macContentionResolutionTimer
>
64
)
||
((
rach_macContentionResolutionTimer
&
7
)
!=
0
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_macContentionResolutionTimer choice: 8,16,...,56,64!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax
);
enb_properties
.
properties
[
enb_properties_index
]
->
rach_maxHARQ_Msg3Tx
[
j
]
=
rach_maxHARQ_Msg3Tx
;
if
((
rach_maxHARQ_Msg3Tx
<
0
)
||
(
rach_maxHARQ_Msg3Tx
>
8
))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for rach_maxHARQ_Msg3Tx choice: 1..8!
\n
"
,
lib_config_file_name_pP
,
i
,
rach_preambleTransMax
);
...
...
@@ -1609,7 +1629,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for pcch_defaultPagingCycle choice: 32,64,128,256!
\n
"
,
lib_config_file_name_pP
,
i
,
pcch_defaultPagingCycle
);
break
;
...
...
@@ -1632,7 +1652,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
strcmp
(
pcch_nB
,
"oneThirtySecondT"
)
==
0
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
pcch_nB
[
j
]
=
PCCH_Config__nB_oneThirtySecondT
;
}
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
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
"
,
lib_config_file_name_pP
,
i
,
pcch_defaultPagingCycle
);
...
...
@@ -1656,7 +1676,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for bcch_modificationPeriodCoeff choice: 2,4,8,16"
,
lib_config_file_name_pP
,
i
,
bcch_modificationPeriodCoeff
);
...
...
@@ -1698,7 +1718,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t300 choice: 100,200,300,400,600,1000,1500,2000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t300
);
break
;
...
...
@@ -1739,7 +1759,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t301 choice: 100,200,300,400,600,1000,1500,2000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t301
);
break
;
...
...
@@ -1776,7 +1796,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t310 choice: 0,50,100,200,500,1000,1500,2000 "
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t310
);
break
;
...
...
@@ -1813,7 +1833,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t311 choice: 1000,3000,5000,10000,150000,20000,30000"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t311
);
break
;
...
...
@@ -1854,7 +1874,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_n310 choice: 1,2,3,4,6,6,8,10,20"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_n311
);
break
;
...
...
@@ -1895,7 +1915,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TimersAndConstants_t311 choice: 1,2,3,4,5,6,8,10"
,
lib_config_file_name_pP
,
i
,
ue_TimersAndConstants_t311
);
break
;
...
...
@@ -1925,7 +1945,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
properties
[
enb_properties_index
]
->
ue_TransmissionMode
[
j
]
=
AntennaInfoDedicated__transmissionMode_tm7
;
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d unknown value
\"
%d
\"
for ue_TransmissionMode choice: 1,2,3,4,5,6,7"
,
lib_config_file_name_pP
,
i
,
ue_TransmissionMode
);
break
;
...
...
@@ -1942,7 +1962,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&&
config_setting_lookup_int
(
setting_srb1
,
ENB_CONFIG_STRING_SRB1_MAX_RETX_THRESHOLD
,
&
srb1_max_retx_threshold
)
&&
config_setting_lookup_int
(
setting_srb1
,
ENB_CONFIG_STRING_SRB1_POLL_PDU
,
&
srb1_poll_pdu
)
&&
config_setting_lookup_int
(
setting_srb1
,
ENB_CONFIG_STRING_SRB1_POLL_BYTE
,
&
srb1_poll_byte
)))
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, enb %d timer_poll_retransmit, timer_reordering, "
"timer_status_prohibit, poll_pdu, poll_byte, max_retx_threshold !
\n
"
,
lib_config_file_name_pP
,
i
);
...
...
@@ -1981,7 +2001,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_max_retx_threshold %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_max_retx_threshold
);
}
...
...
@@ -2019,7 +2039,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if
(
srb1_poll_pdu
>=
10000
)
enb_properties
.
properties
[
enb_properties_index
]
->
srb1_poll_pdu
=
PollPDU_pInfinity
;
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_poll_pdu %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_poll_pdu
);
}
...
...
@@ -2087,7 +2107,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
if
(
srb1_poll_byte
>=
10000
)
enb_properties
.
properties
[
enb_properties_index
]
->
srb1_poll_byte
=
PollByte_kBinfinity
;
else
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_poll_byte %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_poll_byte
);
}
...
...
@@ -2097,7 +2117,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
(
srb1_timer_poll_retransmit
<=
500
)
{
enb_properties
.
properties
[
enb_properties_index
]
->
srb1_timer_poll_retransmit
=
(
srb1_timer_poll_retransmit
-
300
)
/
50
+
50
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_poll_retransmit %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_timer_poll_retransmit
);
}
...
...
@@ -2107,7 +2127,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
}
else
if
((
srb1_timer_poll_retransmit
>=
300
)
&&
(
srb1_timer_poll_retransmit
<=
500
))
{
enb_properties
.
properties
[
enb_properties_index
]
->
srb1_timer_status_prohibit
=
(
srb1_timer_status_prohibit
-
300
)
/
50
+
51
;
}
else
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_status_prohibit %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_timer_status_prohibit
);
}
...
...
@@ -2238,7 +2258,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
break
;
default:
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Bad config value when parsing eNB configuration file %s, enb %d srb1_timer_reordering %u!
\n
"
,
lib_config_file_name_pP
,
i
,
srb1_timer_reordering
);
}
...
...
@@ -2265,7 +2285,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&&
config_setting_lookup_string
(
setting_mme_address
,
ENB_CONFIG_STRING_MME_IP_ADDRESS_PREFERENCE
,
(
const
char
**
)
&
preference
)
)
)
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, %u th enb %u th mme address !
\n
"
,
lib_config_file_name_pP
,
i
,
j
);
continue
;
// FIXME will prevent segfaults below, not sure what happens at function exit...
...
...
@@ -2315,7 +2335,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
&&
config_setting_lookup_int
(
setting_rrh_gw
,
ENB_CONFIG_STRING_RRH_GW_TX_SCHEDULING_ADVANCE
,
&
tx_scheduling_advance
)
)
)
{
Assert
Error
(
0
,
parse_errors
++
,
Assert
Fatal
(
0
,
"Failed to parse eNB configuration file %s, %u th enb %u the RRH GW address !
\n
"
,
lib_config_file_name_pP
,
i
,
j
);
continue
;
// FIXME will prevent segfaults below, not sure what happens at function exit...
...
...
@@ -2724,13 +2744,10 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP)
enb_properties
.
number
=
num_enb_properties
;
Assert
Error
(
enb_properties_index
==
num_enb_properties
,
parse_errors
++
,
Assert
Fatal
(
enb_properties_index
==
num_enb_properties
,
"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
);
AssertFatal
(
parse_errors
==
0
,
"Failed to parse eNB configuration file %s, found %d error%s !
\n
"
,
lib_config_file_name_pP
,
parse_errors
,
parse_errors
>
1
?
"s"
:
""
);
enb_config_display
();
return
&
enb_properties
;
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
1def70d1
...
...
@@ -75,7 +75,7 @@ void init_ue_sched_info(void)
module_id_t
i
,
j
,
k
;
for
(
i
=
0
;
i
<
NUMBER_OF_eNB_MAX
;
i
++
)
{
for
(
k
=
0
;
i
<
MAX_NUM_CCs
;
i
++
)
{
for
(
k
=
0
;
k
<
MAX_NUM_CCs
;
k
++
)
{
for
(
j
=
0
;
j
<
NUMBER_OF_UE_MAX
;
j
++
)
{
// init DL
eNB_dlsch_info
[
i
][
k
][
j
].
weight
=
0
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
View file @
1def70d1
...
...
@@ -50,7 +50,7 @@ eNBs =
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
29
;
pdsch_referenceSignalPower
= -
32
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
View file @
1def70d1
...
...
@@ -35,6 +35,7 @@ eNBs =
Nid_cell
=
0
;
N_RB_DL
=
100
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
1
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
tx_gain
=
32
;
...
...
@@ -99,6 +100,7 @@ eNBs =
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
1
;
}
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpb210.conf
0 → 100644
View file @
1def70d1
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"94"
;
//////////
Physical
parameters
:
component_carriers
= (
{
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
2680000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
100
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
2
;
nb_antennas_tx
=
2
;
nb_antennas_rx
=
2
;
tx_gain
=
90
;
rx_gain
=
125
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
32
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
90
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
96
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
2
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.171"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.150/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.150/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
log_config
:
{
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
}
);
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.100PRB.usrpx310.conf
0 → 100644
View file @
1def70d1
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"92"
;
//////////
Physical
parameters
:
component_carriers
= (
{
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
2660000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
100
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
2
;
nb_antennas_tx
=
2
;
nb_antennas_rx
=
2
;
tx_gain
=
32
;
rx_gain
=
116
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
23
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
90
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
108
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
2
;
ue_TransmissionMode
=
2
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.26"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.111/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.111/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
log_config
:
{
global_log_level
=
"debug"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
}
);
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpb210.conf
0 → 100644
View file @
1def70d1
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"94"
;
//////////
Physical
parameters
:
component_carriers
= (
{
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
2680000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
25
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
2
;
nb_antennas_tx
=
2
;
nb_antennas_rx
=
2
;
tx_gain
=
90
;
rx_gain
=
125
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
28
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
90
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
96
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
2
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.171"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.150/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.150/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
log_config
:
{
global_log_level
=
"info"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
}
);
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm2.usrpx310.conf
0 → 100644
View file @
1def70d1
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"92"
;
//////////
Physical
parameters
:
component_carriers
= (
{
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
7
;
downlink_frequency
=
2660000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
25
;
Nid_cell_mbsfn
=
0
;
nb_antenna_ports
=
2
;
nb_antennas_tx
=
2
;
nb_antennas_rx
=
2
;
tx_gain
=
32
;
rx_gain
=
116
;
prach_root
=
0
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
18
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
0
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
90
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
108
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
4
;
rach_preambleInitialReceivedTargetPower
= -
108
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
2
;
}
);
srb1_parameters
:
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit
=
80
;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering
=
35
;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit
=
0
;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu
=
4
;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte
=
99999
;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold
=
4
;
}
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.26"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.111/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.111/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
log_config
:
{
global_log_level
=
"debug"
;
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"info"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
};
}
);
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