Commit bd173433 authored by Cedric Roux's avatar Cedric Roux
Browse files

Merge branch 'develop_integration_w11' into 'develop'

Develop integration w11

Summary of changes:

- bug fixes
- RCC/RRU in automatic test setup
- more work on UE/MIMO
- LimeSDR support (5/10MHz)
- compilation under ubuntu 16.04, in particular kernel modules (nasmesh, ue_ip)

See merge request !148
parents bd3394f5 d0a51bec
...@@ -561,6 +561,7 @@ elseif (${RF_BOARD} STREQUAL "OAI_LMSSDR") ...@@ -561,6 +561,7 @@ elseif (${RF_BOARD} STREQUAL "OAI_LMSSDR")
include_directories("/usr/local/include/lime") include_directories("/usr/local/include/lime")
include_directories("/usr/include/lime") include_directories("/usr/include/lime")
LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu") LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu")
LINK_DIRECTORIES("/usr/local/lib")
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lmsSDR") LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lmsSDR")
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lms7002m") LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lms7002m")
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/Si5351C") LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/Si5351C")
...@@ -2059,22 +2060,22 @@ endforeach(myExe) ...@@ -2059,22 +2060,22 @@ endforeach(myExe)
#ensure that the T header files are generated before targets depending on them #ensure that the T header files are generated before targets depending on them
if (${T_TRACER}) if (${T_TRACER})
add_dependencies(lte-softmodem generate_T) foreach(i
add_dependencies(lte-softmodem-nos1 generate_T) #all "add_executable" definitions (except tests, rb_tool, updatefw)
add_dependencies(rrh_gw generate_T) lte-softmodem lte-softmodem-nos1 rrh_gw oaisim oaisim_nos1
add_dependencies(oaisim generate_T) dlsim_tm4 dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim
add_dependencies(oaisim_nos1 generate_T) pdcchsim pucchsim prachsim syncsim
add_dependencies(dlsim generate_T) #all "add_library" definitions
add_dependencies(dlsim_tm4 generate_T) ITTI RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB
add_dependencies(dlsim_tm7 generate_T) oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
add_dependencies(ulsim generate_T) oai_eth_transpro
add_dependencies(pbchsim generate_T) FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
add_dependencies(scansim generate_T) SECU_CN SCHED_LIB PHY L2 default_sched remote_sched RAL MIH CN_UTILS
add_dependencies(mbmssim generate_T) GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS LFDS7 SIMU SIMU_ETH OPENAIR0_LIB)
add_dependencies(pdcchsim generate_T) if (TARGET ${i})
add_dependencies(pucchsim generate_T) add_dependencies(${i} generate_T)
add_dependencies(prachsim generate_T) endif()
add_dependencies(syncsim generate_T) endforeach(i)
endif (${T_TRACER}) endif (${T_TRACER})
################################################## ##################################################
...@@ -2099,11 +2100,16 @@ endforeach() ...@@ -2099,11 +2100,16 @@ endforeach()
# force castxml and clang compilation with gnu89 standard # force castxml and clang compilation with gnu89 standard
# we can't use cXX standard as pthread_rwlock_t is gnu standard # we can't use cXX standard as pthread_rwlock_t is gnu standard
list(APPEND itti_compiler_options "-std=gnu89") list(APPEND itti_compiler_options "-std=gnu89")
set (ITTI_H ${ITTI_DIR}/intertask_interface_types.h) set (ITTI_H ${ITTI_DIR}/intertask_interface_types.h)
if(EXISTS /usr/bin/gccxml)
set(xml_command gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H})
else()
set(xml_command castxml --castxml-gccxml ${itti_compiler_options} ${ITTI_H} -o ${OPENAIR_BIN_DIR}/messages.xml)
endif()
add_custom_command ( add_custom_command (
OUTPUT ${OPENAIR_BIN_DIR}/messages.xml OUTPUT ${OPENAIR_BIN_DIR}/messages.xml
COMMAND gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H} COMMAND ${xml_command}
DEPENDS ${S1AP_OAI_generated} ${RRC_FULL_DIR}/asn1_constants.h DEPENDS ${S1AP_OAI_generated} ${RRC_FULL_DIR}/asn1_constants.h
) )
......
...@@ -239,6 +239,20 @@ Obj.# Case# Test# Description ...@@ -239,6 +239,20 @@ Obj.# Case# Test# Description
01 75 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX 01 75 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
01 75 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX 01 75 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
01 76 lte-softmodem + RRU (NGFI IF4P5, UDP) tests with B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
01 76 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 02 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 03 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 04 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 05 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
01 76 06 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 76 07 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 76 08 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
01 76 09 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 76 10 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 76 11 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
01 80 lte-softmodem + RRU (NGFI) tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX 01 80 lte-softmodem + RRU (NGFI) tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
01 80 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX 01 80 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
01 80 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX 01 80 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
......
...@@ -8664,6 +8664,19 @@ c ...@@ -8664,6 +8664,19 @@ c
<nruns>10</nruns> <nruns>10</nruns>
</testCase> </testCase>
   
