Merge remote-tracking branch 'origin/feature-68-enb-agent' into agent-performance
This commit is contained in:
@@ -132,16 +132,19 @@ Message("Architecture is ${CMAKE_SYSTEM_PROCESSOR}")
|
|||||||
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
||||||
set(C_FLAGS_PROCESSOR "-gdwarf-2 -mfloat-abi=hard -mfpu=neon -lgcc -lrt")
|
set(C_FLAGS_PROCESSOR "-gdwarf-2 -mfloat-abi=hard -mfpu=neon -lgcc -lrt")
|
||||||
else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
||||||
file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
|
if(EXISTS "/proc/cpuinfo")
|
||||||
#Message("CPUINFO is ${CPUINFO}")
|
file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
|
||||||
if (CPUINFO MATCHES "avx2")
|
if (CPUINFO MATCHES "avx2")
|
||||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx2")
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx2")
|
||||||
endif()
|
endif()
|
||||||
if (CPUINFO MATCHES "sse4_1")
|
if (CPUINFO MATCHES "sse4_1")
|
||||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.1")
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.1")
|
||||||
endif()
|
endif()
|
||||||
if (CPUINFO MATCHES "ssse3")
|
if (CPUINFO MATCHES "ssse3")
|
||||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mssse3")
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mssse3")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
Message("/proc/cpuinfo does not exit. We will use manual CPU flags")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -151,7 +154,7 @@ Message("C_FLAGS_PROCESSOR is ${C_FLAGS_PROCESSOR}")
|
|||||||
|
|
||||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
|
||||||
if ( (NOT( C_FLAGS_PROCESSOR MATCHES "ssse3")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.1")) )
|
if ( (NOT( C_FLAGS_PROCESSOR MATCHES "ssse3")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.1")) )
|
||||||
Message(FATAL_ERROR "For x86 Architecture, you must have following flags: -mssse3 -msse4.1. The current detected flags are: ${C_FLAGS_PROCESSOR}. You can pass the flags manually in build script, for example: ./build_oai --cflags_processor \"-mssse3 -msse4.1\" ")
|
Message(FATAL_ERROR "For x86 Architecture, you must have following flags: -mssse3 -msse4.1. The current detected flags are: ${C_FLAGS_PROCESSOR}. You can pass the flags manually in build script, for example: ./build_oai --cflags_processor \"-mssse3 -msse4.1 -mavx2\" ")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -205,6 +205,14 @@ Obj.# Case# Test# Description
|
|||||||
01 85 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
01 85 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||||
01 85 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
01 85 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||||
|
|
||||||
|
02 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Sony Experia M4 COTS UE for TX/1RX
|
||||||
|
02 55 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||||
|
02 55 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||||
|
02 55 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||||
|
02 55 03 Band 7 FDD 5MHz DL Throughput for 300 sec for 1TX/1RX
|
||||||
|
02 55 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||||
|
02 55 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||||
|
|
||||||
|
|
||||||
01 64 lte-softmodem-noS1 tests
|
01 64 lte-softmodem-noS1 tests
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,34 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
if [ -s $OPENAIR_DIR/cmake_targets/tools/build_helper ] ; then
|
if [ -s $OPENAIR_DIR/cmake_targets/tools/build_helper ] ; then
|
||||||
source $OPENAIR_DIR/cmake_targets/tools/build_helper
|
source $OPENAIR_DIR/cmake_targets/tools/build_helper
|
||||||
@@ -111,6 +141,8 @@ function test_compile() {
|
|||||||
compile_log_dir=`eval echo \"$OPENAIR_DIR/cmake_targets/log/\"`
|
compile_log_dir=`eval echo \"$OPENAIR_DIR/cmake_targets/log/\"`
|
||||||
echo "Removing compilation log files in $compile_log_dir"
|
echo "Removing compilation log files in $compile_log_dir"
|
||||||
rm -frv $compile_log_dir
|
rm -frv $compile_log_dir
|
||||||
|
echo "Executing $pre_exec_file $pre_exe_args ...."
|
||||||
|
eval $pre_exec_file $pre_exec_args
|
||||||
echo "Executing $compile_prog $compile_prog_args ...."
|
echo "Executing $compile_prog $compile_prog_args ...."
|
||||||
eval $compile_prog $compile_prog_args
|
eval $compile_prog $compile_prog_args
|
||||||
echo "Copying compilation log files to test case log directory: $log_dir"
|
echo "Copying compilation log files to test case log directory: $log_dir"
|
||||||
@@ -280,7 +312,7 @@ function test_compile_and_run() {
|
|||||||
|
|
||||||
if [ -n "$pre_exec_file" ]; then
|
if [ -n "$pre_exec_file" ]; then
|
||||||
{ echo " Executing $pre_exec_file $pre_exec_args "
|
{ echo " Executing $pre_exec_file $pre_exec_args "
|
||||||
eval " echo '$mypassword' |sudo -S -E $pre_exec_file $pre_exec_args " ; }>> $temp_exec_log 2>&1
|
eval " $pre_exec_file $pre_exec_args " ; }>> $temp_exec_log 2>&1
|
||||||
|
|
||||||
fi
|
fi
|
||||||
echo "Executing $main_exec $main_exec_args_array_index "
|
echo "Executing $main_exec $main_exec_args_array_index "
|
||||||
@@ -503,6 +535,7 @@ for search_expr in "${test_case_array[@]}"
|
|||||||
echo "search_expr_false = $search_expr_false"
|
echo "search_expr_false = $search_expr_false"
|
||||||
echo "nruns = $nruns"
|
echo "nruns = $nruns"
|
||||||
|
|
||||||
|
|
||||||
#eval $pre_exec
|
#eval $pre_exec
|
||||||
compile_prog_out=`eval echo \"$compile_prog_out\"`
|
compile_prog_out=`eval echo \"$compile_prog_out\"`
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,34 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import serial
|
import serial
|
||||||
@@ -28,17 +58,22 @@ from lib_autotest import *
|
|||||||
def find_open_port():
|
def find_open_port():
|
||||||
global serial_port, ser
|
global serial_port, ser
|
||||||
max_ports=100
|
max_ports=100
|
||||||
if os.path.exists(serial_port) == True:
|
serial_port=''
|
||||||
return serial_port
|
while True:
|
||||||
for port in range(2,100):
|
if os.path.exists(serial_port) == True:
|
||||||
serial_port = '/dev/ttyUSB'+str(port)
|
return serial_port
|
||||||
if os.path.exists(serial_port) == True:
|
for port in range(2,100):
|
||||||
print 'New Serial Port : ' + serial_port
|
serial_port_tmp = '/dev/ttyUSB'+str(port)
|
||||||
break
|
if os.path.exists(serial_port_tmp) == True:
|
||||||
|
print 'New Serial Port : ' + serial_port_tmp
|
||||||
ser = serial.Serial(port=serial_port)
|
serial_port = serial_port_tmp
|
||||||
return
|
break
|
||||||
|
if serial_port == '':
|
||||||
|
print" Not able to detect valid serial ports. Resetting the modem now..."
|
||||||
|
reset_ue()
|
||||||
|
else :
|
||||||
|
ser = serial.Serial(port=serial_port)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
#serial_port = '/dev/ttyUSB2'
|
#serial_port = '/dev/ttyUSB2'
|
||||||
|
|||||||
@@ -1,4 +1,34 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import serial
|
import serial
|
||||||
@@ -28,16 +58,23 @@ from lib_autotest import *
|
|||||||
def find_open_port():
|
def find_open_port():
|
||||||
global serial_port, ser
|
global serial_port, ser
|
||||||
max_ports=100
|
max_ports=100
|
||||||
if os.path.exists(serial_port) == True:
|
serial_port=''
|
||||||
return serial_port
|
while True:
|
||||||
for port in range(0,100):
|
if os.path.exists(serial_port) == True:
|
||||||
serial_port = '/dev/ttyUSB'+str(port)
|
return serial_port
|
||||||
if os.path.exists(serial_port) == True:
|
for port in range(2,100):
|
||||||
print 'New Serial Port : ' + serial_port
|
serial_port_tmp = '/dev/ttyUSB'+str(port)
|
||||||
break
|
if os.path.exists(serial_port_tmp) == True:
|
||||||
|
print 'New Serial Port : ' + serial_port_tmp
|
||||||
|
serial_port = serial_port_tmp
|
||||||
|
break
|
||||||
|
if serial_port == '':
|
||||||
|
print" Not able to detect valid serial ports. Resetting the modem now..."
|
||||||
|
reset_ue()
|
||||||
|
else :
|
||||||
|
ser = serial.Serial(port=serial_port)
|
||||||
|
return
|
||||||
|
|
||||||
ser = serial.Serial(port=serial_port)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import time
|
||||||
|
import serial
|
||||||
|
import os
|
||||||
|
from pyroute2 import IPRoute
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import threading
|
||||||
|
import signal
|
||||||
|
import traceback
|
||||||
|
import os
|
||||||
|
import commands
|
||||||
|
|
||||||
|
# Find a device ID by running sudo adb devices
|
||||||
|
# The device ID below is for Sony Xperia M4
|
||||||
|
|
||||||
|
device_id='YT9115PX1E'
|
||||||
|
|
||||||
|
|
||||||
|
openair_dir = os.environ.get('OPENAIR_DIR')
|
||||||
|
if openair_dir == None:
|
||||||
|
print "Error getting OPENAIR_DIR environment variable"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.path.append(os.path.expandvars('$OPENAIR_DIR/cmake_targets/autotests/tools/'))
|
||||||
|
|
||||||
|
from lib_autotest import *
|
||||||
|
|
||||||
|
def signal_handler(signal, frame):
|
||||||
|
print('You pressed Ctrl+C!')
|
||||||
|
print('Exiting now...')
|
||||||
|
timeout=10
|
||||||
|
exit_flag=1
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
|
||||||
|
# Find all the process IDs in a phone given the name of process
|
||||||
|
def kill_processes(name):
|
||||||
|
print " Killing all processes by name..." + name
|
||||||
|
while 1:
|
||||||
|
cmd = 'sudo adb -s ' + device_id +' shell "ps |grep ' + name + '"'
|
||||||
|
status, out = commands.getstatusoutput(cmd)
|
||||||
|
if status != 0:
|
||||||
|
print "Error execting command to kill process " + name
|
||||||
|
sys.exit(1)
|
||||||
|
print "Out = " + out
|
||||||
|
if out=='':
|
||||||
|
break;
|
||||||
|
out_arr = out.split()
|
||||||
|
pid_to_kill = out_arr[1]
|
||||||
|
print "Now killing process ID " + pid_to_kill + " on Phone"
|
||||||
|
cmd = 'sudo adb -s ' + device_id +' shell "kill ' + pid_to_kill + '"'
|
||||||
|
status, out = commands.getstatusoutput(cmd)
|
||||||
|
if status != 0:
|
||||||
|
print "Error execting command to kill process " + name
|
||||||
|
sys.exit(1)
|
||||||
|
print "Out = " + out
|
||||||
|
|
||||||
|
def start_ue () :
|
||||||
|
#print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
|
||||||
|
print 'Killing old iperf/ping sessions'
|
||||||
|
kill_processes('iperf')
|
||||||
|
kill_processes('ping')
|
||||||
|
print "Turning off airplane mode"
|
||||||
|
os.system('sudo -E adb devices')
|
||||||
|
os.system('sudo -E adb -s ' + device_id + ' shell \"settings put global airplane_mode_on 0; am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\"')
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
time.sleep ( 2)
|
||||||
|
#Now we check if ppp0 interface is up and running
|
||||||
|
try:
|
||||||
|
cmd = 'sudo adb -s ' + device_id + ' shell netcfg |grep 192.'
|
||||||
|
status, out = commands.getstatusoutput(cmd)
|
||||||
|
if (out == '') :
|
||||||
|
print "Waiting for UE to connect and get IP Address..."
|
||||||
|
else :
|
||||||
|
print "UE is now connected. IP Address settings are..." + out
|
||||||
|
os.system('sleep 5')
|
||||||
|
os.system ('sudo adb -s ' + device_id + ' shell ping ' + gw)
|
||||||
|
break
|
||||||
|
except Exception, e:
|
||||||
|
error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: ' + str(e.__class__) + " : " + str( e)
|
||||||
|
error = error + traceback.format_exc()
|
||||||
|
print error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def stop_ue():
|
||||||
|
print "Turning on airplane mode"
|
||||||
|
os.system('sudo adb devices')
|
||||||
|
os.system('sudo adb -s ' + device_id + ' shell \"settings put global airplane_mode_on 1; am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true\" ')
|
||||||
|
print "Killing iperf/ping sessions"
|
||||||
|
kill_processes('iperf')
|
||||||
|
kill_processes('ping')
|
||||||
|
|
||||||
|
i=1
|
||||||
|
gw='192.172.0.1'
|
||||||
|
while i < len(sys.argv):
|
||||||
|
arg=sys.argv[i]
|
||||||
|
if arg == '--start-ue' :
|
||||||
|
start_ue()
|
||||||
|
elif arg == '--stop-ue' :
|
||||||
|
stop_ue()
|
||||||
|
elif arg == '-gw' :
|
||||||
|
gw = sys.argv[i+1]
|
||||||
|
i=i+1
|
||||||
|
elif arg == '-h' :
|
||||||
|
print "--stop-ue: Stop the UE. Turn on airplane mode"
|
||||||
|
print "--start-ue: Start the UE. Turn off airplane mode"
|
||||||
|
print "-gw: Specify the default gw as sometimes the gateway/route arguments are not set properly via wvdial"
|
||||||
|
else :
|
||||||
|
print " Script called with wrong arguments, arg = " + arg
|
||||||
|
sys.exit()
|
||||||
|
i = i +1
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +1,35 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
|
|
||||||
#arg1 idVendor
|
#arg1 idVendor
|
||||||
#arg2 idProduct
|
#arg2 idProduct
|
||||||
|
|||||||
@@ -1,4 +1,34 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
#arg1 timeout to wait before running the script
|
#arg1 timeout to wait before running the script
|
||||||
#arg2 interface
|
#arg2 interface
|
||||||
|
|||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
|
#arg1 timeout to wait before running the script
|
||||||
|
#arg2 interface
|
||||||
|
#arg3 iperf arguments
|
||||||
|
|
||||||
|
args=($*)
|
||||||
|
timeout=${args[0]}
|
||||||
|
device_id=${args[1]}
|
||||||
|
iperf_args=(${args[@]:2})
|
||||||
|
|
||||||
|
#array=${1:-1}
|
||||||
|
echo "args = ${args[@]}"
|
||||||
|
echo "timeout = $timeout"
|
||||||
|
echo "device_id = $device_id"
|
||||||
|
echo "iperf_args = ${iperf_args[@]}"
|
||||||
|
|
||||||
|
sleep $timeout
|
||||||
|
|
||||||
|
while true ; do
|
||||||
|
cmd=`sudo adb -s $device_id shell netcfg |grep 192.`
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
echo "Wating for UE to connect and get IP Address..."
|
||||||
|
sleep 1
|
||||||
|
else
|
||||||
|
echo "UE is not connected. IP Address settings are... $cmd"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
print "Starting iperf now..."
|
||||||
|
|
||||||
|
sudo adb -s $device_id shell /data/local/tmp/iperf ${iperf_args[@]}
|
||||||
@@ -1,4 +1,34 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from pyroute2 import IPRoute
|
from pyroute2 import IPRoute
|
||||||
|
|||||||
@@ -1,4 +1,35 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
#******************************************************************************
|
||||||
|
|
||||||
|
# OpenAirInterface
|
||||||
|
# Copyright(c) 1999 - 2014 Eurecom
|
||||||
|
|
||||||
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
|
||||||
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with OpenAirInterface.The full GNU General Public License is
|
||||||
|
# included in this distribution in the file called "COPYING". If not,
|
||||||
|
# see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Contact Information
|
||||||
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
||||||
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
||||||
|
# OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
|
||||||
|
|
||||||
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
||||||
|
|
||||||
|
# *******************************************************************************/
|
||||||
|
# \author Navid Nikaein, Rohit Gupta
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -270,7 +270,8 @@ check_install_oai_software() {
|
|||||||
wvdial \
|
wvdial \
|
||||||
python-numpy \
|
python-numpy \
|
||||||
sshpass \
|
sshpass \
|
||||||
libxslt1-dev
|
libxslt1-dev \
|
||||||
|
android-tools-adb
|
||||||
|
|
||||||
$SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
|
$SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
|
||||||
if [ `lsb_release -rs` = '12.04' ] ; then
|
if [ `lsb_release -rs` = '12.04' ] ; then
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ function help()
|
|||||||
echo_error " and PDCP-LTE. Then capture for all the interfaces with the following filters: s1ap or lte_rrc or mac-lte or rlc-lte"
|
echo_error " and PDCP-LTE. Then capture for all the interfaces with the following filters: s1ap or lte_rrc or mac-lte or rlc-lte"
|
||||||
echo_error " or pdcp-lte. Note the L2 pdus are transmitted to the local interface."
|
echo_error " or pdcp-lte. Note the L2 pdus are transmitted to the local interface."
|
||||||
echo_error " -x, --xforms Run XFORMS scope windows."
|
echo_error " -x, --xforms Run XFORMS scope windows."
|
||||||
|
echo_error " -n, --num-frames Set number of frames for simulation"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -165,6 +166,11 @@ function main()
|
|||||||
exe_arguments="$exe_arguments -P wireshark"
|
exe_arguments="$exe_arguments -P wireshark"
|
||||||
shift 1;
|
shift 1;
|
||||||
;;
|
;;
|
||||||
|
-n | --num-frames)
|
||||||
|
echo "setting the number of frames in simulation to $2"
|
||||||
|
exe_arguments="$exe_arguments -n $2"
|
||||||
|
shift 2;
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown option $1"
|
echo "Unknown option $1"
|
||||||
help
|
help
|
||||||
|
|||||||
@@ -755,26 +755,26 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *phy_vars_ue,
|
|||||||
if (phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa]) {
|
if (phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa]) {
|
||||||
switch (phy_vars_ue->lte_frame_parms.N_RB_DL) {
|
switch (phy_vars_ue->lte_frame_parms.N_RB_DL) {
|
||||||
case 6:
|
case 6:
|
||||||
idft128((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][LTE_CE_OFFSET],
|
idft128((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][8],
|
||||||
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
||||||
1);
|
1);
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
idft512((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][LTE_CE_OFFSET],
|
idft512((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][8],
|
||||||
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
||||||
1);
|
1);
|
||||||
break;
|
break;
|
||||||
case 50:
|
case 50:
|
||||||
idft1024((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][LTE_CE_OFFSET],
|
idft1024((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][8],
|
||||||
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
||||||
1);
|
1);
|
||||||
break;
|
break;
|
||||||
case 75:
|
case 75:
|
||||||
idft1536((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][LTE_CE_OFFSET],
|
idft1536((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][8],
|
||||||
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa]);
|
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa]);
|
||||||
break;
|
break;
|
||||||
case 100:
|
case 100:
|
||||||
idft2048((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][LTE_CE_OFFSET],
|
idft2048((int16_t*) &phy_vars_ue->lte_ue_common_vars.dl_ch_estimates[eNB_offset][aa][8],
|
||||||
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
(int16_t*) phy_vars_ue->lte_ue_common_vars.dl_ch_estimates_time[eNB_offset][aa],
|
||||||
1);
|
1);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -2071,7 +2071,7 @@ void process_HARQ_feedback(uint8_t UE_id,
|
|||||||
// then Increment DLSCH round index
|
// then Increment DLSCH round index
|
||||||
dlsch_harq_proc->round++;
|
dlsch_harq_proc->round++;
|
||||||
|
|
||||||
if (dlsch_harq_proc->round == 1/*dlsch->Mdlharq*/) {
|
if (dlsch_harq_proc->round == dlsch->Mdlharq) {
|
||||||
// This was the last round for DLSCH so reset round and increment l2_error counter
|
// This was the last round for DLSCH so reset round and increment l2_error counter
|
||||||
#ifdef DEBUG_PHY_PROC
|
#ifdef DEBUG_PHY_PROC
|
||||||
LOG_W(PHY,"[eNB %d][PDSCH %x/%d] DLSCH retransmissions exhausted, dropping packet\n",phy_vars_eNB->Mod_id,
|
LOG_W(PHY,"[eNB %d][PDSCH %x/%d] DLSCH retransmissions exhausted, dropping packet\n",phy_vars_eNB->Mod_id,
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
int i,l,aa,aarx,k;
|
int i,l,l2,aa,aarx,k;
|
||||||
double sigma2, sigma2_dB=0,SNR,snr0=-2.0,snr1=0.0;
|
double sigma2, sigma2_dB=0,SNR,snr0=-2.0,snr1=0.0;
|
||||||
uint8_t snr1set=0;
|
uint8_t snr1set=0;
|
||||||
double snr_step=1,input_snr_step=1;
|
double snr_step=1,input_snr_step=1;
|
||||||
@@ -337,7 +337,11 @@ int main(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
sprintf(fname,"embms_awgn_%d_%d.m",mcs,N_RB_DL);
|
sprintf(fname,"embms_awgn_%d_%d.m",mcs,N_RB_DL);
|
||||||
|
|
||||||
fd = fopen(fname,"w");
|
if (!(fd = fopen(fname,"w"))) {
|
||||||
|
printf("Cannot open %s, check permissions\n",fname);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (awgn_flag==0)
|
if (awgn_flag==0)
|
||||||
fprintf(fd,"SNR_%d_%d=[];errs_mch_%d_%d=[];mch_trials_%d_%d=[];\n",
|
fprintf(fd,"SNR_%d_%d=[];errs_mch_%d_%d=[];mch_trials_%d_%d=[];\n",
|
||||||
@@ -539,10 +543,24 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rx_pmch(PHY_vars_UE,
|
if (l==6)
|
||||||
0,
|
for (l2=2;l2<7;l2++)
|
||||||
subframe%10,
|
rx_pmch(PHY_vars_UE,
|
||||||
l);
|
0,
|
||||||
|
subframe%10,
|
||||||
|
l2);
|
||||||
|
if (l==6)
|
||||||
|
for (l2=2;l2<7;l2++)
|
||||||
|
rx_pmch(PHY_vars_UE,
|
||||||
|
0,
|
||||||
|
subframe%10,
|
||||||
|
l2);
|
||||||
|
if (l==11)
|
||||||
|
for (l2=7;l2<12;l2++)
|
||||||
|
rx_pmch(PHY_vars_UE,
|
||||||
|
0,
|
||||||
|
subframe%10,
|
||||||
|
l2);
|
||||||
}
|
}
|
||||||
|
|
||||||
PHY_vars_UE->dlsch_ue_MCH[0]->harq_processes[0]->G = get_G(&PHY_vars_UE->lte_frame_parms,
|
PHY_vars_UE->dlsch_ue_MCH[0]->harq_processes[0]->G = get_G(&PHY_vars_UE->lte_frame_parms,
|
||||||
|
|||||||
@@ -561,7 +561,6 @@ int get_ue_phr (mid_t mod_id, mid_t ue_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int get_ue_wcqi (mid_t mod_id, mid_t ue_id) {
|
int get_ue_wcqi (mid_t mod_id, mid_t ue_id) {
|
||||||
|
|
||||||
return ((UE_list_t *)enb_ue[mod_id])->eNB_UE_stats[UE_PCCID(mod_id,ue_id)][ue_id].dl_cqi;
|
return ((UE_list_t *)enb_ue[mod_id])->eNB_UE_stats[UE_PCCID(mod_id,ue_id)][ue_id].dl_cqi;
|
||||||
}
|
}
|
||||||
int get_tx_queue_size(mid_t mod_id, mid_t ue_id, logical_chan_id_t channel_id)
|
int get_tx_queue_size(mid_t mod_id, mid_t ue_id, logical_chan_id_t channel_id)
|
||||||
@@ -577,6 +576,10 @@ int get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id,int CC_id)
|
|||||||
rnti_t rnti = get_ue_crnti(mod_id,ue_id);
|
rnti_t rnti = get_ue_crnti(mod_id,ue_id);
|
||||||
LTE_eNB_UE_stats *eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id,CC_id,rnti);
|
LTE_eNB_UE_stats *eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id,CC_id,rnti);
|
||||||
|
|
||||||
|
if (eNB_UE_stats == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t time_advance;
|
int32_t time_advance;
|
||||||
switch (PHY_vars_eNB_g[mod_id][CC_id]->lte_frame_parms.N_RB_DL) {
|
switch (PHY_vars_eNB_g[mod_id][CC_id]->lte_frame_parms.N_RB_DL) {
|
||||||
case 6:
|
case 6:
|
||||||
@@ -622,6 +625,11 @@ int get_current_RI(mid_t mod_id, mid_t ue_id, int CC_id)
|
|||||||
rnti_t rnti = get_ue_crnti(mod_id,ue_id);
|
rnti_t rnti = get_ue_crnti(mod_id,ue_id);
|
||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id,CC_id,rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id,CC_id,rnti);
|
||||||
|
|
||||||
|
if (eNB_UE_stats == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return eNB_UE_stats[CC_id].rank;
|
return eNB_UE_stats[CC_id].rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -636,10 +644,16 @@ int get_tpc(mid_t mod_id, mid_t ue_id)
|
|||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, pCCid, rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, pCCid, rnti);
|
||||||
|
|
||||||
normalized_rx_power = eNB_UE_stats->UL_rssi[0];
|
|
||||||
|
|
||||||
target_rx_power = mac_xface->get_target_pusch_rx_power(mod_id,pCCid);
|
target_rx_power = mac_xface->get_target_pusch_rx_power(mod_id,pCCid);
|
||||||
|
|
||||||
|
if (eNB_UE_stats == NULL) {
|
||||||
|
normalized_rx_power = target_rx_power;
|
||||||
|
} else if (eNB_UE_stats->UL_rssi != NULL) {
|
||||||
|
normalized_rx_power = eNB_UE_stats->UL_rssi[0];
|
||||||
|
} else {
|
||||||
|
normalized_rx_power = target_rx_power;
|
||||||
|
}
|
||||||
|
|
||||||
if (normalized_rx_power>(target_rx_power+1)) {
|
if (normalized_rx_power>(target_rx_power+1)) {
|
||||||
tpc = 0; //-1
|
tpc = 0; //-1
|
||||||
} else if (normalized_rx_power<(target_rx_power-1)) {
|
} else if (normalized_rx_power<(target_rx_power-1)) {
|
||||||
@@ -680,6 +694,11 @@ int get_p0_pucch_dbm(mid_t mod_id, mid_t ue_id, int CC_id)
|
|||||||
uint32_t rnti = get_ue_crnti(mod_id,ue_id);
|
uint32_t rnti = get_ue_crnti(mod_id,ue_id);
|
||||||
|
|
||||||
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
eNB_UE_stats = mac_xface->get_eNB_UE_stats(mod_id, CC_id, rnti);
|
||||||
|
|
||||||
|
if (eNB_UE_stats == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if(eNB_UE_stats->Po_PUCCH_update == 1)
|
if(eNB_UE_stats->Po_PUCCH_update == 1)
|
||||||
{
|
{
|
||||||
return eNB_UE_stats->Po_PUCCH_dBm;
|
return eNB_UE_stats->Po_PUCCH_dBm;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ eNBs =
|
|||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 1;
|
||||||
nb_antennas_rx = 1;
|
nb_antennas_rx = 1;
|
||||||
tx_gain = 90;
|
tx_gain = 90;
|
||||||
rx_gain = 132;
|
rx_gain = 125;
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
prach_config_index = 0;
|
prach_config_index = 0;
|
||||||
prach_high_speed = "DISABLE";
|
prach_high_speed = "DISABLE";
|
||||||
|
|||||||
Reference in New Issue
Block a user