diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index c23b0d1a91..67cc6cfc3a 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -1518,7 +1518,7 @@ if (${RF_BOARD} STREQUAL "OAI_USRP")
include_directories(${LIBBOOST_INCLUDE_DIR})
endif (${RF_BOARD} STREQUAL "OAI_USRP")
-pkg_search_module(OPENPGM openpgm-5.1)
+pkg_search_module(OPENPGM openpgm-5.1 openpgm-5.2)
if(NOT ${OPENPGM_FOUND})
message("PACKAGE openpgm-5.1 is required by binaries such as oaisim: will fail later if this target is built")
else()
@@ -1625,7 +1625,7 @@ add_executable(lte-softmodem
${T_SOURCE}
)
-target_link_libraries (lte-softmodem
+target_link_libraries (lte-softmodem -ldl
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${MIH_LIB}
-Wl,--end-group )
@@ -1652,8 +1652,8 @@ add_executable(lte-softmodem-nos1
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
- #${OPENAIR2_DIR}/RRC/NAS/nas_config.c # enable if you want rrc to mount ip interface
- #${OPENAIR2_DIR}/RRC/NAS/rb_config.c
+ ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
+ ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
${HW_SOURCE}
${TRANSPORT_SOURCE}
@@ -1929,6 +1929,11 @@ foreach( d ${DirDefs} )
list(APPEND itti_compiler_options "-I${d}")
endforeach()
+# castxml doesn't work with c11 (gcc 5 default)
+# force castxml and clang compilation with gnu89 standard
+# we can't use cXX standard as pthread_rwlock_t is gnu standard
+list(APPEND itti_compiler_options "-std=gnu89")
+
set (ITTI_H ${ITTI_DIR}/intertask_interface_types.h)
add_custom_command (
OUTPUT ${OPENAIR_BIN_DIR}/messages.xml
diff --git a/cmake_targets/autotests/README.txt b/cmake_targets/autotests/README.txt
index 3ae18133c7..b04d24c51a 100644
--- a/cmake_targets/autotests/README.txt
+++ b/cmake_targets/autotests/README.txt
@@ -12,10 +12,12 @@ Obj.# Case# Test# Description
01 01 11 Build lte-softmodem_noS1.EXMIMO.Rel10
01 01 12 Build lte-softmodem_noS1.BLADERF.Rel10
01 01 13 Build lte-softmodem_noS1.ETHERNET.Rel10
+01 01 14 Build lte-softmodem_noS1.LMSSDR.Rel10
01 01 20 Build lte-softmodem.USRP.Rel10
01 01 21 Build lte-softmodem.EXMIMO.Rel10
01 01 22 Build lte-softmodem.BLADERF.Rel10
01 01 23 Build lte-softmodem.ETHERNET.Rel10
+01 01 24 Build lte-softmodem.LMSSDR.Rel10
01 01 30 Build (dlsim.Rel10 + ulsim.Rel10 + pucchsim.Rel10 + prachsim.Rel10 + pdcchsim.Rel10 + pbchsim.Rel10 + mbmssim.Rel10
secu_knas_encrypt_eia1.Rel10 secu_kenb.Rel10 aes128_ctr_encrypt.Rel10 aes128_ctr_decrypt.Rel10 secu_knas_encrypt_eea2.Rel10
@@ -24,7 +26,7 @@ Obj.# Case# Test# Description
01 01 40 Build RRH Gateway for USRP (Rel 10)
01 01 41 Build RRH Gateway for EXMIMO (Rel 10)
01 01 42 Build RRH Gateway for BLADERF (Rel 10)
-
+01 01 43 Build RRH Gateway for LMSSDR (Rel 10)
01 02 Run OAISIM-NOS1 Rel10 (TDD + 5MHz/10MHz/20MHz + TM 1,2), and check the operation
diff --git a/cmake_targets/autotests/run_exec_lte-softmodem_tests.py b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py
index 77c3006fea..db14fea40f 100755
--- a/cmake_targets/autotests/run_exec_lte-softmodem_tests.py
+++ b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py
@@ -312,13 +312,13 @@ def SSHSessionWrapper(machine, username, key_file, password, logdir_remote, logd
# \parm programList list of programs that must be terminated before execution of any test case
# \param CleanUpAluLteBox program to terminate AlU Bell Labs LTE Box
# \param ExmimoRfStop String to stop EXMIMO card (specified in test_case_list.xml)
-def cleanOldPrograms(oai, programList, CleanUpAluLteBox, ExmimoRfStop):
+def cleanOldPrograms(oai, programList, CleanUpAluLteBox, ExmimoRfStop, logdir, logdirOAI5GRepo):
cmd = 'killall -9 -q -r ' + programList
result = oai.send(cmd, True)
print "Killing old programs..." + result
programArray = programList.split()
programListJoin = '|'.join(programArray)
- cmd = " ( date ;echo \"Starting cleaning old programs.. \" ; dmesg|tail ; echo \"Current disk space.. \" ; df -h )>& $HOME/.oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync"
+ cmd = " ( date ;echo \"Starting cleaning old programs.. \" ; dmesg|tail ; echo \"Current disk space.. \" ; df -h )>& " + logdir + "/oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync"
result=oai.send_recv(cmd)
cmd = cleanupOldProgramsScript + ' ' + '\''+programListJoin+'\''
#result = oai.send_recv(cmd)
@@ -326,8 +326,14 @@ def cleanOldPrograms(oai, programList, CleanUpAluLteBox, ExmimoRfStop):
result = oai.send_expect_false(cmd, 'Match found', False)
print "Looking for old programs..." + result
res=oai.send_recv(CleanUpAluLteBox, True)
- cmd = "( " + ExmimoRfStop + " ) >> $HOME/.oai_test_setup_cleanup.log.`hostname` ; sync "
+ cmd= " echo \"Starting EXmimoRF Stop... \" >> " + logdir + "/oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync ";
+ oai.send_recv(cmd)
+ cmd = "( " + "cd " + logdirOAI5GRepo + " ; source oaienv ; " + ExmimoRfStop + " ) >> " + logdir + "/oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync "
+ print "cleanoldprograms cmd = " + cmd
res=oai.send_recv(cmd, False, timeout=600)
+ cmd= " echo \"Stopping EXmimoRF Stop... \" >> " + logdir + "/oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync ";
+ oai.send_recv(cmd)
+
#res = oai.send_recv(ExmimoRfStop, False)
cmd = " ( date ;echo \"Finished cleaning old programs.. \" ; dmesg | tail)>> $HOME/.oai_test_setup_cleanup.log.`hostname` 2>&1 ; sync"
res=oai.send_recv(cmd)
@@ -934,9 +940,9 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
t.join()
#Now we get the log files from remote machines on the local machine
if RRHMachine != '':
- cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC, oai_RRH] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+ cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC, oai_RRH] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop, [logdir_eNB, logdir_UE, logdir_EPC, logdir_RRH], logdirOAI5GRepo)
else:
- cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+ cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop, [logdir_eNB, logdir_UE, logdir_EPC], logdirOAI5GRepo)
logfile_UE_stop_script_out = logdir_UE + '/UE_stop_script_out' + '_' + str(run) + '_.log'
logfile_UE_stop_script = logdir_local_testcase + '/UE_stop_script' + '_' + str(run) + '_.log'
@@ -1065,7 +1071,7 @@ def search_test_case_group(testcasename, testcasegroup, test_case_exclude):
# \param CleanupAluLteBox string that contains commands to stop ALU Bell Labs LTEBox (specified in test_case_list.xml)
# \param ExmimoRfStop command to stop EXMIMO Card
class oaiCleanOldProgramThread (threading.Thread):
- def __init__(self, threadID, threadname, oai, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop):
+ def __init__(self, threadID, threadname, oai, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop, logdir, logdirOAI5GRepo):
threading.Thread.__init__(self)
self.threadID = threadID
self.threadname = threadname
@@ -1073,9 +1079,11 @@ class oaiCleanOldProgramThread (threading.Thread):
self.CleanUpOldProgs = CleanUpOldProgs
self.CleanUpAluLteBox = CleanUpAluLteBox
self.ExmimoRfStop = ExmimoRfStop
+ self.logdir = logdir
+ self.logdirOAI5GRepo = logdirOAI5GRepo
def run(self):
try:
- cleanOldPrograms(self.oai, self.CleanUpOldProgs, self.CleanUpAluLteBox, self.ExmimoRfStop)
+ cleanOldPrograms(self.oai, self.CleanUpOldProgs, self.CleanUpAluLteBox, self.ExmimoRfStop, self.logdir, self.logdirOAI5GRepo)
except Exception, e:
error=''
error = error + ' In class oaiCleanOldProgramThread, function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: ' + str(e.__class__) + " : " + str( e)
@@ -1090,15 +1098,20 @@ class oaiCleanOldProgramThread (threading.Thread):
# \param CleanUpOldProgs list of programs which must be terminated before running a test case (specified in test_case_list.xml)
# \param CleanupAluLteBox string that contains commands to stop ALU Bell Labs LTEBox (specified in test_case_list.xml)
# \param ExmimoRfStop command to stop EXMIMO Card
-def cleanOldProgramsAllMachines(oai_list, CleanOldProgs, CleanUpAluLteBox, ExmimoRfStop):
+def cleanOldProgramsAllMachines(oai_list, CleanOldProgs, CleanUpAluLteBox, ExmimoRfStop, logdir_list, logdirOAI5GRepo):
threadId=0
threadList=[]
+ index=0
+ if len(oai_list)!=len(logdir_list) :
+ logdir_list=[logdir[0]]*len(oai_list)
+
for oai in oai_list:
threadName="cleanup_thread_"+str(threadId)
- thread=oaiCleanOldProgramThread(threadId, threadName, oai, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop)
+ thread=oaiCleanOldProgramThread(threadId, threadName, oai, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop, logdir_list[index],logdirOAI5GRepo)
threadList.append(thread)
thread.start()
threadId = threadId + 1
+ index = index+1
for t in threadList:
t.join()
@@ -1360,7 +1373,7 @@ if localshell == 0:
print "Sudo permissions..." + result
print '\nCleaning Older running programs : ' + CleanUpOldProgs
- cleanOldPrograms(oai_list[index], CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop)
+ cleanOldPrograms(oai_list[index], CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop, '$HOME', '/tmp')
#result = oai_list[index].send('mount ' + NFSResultsDir, True)
#print "Mounting NFS Share " + NFSResultsDir + "..." + result
@@ -1489,7 +1502,7 @@ if (out != '') :
print "Exiting now..."
sys.exit(1)
-cleanOldProgramsAllMachines(oai_list, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop)
+cleanOldProgramsAllMachines(oai_list, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop, '$HOME' , logdirOAI5GRepo)
if cleanUpRemoteMachines == True:
sys.exit(0)
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 7b92ce2d11..d427a6b340 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -155,6 +155,25 @@
1
+
+ compilation
+ Build lte_softmodem_noS1.LMSSDR.Rel10
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ --eNB -w LMSSDR -r Rel10 --noS1 -c
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/rb_tool
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/liboai_lmssdrdevif.so
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash
+
+
+
+
+
+ lte-softmodem_noS1.LMSSDR.Rel10
+ 1
+
@@ -231,6 +250,24 @@
1
+
+ compilation
+ Build lte_softmodem.LMSSDR.Rel10
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ --eNB -w LMSSDR -r Rel10 -c
+ $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem
+ $OPENAIR_DIR/cmake_targets/lte_build_oai/build/liboai_lmssdrdevif.so
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash
+
+
+
+
+
+ lte-softmodem.LMSSDR.Rel10
+ 1
+
+
compilation
Build phy unitary simulators + secuirity unitary tests
@@ -308,7 +345,7 @@
compilation
- Build RRH Gateway
+ Build RRH Gateway for BladeRF (RF) nad Ethernet (transport)
$OPENAIR_DIR/cmake_targets/build_oai
--RRH -w BLADERF -t ETHERNET -c
@@ -325,6 +362,24 @@
1
+
+ compilation
+ Build RRH Gateway for LMSSDR (RF) and Ethernet (transport)
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ --RRH -w LMSSDR -t ETHERNET -c
+ $OPENAIR_DIR/cmake_targets/rrh_gw/build/rrh_gw
+ $OPENAIR_DIR/cmake_targets/rrh_gw/build/liboai_lmssdrdevif.so
+ $OPENAIR_DIR/cmake_targets/rrh_gw/build/liboai_eth_transpro.so
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash
+
+
+
+
+
+ RRH.LMSSDR.Rel10
+ 1
+
execution
@@ -921,7 +976,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -996,7 +1051,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1070,7 +1125,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1142,7 +1197,7 @@
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf3_script 1 ppp0 -c 192.172.0.1 -i 1 -u -f m -B 192.172.0.2 -b 17M -R
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -1216,7 +1271,7 @@
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1290,7 +1345,7 @@
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1365,7 +1420,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1439,7 +1494,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1513,7 +1568,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1587,7 +1642,7 @@
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1661,7 +1716,7 @@
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1735,7 +1790,7 @@
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -1811,7 +1866,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -1895,7 +1950,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -1979,7 +2034,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -2063,7 +2118,7 @@
throughput_test min=10.0Mbits/sec max=10.5Mbits/sec average=11.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -2147,7 +2202,7 @@
throughput_test min=20.0Mbits/sec max=21.0Mbits/sec average=22.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -2231,7 +2286,7 @@
throughput_test min=40.0Mbits/sec max=42.0Mbits/sec average=44.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -2315,7 +2370,7 @@
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2409,7 +2464,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2503,7 +2558,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2597,7 +2652,7 @@ c
throughput_test min=9.0Mbits/sec max=9Mbits/sec average=9Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2691,7 +2746,7 @@ c
throughput_test min=9Mbits/sec max=9Mbits/sec average=9Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2785,7 +2840,7 @@ c
throughput_test min=9Mbits/sec max=9Mbits/sec average=9Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
ETC/hss.conf MYSQL_user \"root\"
@@ -2876,7 +2931,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -2948,7 +3003,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -3020,7 +3075,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -3090,7 +3145,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf3_script 1 ppp0 -c 192.172.0.1 -i 1 -u -f m -B 192.172.0.2 -b 17M -R
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -3161,7 +3216,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf3_script 1 ppp0 -c 192.172.0.1 -i 1 -u -f m -B 192.172.0.2 -b 35M -R
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
@@ -3232,7 +3287,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf_script 1 ppp0 -s -i 1 -u -f m -B 192.172.0.2
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
@@ -3308,7 +3363,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3391,7 +3446,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3472,7 +3527,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3553,7 +3608,7 @@ c
throughput_test min=10.0Mbits/sec max=10.5Mbits/sec average=11.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3634,7 +3689,7 @@ c
throughput_test min=20.0Mbits/sec max=21.0Mbits/sec average=22.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3715,7 +3770,7 @@ c
throughput_test min=20.0Mbits/sec max=21.0Mbits/sec average=22.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -3795,7 +3850,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -3868,7 +3923,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -3940,7 +3995,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -4010,7 +4065,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf3_script 1 ppp0 -c 192.172.0.1 -i 1 -u -f m -B 192.172.0.2 -b 10M -R
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -4081,7 +4136,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf3_script 1 ppp0 -c 192.172.0.1 -i 1 -u -f m -B 192.172.0.2 -b 20M -R
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
@@ -4152,7 +4207,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf_script 1 ppp0 -s -i 1 -u -f m -B 192.172.0.2
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
@@ -4228,7 +4283,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4311,7 +4366,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4392,7 +4447,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4473,7 +4528,7 @@ c
throughput_test min=10.0Mbits/sec max=10.5Mbits/sec average=11.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4554,7 +4609,7 @@ c
throughput_test min=20.0Mbits/sec max=21.0Mbits/sec average=22.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4635,7 +4690,7 @@ c
throughput_test min=20.0Mbits/sec max=21.0Mbits/sec average=22.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue; sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
BUILD/EPC/epc.conf.in MCC \"208\"
@@ -4720,7 +4775,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -4796,7 +4851,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -4871,7 +4926,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -4944,7 +4999,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf_script 1 ppp0 -s -i 1 -u -f m -B 192.172.0.2
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -5019,7 +5074,7 @@ c
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5094,7 +5149,7 @@ c
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5169,7 +5224,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5245,7 +5300,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5320,7 +5375,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5393,7 +5448,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf_script 1 ppp0 -s -i 1 -u -f m -B 192.172.0.2
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -5468,7 +5523,7 @@ c
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5543,7 +5598,7 @@ c
throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5630,7 +5685,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5716,7 +5771,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5801,7 +5856,7 @@ c
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -5884,7 +5939,7 @@ c
$OPENAIR_DIR/cmake_targets/autotests/tools/iperf_script 1 ppp0 -s -i 1 -u -f m -B 192.172.0.2
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec
@@ -5969,7 +6024,7 @@ c
throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -6054,7 +6109,7 @@ c
throughput_test min=10.0Mbits/sec max=10.0Mbits/sec average=10.0Mbits/sec
False
- sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue
+ sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --reset-ue
/tmp
@@ -6082,7 +6137,7 @@ c
lte-softmodem
- calisson
+ tique
stevens
amerique
390
@@ -6099,10 +6154,10 @@ c
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf frame_type \"FDD\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_rx 1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_tx 1
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.82/24\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.82/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.147/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.147/24\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_PORT_FOR_S1U 2152
$OPENAIR_DIR/cmake_targets/build_oai
--eNB -w USRP -x -c
@@ -6157,7 +6212,7 @@ c
lte-softmodem
- calisson
+ tique
stevens
amerique
390
@@ -6174,10 +6229,10 @@ c
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf frame_type \"FDD\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_rx 1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_tx 1
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.82/24\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.82/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.147/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.147/24\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_PORT_FOR_S1U 2152
$OPENAIR_DIR/cmake_targets/build_oai
--eNB -w USRP -x -c
@@ -6305,7 +6360,7 @@ c
lte-softmodem
- calisson
+ tique
stevens
amerique
390
@@ -6322,10 +6377,10 @@ c
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf frame_type \"FDD\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_rx 1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_tx 1
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.82/24\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.82/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.147/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.147/24\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_PORT_FOR_S1U 2152
$OPENAIR_DIR/cmake_targets/build_oai
--eNB -w USRP -x -c
@@ -6368,7 +6423,7 @@ c
/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000
- $OPENAIRCN_DIR/TEST/autotests/tools/iperf_script 65 lo -c 192.172.0.2 -b 10Mbits/s -i 1 -f m -u
+ $OPENAIRCN_DIR/TEST/autotests/tools/iperf_script 65 lo -c 192.172.0.2 -b 17Mbits/s -i 1 -f m -u
False
@@ -6379,7 +6434,7 @@ c
lte-softmodem
- calisson
+ tique
stevens
amerique
390
@@ -6396,10 +6451,10 @@ c
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf frame_type \"FDD\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_rx 1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf nb_antennas_tx 1
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.82/24\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth5\"
- targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.82/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1_MME \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.147/24\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_INTERFACE_NAME_FOR_S1U \"eth1\"
+ targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_IPV4_ADDRESS_FOR_S1U \"192.168.12.147/24\"
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf ENB_PORT_FOR_S1U 2152
$OPENAIR_DIR/cmake_targets/build_oai
--eNB -w USRP -x -c
@@ -6442,7 +6497,7 @@ c
/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000
- $OPENAIRCN_DIR/TEST/autotests/tools/iperf_script 65 lo -c 192.172.0.2 -b 20Mbits/s -i 1 -f m -u
+ $OPENAIRCN_DIR/TEST/autotests/tools/iperf_script 65 lo -c 192.172.0.2 -b 34Mbits/s -i 1 -f m -u
False
diff --git a/cmake_targets/autotests/tools/iperf_script b/cmake_targets/autotests/tools/iperf_script
index 5f9baff09f..fb540657b6 100755
--- a/cmake_targets/autotests/tools/iperf_script
+++ b/cmake_targets/autotests/tools/iperf_script
@@ -39,14 +39,26 @@ timeout=${args[0]}
iface=${args[1]}
iperf_args=(${args[@]:2})
+ip_client=echo "$iperf_args" | sed -ne 's/.*\-c[ ]*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/p'
+
#array=${1:-1}
echo "args = ${args[@]}"
echo "timeout = $timeout"
echo "iface = $iface"
echo "iperf_args = ${iperf_args[@]}"
+echo "ip_client = $ip_client"
sleep $timeout
+echo " Waiting for IP Address..."
while true; do var=`ifconfig $iface` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5
+if [ -n "$ip_client" ]; then
+echo "Waiting for route to be setup before iperf makes connection..."
+ var=`route -n | grep $ip_client`
+ if ["$var" != "" ] ; then break; fi
+
+fi
+sleep 5
+
iperf ${iperf_args[@]}
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index d1306b804b..04289a83fa 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -33,6 +33,7 @@
# brief OAI automated build tool that can be used to install, compile, run OAI.
# author Navid Nikaein, Lionel GAUTHIER, Laurent Thomas
+set -e
################################
# include helper functions
@@ -59,6 +60,7 @@ RUN_GROUP=0
TEST_CASE_GROUP=""
BUILD_DOXYGEN=0
T_TRACER="False"
+DISABLE_HARDWARE_DEPENDENCY="False"
trap handle_ctrl_c INT
function print_help() {
@@ -131,6 +133,8 @@ Options
Disables CPU Affinity between UHD/TX/RX Threads (Valid only when deadline scheduler is disabled). By defaulT, CPU Affinity is enabled when not using deadline scheduler. It is enabled only with >2 CPUs. For eNB, CPU_0-> Device library (UHD), CPU_1->TX Threads, CPU_2...CPU_MAX->Rx Threads. For UE, CPU_0->Device Library(UHD), CPU_1..CPU_MAX -> All the UE threads
--T-tracer
Enables the T tracer.
+--disable-hardware-dependency
+ Disable HW dependency during installation
Usage (first build):
oaisim (eNB + UE): ./build_oai -I -g --oaisim -x --install-system-files
Eurecom EXMIMO + COTS UE : ./build_oai -I -g --eNB -x --install-system-files
@@ -277,6 +281,10 @@ function main() {
T_TRACER="True"
echo_info "Enabling the T tracer"
shift 1;;
+ --disable-hardware-dependency)
+ echo_info "Disabling hardware dependency for compiling software"
+ DISABLE_HARDWARE_DEPENDENCY="True"
+ shift 1;;
-h | --help)
print_help
exit 1;;
@@ -386,10 +394,16 @@ function main() {
if [ "$HW" == "OAI_USRP" ] ; then
echo_info "installing packages for USRP support"
check_install_usrp_uhd_driver
+ if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
+ install_usrp_uhd_driver
+ fi
fi
if [ "$HW" == "OAI_BLADERF" ] ; then
echo_info "installing packages for BLADERF support"
check_install_bladerf_driver
+ if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
+ flash_firmware_bladerf
+ fi
fi
fi
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 673ed190f0..ac8d9f34c1 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -67,7 +67,45 @@ echo_warning() { cecho "$*" $yellow ;}
echo_success() { cecho "$*" $green ;}
echo_info() { cecho "$*" $blue ;}
+########################
+# distribution helpers #
+########################
+# This function return a string to identify the distribution we are running
+# If we can't check the distribution, it returns "Unknown"
+# This function return always true as exit code by design
+# Examples:
+# Ubuntu16.04
+# Debian8.5
+get_distribution_release() {
+ local distributor
+ if distributor=$(lsb_release -si 2>/dev/null) ; then
+ echo $distributor$(lsb_release -sr)
+ else
+ echo Unknown
+ fi
+}
+
+check_supported_distribution() {
+ local distribution=$(get_distribution_release)
+ case "$distribution" in
+ "Ubuntu16.04") return 0 ;;
+ "Ubuntu14.04") return 0 ;;
+ esac
+ return 1
+}
+
+##################
+# Error handlers #
+##################
+
+handler_EXIT() {
+ local exit_code=$?
+ [ "$exit_code" -eq 0 ] || echo_error "build have failed"
+ exit $exit_code
+}
+
+trap handler_EXIT EXIT
###########################
# Cleaners
@@ -109,6 +147,7 @@ clean_all_files() {
compilations() {
cd $OPENAIR_DIR/cmake_targets/$1/build
+ set +e
{
rm -f $3
if [ "$VERBOSE_COMPILE" == "1" ]; then
@@ -118,12 +157,14 @@ compilations() {
fi
} > $dlog/$2.$REL.txt 2>&1
+ set -e
echo_info "Log file for compilation has been written to: $dlog/$2.$REL.txt"
if [ -s $3 ] ; then
cp $3 $4
echo_success "$2 compiled"
else
echo_error "$2 compilation failed"
+ exit 1
fi
}
@@ -186,23 +227,36 @@ install_gnutls_from_source(){
check_install_usrp_uhd_driver(){
#first we remove old installation
- $SUDO apt-get remove uhd libuhd-dev libuhd003 uhd-host -y
+ $SUDO apt-get remove -y uhd || true
+ $SUDO apt-get remove libuhd-dev libuhd003 uhd-host -y
v=$(lsb_release -cs)
$SUDO apt-add-repository --remove "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
#The new USRP repository
$SUDO add-apt-repository ppa:ettusresearch/uhd -y
$SUDO apt-get update
$SUDO apt-get -y install python python-tk libboost-all-dev libusb-1.0-0-dev
- $SUDO apt-get -y install libuhd-dev libuhd003 uhd-host
+ $SUDO apt-get -y install libuhd-dev libuhd003
+}
+
+install_usrp_uhd_driver() {
+ # We move uhd-host apart because it depends on linux kernel version
+ # On newer kernels, it fails to install
+ $SUDO apt-get -y install uhd-host
$SUDO uhd_images_downloader
}
+
check_install_bladerf_driver(){
- $SUDO add-apt-repository -y ppa:bladerf/bladerf
- $SUDO apt-get update
+ if [ "$(get_distribution_release)" == "Ubuntu14.04" ] ; then
+ $SUDO add-apt-repository -y ppa:bladerf/bladerf
+ $SUDO apt-get update
+ fi
$SUDO apt-get install -y bladerf libbladerf-dev
$SUDO apt-get install -y bladerf-firmware-fx3
$SUDO apt-get install -y bladerf-fpga-hostedx40
- $SUDO bladeRF-cli --flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img
+}
+
+flash_firmware_bladerf() {
+ $SUDO bladeRF-cli --flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img
}
check_install_additional_tools (){
@@ -228,12 +282,15 @@ check_install_additional_tools (){
ctags \
ntpdate \
iperf3 \
- android-tools-adb
+ android-tools-adb \
+ wvdial \
+ python-numpy \
+ sshpass
$SUDO pip install paramiko
$SUDO pip install pyroute2
$SUDO rm -fr /opt/ssh
- $SUDO git clone https://gist.github.com/2190472.git /opt/ssh
+ $SUDO GIT_SSL_NO_VERIFY=true git clone https://gist.github.com/2190472.git /opt/ssh
log_netiface=$OPENAIR_DIR/cmake_targets/log/netiface_install_log.txt
echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface"
@@ -248,8 +305,26 @@ check_install_additional_tools (){
}
check_install_oai_software() {
+ local specific_packages=""
+ if ! check_supported_distribution; then
+ echo_error "Your distribution $(get_distribution_release) is not supported by oai !"
+ exit 1
+ fi
$SUDO apt-get update
+ $SUDO apt install -y software-properties-common
+ case "$(get_distribution_release)" in
+ "Ubuntu14.04")
+ specific_packages="libtasn1-3-dev"
+ # For iperf3
+ $SUDO add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty-backports universe"
+ $SUDO apt-get update
+ ;;
+ "Ubuntu16.04")
+ specific_packages="libtasn1-6-dev"
+ ;;
+ esac
$SUDO apt-get install -y \
+ $specific_packages \
autoconf \
automake \
bison \
@@ -273,9 +348,9 @@ check_install_oai_software() {
iptables-dev \
libatlas-base-dev \
libatlas-dev \
- libblas3gf \
libblas-dev \
libconfig8-dev \
+ libffi-dev \
libforms-bin \
libforms-dev \
libgcrypt11-dev \
@@ -285,16 +360,16 @@ check_install_oai_software() {
libidn11-dev \
libmysqlclient-dev \
liboctave-dev \
- libpgm-5.1 \
libpgm-dev \
+ libpython2.7-dev \
libsctp1 \
libsctp-dev \
libssl-dev \
- libtasn1-3-dev \
libtool \
libusb-1.0-0-dev \
libxml2 \
libxml2-dev \
+ libxslt1-dev \
linux-headers-`uname -r` \
mscgen \
octave \
@@ -307,11 +382,7 @@ check_install_oai_software() {
xmlstarlet \
python-pip \
pydb \
- wvdial \
- python-numpy \
- sshpass \
- libxslt1-dev \
- android-tools-adb
+ wget
$SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
@@ -337,6 +408,7 @@ install_asn1c_from_source(){
./configure
make -j`nproc`
$SUDO make install
+ cd -
) > $asn1_install_log 2>&1
}
diff --git a/common/utils/T/.gitignore b/common/utils/T/.gitignore
new file mode 100644
index 0000000000..a52d9a3667
--- /dev/null
+++ b/common/utils/T/.gitignore
@@ -0,0 +1,12 @@
+*.o
+*.a
+T_IDs.h
+T_messages.txt.h
+genids
+tracer/enb
+tracer/extract_config
+tracer/record
+tracer/replay
+tracer/textlog
+tracer/vcd
+tracee/tracee
diff --git a/common/utils/T/T.c b/common/utils/T/T.c
index 786b3722ed..5d84afa660 100644
--- a/common/utils/T/T.c
+++ b/common/utils/T/T.c
@@ -1,5 +1,4 @@
#include "T.h"
-#include "T_messages.txt.h"
#include
#include
#include
@@ -108,19 +107,17 @@ static void monitor_and_kill(int child1, int child2)
exit(0);
}
-void T_init(int remote_port, int wait_for_tracer)
+void T_init(int remote_port, int wait_for_tracer, int dont_fork)
{
int socket_pair[2];
int s;
int T_shm_fd;
- unsigned char *buf;
- int len;
int child1, child2;
if (socketpair(AF_UNIX, SOCK_STREAM, 0, socket_pair))
{ perror("socketpair"); abort(); }
- /* child1 runs the local tracer and child2 runs the tracee */
+ /* child1 runs the local tracer and child2 (or main) runs the tracee */
child1 = fork(); if (child1 == -1) abort();
if (child1 == 0) {
@@ -130,10 +127,12 @@ void T_init(int remote_port, int wait_for_tracer)
}
close(socket_pair[0]);
- child2 = fork(); if (child2 == -1) abort();
- if (child2 != 0) {
- close(socket_pair[1]);
- monitor_and_kill(child1, child2);
+ if (dont_fork == 0) {
+ child2 = fork(); if (child2 == -1) abort();
+ if (child2 != 0) {
+ close(socket_pair[1]);
+ monitor_and_kill(child1, child2);
+ }
}
s = socket_pair[1];
@@ -153,29 +152,4 @@ void T_init(int remote_port, int wait_for_tracer)
close(T_shm_fd);
new_thread(T_receive_thread, NULL);
-
- /* trace T_message.txt
- * Send several messages -1 with content followed by message -2.
- * We can't use the T macro directly, events -1 and -2 are special.
- */
- buf = T_messages_txt;
- len = T_messages_txt_len;
- while (len) {
- int send_size = len;
- if (send_size > T_PAYLOAD_MAXSIZE - sizeof(int))
- send_size = T_PAYLOAD_MAXSIZE - sizeof(int);
- do {
- T_LOCAL_DATA
- T_HEADER(T_ID(-1));
- T_PUT_buffer(1, ((T_buffer){addr:(buf), length:(len)}));
- T_COMMIT();
- } while (0);
- buf += send_size;
- len -= send_size;
- }
- do {
- T_LOCAL_DATA
- T_HEADER(T_ID(-2));
- T_COMMIT();
- } while (0);
}
diff --git a/common/utils/T/T.h b/common/utils/T/T.h
index a5aacb4b4f..819615131e 100644
--- a/common/utils/T/T.h
+++ b/common/utils/T/T.h
@@ -562,7 +562,7 @@ extern T_cache_t *T_cache;
extern int *T_active;
-void T_init(int remote_port, int wait_for_tracer);
+void T_init(int remote_port, int wait_for_tracer, int dont_fork);
#else /* T_TRACER */
diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt
index 5678b588ba..05c08085c6 100644
--- a/common/utils/T/T_messages.txt
+++ b/common/utils/T/T_messages.txt
@@ -52,7 +52,7 @@ ID = ENB_PHY_UL_CHANNEL_ESTIMATE
ID = ENB_PHY_PUSCH_IQ
DESC = eNodeB PUSCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
- FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : buffer,pusch_comp
+ FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
ID = ENB_PHY_PUCCH_1AB_IQ
DESC = eNodeB PUCCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
@@ -79,10 +79,18 @@ ID = ENB_MAC_UE_UL_PDU
DESC = MAC uplink UE received PDU
GROUP = ALL:MAC:ENB
FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,harq_pid : int,sdu_length : int,num_ce : int,num_sdu
+ID = ENB_MAC_UE_UL_PDU_WITH_DATA
+ DESC = MAC uplink UE received PDU
+ GROUP = ALL:MAC:ENB:HEAVY
+ FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,harq_pid : int,sdu_length : int,num_ce : int,num_sdu : buffer,data
ID = ENB_MAC_UE_UL_SDU
DESC = MAC uplink UE received SDU
GROUP = ALL:MAC:ENB
FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,lcid : int,length
+ID = ENB_MAC_UE_UL_SDU_WITH_DATA
+ DESC = MAC uplink UE received SDU
+ GROUP = ALL:MAC:ENB:HEAVY
+ FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,lcid : int,length : buffer,data
ID = ENB_MAC_UE_UL_CE
DESC = MAC uplink UE received control element
GROUP = ALL:MAC:ENB
diff --git a/common/utils/T/local_tracer.c b/common/utils/T/local_tracer.c
index 93a56a9e3d..68a937a6b5 100644
--- a/common/utils/T/local_tracer.c
+++ b/common/utils/T/local_tracer.c
@@ -11,10 +11,12 @@
#include
#include
+#include "T.h"
+#include "T_messages.txt.h"
#include "T_defs.h"
#include "T_IDs.h"
-static T_cache_t *T_cache;
+static T_cache_t *T_local_cache;
static int T_busylist_head;
typedef struct databuf {
@@ -85,6 +87,38 @@ static int get_connection(char *addr, int port)
return t;
}
+static void forward(void *_forwarder, char *buf, int size);
+
+void send_T_messages_txt(void *forwarder)
+{
+ char buf[T_BUFFER_MAX];
+ char *T_LOCAL_buf = buf;
+ int T_LOCAL_size;
+ unsigned char *src;
+ int src_len;
+
+ /* trace T_message.txt
+ * Send several messages -1 with content followed by message -2.
+ */
+ src = T_messages_txt;
+ src_len = T_messages_txt_len;
+ while (src_len) {
+ int send_size = src_len;
+ if (send_size > T_PAYLOAD_MAXSIZE - sizeof(int))
+ send_size = T_PAYLOAD_MAXSIZE - sizeof(int);
+ /* TODO: be careful, we use internal T stuff, to rewrite? */
+ T_LOCAL_size = 0;
+ T_HEADER(T_ID(-1));
+ T_PUT_buffer(1, ((T_buffer){addr:(src), length:(send_size)}));
+ forward(forwarder, buf, T_LOCAL_size);
+ src += send_size;
+ src_len -= send_size;
+ }
+ T_LOCAL_size = 0;
+ T_HEADER(T_ID(-2));
+ forward(forwarder, buf, T_LOCAL_size);
+}
+
/****************************************************************************/
/* forward functions */
/****************************************************************************/
@@ -213,6 +247,7 @@ dead:
close(f->socket_remote);
f->socket_remote = get_connection("0.0.0.0", f->remote_port);
+ send_T_messages_txt(f);
goto again;
return NULL;
@@ -237,6 +272,7 @@ static void *forwarder(int port, int s)
f->remote_port = port;
f->socket_remote = get_connection("0.0.0.0", port);
+ send_T_messages_txt(f);
new_thread(data_sender, f);
new_thread(forward_remote_messages, f);
@@ -287,7 +323,7 @@ static void forward(void *_forwarder, char *buf, int size)
static void wait_message(void)
{
- while (T_cache[T_busylist_head].busy == 0) usleep(1000);
+ while (T_local_cache[T_busylist_head].busy == 0) usleep(1000);
}
static void init_shm(void)
@@ -297,17 +333,17 @@ static void init_shm(void)
if (s == -1) { perror(T_SHM_FILENAME); abort(); }
if (ftruncate(s, T_CACHE_SIZE * sizeof(T_cache_t)))
{ perror(T_SHM_FILENAME); abort(); }
- T_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
- PROT_READ | PROT_WRITE, MAP_SHARED, s, 0);
- if (T_cache == NULL)
+ T_local_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
+ PROT_READ | PROT_WRITE, MAP_SHARED, s, 0);
+ if (T_local_cache == NULL)
{ perror(T_SHM_FILENAME); abort(); }
close(s);
/* let's garbage the memory to catch some potential problems
* (think multiprocessor sync issues, barriers, etc.)
*/
- memset(T_cache, 0x55, T_CACHE_SIZE * sizeof(T_cache_t));
- for (i = 0; i < T_CACHE_SIZE; i++) T_cache[i].busy = 0;
+ memset(T_local_cache, 0x55, T_CACHE_SIZE * sizeof(T_cache_t));
+ for (i = 0; i < T_CACHE_SIZE; i++) T_local_cache[i].busy = 0;
}
void T_local_tracer_main(int remote_port, int wait_for_tracer,
@@ -335,9 +371,9 @@ void T_local_tracer_main(int remote_port, int wait_for_tracer,
while (1) {
wait_message();
__sync_synchronize();
- forward(f, T_cache[T_busylist_head].buffer,
- T_cache[T_busylist_head].length);
- T_cache[T_busylist_head].busy = 0;
+ forward(f, T_local_cache[T_busylist_head].buffer,
+ T_local_cache[T_busylist_head].length);
+ T_local_cache[T_busylist_head].busy = 0;
T_busylist_head++;
T_busylist_head &= T_CACHE_SIZE - 1;
}
diff --git a/common/utils/T/tracee/Makefile b/common/utils/T/tracee/Makefile
index 703d49d029..10ea3bdca3 100644
--- a/common/utils/T/tracee/Makefile
+++ b/common/utils/T/tracee/Makefile
@@ -2,7 +2,7 @@ CC=gcc
CFLAGS=-Wall -g -pthread -DT_TRACER -I.
PROG=tracee
-OBJS=tracee.o ../T.o
+OBJS=tracee.o ../T.o ../local_tracer.o
$(PROG): $(OBJS)
$(CC) $(CFLAGS) -o $(PROG) $(OBJS) -lrt
diff --git a/common/utils/T/tracee/tracee.c b/common/utils/T/tracee/tracee.c
index b4b73b9e67..5f820ee42e 100644
--- a/common/utils/T/tracee/tracee.c
+++ b/common/utils/T/tracee/tracee.c
@@ -6,7 +6,7 @@
int main(void)
{
int frame = 0;
- T_connect_to_tracer("127.0.0.1", 2020);
+ T_init(2021, 1, 0);
while (1) {
getchar();
T(T_ENB_PHY_PUCCH_1AB_IQ, T_INT(0), T_INT(0), T_INT(frame), T_INT(0), T_INT(0), T_INT(0));
diff --git a/common/utils/T/tracer/Makefile b/common/utils/T/tracer/Makefile
index bf0f72710c..ee289aae59 100644
--- a/common/utils/T/tracer/Makefile
+++ b/common/utils/T/tracer/Makefile
@@ -5,7 +5,16 @@ CFLAGS=-Wall -g -pthread -DT_TRACER -I.
LIBS=-lX11 -lm -lpng -lXft
-all: textlog enb vcd
+all: record replay extract_config textlog enb vcd
+
+record: utils.o record.o database.o config.o
+ $(CC) $(CFLAGS) -o record $^ $(LIBS)
+
+replay: utils.o replay.o
+ $(CC) $(CFLAGS) -o replay $^ $(LIBS)
+
+extract_config: extract_config.o
+ $(CC) $(CFLAGS) -o extract_config $^ $(LIBS)
textlog: utils.o textlog.o database.o event.o handler.o config.o \
event_selector.o view/view.a gui/gui.a logger/logger.a \
@@ -40,8 +49,10 @@ filter/filter.a:
$(CC) $(CFLAGS) -c -o $@ $<
clean:
- rm -f *.o core tracer_remote textlog enb vcd
+ rm -f *.o core tracer_remote textlog enb vcd record replay
+ rm -f extract_config
cd gui && make clean
cd view && make clean
cd logger && make clean
cd filter && make clean
+ cd hacks && make clean
diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c
index f43e1d6707..b0ae285f6d 100644
--- a/common/utils/T/tracer/enb.c
+++ b/common/utils/T/tracer/enb.c
@@ -33,9 +33,6 @@ typedef struct {
pthread_mutex_t lock;
} enb_data;
-#define DEFAULT_REMOTE_IP "127.0.0.1"
-#define DEFAULT_REMOTE_PORT 2021
-
void is_on_changed(void *_d)
{
enb_data *d = _d;
@@ -116,8 +113,11 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
widget *text;
view *textview;
int i;
+ widget *w;
+ view *v;
+ logger *l;
- main_window = new_toplevel_window(g, 800, 600, "eNB tracer");
+ main_window = new_toplevel_window(g, 1200, 900, "eNB tracer");
top_container = new_container(g, VERTICAL);
widget_add_child(g, main_window, top_container, -1);
@@ -135,9 +135,39 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
*/
framelog_set_skip(input_signal_log, 10);
input_signal_view = new_view_xy(7680*10, 10,
- g, input_signal_plot, new_color(g, "#0c0c72"));
+ g, input_signal_plot, new_color(g, "#0c0c72"), XY_LOOP_MODE);
logger_add_view(input_signal_log, input_signal_view);
+ /* UE 0 PUSCH IQ data */
+ w = new_xy_plot(g, 55, 55, "PUSCH IQ", 50);
+ widget_add_child(g, line, w, -1);
+ xy_plot_set_range(g, w, -1000, 1000, -1000, 1000);
+ l = new_iqlog(h, database, "ENB_PHY_PUSCH_IQ", "nb_rb",
+ "N_RB_UL", "symbols_per_tti", "pusch_comp");
+ v = new_view_xy(100*12*14,10,g,w,new_color(g,"#000"),XY_FORCED_MODE);
+ logger_add_view(l, v);
+ logger_set_filter(l,
+ filter_eq(
+ filter_evarg(database, "ENB_PHY_PUSCH_IQ", "UE_ID"),
+ filter_int(0)
+ ));
+
+ /* UE 0 estimated UL channel */
+ w = new_xy_plot(g, 256*2, 55, "UL estimated channel", 50);
+ widget_add_child(g, line, w, -1);
+ xy_plot_set_range(g, w, 0, 512*10, -10, 80);
+ l = new_framelog(h, database,
+ "ENB_PHY_UL_CHANNEL_ESTIMATE", "subframe", "chest_t");
+ //framelog_set_skip(input_signal_log, 10);
+ framelog_set_update_only_at_sf9(l, 0);
+ v = new_view_xy(512*10, 10, g, w, new_color(g, "#0c0c72"), XY_LOOP_MODE);
+ logger_add_view(l, v);
+ logger_set_filter(l,
+ filter_eq(
+ filter_evarg(database, "ENB_PHY_UL_CHANNEL_ESTIMATE", "UE_ID"),
+ filter_int(0)
+ ));
+
/* downlink/uplink UE DCIs */
widget_add_child(g, top_container,
new_label(g,"DL/UL TICK/DCI/ACK/NACK "), -1);
@@ -440,14 +470,16 @@ int main(int n, char **v)
logger *textlog;
char *name, *desc;
database_get_generic_description(database, i, &name, &desc);
- if (strncmp(name, "LEGACY_", 7) != 0) continue;
- textlog = new_textlog(h, database, name, desc);
- logger_add_view(textlog, eg.legacy);
+ if (!strncmp(name, "LEGACY_", 7)) {
+ textlog = new_textlog(h, database, name, desc);
+ logger_add_view(textlog, eg.legacy);
+ }
free(name);
free(desc);
}
on_off(database, "ENB_PHY_INPUT_SIGNAL", is_on, 1);
+ on_off(database, "ENB_PHY_UL_CHANNEL_ESTIMATE", is_on, 1);
on_off(database, "ENB_PHY_DL_TICK", is_on, 1);
on_off(database, "ENB_PHY_DLSCH_UE_DCI", is_on, 1);
on_off(database, "ENB_PHY_DLSCH_UE_ACK", is_on, 1);
@@ -458,6 +490,7 @@ int main(int n, char **v)
on_off(database, "ENB_PHY_ULSCH_UE_ACK", is_on, 1);
on_off(database, "ENB_PHY_ULSCH_UE_NACK", is_on, 1);
on_off(database, "ENB_MASTER_TICK", is_on, 1);
+ on_off(database, "ENB_PHY_PUSCH_IQ", is_on, 1);
on_off(database, "LEGACY_RRC_INFO", is_on, 1);
on_off(database, "LEGACY_RRC_ERROR", is_on, 1);
@@ -477,7 +510,9 @@ int main(int n, char **v)
view_add_log(eg.macview, "ENB_MAC_UE_UL_SCHEDULE_RETRANSMISSION",
h, database, is_on);
view_add_log(eg.macview, "ENB_MAC_UE_UL_PDU", h, database, is_on);
+ view_add_log(eg.macview, "ENB_MAC_UE_UL_PDU_WITH_DATA", h, database, is_on);
view_add_log(eg.macview, "ENB_MAC_UE_UL_SDU", h, database, is_on);
+ view_add_log(eg.macview, "ENB_MAC_UE_UL_SDU_WITH_DATA", h, database, is_on);
view_add_log(eg.macview, "ENB_MAC_UE_UL_CE", h, database, is_on);
view_add_log(eg.rlcview, "ENB_RLC_DL", h, database, is_on);
@@ -545,6 +580,10 @@ int main(int n, char **v)
view_add_log(eg.rrcview, "ENB_RRC_UNKNOW_MESSAGE",
h, database, is_on);
+ /* deactivate those two by default, they are a bit heavy */
+ on_off(database, "ENB_MAC_UE_UL_SDU_WITH_DATA", is_on, 0);
+ on_off(database, "ENB_MAC_UE_UL_PDU_WITH_DATA", is_on, 0);
+
for (i = 0; i < on_off_n; i++)
on_off(database, on_off_name[i], is_on, on_off_action[i]);
diff --git a/common/utils/T/tracer/extract_config.c b/common/utils/T/tracer/extract_config.c
new file mode 100644
index 0000000000..f35d765cec
--- /dev/null
+++ b/common/utils/T/tracer/extract_config.c
@@ -0,0 +1,75 @@
+#include
+#include
+#include
+#include "../T_defs.h"
+
+void usage(void)
+{
+ printf(
+"options:\n"
+" -i this option is mandatory\n"
+ );
+ exit(1);
+}
+
+#define ERR printf("ERROR: read file %s failed\n", input_filename)
+
+int main(int n, char **v)
+{
+ char *input_filename = NULL;
+ int i;
+ FILE *in;
+
+ for (i = 1; i < n; i++) {
+ if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage();
+ if (!strcmp(v[i], "-i"))
+ { if (i > n-2) usage(); input_filename = v[++i]; continue; }
+ usage();
+ }
+
+ if (input_filename == NULL) {
+ printf("ERROR: provide an input file (-i)\n");
+ exit(1);
+ }
+
+ in = fopen(input_filename, "r");
+ if (in == NULL) { perror(input_filename); abort(); }
+
+ while (1) {
+ int type;
+ int32_t length;
+ char v[T_BUFFER_MAX];
+ int vpos = 0;
+
+ /* read event from file */
+ if (fread(&length, 4, 1, in) != 1) break;
+ memcpy(v+vpos, &length, 4);
+ vpos += 4;
+#ifdef T_SEND_TIME
+ if (length < sizeof(struct timespec)) { ERR; break; }
+ if (fread(v+vpos, sizeof(struct timespec), 1, in) != 1) { ERR; break; }
+ vpos += sizeof(struct timespec);
+ length -= sizeof(struct timespec);
+#endif
+ if (length < sizeof(int)) { ERR; break; }
+ if (fread(&type, sizeof(int), 1, in) != 1) { ERR; break; }
+ memcpy(v+vpos, &type, sizeof(int));
+ vpos += sizeof(int);
+ length -= sizeof(int);
+ if (length) if (fread(v+vpos, length, 1, in) != 1) { ERR; break; }
+ vpos += length;
+
+ if (type == -1) {
+ if (length < sizeof(int)) { ERR; break; }
+ length -= sizeof(int);
+ if (fwrite(v+vpos-length, length, 1, stdout) != 1) { ERR; break; }
+ }
+
+ /* TODO: parse all file? */
+ if (type == -2) break;
+ }
+
+ fclose(in);
+
+ return 0;
+}
diff --git a/common/utils/T/tracer/hacks/Makefile b/common/utils/T/tracer/hacks/Makefile
new file mode 100644
index 0000000000..ab10305c0b
--- /dev/null
+++ b/common/utils/T/tracer/hacks/Makefile
@@ -0,0 +1,18 @@
+CC=gcc
+CFLAGS=-Wall -g -pthread -DT_TRACER -I. -I..
+
+LIBS=-lX11 -lm -lpng -lXft
+
+all: dump_nack_signal
+
+dump_nack_signal: ../utils.o ../database.o ../config.o ../event.o \
+ dump_nack_signal.o
+ $(CC) $(CFLAGS) -o dump_nack_signal $^ $(LIBS)
+
+.PHONY: all
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+clean:
+ rm -f *.o core dump_nack_signal
diff --git a/common/utils/T/tracer/hacks/dump_nack_signal.c b/common/utils/T/tracer/hacks/dump_nack_signal.c
new file mode 100644
index 0000000000..1627bdd14e
--- /dev/null
+++ b/common/utils/T/tracer/hacks/dump_nack_signal.c
@@ -0,0 +1,115 @@
+#include
+#include
+#include
+#include "utils.h"
+#include "event.h"
+#include "database.h"
+#include "config.h"
+#include "../T_defs.h"
+
+void usage(void)
+{
+ printf(
+"options:\n"
+" -d this option is mandatory\n"
+" -ip connect to given IP address (default %s)\n"
+" -p connect to given port (default %d)\n",
+ DEFAULT_REMOTE_IP,
+ DEFAULT_REMOTE_PORT
+ );
+ exit(1);
+}
+
+int main(int n, char **v)
+{
+ char *database_filename = NULL;
+ void *database;
+ char *ip = DEFAULT_REMOTE_IP;
+ int port = DEFAULT_REMOTE_PORT;
+ int i;
+ char t;
+ int number_of_events;
+ int socket;
+ int *is_on;
+ int ev_input, ev_nack;
+ int ev_ack;
+
+ for (i = 1; i < n; i++) {
+ if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage();
+ if (!strcmp(v[i], "-d"))
+ { if (i > n-2) usage(); database_filename = v[++i]; continue; }
+ if (!strcmp(v[i], "-ip")) { if (i > n-2) usage(); ip = v[++i]; continue; }
+ if (!strcmp(v[i], "-p"))
+ { if (i > n-2) usage(); port = atoi(v[++i]); continue; }
+ usage();
+ }
+
+ if (database_filename == NULL) {
+ printf("ERROR: provide a database file (-d)\n");
+ exit(1);
+ }
+
+ database = parse_database(database_filename);
+
+ load_config_file(database_filename);
+
+ number_of_events = number_of_ids(database);
+ is_on = calloc(number_of_events, sizeof(int));
+ if (is_on == NULL) abort();
+
+ on_off(database, "ENB_PHY_INPUT_SIGNAL", is_on, 1);
+ on_off(database, "ENB_PHY_ULSCH_UE_NACK", is_on, 1);
+ on_off(database, "ENB_PHY_ULSCH_UE_ACK", is_on, 1);
+
+ ev_input = event_id_from_name(database, "ENB_PHY_INPUT_SIGNAL");
+ ev_nack = event_id_from_name(database, "ENB_PHY_ULSCH_UE_NACK");
+ ev_ack = event_id_from_name(database, "ENB_PHY_ULSCH_UE_ACK");
+
+ socket = connect_to(ip, port);
+
+ t = 1;
+ if (socket_send(socket, &t, 1) == -1 ||
+ socket_send(socket, &number_of_events, sizeof(int)) == -1 ||
+ socket_send(socket, is_on, number_of_events * sizeof(int)) == -1)
+ abort();
+
+ char dump[10][T_BUFFER_MAX];
+ event dump_ev[10];
+FILE *z = fopen("/tmp/dd", "w"); if (z == NULL) abort();
+ while (1) {
+ char v[T_BUFFER_MAX];
+ event e;
+ e = get_event(socket, v, database);
+ if (e.type == -1) break;
+ if (e.type == ev_input) {
+ int sf = e.e[2].i;
+ memcpy(dump[sf], v, T_BUFFER_MAX);
+ dump_ev[sf] = e;
+ printf("input %d/%d\n", e.e[1].i, sf);
+if (fwrite(dump_ev[sf].e[4].b, dump_ev[sf].e[4].bsize, 1, z) != 1) abort();
+fflush(z);
+ }
+ if (e.type == ev_nack) {
+ int sf = e.e[2].i;
+ printf("nack %d/%d\n", e.e[1].i, sf);
+ FILE *f = fopen("/tmp/dump.raw", "w"); if (f == NULL) abort();
+ if (fwrite(dump[sf] + ((char *)dump_ev[sf].e[4].b - v),
+ dump_ev[sf].e[4].bsize, 1, f) != 1) abort();
+ if (fclose(f)) abort();
+ printf("dumped... press enter (delta %d)\n", (int)((char *)dump_ev[sf].e[4].b - v));
+// getchar();
+ }
+ if (e.type == ev_ack) {
+ int sf = e.e[2].i;
+ printf("ack %d/%d\n", e.e[1].i, sf);
+ FILE *f = fopen("/tmp/dump.raw", "w"); if (f == NULL) abort();
+ if (fwrite(dump[sf] + ((char *)dump_ev[sf].e[4].b - v),
+ dump_ev[sf].e[4].bsize, 1, f) != 1) abort();
+ if (fclose(f)) abort();
+ printf("dumped... press enter (delta %d)\n", (int)((char *)dump_ev[sf].e[4].b - v));
+// getchar();
+ }
+ }
+
+ return 0;
+}
diff --git a/common/utils/T/tracer/logger/Makefile b/common/utils/T/tracer/logger/Makefile
index e539100838..8d23717a13 100644
--- a/common/utils/T/tracer/logger/Makefile
+++ b/common/utils/T/tracer/logger/Makefile
@@ -1,7 +1,7 @@
CC=gcc
CFLAGS=-Wall -g -pthread -I..
-OBJS=logger.o textlog.o framelog.o ttilog.o timelog.o ticklog.o
+OBJS=logger.o textlog.o framelog.o ttilog.o timelog.o ticklog.o iqlog.o
logger.a: $(OBJS)
ar cr logger.a $(OBJS)
diff --git a/common/utils/T/tracer/logger/framelog.c b/common/utils/T/tracer/logger/framelog.c
index 057960c382..45ae3e399f 100644
--- a/common/utils/T/tracer/logger/framelog.c
+++ b/common/utils/T/tracer/logger/framelog.c
@@ -21,6 +21,7 @@ struct framelog {
*/
int skip_current; /* internal data for the skip mechanism */
int skip_on; /* internal data for the skip mechanism */
+ int update_only_at_sf9;
};
static void _event(void *p, event e)
@@ -76,7 +77,7 @@ static void _event(void *p, event e)
l->buffer[subframe * nsamples + i] = 10*log10(1.0+(float)(I*I+Q*Q));
}
- if (subframe == 9)
+ if (l->update_only_at_sf9 == 0 || subframe == 9)
for (i = 0; i < l->common.vsize; i++)
l->common.v[i]->append(l->common.v[i], l->x, l->buffer, l->blength);
}
@@ -91,6 +92,8 @@ logger *new_framelog(event_handler *h, void *database,
ret = calloc(1, sizeof(struct framelog)); if (ret == NULL) abort();
+ ret->update_only_at_sf9 = 1;
+
ret->common.event_name = strdup(event_name);
if (ret->common.event_name == NULL) abort();
ret->database = database;
@@ -144,3 +147,9 @@ void framelog_set_skip(logger *_this, int skip_delay)
l->skip_current = 0;
l->skip_on = 0;
}
+
+void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9)
+{
+ struct framelog *l = _this;
+ l->update_only_at_sf9 = update_only_at_sf9;
+}
diff --git a/common/utils/T/tracer/logger/iqlog.c b/common/utils/T/tracer/logger/iqlog.c
new file mode 100644
index 0000000000..3d303607ac
--- /dev/null
+++ b/common/utils/T/tracer/logger/iqlog.c
@@ -0,0 +1,187 @@
+#include "logger.h"
+#include "logger_defs.h"
+#include "handler.h"
+#include "database.h"
+#include "filter/filter.h"
+#include
+#include
+#include
+#include
+
+struct iqlog {
+ struct logger common;
+ void *database;
+ int nb_rb_arg;
+ int N_RB_UL_arg;
+ int symbols_per_tti_arg;
+ int buffer_arg;
+ float *i;
+ float *q;
+ int max_length;
+};
+
+#if 0
+/* this function passes all received IQ samples to the views */
+static void _event(void *p, event e)
+{
+ struct iqlog *l = p;
+ int i;
+ void *buffer;
+ int bsize;
+ int nsamples;
+
+ if (l->common.filter != NULL && filter_eval(l->common.filter, e) == 0)
+ return;
+
+ buffer = e.e[l->buffer_arg].b;
+ bsize = e.e[l->buffer_arg].bsize;
+
+ nsamples = bsize / (2*sizeof(int16_t));
+
+ if (nsamples > l->max_length) {
+ l->i = realloc(l->i, nsamples * sizeof(float));
+ if (l->i == NULL) abort();
+ l->q = realloc(l->q, nsamples * sizeof(float));
+ if (l->q == NULL) abort();
+ l->max_length = nsamples;
+ }
+
+ for (i = 0; i < nsamples; i++) {
+ l->i[i] = ((int16_t *)buffer)[i*2];
+ l->q[i] = ((int16_t *)buffer)[i*2+1];
+ }
+
+ for (i = 0; i < l->common.vsize; i++)
+ l->common.v[i]->append(l->common.v[i], l->i, l->q, nsamples);
+}
+#endif
+
+static void _event(void *p, event e)
+{
+ struct iqlog *l = p;
+ int i, j;
+ void *buffer;
+ int bsize;
+ int nb_rb;
+ int N_RB_UL;
+ int symbols_per_tti;
+ int max_nsamples;
+ float *idst, *qdst;
+ int count;
+
+ if (l->common.filter != NULL && filter_eval(l->common.filter, e) == 0)
+ return;
+
+ nb_rb = e.e[l->nb_rb_arg].i;
+ N_RB_UL = e.e[l->N_RB_UL_arg].i;
+ symbols_per_tti = e.e[l->symbols_per_tti_arg].i;
+
+ buffer = e.e[l->buffer_arg].b;
+ bsize = e.e[l->buffer_arg].bsize;
+
+ if (bsize != N_RB_UL * symbols_per_tti * 12 * 4) {
+ printf("%s:%d:%s: bad buffer size\n", __FILE__, __LINE__, __FUNCTION__);
+ abort();
+ }
+
+ max_nsamples = bsize / 4;
+
+ if (max_nsamples > l->max_length) {
+ l->i = realloc(l->i, max_nsamples * sizeof(float));
+ if (l->i == NULL) abort();
+ l->q = realloc(l->q, max_nsamples * sizeof(float));
+ if (l->q == NULL) abort();
+ l->max_length = max_nsamples;
+ }
+
+ idst = l->i;
+ qdst = l->q;
+ count = 0;
+ for (i = 0; i < symbols_per_tti; i++)
+ for (j = 0; j < 12 * nb_rb; j++) {
+ *idst = ((int16_t *)buffer)[(i*N_RB_UL*12 + j) * 2];
+ *qdst = ((int16_t *)buffer)[(i*N_RB_UL*12 + j) * 2 + 1];
+ idst++;
+ qdst++;
+ count++;
+ }
+
+ for (i = 0; i < l->common.vsize; i++)
+ l->common.v[i]->append(l->common.v[i], l->i, l->q, count);
+}
+
+logger *new_iqlog(event_handler *h, void *database,
+ char *event_name, char *nb_rb, char *N_RB_UL, char *symbols_per_tti,
+ char *buffer_varname)
+{
+ struct iqlog *ret;
+ int event_id;
+ database_event_format f;
+ int i;
+
+ ret = calloc(1, sizeof(struct iqlog)); if (ret == NULL) abort();
+
+ ret->common.event_name = strdup(event_name);
+ if (ret->common.event_name == NULL) abort();
+ ret->database = database;
+
+ event_id = event_id_from_name(database, event_name);
+
+ ret->common.handler_id = register_handler_function(h,event_id,_event,ret);
+
+ f = get_format(database, event_id);
+
+ /* look for args */
+ ret->nb_rb_arg = -1;
+ ret->N_RB_UL_arg = -1;
+ ret->symbols_per_tti_arg = -1;
+ ret->buffer_arg = -1;
+ for (i = 0; i < f.count; i++) {
+ if (!strcmp(f.name[i], nb_rb)) ret->nb_rb_arg = i;
+ if (!strcmp(f.name[i], N_RB_UL)) ret->N_RB_UL_arg = i;
+ if (!strcmp(f.name[i], symbols_per_tti)) ret->symbols_per_tti_arg = i;
+ if (!strcmp(f.name[i], buffer_varname)) ret->buffer_arg = i;
+ }
+ if (ret->nb_rb_arg == -1) {
+ printf("%s:%d: argument '%s' not found in event '%s'\n",
+ __FILE__, __LINE__, nb_rb, event_name);
+ abort();
+ }
+ if (ret->N_RB_UL_arg == -1) {
+ printf("%s:%d: argument '%s' not found in event '%s'\n",
+ __FILE__, __LINE__, N_RB_UL, event_name);
+ abort();
+ }
+ if (ret->symbols_per_tti_arg == -1) {
+ printf("%s:%d: argument '%s' not found in event '%s'\n",
+ __FILE__, __LINE__, symbols_per_tti, event_name);
+ abort();
+ }
+ if (ret->buffer_arg == -1) {
+ printf("%s:%d: buffer argument '%s' not found in event '%s'\n",
+ __FILE__, __LINE__, buffer_varname, event_name);
+ abort();
+ }
+ if (strcmp(f.type[ret->nb_rb_arg], "int") != 0) {
+ printf("%s:%d: argument '%s' has wrong type (should be 'int')\n",
+ __FILE__, __LINE__, nb_rb);
+ abort();
+ }
+ if (strcmp(f.type[ret->N_RB_UL_arg], "int") != 0) {
+ printf("%s:%d: argument '%s' has wrong type (should be 'int')\n",
+ __FILE__, __LINE__, nb_rb);
+ abort();
+ }
+ if (strcmp(f.type[ret->symbols_per_tti_arg], "int") != 0) {
+ printf("%s:%d: argument '%s' has wrong type (should be 'int')\n",
+ __FILE__, __LINE__, symbols_per_tti);
+ abort();
+ }
+ if (strcmp(f.type[ret->buffer_arg], "buffer") != 0) {
+ printf("%s:%d: argument '%s' has wrong type (should be 'buffer')\n",
+ __FILE__, __LINE__, buffer_varname);
+ abort();
+ }
+
+ return ret;
+}
diff --git a/common/utils/T/tracer/logger/logger.h b/common/utils/T/tracer/logger/logger.h
index e3e4b97aa5..a777581db9 100644
--- a/common/utils/T/tracer/logger/logger.h
+++ b/common/utils/T/tracer/logger/logger.h
@@ -13,8 +13,14 @@ logger *new_ttilog(void *event_handler, void *database,
logger *new_timelog(void *event_handler, void *database, char *event_name);
logger *new_ticklog(void *event_handler, void *database,
char *event_name, char *frame_name, char *subframe_name);
+logger *new_iqlog(void *event_handler, void *database,
+ char *event_name, char *nb_rb, char *N_RB_UL, char *symbols_per_tti,
+ char *buffer_varname);
void framelog_set_skip(logger *_this, int skip_delay);
+void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9);
+
+void textlog_dump_buffer(logger *_this, int dump_buffer);
#include "view/view.h"
diff --git a/common/utils/T/tracer/logger/textlog.c b/common/utils/T/tracer/logger/textlog.c
index e80af7813e..9eb6fd02d8 100644
--- a/common/utils/T/tracer/logger/textlog.c
+++ b/common/utils/T/tracer/logger/textlog.c
@@ -32,12 +32,13 @@ struct textlog {
int fsize;
/* local output buffer */
OBUF o;
+ int dump_buffer;
};
static void _event(void *p, event e)
{
struct textlog *l = p;
- int i;
+ int i, j;
#ifdef T_SEND_TIME
struct tm *t;
char tt[64];
@@ -65,6 +66,14 @@ static void _event(void *p, event e)
case BUFFER:
PUTS(&l->o, "{buffer size:");
PUTI(&l->o, e.e[l->f[i].event_arg].bsize);
+ if (l->dump_buffer) {
+ PUTS(&l->o, " [");
+ for (j = 0; j < e.e[l->f[i].event_arg].bsize; j++) {
+ PUTX2(&l->o, ((unsigned char *)e.e[l->f[i].event_arg].b)[j]);
+ PUTC(&l->o, ' ');
+ }
+ PUTS(&l->o, "]");
+ }
PUTS(&l->o, "}");
break;
}
@@ -196,3 +205,13 @@ error:
printf("%s:%d: bad format '%s'\n", __FILE__, __LINE__, format);
abort();
}
+
+/****************************************************************************/
+/* public functions */
+/****************************************************************************/
+
+void textlog_dump_buffer(logger *_this, int dump_buffer)
+{
+ struct textlog *l = _this;
+ l->dump_buffer = dump_buffer;
+}
diff --git a/common/utils/T/tracer/record.c b/common/utils/T/tracer/record.c
new file mode 100644
index 0000000000..c81b93e7d7
--- /dev/null
+++ b/common/utils/T/tracer/record.c
@@ -0,0 +1,161 @@
+#include
+#include
+#include
+#include
+#include "database.h"
+#include "utils.h"
+#include "../T_defs.h"
+#include "config.h"
+
+void usage(void)
+{
+ printf(
+"options:\n"
+" -d this option is mandatory\n"
+" -o