<testCase id="017600"></testCase>
<testCase id="017601"></testCase>
<testCase id="017602"></testCase>
<testCase id="017603"></testCase>
<testCase id="017604"></testCase>
<testCase id="017605"></testCase>
<testCase id="017606"></testCase>
<testCase id="017607"></testCase>
<testCase id="017608"></testCase>
<testCase id="017609"></testCase>
<testCase id="017610"></testCase>
<testCase id="017611"></testCase>
<testCase id="018600"></testCase> <testCase id="018600"></testCase>
<testCase id="018601"></testCase> <testCase id="018601"></testCase>
<testCase id="018602"></testCase> <testCase id="018602"></testCase>
......
...@@ -9,18 +9,24 @@ class alu_test: ...@@ -9,18 +9,24 @@ class alu_test:
openair, openair,
user, password, user, password,
log_subdir, log_subdir,
env): env,
self.epc_machine = epc enb_rru = "",
self.enb_machine = enb enb_rcc = ""):
self.ue_machine = ue self.epc_machine = epc
self.openair_dir = openair self.enb_machine = enb
self.oai_user = user self.ue_machine = ue
self.oai_password = password self.openair_dir = openair
self.env = env self.oai_user = user
self.oai_password = password
self.task_hss = None self.env = env
self.task_enb = None self.enb_rru_machine = enb_rru
self.task_ue = None self.enb_rcc_machine = enb_rcc
self.task_hss = None
self.task_enb = None
self.task_ue = None
self.task_rru_enb = None
self.task_rcc_enb = None
self.logdir = openair + '/cmake_targets/autotests/log/' + log_subdir self.logdir = openair + '/cmake_targets/autotests/log/' + log_subdir
quickshell('mkdir -p ' + self.logdir) quickshell('mkdir -p ' + self.logdir)
...@@ -40,6 +46,10 @@ class alu_test: ...@@ -40,6 +46,10 @@ class alu_test:
self.task_enb.kill() self.task_enb.kill()
if self.task_ue != None and self.task_ue.alive(): if self.task_ue != None and self.task_ue.alive():
self.task_ue.kill() self.task_ue.kill()
if self.task_rru_enb != None and self.task_rru_enb.alive():
self.task_rru_enb.kill()
if self.task_rcc_enb != None and self.task_rcc_enb.alive():
self.task_rcc_enb.kill()
########################################################################## ##########################################################################
# start_epc # start_epc
...@@ -101,7 +111,7 @@ class alu_test: ...@@ -101,7 +111,7 @@ class alu_test:
########################################################################## ##########################################################################
# compile_enb # compile_enb
########################################################################## ##########################################################################
def compile_enb(self, build_arguments): def compile_enb(self, build_arguments, log_suffix=""):
log("INFO: ALU test: compile softmodem on " + self.enb_machine) log("INFO: ALU test: compile softmodem on " + self.enb_machine)
envcomp = list(self.env) envcomp = list(self.env)
envcomp.append('BUILD_ARGUMENTS="' + build_arguments + '"') envcomp.append('BUILD_ARGUMENTS="' + build_arguments + '"')
...@@ -120,7 +130,8 @@ class alu_test: ...@@ -120,7 +130,8 @@ class alu_test:
self.oai_user, self.oai_user,
self.oai_password, self.oai_password,
envcomp, envcomp,
self.logdir + "/compile_softmodem." + self.enb_machine, self.logdir + "/compile_softmodem." + log_suffix + \
self.enb_machine,
post_action=post_action) post_action=post_action)
ret = task.wait() ret = task.wait()
if ret != 0: if ret != 0:
...@@ -162,6 +173,62 @@ class alu_test: ...@@ -162,6 +173,62 @@ class alu_test:
#not sure if we have to quit here or not #not sure if we have to quit here or not
#os._exit(1) #os._exit(1)
##########################################################################
# start_enb_rru_rcc
##########################################################################
def start_enb_rru_rcc(self, rru_config_file, rcc_config_file):
#copy wanted configuration files
quickshell("sshpass -p " + self.oai_password +
" scp config/" + rru_config_file + " " +
self.oai_user + "@" + self.enb_rru_machine+":/tmp/enb.conf")
quickshell("sshpass -p " + self.oai_password +
" scp config/" + rcc_config_file + " " +
self.oai_user + "@" + self.enb_rcc_machine+":/tmp/enb.conf")
#run RRU/RCC softmodem
log("INFO: ALU test: run RRU softmodem with configuration file " +
rru_config_file)
self.task_rru_enb = Task("actions/run_enb.bash",
"run_RRU_softmodem",
self.enb_rru_machine,
self.oai_user,
self.oai_password,
self.env,
self.logdir + "/run_softmodem." + self.enb_rru_machine,
event=self.event)
self.task_rru_enb.waitlog('[RRH] binding to')
log("INFO: ALU test: run RCC softmodem with configuration file " +
rcc_config_file)
self.task_rcc_enb = Task("actions/run_enb.bash",
"run_RCC_softmodem",
self.enb_rcc_machine,
self.oai_user,
self.oai_password,
self.env,
self.logdir + "/run_softmodem." + self.enb_rcc_machine,
event=self.event)
self.task_rcc_enb.waitlog('[BBU] local ip addr')
#wait for RRU and RCC to be connected
self.task_rru_enb.waitlog('devices ok (eNB_thread_asynch_rx)')
##########################################################################
# stop_enb_rru_rcc
##########################################################################
def stop_enb_rru_rcc(self):
log("INFO: ALU test: stop RRU/RCC softmodem")
self.task_rru_enb.sendnow("%c" % 3)
ret = self.task_rru_enb.wait()
if ret != 0:
log("ERROR: ALU test: RRU softmodem failed")
#not sure if we have to quit here or not
#os._exit(1)
self.task_rcc_enb.sendnow("%c" % 3)
ret = self.task_rcc_enb.wait()
if ret != 0:
log("ERROR: ALU test: RCC softmodem failed")
#not sure if we have to quit here or not
#os._exit(1)
########################################################################## ##########################################################################
# start_ue # start_ue
########################################################################## ##########################################################################
...@@ -185,7 +252,9 @@ class alu_test: ...@@ -185,7 +252,9 @@ class alu_test:
self.event.clear() self.event.clear()
if ( not self.task_enb.alive() or if ( (self.task_enb != None and not self.task_enb.alive()) or
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
not self.task_hss.alive() or not self.task_hss.alive() or
not self.task_ue.alive()): not self.task_ue.alive()):
log("ERROR: ALU test: eNB, HSS or UE task died") log("ERROR: ALU test: eNB, HSS or UE task died")
...@@ -250,14 +319,20 @@ class alu_test: ...@@ -250,14 +319,20 @@ class alu_test:
self.event.wait() self.event.wait()
log("DEBUG: event.wait() done") log("DEBUG: event.wait() done")
if ( not self.task_enb.alive() or if ( (self.task_enb != None and not self.task_enb.alive()) or
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
not self.task_hss.alive() or not self.task_hss.alive() or
not self.task_ue.alive()): not self.task_ue.alive()):
log("ERROR: unexpected task exited, test failed, kill all") log("ERROR: unexpected task exited, test failed, kill all")
if task_traffic_client.alive(): if task_traffic_client.alive():
task_traffic_client.kill() task_traffic_client.kill()
if self.task_enb.alive(): if (self.task_enb != None and self.task_enb.alive()):
self.task_enb.kill() self.task_enb.kill()
if (self.task_rru_enb != None and self.task_rru_enb.alive()):
self.task_rru_enb.kill()
if (self.task_rcc_enb != None and self.task_rcc_enb.alive()):
self.task_rcc_enb.kill()
if self.task_ue.alive(): if self.task_ue.alive():
self.task_ue.kill() self.task_ue.kill()
...@@ -277,7 +352,9 @@ class alu_test: ...@@ -277,7 +352,9 @@ class alu_test:
self.event.clear() self.event.clear()
if ( not self.task_enb.alive() or if ( (self.task_enb != None and not self.task_enb.alive()) or
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
not self.task_hss.alive() or not self.task_hss.alive() or
not self.task_ue.alive()): not self.task_ue.alive()):
log("ERROR: ALU test: eNB, HSS or UE task died") log("ERROR: ALU test: eNB, HSS or UE task died")
...@@ -334,8 +411,6 @@ class alu_test: ...@@ -334,8 +411,6 @@ class alu_test:
############################################################################## ##############################################################################
def run_b210_alu(tests, openair_dir, oai_user, oai_password, env): def run_b210_alu(tests, openair_dir, oai_user, oai_password, env):
if not do_tests(tests['b210']['alu']):
return
#compile eNB (two cases: one for FDD and one for TDD) #compile eNB (two cases: one for FDD and one for TDD)
...@@ -365,6 +440,44 @@ def run_b210_alu(tests, openair_dir, oai_user, oai_password, env): ...@@ -365,6 +440,44 @@ def run_b210_alu(tests, openair_dir, oai_user, oai_password, env):
log("ERROR: ALU test failed: eNB compilation failed: " + str(e)) log("ERROR: ALU test failed: eNB compilation failed: " + str(e))
return return
#compile RRU/RCC eNB
if do_tests(tests['remote b210']['alu']['fdd']):
#RRU
alu = alu_test(epc='amerique', ue='stevens',
openair=openair_dir,
user=oai_user, password=oai_password,
log_subdir='enb_tests/remote_b210_alu/compile_enb_rru',
env=env,
#hack: set 'enb' to reuse 'compile_enb'
enb = 'superserver',
enb_rru = 'superserver', enb_rcc = 'starsky')
try:
alu.compile_enb("--eNB -x -c -w USRP -t ETHERNET",
log_suffix='rru.')
except BaseException, e:
log("ERROR: ALU test failed: RRU eNB compilation failed: "+str(e))
return
#RCC
alu = alu_test(epc='amerique', ue='stevens',
openair=openair_dir,
user=oai_user, password=oai_password,
log_subdir='enb_tests/remote_b210_alu/compile_enb_rcc',
env=env,
#hack: set 'enb' to reuse 'compile_enb'
enb = 'starsky',
enb_rru = 'superserver', enb_rcc = 'starsky')
try:
alu.compile_enb("--eNB -w None -t ETHERNET",
log_suffix='rcc.')
except BaseException, e:
log("ERROR: ALU test failed: RCC eNB compilation failed: "+str(e))
return
#run tests #run tests
udp_dl_bandwidth = { "5" : "15M", udp_dl_bandwidth = { "5" : "15M",
...@@ -410,3 +523,29 @@ def run_b210_alu(tests, openair_dir, oai_user, oai_password, env): ...@@ -410,3 +523,29 @@ def run_b210_alu(tests, openair_dir, oai_user, oai_password, env):
except BaseException, e: except BaseException, e:
log("ERROR: ALU test failed: " + str(e)) log("ERROR: ALU test failed: " + str(e))
alu.finish() alu.finish()
if do_tests(tests['remote b210']['alu'][mode][bw]):
log("INFO: ALU test: run RRU/RCC tests for bandwidth " + bw + " MHz")
ctest = tests['remote b210']['alu'][mode][bw]
alu = alu_test(epc='amerique', enb='', ue=ue_machine[mode],
openair=openair_dir,
user=oai_user, password=oai_password,
log_subdir='enb_tests/remote_b210_alu/' + bw,
env=env,
enb_rru='superserver', enb_rcc='starsky')
try:
alu.start_epc()
alu.start_enb_rru_rcc("rru.band7.tm1.if4p5." + bw + "MHz.udp.usrpb210.conf",
"rcc.band7.tm1.if4p5." + bw + "MHz.conf")
for ue in ('bandrich', '3276'):
if ue in ctest and do_tests(ctest[ue]):
alu.start_ue(ue)
if do_tests(ctest[ue]['tcp']['dl']): alu.dl_tcp(ue)
if do_tests(ctest[ue]['tcp']['ul']): alu.ul_tcp(ue)
if do_tests(ctest[ue]['udp']['dl']): alu.dl_udp(ue, udp_dl_bandwidth[bw])
if do_tests(ctest[ue]['udp']['ul']): alu.ul_udp(ue, udp_ul_bandwidth[bw])
alu.stop_ue(ue)
alu.stop_enb_rru_rcc()
alu.stop_epc()
except BaseException, e:
log("ERROR: ALU test failed: " + str(e))
alu.finish()
...@@ -7,122 +7,126 @@ eNBs = ...@@ -7,122 +7,126 @@ eNBs =
{ {
////////// Identification parameters: ////////// Identification parameters:
eNB_ID = 0xe00; eNB_ID = 0xe00;
cell_type = "CELL_MACRO_ENB"; cell_type = "CELL_MACRO_ENB";
eNB_name = "eNB_Eurecom_LTEBox"; eNB_name = "eNB_Eurecom_LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = "1";
mobile_country_code = "208"; mobile_country_code = "208";
mobile_network_code = "92"; mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
component_carriers = ( component_carriers = (
{ {
frame_type = "FDD"; node_function = "NGFI_RCC_IF4p5";
tdd_config = 3; node_timing = "synch_to_ext_device";
tdd_config_s = 0; node_synch_ref = 0;
prefix_type = "NORMAL"; frame_type = "FDD";
eutra_band = 7; tdd_config = 3;
downlink_frequency = 2660000000L; tdd_config_s = 0;
uplink_frequency_offset = -120000000; prefix_type = "NORMAL";
Nid_cell = 0; eutra_band = 7;
N_RB_DL = 25; downlink_frequency = 2660000000L;
Nid_cell_mbsfn = 0; uplink_frequency_offset = -120000000;
nb_antennas_tx = 1; Nid_cell = 0;
nb_antennas_rx = 1; N_RB_DL = 50;
tx_gain = 60; Nid_cell_mbsfn = 0;
rx_gain = 111; nb_antenna_ports = 1;
prach_root = 0; nb_antennas_tx = 1;
prach_config_index = 0; nb_antennas_rx = 1;
prach_high_speed = "DISABLE"; tx_gain = 90;
prach_zero_correlation = 1; rx_gain = 125;
prach_freq_offset = 2; prach_root = 0;
pucch_delta_shift = 1; prach_config_index = 0;
pucch_nRB_CQI = 1; prach_high_speed = "DISABLE";
pucch_nCS_AN = 0; prach_zero_correlation = 1;
pucch_n1_AN = 32; prach_freq_offset = 2;
pdsch_referenceSignalPower = -29; pucch_delta_shift = 1;
pdsch_p_b = 0; pucch_nRB_CQI = 1;
pusch_n_SB = 1; pucch_nCS_AN = 0;
pusch_enable64QAM = "DISABLE"; pucch_n1_AN = 32;
pusch_hoppingMode = "interSubFrame"; pdsch_referenceSignalPower = -29;
pusch_hoppingOffset = 0; pdsch_p_b = 0;
pusch_groupHoppingEnabled = "ENABLE"; pusch_n_SB = 1;
pusch_groupAssignment = 0; pusch_enable64QAM = "DISABLE";
pusch_sequenceHoppingEnabled = "DISABLE"; pusch_hoppingMode = "interSubFrame";
pusch_nDMRS1 = 1; pusch_hoppingOffset = 0;
phich_duration = "NORMAL"; pusch_groupHoppingEnabled = "ENABLE";
phich_resource = "ONESIXTH"; pusch_groupAssignment = 0;
srs_enable = "DISABLE"; pusch_sequenceHoppingEnabled = "DISABLE";
/* srs_BandwidthConfig =; pusch_nDMRS1 = 1;
srs_SubframeConfig =; phich_duration = "NORMAL";
srs_ackNackST =; phich_resource = "ONESIXTH";
srs_MaxUpPts =;*/ srs_enable = "DISABLE";
/* srs_BandwidthConfig =;
pusch_p0_Nominal = -85; srs_SubframeConfig =;
pusch_alpha = "AL1"; srs_ackNackST =;
pucch_p0_Nominal = -96; srs_MaxUpPts =;*/
msg3_delta_Preamble = 6;
pucch_deltaF_Format1 = "deltaF2"; pusch_p0_Nominal = -96;
pucch_deltaF_Format1b = "deltaF3"; pusch_alpha = "AL1";
pucch_deltaF_Format2 = "deltaF0"; pucch_p0_Nominal = -104;
pucch_deltaF_Format2a = "deltaF0"; msg3_delta_Preamble = 6;
pucch_deltaF_Format2b = "deltaF0"; pucch_deltaF_Format1 = "deltaF2";
pucch_deltaF_Format1b = "deltaF3";
rach_numberOfRA_Preambles = 64; pucch_deltaF_Format2 = "deltaF0";
rach_preamblesGroupAConfig = "DISABLE"; pucch_deltaF_Format2a = "deltaF0";
/* pucch_deltaF_Format2b = "deltaF0";
rach_sizeOfRA_PreamblesGroupA = ;
rach_messageSizeGroupA = ; rach_numberOfRA_Preambles = 64;
rach_messagePowerOffsetGroupB = ; rach_preamblesGroupAConfig = "DISABLE";
*/ /*
rach_powerRampingStep = 4; rach_sizeOfRA_PreamblesGroupA = ;
rach_preambleInitialReceivedTargetPower = -100; rach_messageSizeGroupA = ;
rach_preambleTransMax = 10; rach_messagePowerOffsetGroupB = ;
rach_raResponseWindowSize = 10; */
rach_macContentionResolutionTimer = 48; rach_powerRampingStep = 4;
rach_maxHARQ_Msg3Tx = 4; rach_preambleInitialReceivedTargetPower = -108;
rach_preambleTransMax = 10;
pcch_default_PagingCycle = 128; rach_raResponseWindowSize = 10;
pcch_nB = "oneT"; rach_macContentionResolutionTimer = 48;
bcch_modificationPeriodCoeff = 2; rach_maxHARQ_Msg3Tx = 4;