Merge remote-tracking branch 'origin/remove-exmimo' into integration_2022_wk42
This commit is contained in:
+2
-24
@@ -50,7 +50,7 @@ include_directories(${CRYPTO_INCLUDE_DIRS})
|
||||
#uhd 4.0 and iris installs by default in /usr/local
|
||||
include_directories("/usr/local/include/")
|
||||
#use native cmake method as this package is not in pkg-config
|
||||
add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU" "EXMIMO")
|
||||
add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU")
|
||||
if (${RF_BOARD} STREQUAL "OAI_USRP")
|
||||
find_package(Boost REQUIRED)
|
||||
|
||||
@@ -877,8 +877,6 @@ include_directories ("${OPENAIR_DIR}/sdr/COMMON")
|
||||
##############################################################
|
||||
|
||||
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
|
||||
add_boolean_option(DEADLINE_SCHEDULER False "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
|
||||
add_boolean_option(CPU_AFFINITY False "Enable CPU Affinity of threads (only valid without deadline scheduler). It is enabled only with >2 CPUs")
|
||||
add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????")
|
||||
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????")
|
||||
|
||||
@@ -904,8 +902,6 @@ add_boolean_option(LINUX_LIST False "used only in lists.c: either u
|
||||
##########################
|
||||
# PHY options
|
||||
##########################
|
||||
add_boolean_option(DRIVER2013 True "only relevant for EXMIMO")
|
||||
add_boolean_option(EXMIMO_IOT True "????")
|
||||
add_boolean_option(LOCALIZATION False "???")
|
||||
add_integer_option(MAX_NUM_CCs 1 "????")
|
||||
add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator")
|
||||
@@ -3085,7 +3081,7 @@ if (${T_TRACER})
|
||||
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
|
||||
#all "add_library" definitions
|
||||
ITTI RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP_LIB F1AP
|
||||
params_libconfig oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
oai_eth_transpro oai_mobipass coding FLPT_MSG FLEXRAN_AGENT HASHTABLE UTIL OMG_SUMO
|
||||
SECU_OSA SECU_CN SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
@@ -3182,24 +3178,6 @@ if(OAI_NW_DRIVER_USE_NETLINK)
|
||||
endif()
|
||||
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
|
||||
|
||||
|
||||
foreach(file IN ITEMS ${OCT_FILES})
|
||||
string(REGEX REPLACE "oct *$" "cc" src ${file})
|
||||
add_custom_command(
|
||||
OUTPUT ${file}
|
||||
DEPENDS ${OCT_DIR}/${src} OPENAIR0_LIB
|
||||
COMMAND mkoctfile
|
||||
ARGS ${OCT_FLAGS} ${OCT_INCL} ${OCT_LIBS}
|
||||
ARGS -o ${file} ${OCT_DIR}/${src}
|
||||
COMMENT "Generating ${file}"
|
||||
VERBATIM
|
||||
)
|
||||
endforeach(file)
|
||||
|
||||
ADD_CUSTOM_TARGET(oarf
|
||||
DEPENDS ${OCT_FILES}
|
||||
)
|
||||
|
||||
include (${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_CMakeLists.txt)
|
||||
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
|
||||
|
||||
|
||||
+4
-91
@@ -40,7 +40,6 @@ conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
||||
XFORMS="True"
|
||||
SKIP_SHARED_LIB_FLAG="False"
|
||||
PRINT_STATS="False"
|
||||
DEADLINE_SCHEDULER_FLAG_USER=""
|
||||
HW="None"
|
||||
TP="Ethernet"
|
||||
EPC=0
|
||||
@@ -110,7 +109,7 @@ Options:
|
||||
--UE-gen-nvram [output path]
|
||||
Specify gen_nvram_path (default \"$gen_nvram_path\")
|
||||
-w | --hardware
|
||||
EXMIMO, USRP, BLADERF, LMSSDR, IRIS, ADRV9371_ZC706, SIMU, AW2SORI, None (Default)
|
||||
USRP, BLADERF, LMSSDR, IRIS, SIMU, AW2SORI, None (Default)
|
||||
Adds this RF board support (in external packages installation and in compilation)
|
||||
-t | --transport
|
||||
Selects the transport protocol type, options: None, Ethernet, benetel4g, benetel5g
|
||||
@@ -172,13 +171,7 @@ Options:
|
||||
--sanitize-undefined | -fsanitize=undefined
|
||||
Enable the undefined behavior sanitizer on all targets
|
||||
-h | --help
|
||||
Print this help
|
||||
|
||||
Usage (first build):
|
||||
NI/ETTUS B201 + COTS UE : ./build_oai -I -i --eNB -w USRP
|
||||
Usage (regular):
|
||||
Eurecom EXMIMO + OAI ENB : ./build_oai --eNB
|
||||
NI/ETTUS B201 + OAI ENB : ./build_oai --eNB -w USRP"
|
||||
Print this help"
|
||||
}
|
||||
|
||||
|
||||
@@ -293,10 +286,7 @@ function main() {
|
||||
-w | --hardware)
|
||||
# Use OAI_USRP as the key word USRP is used inside UHD driver
|
||||
case "$2" in
|
||||
"EXMIMO")
|
||||
HW="EXMIMO"
|
||||
;;
|
||||
"USRP" | "BLADERF" | "LMSSDR" | "IRIS" | "ADRV9371_ZC706" | "SIMU" | "AW2SORI")
|
||||
"USRP" | "BLADERF" | "LMSSDR" | "IRIS" | "SIMU" | "AW2SORI")
|
||||
HW="OAI_"$2
|
||||
;;
|
||||
"None")
|
||||
@@ -355,26 +345,6 @@ function main() {
|
||||
BUILD_COVERITY_SCAN=1
|
||||
echo_info "Will build Coverity-Scan objects for upload"
|
||||
shift;;
|
||||
--disable-deadline)
|
||||
DEADLINE_SCHEDULER_FLAG_USER="False"
|
||||
CMAKE_CMD="$CMAKE_CMD -DDEADLINE_SCHEDULER=False"
|
||||
echo_info "Disabling the usage of deadline scheduler"
|
||||
shift 1;;
|
||||
--enable-deadline)
|
||||
DEADLINE_SCHEDULER_FLAG_USER="True"
|
||||
CMAKE_CMD="$CMAKE_CMD -DDEADLINE_SCHEDULER=True"
|
||||
echo_info "Enabling the usage of deadline scheduler"
|
||||
shift 1;;
|
||||
--enable-cpu-affinity)
|
||||
CPU_AFFINITY_FLAG_USER="True"
|
||||
CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=True"
|
||||
echo_info "Enabling CPU Affinity (only valid when not using deadline scheduler)"
|
||||
shift 1;;
|
||||
--disable-cpu-affinity)
|
||||
CPU_AFFINITY_FLAG_USER="False"
|
||||
CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=False"
|
||||
echo_info "Disabling CPU Affinity (only valid when not using deadline scheduler)"
|
||||
shift 1;;
|
||||
--disable-T-Tracer)
|
||||
CMAKE_CMD="$CMAKE_CMD -DT_TRACER=False"
|
||||
echo_info "Disabling the T tracer"
|
||||
@@ -491,25 +461,6 @@ function main() {
|
||||
|
||||
echo_info "RF HW set to $HW"
|
||||
# If the user doesn't specify the Linux scheduler to use, we set a value
|
||||
if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "" ]; then
|
||||
case "$HW" in
|
||||
"EXMIMO")
|
||||
DEADLINE_SCHEDULER_FLAG_USER="True"
|
||||
;;
|
||||
*)
|
||||
DEADLINE_SCHEDULER_FLAG_USER="False"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
#Disable CPU Affinity for deadline scheduler
|
||||
if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then
|
||||
CPU_AFFINITY_FLAG_USER="False"
|
||||
CMAKE_CMD="$CMAKE_CMD -DCPU_AFFINITY=False"
|
||||
fi
|
||||
|
||||
echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
|
||||
echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
|
||||
|
||||
#######################################################
|
||||
# Setting and printing OAI envs, we should check here #
|
||||
@@ -548,10 +499,6 @@ function main() {
|
||||
install_usrp_uhd_driver $UHD_IMAGES_DIR
|
||||
fi
|
||||
fi
|
||||
# if [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then
|
||||
# echo_info "\nInstalling packages for ADRV9371_ZC706 support"
|
||||
# check_install_libiio_driver
|
||||
# fi
|
||||
if [ "$HW" == "OAI_BLADERF" ] ; then
|
||||
echo_info "installing packages for BLADERF support"
|
||||
check_install_bladerf_driver
|
||||
@@ -712,22 +659,6 @@ function main() {
|
||||
compilations $BUILD_DIR test_$f
|
||||
done
|
||||
fi
|
||||
|
||||
####################################
|
||||
# EXMIMO drivers & firmware loader #
|
||||
####################################
|
||||
if [ "$HW" = "EXMIMO" ] ; then
|
||||
echo_info "Compiling Express MIMO 2 board drivers"
|
||||
compilations $BUILD_DIR openair_rf
|
||||
compilations $BUILD_DIR updatefw
|
||||
echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
|
||||
make -C $OPENAIR_DIR/cmake_targets/$BUILD_DIR/build oarf > $dlog/oarf.txt 2>&1
|
||||
if [ -s $OPENAIR_DIR/cmake_targets/$BUILD_DIR/build/oarf_config_exmimo.oct ] ; then
|
||||
echo_success "oarf tools compiled"
|
||||
else
|
||||
echo_error "oarf tools compilation failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
######################
|
||||
# Optional libraries #
|
||||
@@ -747,13 +678,7 @@ function main() {
|
||||
if [ "$HW" != "None" ] ; then
|
||||
rm -f liboai_device.so
|
||||
|
||||
# link liboai_device.so with the selected RF device library
|
||||
if [ "$HW" == "EXMIMO" ] ; then
|
||||
compilations $BUILD_DIR oai_exmimodevif
|
||||
|
||||
ln -sf liboai_exmimodevif.so liboai_device.so
|
||||
echo_info "liboai_device.so is linked to EXMIMO device library"
|
||||
elif [ "$HW" == "OAI_USRP" ] ; then
|
||||
if [ "$HW" == "OAI_USRP" ] ; then
|
||||
compilations $BUILD_DIR oai_usrpdevif
|
||||
|
||||
ln -sf liboai_usrpdevif.so liboai_device.so
|
||||
@@ -777,18 +702,6 @@ function main() {
|
||||
|
||||
ln -s liboai_irisdevif.so liboai_device.so
|
||||
echo_info "liboai_device.so is linked to IRIS device library"
|
||||
elif [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then
|
||||
SYRIQ_KVER=$(uname -r)
|
||||
SYRIQ_KMAJ=$(echo $SYRIQ_KVER | sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
|
||||
SYRIQ_KMIN=$(echo $SYRIQ_KVER | sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
|
||||
# echo $SYRIQ_KMAJ$SYRIQ_KMIN
|
||||
if [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "319" ] || [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "410" ] || [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "415" ] ; then
|
||||
# echo "Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN detected"
|
||||
ln -sf /usr/local/lib/syriq/libadrv9371zc706.so liboai_device.so
|
||||
else
|
||||
echo_error "== FAILED == Unexpected Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN"
|
||||
fi
|
||||
echo_info "liboai_device.so is linked to ADRV9371_ZC706 device library for Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN"
|
||||
elif [ "$HW" == "OAI_AW2SORI" ] ; then
|
||||
compilations $BUILD_DIR aw2sori_transpro
|
||||
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" )
|
||||
set ( ASN_DEBUG False)
|
||||
set ( DEBUG_OMG False )
|
||||
set ( DISABLE_XER_PRINT False )
|
||||
set ( DRIVER2013 True )
|
||||
set ( EMIT_ASN_DEBUG False )
|
||||
set ( ENABLE_ITTI True )
|
||||
set ( ENABLE_NAS_UE_LOGGING True )
|
||||
set ( ENABLE_NEW_MULTICAST True )
|
||||
set ( ENABLE_STANDALONE_EPC False)
|
||||
set ( ENABLE_USE_CPU_EXECUTION_TIME True )
|
||||
set ( ENABLE_USE_MME True )
|
||||
set ( ENABLE_USE_RAW_SOCKET_FOR_SGI True)
|
||||
set ( ENABLE_VCD_FIFO False )
|
||||
set ( ENB_MODE True )
|
||||
set ( EXMIMO_IOT True )
|
||||
set ( JUMBO_FRAME True )
|
||||
set ( LARGE_SCALE False )
|
||||
set ( LINK_ENB_PDCP_TO_GTPV1U True)
|
||||
set ( LINUX_LIST False )
|
||||
set ( LINUX True )
|
||||
set ( LOCALIZATION False )
|
||||
set ( LOG_NO_THREAD True )
|
||||
set ( DEADLINE_SCHEDULER False )
|
||||
set ( MAC_CONTEXT 1 )
|
||||
set ( MAX_NUM_CCs 1 )
|
||||
set ( MSG_PRINT False )
|
||||
set ( MU_RECEIVER False )
|
||||
set ( NAS_ADDRESS_FIX False )
|
||||
set ( NAS_BUILT_IN_UE True)
|
||||
set ( NAS_MME False )
|
||||
set ( NAS_UE True )
|
||||
set ( NB_ANTENNAS_RX "2" )
|
||||
set ( NB_ANTENNAS_TX "2" )
|
||||
set ( NO_RRM True )
|
||||
set ( OAISIM False )
|
||||
set ( OAI_NW_DRIVER_TYPE_ETHERNET False )
|
||||
set ( OAI_NW_DRIVER_USE_NETLINK True )
|
||||
set ( OPENAIR2 True )
|
||||
set ( OPENAIR_LTE True )
|
||||
set ( PACKAGE_NAME "epc_test" )
|
||||
set ( PDCP_USE_NETLINK True )
|
||||
set ( PDCP_MSG_PRINT False )
|
||||
set ( PHY_CONTEXT False )
|
||||
set ( PHY_EMUL False )
|
||||
set ( PHYSIM True )
|
||||
set ( RF_BOARD "False" )
|
||||
set ( RLC_STOP_ON_LOST_PDU False )
|
||||
set ( RRC_ASN1_VERSION "Rel10" )
|
||||
set ( RRC_DEFAULT_RAB_IS_AM True)
|
||||
set ( RRC_MSG_PRINT False )
|
||||
set ( SECU False )
|
||||
set ( SMBV False )
|
||||
set ( TEST_OMG False )
|
||||
set ( USE_MME "R10" )
|
||||
set ( XER_PRINT True )
|
||||
@@ -1,63 +0,0 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
set ( CMAKE_BUILD_TYPE "RelWithDebInfo" )
|
||||
set ( DEBUG_OMG False )
|
||||
set ( DISABLE_XER_PRINT False )
|
||||
set ( DRIVER2013 True )
|
||||
set ( ENABLE_ITTI True )
|
||||
set ( ENABLE_NAS_UE_LOGGING True )
|
||||
set ( ENABLE_NEW_MULTICAST True )
|
||||
set ( ENABLE_PDCP_NETLINK_FIFO False )
|
||||
set ( ENABLE_RAL False )
|
||||
set ( ENABLE_STANDALONE_EPC False)
|
||||
set ( ENABLE_USE_CPU_EXECUTION_TIME True )
|
||||
set ( ENABLE_USE_MME True )
|
||||
set ( ENABLE_USE_RAW_SOCKET_FOR_SGI True)
|
||||
set ( ENABLE_VCD_FIFO False )
|
||||
set ( ENB_MODE True )
|
||||
set ( EXMIMO_IOT True )
|
||||
set ( JUMBO_FRAME True )
|
||||
set ( LARGE_SCALE False )
|
||||
set ( LINK_ENB_PDCP_TO_GTPV1U True)
|
||||
set ( LINUX_LIST False )
|
||||
set ( LINUX True )
|
||||
set ( LOCALIZATION False )
|
||||
set ( LOG_NO_THREAD True )
|
||||
set ( DEADLINE_SCHEDULER False )
|
||||
set ( MAC_CONTEXT 1 )
|
||||
set ( MAX_NUM_CCs 1 )
|
||||
set ( MSG_PRINT False )
|
||||
set ( MU_RECEIVER False )
|
||||
set ( NAS_ADDRESS_FIX False )
|
||||
set ( NAS_BUILT_IN_UE True)
|
||||
set ( NAS_MME False )
|
||||
set ( NAS_UE True )
|
||||
set ( NB_ANTENNAS_RX "2" )
|
||||
set ( NB_ANTENNAS_TX "2" )
|
||||
set ( NO_RRM True )
|
||||
set ( OAISIM True )
|
||||
set ( OAI_NW_DRIVER_TYPE_ETHERNET False )
|
||||
set ( OAI_NW_DRIVER_USE_NETLINK True )
|
||||
set ( OPENAIR2 True )
|
||||
set ( OPENAIR_LTE True )
|
||||
set ( PACKAGE_NAME "oaisim" )
|
||||
set ( PDCP_USE_NETLINK True )
|
||||
set ( PDCP_MSG_PRINT False )
|
||||
set ( PHY_CONTEXT False )
|
||||
set ( PHY_EMUL False )
|
||||
set ( PHYSIM True )
|
||||
set ( RF_BOARD "False" )
|
||||
set ( RLC_STOP_ON_LOST_PDU False )
|
||||
set ( RRC_ASN1_VERSION "Rel10" )
|
||||
set ( RRC_DEFAULT_RAB_IS_AM True)
|
||||
set ( RRC_MSG_PRINT False )
|
||||
set ( SECU False )
|
||||
set ( SMBV False )
|
||||
set ( TEST_OMG False )
|
||||
|
||||
set ( TEST_S1C_MME True )
|
||||
|
||||
set ( USE_3GPP_ADDR_AS_LINK_ADDR False )
|
||||
set ( USE_MME "R10" )
|
||||
set ( XER_PRINT False )
|
||||
set ( XFORMS False )
|
||||
@@ -160,7 +160,6 @@ clean_kernel() {
|
||||
echo_info "Flushed iptables"
|
||||
$SUDO rmmod nasmesh > /dev/null 2>&1
|
||||
$SUDO rmmod oai_nw_drv > /dev/null 2>&1
|
||||
$SUDO rmmod openair_rf > /dev/null 2>&1
|
||||
$SUDO rmmod ue_ip > /dev/null 2>&1
|
||||
echo_info "removed drivers from kernel"
|
||||
}
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
#/*
|
||||
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
# * http://www.openairinterface.org/?page_id=698
|
||||
# *
|
||||
# * Unless required by applicable law or agreed to in writing, software
|
||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# * See the License for the specific language governing permissions and
|
||||
# * limitations under the License.
|
||||
# *-------------------------------------------------------------------------------
|
||||
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
|
||||
# file example_enb_exmimo_mme_hss.txt
|
||||
# brief
|
||||
# author Lionel Gauthier
|
||||
|
||||
TODO: a document file, PDF for example, with nice pictures, etc
|
||||
This example shows how to generate and launch enb, mme_gw, hss executables on the same host:
|
||||
|
||||
################
|
||||
Configuration
|
||||
################
|
||||
freediameter 1.2.0 (not 1.1.5, 1.1.6,...) has to be installed and patched (done by check_install_oai_software() calling install_freediameter_from_source() in script build_helper)
|
||||
|
||||
Config File:
|
||||
/etc/hosts must contain the fqdn of the MME and HSS (same since both run on the same host):
|
||||
(assuming the realm is openair4G.eur)
|
||||
127.0.0.1 localhost
|
||||
127.0.1.1 yang.openair4G.eur yang
|
||||
...
|
||||
|
||||
################
|
||||
BUILDING, RUNNING
|
||||
################
|
||||
|
||||
Building HSS:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets$ tools/build_hss -c --connect-to-mme yang.openair4G.eur -t -T --realm openair4G.eur
|
||||
|
||||
Configuring the HSS:
|
||||
In oai_db (easier for newbies to access HSS database through http://127.0.0.1/phpmyadmin)
|
||||
In table mmeidentity, enter the record corresponding to your MME:
|
||||
(idmmeidentity, mmehost, mmerealm)
|
||||
In table pdn, enter the record allowing an IMSI to connect to an APN
|
||||
In table users, enter the record corresponding to your USIM card.
|
||||
|
||||
Running the HSS:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets$ sudo tools/run_hss -g
|
||||
|
||||
|
||||
|
||||
Building the MME-GW:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets/tools$ ./build_epc -c -d -t -T --s6a-server
|
||||
|
||||
Configuring the MME-GW:
|
||||
You can configure in file openair4G/trunk/cmake_targets/tools/epc.local.enb.conf.in the following parameters:
|
||||
MCC/MNC of your network
|
||||
SGI interface (outgoing interface of the S/P-GW)
|
||||
Integrity algorithms, Ciphering algorithms
|
||||
Please note that DNS addresses are hardcoded in source code (TODO in list).
|
||||
|
||||
Running the MME-GW:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets/tools$ sudo ./run_epc -l -g -K
|
||||
|
||||
|
||||
|
||||
Building eNB:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets$ ./build_oai --eNB
|
||||
|
||||
Running eNB:
|
||||
yang@yang:~/openair4G/trunk/cmake_targets$ sudo tools/run_enb_s1_exmimo -c /home/yang/openair4G/trunk/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.yang.epc.eurecom.conf -S -K
|
||||
|
||||
|
||||
################
|
||||
Tools available:
|
||||
###############
|
||||
|
||||
1) itti_analyser (list messages exchanged between protocol layers)
|
||||
2) xforms (Layer 1)
|
||||
3) vcd (timing mesurements)
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# this file contains the calibration values to compute the RSSI
|
||||
# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning
|
||||
# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB
|
||||
# this is for Express MIMO2 without any additional RF frontend
|
||||
# high gain
|
||||
103 107 106 104
|
||||
# med gain
|
||||
98 101 100 98
|
||||
# low gain (byp)
|
||||
94 97 96 94
|
||||
@@ -1,10 +0,0 @@
|
||||
# this file contains the calibration values to compute the RSSI
|
||||
# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning
|
||||
# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB
|
||||
# this is for Express MIMO2 without any additional RF frontend
|
||||
# high gain
|
||||
128 128 128 126
|
||||
# med gain
|
||||
122 123 123 120
|
||||
# low gain (byp)
|
||||
116 117 116 116
|
||||
@@ -1,4 +0,0 @@
|
||||
n=oarf_get_num_detected_cards;
|
||||
for i=n-1:0
|
||||
oarf_stop(i);
|
||||
end
|
||||
@@ -280,28 +280,6 @@ void thread_top_init(char *thread_name,
|
||||
uint64_t deadline,
|
||||
uint64_t period) {
|
||||
|
||||
#ifdef DEADLINE_SCHEDULER
|
||||
struct sched_attr attr;
|
||||
|
||||
unsigned int flags = 0;
|
||||
|
||||
attr.size = sizeof(attr);
|
||||
attr.sched_flags = 0;
|
||||
attr.sched_nice = 0;
|
||||
attr.sched_priority = 0;
|
||||
|
||||
attr.sched_policy = SCHED_DEADLINE;
|
||||
attr.sched_runtime = runtime;
|
||||
attr.sched_deadline = deadline;
|
||||
attr.sched_period = period;
|
||||
|
||||
if (sched_setattr(0, &attr, flags) < 0 ) {
|
||||
perror("[SCHED] eNB tx thread: sched_setattr failed\n");
|
||||
fprintf(stderr,"sched_setattr Error = %s",strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#else //LOW_LATENCY
|
||||
int policy, s, j;
|
||||
struct sched_param sparam;
|
||||
char cpu_affinity[1024];
|
||||
@@ -314,27 +292,6 @@ void thread_top_init(char *thread_name,
|
||||
/* Enable CPU Affinity only if number of CPUs > 2 */
|
||||
CPU_ZERO(&cpuset);
|
||||
|
||||
#ifdef CPU_AFFINITY
|
||||
if (affinity == 0) {
|
||||
LOG_W(HW,"thread_top_init() called with affinity==0, but overruled by #ifdef CPU_AFFINITY\n");
|
||||
}
|
||||
else if (get_nprocs() > 2)
|
||||
{
|
||||
for (j = 2; j < get_nprocs(); j++)
|
||||
CPU_SET(j, &cpuset);
|
||||
s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
|
||||
if (s != 0)
|
||||
{
|
||||
perror( "pthread_setaffinity_np");
|
||||
exit_fun("Error setting processor affinity");
|
||||
}
|
||||
}
|
||||
#else //CPU_AFFINITY
|
||||
if (affinity) {
|
||||
LOG_W(HW,"thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.\n");
|
||||
}
|
||||
#endif //CPU_AFFINITY
|
||||
|
||||
/* Check the actual affinity mask assigned to the thread */
|
||||
s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
|
||||
if (s != 0)
|
||||
@@ -384,8 +341,6 @@ void thread_top_init(char *thread_name,
|
||||
"???",
|
||||
sparam.sched_priority, cpu_affinity );
|
||||
}
|
||||
|
||||
#endif //LOW_LATENCY
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -121,11 +121,6 @@ char toksep[2];
|
||||
case SCHED_RR:
|
||||
lptr+=sprintf(lptr,"%s ","rt: rr");
|
||||
break;
|
||||
#ifdef SCHED_DEADLINE
|
||||
case SCHED_DEADLINE:
|
||||
lptr+=sprintf(lptr,"%s ","rt: deadline");
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
lptr+=sprintf(lptr,"%s ","????");
|
||||
break;
|
||||
|
||||
@@ -343,7 +343,6 @@ Initializing RU threads
|
||||
[0m[0m[PHY] Starting RU 0 (eNodeB_3GPP,synch_to_ext_device),
|
||||
[0mwaiting for sync (ru_thread,-1/0xff4968,0x17af520,0x16952a0)
|
||||
channel 0, Setting tx_gain offset 0.000000, rx_gain offset 118.000000, tx_freq 2680000000.000000, rx_freq 2560000000.000000
|
||||
[0m[93m[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.
|
||||
[0m[0m[PHY] Initializing frame parms for N_RB_DL 25, Ncp 0, osf 1
|
||||
[0m[0m[PHY] lte_parms.c: Setting N_RB_DL to 25, ofdm_symbol_size 512
|
||||
[0m[0m[PHY] Initializing RU signal buffers (if_south local RF) nb_tx 1
|
||||
@@ -624,10 +623,8 @@ cnx_id 1 assoc_id 904
|
||||
[0m[0m[PHY] init_eNB_proc(inst:0) RC.nb_CC[inst]:1
|
||||
[0m[0m[PHY] Initializing eNB processes instance:0 CC_id 0
|
||||
[0m[0m[PHY] eNB->single_thread_flag:0
|
||||
[0m[0m[93m[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.
|
||||
[0m[0m[HW] [SCHED][eNB] eNB_thread_prach started on CPU 0, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3
|
||||
[0m[0m[ENB_APP] ALL RUs ready - ALL eNBs ready
|
||||
[0m[0m[93m[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.
|
||||
[0m[0m[HW] [SCHED][eNB] eNB_thread_prach_br started on CPU 0, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3
|
||||
[0m[0m[ENB_APP] Sending sync to all threads
|
||||
[0m[0m[MME_APP] Creating MME_APP eNB Task
|
||||
@@ -1908,4 +1905,4 @@ len = 336
|
||||
[0m[0m[X2AP] X2 has 1 process ongoing
|
||||
[0m[0m[X2AP] X2 has 1 process ongoing
|
||||
[0m[0m[X2AP] X2 has 1 process ongoing
|
||||
[0m
|
||||
[0m
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#define CONFIG_HLP_DLSHIFT "dynamic shift for LLR compuation for TM3/4 (default 0)\n"
|
||||
#define CONFIG_HLP_PHYTST "test UE phy layer, mac disabled\n"
|
||||
#define CONFIG_HLP_DORA "test gNB and UE with RA procedures\n"
|
||||
#define CONFIG_HLP_DMAMAP "sets flag for improved EXMIMO UE performance\n"
|
||||
#define CONFIG_HLP_DMAMAP "use DMA memory mapping\n"
|
||||
#define CONFIG_HLP_EXCCLK "tells hardware to use a clock reference (0:internal(default), 1:external, 2:gpsdo)\n"
|
||||
#define CONFIG_HLP_USIM "use XOR autentication algo in case of test usim mode\n"
|
||||
#define CONFIG_HLP_NOSNGLT "Disables single-thread mode in lte-softmodem\n"
|
||||
@@ -62,7 +62,6 @@
|
||||
#define CONFIG_HLP_ULOFF "Set the uplink frequnecy offset for all component carriers\n"
|
||||
#define CONFIG_HLP_CHOFF "Channel id offset\n"
|
||||
#define CONFIG_HLP_SOFTS "Enable soft scope and L1 and L2 stats (Xforms)\n"
|
||||
#define CONFIG_HLP_EXMCAL "Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n"
|
||||
#define CONFIG_HLP_ITTIL "Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n"
|
||||
#define CONFIG_HLP_DLMCS_PHYTEST "Set the downlink MCS for PHYTEST mode\n"
|
||||
#define CONFIG_HLP_DLNL_PHYTEST "Set the downlink nrOfLayers for PHYTEST mode\n"
|
||||
|
||||
+2
-2
@@ -572,7 +572,7 @@ static void UE_synch(void *arg) {
|
||||
openair0_cfg[UE->rf_map.card].rx_freq[0],
|
||||
openair0_cfg[UE->rf_map.card].tx_freq[0]);
|
||||
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0);
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0]);
|
||||
if (UE->UE_scan_carrier == 1) {
|
||||
UE->UE_scan_carrier = 0;
|
||||
} else {
|
||||
@@ -591,7 +591,7 @@ static void UE_synch(void *arg) {
|
||||
|
||||
LOG_I(PHY, "Initial sync failed: trying carrier off %d Hz\n", freq_offset);
|
||||
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0);
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -67,7 +67,6 @@ extern "C"
|
||||
#define CONFIG_HLP_ULF "Set the uplink frequency offset for all component carriers\n"
|
||||
#define CONFIG_HLP_CHOFF "Channel id offset\n"
|
||||
#define CONFIG_HLP_SOFTS "Enable soft scope and L1 and L2 stats (Xforms)\n"
|
||||
#define CONFIG_HLP_EXMCAL "Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n"
|
||||
#define CONFIG_HLP_ITTIL "Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n"
|
||||
#define CONFIG_HLP_DLMCS "Set the maximum downlink MCS\n"
|
||||
#define CONFIG_HLP_STMON "Enable processing timing measurement of lte softmodem on per subframe basis \n"
|
||||
|
||||
@@ -81,9 +81,6 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char *buffer, int length
|
||||
ue->measurements.n0_power_dB[0],
|
||||
ue->measurements.n0_power_dB[1]);
|
||||
*/
|
||||
#ifdef EXMIMO
|
||||
len += sprintf(&buffer[len], "[UE PROC] RX Gain %d dB (LNA %d, vga %d dB)\n",ue->rx_total_gain_dB, openair0_cfg[0].rxg_mode[0],(int)openair0_cfg[0].rx_gain[0]);
|
||||
#endif
|
||||
len += sprintf(&buffer[len], "[UE PROC] RX Gain %d dB\n",ue->rx_total_gain_dB);
|
||||
len += sprintf(&buffer[len], "[UE_PROC] Frequency offset %d Hz, estimated carrier frequency %f Hz\n",ue->common_vars.freq_offset,openair0_cfg[0].rx_freq[0]-ue->common_vars.freq_offset);
|
||||
len += sprintf(&buffer[len], "[UE PROC] UE mode = %s (%d)\n",mode_string[ue->UE_mode[0]],ue->UE_mode[0]);
|
||||
@@ -496,15 +493,6 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char *buffer, int length
|
||||
10*log10(ue->measurements.n0_power_tot),
|
||||
ue->measurements.n0_power_dB[0],
|
||||
ue->measurements.n0_power_dB[1]);
|
||||
#ifdef EXMIMO
|
||||
ue->rx_total_gain_dB = ((int)(10*log10(ue->measurements.rssi)))-input_level_dBm;
|
||||
len += sprintf(&buffer[len], "[UE PROC] rxg_mode %d, input level (set by user) %d dBm, VGA gain %d dB ==> total gain %3.2f dB, noise figure %3.2f dB\n",
|
||||
openair0_cfg[0].rxg_mode[0],
|
||||
input_level_dBm,
|
||||
(int)openair0_cfg[0].rx_gain[0],
|
||||
10*log10(ue->measurements.rssi)-input_level_dBm,
|
||||
10*log10(ue->measurements.n0_power_tot)-ue->rx_total_gain_dB+105);
|
||||
#endif
|
||||
}
|
||||
|
||||
len += sprintf(&buffer[len],"EOF\n");
|
||||
|
||||
@@ -481,18 +481,6 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
|
||||
((int16_t *)ue->common_vars.txdata[0])[2*i+1] = prach[2*j+1];
|
||||
}
|
||||
|
||||
#if defined(EXMIMO)
|
||||
|
||||
// handle switch before 1st TX subframe, guarantee that the slot prior to transmission is switch on
|
||||
for (k=prach_start - (ue->frame_parms.samples_per_tti>>1) ; k<prach_start ; k++) {
|
||||
if (k<0)
|
||||
ue->common_vars.txdata[0][k+ue->frame_parms.samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE;
|
||||
else if (k>(ue->frame_parms.samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME))
|
||||
ue->common_vars.txdata[0][k-ue->frame_parms.samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE;
|
||||
else
|
||||
ue->common_vars.txdata[0][k] &= 0xFFFEFFFE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(PRACH_WRITE_OUTPUT_DEBUG)
|
||||
LOG_M("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1);
|
||||
|
||||
@@ -456,7 +456,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
|
||||
phich_string[fp->phich_config_common.phich_resource],
|
||||
fp->nb_antenna_ports_gNB);*/
|
||||
|
||||
#if defined(OAI_USRP) || defined(EXMIMO) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
|
||||
#if defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
|
||||
LOG_I(PHY, "[UE %d] Measured Carrier Frequency %.0f Hz (offset %d Hz)\n",
|
||||
ue->Mod_id,
|
||||
openair0_cfg[0].rx_freq[0]+ue->common_vars.freq_offset,
|
||||
|
||||
@@ -108,7 +108,6 @@ int main(int argc, char **argv) {
|
||||
//! timing_source
|
||||
.time_source=internal, //internal gpsdo external
|
||||
//! Manual SDR IP address
|
||||
//#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
|
||||
.sdr_addrs=usrp_addrs,
|
||||
//! Auto calibration flag
|
||||
.autocal={0},
|
||||
@@ -260,7 +259,6 @@ int main(int argc, char **argv) {
|
||||
/*! \brief Set RX feaquencies
|
||||
* \param device the hardware to use
|
||||
* \param openair0_cfg RF frontend parameters set by application
|
||||
* \param exmimo_dump_config dump EXMIMO configuration
|
||||
* \returns 0 in success
|
||||
*/
|
||||
.trx_set_freq_func=NULL,
|
||||
|
||||
@@ -48,13 +48,6 @@
|
||||
#define MAX_CONFIG_FRAMES 4
|
||||
|
||||
unsigned short slen; // sequence length in frames, max is 4
|
||||
/*
|
||||
#ifdef EXMIMO
|
||||
const unsigned short config_frames[MAX_CONFIG_FRAMES];
|
||||
#else
|
||||
extern const unsigned short config_frames[MAX_CONFIG_FRAMES];
|
||||
#endif
|
||||
*/
|
||||
|
||||
// function sends the config file "fname" to SMBV through socket sockfd
|
||||
int smbv_configure_from_file(int sockfd, const char* fname);
|
||||
|
||||
@@ -175,15 +175,9 @@
|
||||
|
||||
#define NB_ANTENNA_PORTS_ENB 6 // total number of eNB antenna ports
|
||||
|
||||
#ifdef EXMIMO
|
||||
#define TARGET_RX_POWER 55 // Target digital power for the AGC
|
||||
#define TARGET_RX_POWER_MAX 55 // Maximum digital power, such that signal does not saturate (value found by simulation)
|
||||
#define TARGET_RX_POWER_MIN 50 // Minimum digital power, anything below will be discarded (value found by simulation)
|
||||
#else
|
||||
#define TARGET_RX_POWER 50 // Target digital power for the AGC
|
||||
#define TARGET_RX_POWER_MAX 65 // Maximum digital power, such that signal does not saturate (value found by simulation)
|
||||
#define TARGET_RX_POWER_MIN 35 // Minimum digital power, anything below will be discarded (value found by simulation)
|
||||
#endif
|
||||
|
||||
//the min and max gains have to match the calibrated gain table
|
||||
//#define MAX_RF_GAIN 160
|
||||
|
||||
@@ -179,15 +179,9 @@
|
||||
|
||||
#define NB_ANTENNA_PORTS_ENB 6 // total number of eNB antenna ports
|
||||
|
||||
#ifdef EXMIMO
|
||||
#define TARGET_RX_POWER 55 // Target digital power for the AGC
|
||||
#define TARGET_RX_POWER_MAX 55 // Maximum digital power, such that signal does not saturate (value found by simulation)
|
||||
#define TARGET_RX_POWER_MIN 50 // Minimum digital power, anything below will be discarded (value found by simulation)
|
||||
#else
|
||||
#define TARGET_RX_POWER 50 // Target digital power for the AGC
|
||||
#define TARGET_RX_POWER_MAX 65 // Maximum digital power, such that signal does not saturate (value found by simulation)
|
||||
#define TARGET_RX_POWER_MIN 35 // Minimum digital power, anything below will be discarded (value found by simulation)
|
||||
#endif
|
||||
|
||||
//the min and max gains have to match the calibrated gain table
|
||||
//#define MAX_RF_GAIN 160
|
||||
|
||||
@@ -143,16 +143,6 @@ void processSlotTX(void *arg);
|
||||
@param abstraction_flag Indicator of PHY abstraction
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
*/
|
||||
//void phy_procedures_UE_S_TX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag,relaying_type_t r_type);
|
||||
|
||||
/*! \brief Scheduling for UE RX procedures in TDD S-subframes.
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@param eNB_id Local id of eNB on which to act
|
||||
@param abstraction_flag Indicator of PHY abstraction
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
*/
|
||||
//void phy_procedures_UE_S_RX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag, relaying_type_t r_type);
|
||||
|
||||
|
||||
/*! \brief Function to compute subframe type as a function of Frame type and TDD Configuration (implements Table 4.2.2 from 36.211, p.11 from version 8.6) and subframe index.
|
||||
@param frame_parms Pointer to DL frame parameter descriptor
|
||||
|
||||
@@ -78,7 +78,7 @@ fifo_dump_emos_UE emos_dump_UE;
|
||||
|
||||
char nr_mode_string[NUM_UE_MODE][20] = {"NOT SYNCHED","PRACH","RAR","RA_WAIT_CR", "PUSCH", "RESYNCH"};
|
||||
|
||||
#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
|
||||
#if defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
|
||||
extern uint64_t downlink_frequency[MAX_NUM_CCs][4];
|
||||
#endif
|
||||
|
||||
@@ -1808,14 +1808,6 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
|
||||
|
||||
ue->prach_vars[gNB_id]->amp = AMP;
|
||||
|
||||
/* #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)
|
||||
tx_amp = get_tx_amp_prach(ue->tx_power_dBm[nr_slot_tx], ue->tx_power_max_dBm, ue->frame_parms.N_RB_UL);
|
||||
if (tx_amp != -1)
|
||||
ue->prach_vars[gNB_id]->amp = tx_amp;
|
||||
#else
|
||||
ue->prach_vars[gNB_id]->amp = AMP;
|
||||
#endif */
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH, VCD_FUNCTION_IN);
|
||||
|
||||
prach_power = generate_nr_prach(ue, gNB_id, frame_tx, nr_slot_tx);
|
||||
|
||||
@@ -1210,19 +1210,6 @@ void ulsch_common_procedures(PHY_VARS_UE *ue,
|
||||
((short *)ue->common_vars.txdata[aa])[2*k+1] = ((short *)dummy_tx_buffer)[2*l+1];
|
||||
}
|
||||
|
||||
#if defined(EXMIMO)
|
||||
|
||||
// handle switch before 1st TX subframe, guarantee that the slot prior to transmission is switch on
|
||||
for (k=ulsch_start - (frame_parms->samples_per_tti>>1) ; k<ulsch_start ; k++) {
|
||||
if (k<0)
|
||||
ue->common_vars.txdata[aa][k+frame_parms->samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE;
|
||||
else if (k>(frame_parms->samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME))
|
||||
ue->common_vars.txdata[aa][k-frame_parms->samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE;
|
||||
else
|
||||
ue->common_vars.txdata[aa][k] &= 0xFFFEFFFE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
only for debug
|
||||
LOG_I(PHY,"ul-signal [subframe: %d, ulsch_start %d, TA: %d, rxOffset: %d, timing_advance: %d, hw_timing_advance: %d]\n",subframe_tx, ulsch_start, ue->N_TA_offset, ue->rx_offset, ue->timing_advance, ue->hw_timing_advance);
|
||||
@@ -2236,27 +2223,6 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,
|
||||
}
|
||||
}
|
||||
|
||||
void phy_procedures_UE_S_TX(PHY_VARS_UE *ue,
|
||||
uint8_t eNB_id,
|
||||
uint8_t abstraction_flag) {
|
||||
int aa;//i,aa;
|
||||
LTE_DL_FRAME_PARMS *frame_parms=&ue->frame_parms;
|
||||
|
||||
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||
#if defined(EXMIMO) //this is the EXPRESS MIMO case
|
||||
int i;
|
||||
|
||||
// set the whole tx buffer to RX
|
||||
for (i=0; i<LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_tti; i++)
|
||||
ue->common_vars.txdata[aa][i] = 0x00010001;
|
||||
|
||||
#else //this is the normal case
|
||||
// memset(&ue->common_vars.txdata[aa][0],0,
|
||||
// (LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_tti)*sizeof(int32_t));
|
||||
#endif //else EXMIMO
|
||||
}
|
||||
}
|
||||
|
||||
void ue_measurement_procedures(uint16_t l, // symbol index of each slot [0..6]
|
||||
PHY_VARS_UE *ue,
|
||||
UE_rxtx_proc_t *proc,
|
||||
|
||||
@@ -70,14 +70,6 @@ int phy_procedures_slot_parallelization_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *pr
|
||||
void *UE_thread_slot1_dl_processing(void *arg);
|
||||
#endif
|
||||
|
||||
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@param eNB_id Local id of eNB on which to act
|
||||
@param abstraction_flag Indicator of PHY abstraction
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
*/
|
||||
void phy_procedures_UE_S_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstraction_flag);
|
||||
|
||||
/*! \brief Scheduling for UE RX procedures in TDD S-subframes.
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@param eNB_id Local id of eNB on which to act
|
||||
|
||||
@@ -29,10 +29,6 @@
|
||||
* \email: raymond.knopp@eurecom.fr, navid.nikaein@eurecom.fr javier.morgade@ieee.org
|
||||
*/
|
||||
|
||||
#ifdef EXMIMO
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
#include "mac_extern.h"
|
||||
#include "mac.h"
|
||||
#include "mac_proto.h"
|
||||
@@ -2974,11 +2970,6 @@ ue_scheduler(const module_id_t module_idP,
|
||||
} while (msg_p != NULL);
|
||||
}
|
||||
|
||||
//Mac_rlc_xface->frameP=frameP;
|
||||
//Rrc_xface->Frame_index=Mac_rlc_xface->frameP;
|
||||
//if (subframe%5 == 0)
|
||||
//LG#ifdef EXMIMO
|
||||
|
||||
// data to/from NETLINK is treated in pdcp_run.
|
||||
// one socket is used in multiple UE's L2 FAPI simulator and
|
||||
// only first UE need to do this.
|
||||
|
||||
@@ -364,9 +364,6 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP
|
||||
sdu_mngt_p->sdu_remaining_size,
|
||||
pdu_remaining_size - sdu_mngt_p->sdu_remaining_size);
|
||||
#endif
|
||||
//#if !EXMIMO
|
||||
// assert(1!=1);
|
||||
//#endif
|
||||
memcpy(data, data_sdu_p, sdu_mngt_p->sdu_remaining_size);
|
||||
// reduce the size of the PDU
|
||||
continue_fill_pdu_with_sdu = 0;
|
||||
|
||||
@@ -85,11 +85,7 @@ int dump_eNB_l2_stats(char *buffer, int length) {
|
||||
unsigned int stat_timer_reordering_timed_out;
|
||||
unsigned int stat_timer_poll_retransmit_timed_out;
|
||||
unsigned int stat_timer_status_prohibit_timed_out;
|
||||
#ifdef EXMIMO
|
||||
number_of_cards=1;
|
||||
#else
|
||||
number_of_cards=NB_eNB_INST;
|
||||
#endif
|
||||
eNB_MAC_INST *eNB;
|
||||
UE_info_t *UE_info;
|
||||
|
||||
|
||||
@@ -1908,9 +1908,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
|
||||
(LTE_DRB_ToReleaseList_t *)NULL, // DRB2_list,
|
||||
(struct LTE_SPS_Config *)NULL, // maybe ue_context_pP->ue_context.sps_Config,
|
||||
(struct LTE_PhysicalConfigDedicated *)ue_context_pP->ue_context.physicalConfigDedicated,
|
||||
//#ifdef EXMIMO_IOT
|
||||
// NULL, NULL, NULL,NULL,
|
||||
//#else
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL, // MeasObj_list,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL, // ReportConfig_list,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL, //quantityConfig,
|
||||
@@ -2889,7 +2886,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
||||
/* Avoid gcc warnings */
|
||||
(void)PDCP_rlc_AM;
|
||||
(void)PDCP_rlc_UM;
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM
|
||||
PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
|
||||
DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
|
||||
PDCP_rlc_AM->statusReportRequired = false;
|
||||
@@ -3652,7 +3649,7 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
|
||||
/* Avoid gcc warnings */
|
||||
(void)PDCP_rlc_AM;
|
||||
(void)PDCP_rlc_UM;
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM
|
||||
PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
|
||||
DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
|
||||
PDCP_rlc_AM->statusReportRequired = 0; // FALSE
|
||||
@@ -5328,7 +5325,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
||||
/* avoid gcc warnings */
|
||||
(void)PDCP_rlc_AM;
|
||||
(void)PDCP_rlc_UM;
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
|
||||
#ifdef RRC_DEFAULT_RAB_IS_AM
|
||||
PDCP_rlc_AM = CALLOC(1, sizeof(*PDCP_rlc_AM));
|
||||
DRB_pdcp_config->rlc_AM = PDCP_rlc_AM;
|
||||
PDCP_rlc_AM->statusReportRequired = 0; // FALSE
|
||||
@@ -6084,9 +6081,6 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
||||
NULL, // DRB2_list,
|
||||
(struct LTE_SPS_Config *)NULL, // *sps_Config,
|
||||
(struct LTE_PhysicalConfigDedicated *)*physicalConfigDedicated,
|
||||
//#ifdef EXMIMO_IOT
|
||||
// NULL, NULL, NULL,NULL,
|
||||
//#else
|
||||
measurements_enabled ? (LTE_MeasObjectToAddModList_t *)MeasObj_list : NULL,
|
||||
measurements_enabled ? (LTE_ReportConfigToAddModList_t *)ReportConfig_list : NULL,
|
||||
measurements_enabled ? (LTE_QuantityConfig_t *)quantityConfig : NULL,
|
||||
|
||||
@@ -959,14 +959,6 @@ int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char
|
||||
S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p).security_key);
|
||||
{
|
||||
uint8_t send_security_mode_command = true;
|
||||
#ifndef EXMIMO_IOT
|
||||
|
||||
if ((ue_context_p->ue_context.ciphering_algorithm == SecurityAlgorithmConfig__cipheringAlgorithm_eea0)
|
||||
&& (ue_context_p->ue_context.integrity_algorithm == INTEGRITY_ALGORITHM_NONE)) {
|
||||
send_security_mode_command = false;
|
||||
}
|
||||
|
||||
#endif
|
||||
rrc_pdcp_config_security(
|
||||
&ctxt,
|
||||
ue_context_p,
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
/* ********** ********** ********** ********** ********** ********** ********** */
|
||||
Requirements:
|
||||
-------------
|
||||
- Previous kernel module/libraries shall be uninstalled !!!
|
||||
- cf. command line below "SYRTEM_IQ_uninstall_previous_SW.sh"
|
||||
./SYRTEM_IQ_unload_previous_SW.sh
|
||||
- You shall have SYRIQ1.4.6nr.tar.gz
|
||||
- Ubuntu kernel version is restricted to:
|
||||
- Kernel 4.15.0-20-lowlatency (Ubuntu 18.04)
|
||||
- Kernel 4.10.0-42-lowlatency (Ubuntu 17.04)
|
||||
- Kernel 3.19.0-61-lowlatency (Ubuntu 14.04)
|
||||
- ADRV9371+ZC706 PCIe board shall be switched on
|
||||
- PC shall be reboot once ADRV9371+ZC706 PCIe board is switched on
|
||||
|
||||
mkdir eur_oai_develop-nr
|
||||
cd eur_oai_develop-nr
|
||||
|
||||
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
|
||||
cd openairinterface5g
|
||||
|
||||
git checkout 375-syrtem-sdr-platform
|
||||
or
|
||||
git checkout develop-nr (after merge request accepted)
|
||||
|
||||
./sdr/ADRV9371_ZC706/SYRTEM_IQ_uninstall_previous_SW.sh
|
||||
-> Reading package lists... Done
|
||||
-> Building dependency tree
|
||||
-> Reading state information... Done
|
||||
-> linux-headers-4.15.0-20-lowlatency is already the newest version (4.15.0-20.21).
|
||||
-> 0 upgraded, 0 newly installed, 0 to remove and 327 not upgraded.
|
||||
-> Previous SYRIQ is loaded!
|
||||
-> previous SYRIQ is unloaded!
|
||||
-> previous SYRIQ is uninstall!
|
||||
-> Previous SYRIQ uninstallation is done
|
||||
|
||||
|
||||
|
||||
|
||||
/* ********** ********** ********** ********** ********** ********** ********** */
|
||||
UE:
|
||||
---
|
||||
configuration:
|
||||
--------------
|
||||
sudo apt update
|
||||
sudo apt-get update
|
||||
|
||||
tar -xvzf SYRIQ1.4.6nr.tar.gz
|
||||
./SYRIQplatformR1.4.6nr_install.sh
|
||||
sudo reboot
|
||||
|
||||
sudo lspci -vv | grep Xilinx
|
||||
sudo lspci -vv -s 02:00.0 | grep LnkSta
|
||||
sudo lspci -vv -s 03:00.0 | grep LnkSta
|
||||
sudo lspci -vv -s 02:00.0 | grep Interr
|
||||
sudo lspci -vv -s 03:00.0 | grep Interr
|
||||
|
||||
sudo gedit /usr/local/etc/syriq/cpu-irq.sh
|
||||
echo '1' > /proc/irq/49/smp_affinity_list
|
||||
echo '5' > /proc/irq/48/smp_affinity_list
|
||||
|
||||
gedit oaienv
|
||||
export IIOD_REMOTE=192.168.1.11
|
||||
|
||||
|
||||
|
||||
compilation:
|
||||
------------
|
||||
sudo cset shield --reset
|
||||
cd eur_oai_develop-nr/openairinterface5g/
|
||||
source oaienv
|
||||
|
||||
sudo -E ./cmake_targets/build_oai -c --nrUE -w ADRV9371_ZC706 -I
|
||||
sudo -E ./cmake_targets/build_oai -c --nrUE -w ADRV9371_ZC706
|
||||
|
||||
|
||||
|
||||
run:
|
||||
----
|
||||
source oaienv
|
||||
sudo -E /usr/local/etc/syriq/cpu-irq.sh
|
||||
|
||||
sudo -E cset shield -e ./cmake_targets/ran_build/nr-uesoftmodem -- --numerology 1 -r 106 -C 3510000000 --loop-memory --rf-config-file /usr/local/etc/syriq/ue.band22.tm1.PRB100.NR40.dat
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ********** ********** ********** ********** ********** ********** ********** */
|
||||
gNB:
|
||||
----
|
||||
configuration:
|
||||
--------------
|
||||
sudo apt update
|
||||
sudo apt-get update
|
||||
|
||||
tar -xvzf SYRIQ1.4.6nr.tar.gz
|
||||
./SYRIQplatformR1.4.6nr_install.sh
|
||||
sudo reboot
|
||||
|
||||
sudo lspci -vv | grep Xilinx
|
||||
sudo lspci -vv -s 02:00.0 | grep LnkSta
|
||||
sudo lspci -vv -s 02:00.0 | grep Interr
|
||||
|
||||
sudo gedit /usr/local/etc/syriq/cpu-irq.sh
|
||||
echo '1' > /proc/irq/46/smp_affinity_list
|
||||
|
||||
gedit oaienv
|
||||
export IIOD_REMOTE=192.168.1.21
|
||||
|
||||
|
||||
|
||||
compilation:
|
||||
------------
|
||||
sudo cset shield --reset
|
||||
cd eur_oai_develop-nr/openairinterface5g/
|
||||
source oaienv
|
||||
|
||||
sudo -E ./cmake_targets/build_oai -c --gNB -w ADRV9371_ZC706 -I --enable-cpu-affinity
|
||||
|
||||
/* CPU available shall be mapped on CPU2 to get_nprocs() number with hyperthreading disabled */
|
||||
/* because : */
|
||||
/* - cset shield leave CPU0 for system */
|
||||
/* - CPU1 is reserved for HwRxTx thread for I/Q acquisition ! */
|
||||
/* Note: "/usr/local/etc/syriq/cpu-irq.sh" shall be changed if more than 8 cores are used */
|
||||
/* ie. "cset shield --force --kthread on -c 1-7" where "-c 1-7" reserves CPU1 to CPU7 for application (CPU0 is for system) */
|
||||
|
||||
sudo -E ./cmake_targets/build_oai -c --gNB -w ADRV9371_ZC706 --enable-cpu-affinity
|
||||
|
||||
|
||||
|
||||
run:
|
||||
----
|
||||
source oaienv
|
||||
sudo -E /usr/local/etc/syriq/cpu-irq.sh
|
||||
|
||||
sudo -E cset shield -e ./cmake_targets/ran_build/build/nr-softmodem -- -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band22.tm1.106PRB.adrv9371zc706.conf --rf-config-file /usr/local/etc/syriq/gnb.band22.tm1.PRB100.NR40_hwgain15.dat
|
||||
@@ -1,28 +0,0 @@
|
||||
# Previous SYRIQ uninstall
|
||||
#!/bin/sh
|
||||
MODULE="riffa"
|
||||
KERNEL_VERSION=$(uname -r)
|
||||
RHR=/etc/redhat-release
|
||||
|
||||
sudo apt-get install -y linux-headers-`uname -r`
|
||||
|
||||
if lsmod | grep "$MODULE" &> /dev/null ; then
|
||||
echo "Previous SYRIQ is loaded!"
|
||||
sudo rmmod $MODULE
|
||||
echo " -> previous SYRIQ is unloaded!"
|
||||
sudo rm -f /usr/local/lib/libriffa.so*
|
||||
sudo rm -f /usr/local/include/riffa.h
|
||||
sudo rm -f /usr/local/include/riffa_driver.h
|
||||
sudo rm -f /etc/ld.so.conf.d/riffa.conf
|
||||
sudo rm -rf /lib/modules/$KERNEL_VERSION/kernel/drivers/riffa
|
||||
sudo rm -f /etc/udev/rules.d/99-riffa.rules
|
||||
sudo sed -i '/riffa/d' /etc/modules
|
||||
sudo ldconfig
|
||||
sudo depmod
|
||||
echo " -> previous SYRIQ is uninstall!"
|
||||
echo "Previous SYRIQ uninstallation is done"
|
||||
exit 0
|
||||
else
|
||||
echo "Previous SYRIQ is not loaded!"
|
||||
exit 1
|
||||
fi
|
||||
@@ -284,12 +284,9 @@ int trx_brf_stop(openair0_device* device)
|
||||
/*! \brief Set frequencies (TX/RX)
|
||||
* \param device the hardware to use
|
||||
* \param openair0_cfg1 openair0 Config structure (ignored. It is there to comply with RF common API)
|
||||
* \param exmimo_dump_config (ignored)
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int trx_brf_set_freq(openair0_device* device,
|
||||
openair0_config_t *openair0_cfg1,
|
||||
int exmimo_dump_config)
|
||||
int trx_brf_set_freq(openair0_device* device, openair0_config_t *openair0_cfg1)
|
||||
{
|
||||
int status;
|
||||
brf_state_t *brf = (brf_state_t *)device->priv;
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
|
||||
const char* devtype_names[MAX_RF_DEV_TYPE] = {
|
||||
"",
|
||||
"EXMIMO",
|
||||
"USRP B200",
|
||||
"USRP X300",
|
||||
"USRP N300",
|
||||
@@ -54,7 +53,6 @@ const char* devtype_names[MAX_RF_DEV_TYPE] = {
|
||||
"LMSSDR",
|
||||
"IRIS",
|
||||
"No HW",
|
||||
"ADRV9371_ZC706",
|
||||
"UEDv2",
|
||||
"RFSIMULATOR"
|
||||
};
|
||||
|
||||
@@ -83,8 +83,6 @@ typedef enum {
|
||||
*/
|
||||
typedef enum {
|
||||
MIN_RF_DEV_TYPE = 0,
|
||||
/*!\brief device is ExpressMIMO */
|
||||
EXMIMO_DEV,
|
||||
/*!\brief device is USRP B200/B210*/
|
||||
USRP_B200_DEV,
|
||||
/*!\brief device is USRP X300/X310*/
|
||||
@@ -101,8 +99,6 @@ typedef enum {
|
||||
IRIS_DEV,
|
||||
/*!\brief device is NONE*/
|
||||
NONE_DEV,
|
||||
/*!\brief device is ADRV9371_ZC706 */
|
||||
ADRV9371_ZC706_DEV,
|
||||
/*!\brief device is UEDv2 */
|
||||
UEDv2_DEV,
|
||||
RFSIMULATOR,
|
||||
@@ -226,7 +222,6 @@ typedef struct {
|
||||
//! timing_source
|
||||
clock_source_t time_source;
|
||||
//! Manual SDR IP address
|
||||
//#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
|
||||
char *sdr_addrs;
|
||||
//! Auto calibration flag
|
||||
int autocal[4];
|
||||
@@ -500,10 +495,9 @@ struct openair0_device_t {
|
||||
/*! \brief Set RX feaquencies
|
||||
* \param device the hardware to use
|
||||
* \param openair0_cfg RF frontend parameters set by application
|
||||
* \param exmimo_dump_config dump EXMIMO configuration
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int (*trx_set_freq_func)(openair0_device *device, openair0_config_t *openair0_cfg,int exmimo_dump_config);
|
||||
int (*trx_set_freq_func)(openair0_device *device, openair0_config_t *openair0_cfg);
|
||||
|
||||
/*! \brief Set gains
|
||||
* \param device the hardware to use
|
||||
|
||||
@@ -252,9 +252,7 @@ int trx_eth_stop(openair0_device *device) {
|
||||
}
|
||||
|
||||
|
||||
int trx_eth_set_freq(openair0_device* device,
|
||||
openair0_config_t *openair0_cfg,
|
||||
int exmimo_dump_config)
|
||||
int trx_eth_set_freq(openair0_device* device, openair0_config_t *openair0_cfg)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -57,9 +57,7 @@ int trx_benetel_stop(openair0_device *device)
|
||||
}
|
||||
|
||||
|
||||
int trx_benetel_set_freq(openair0_device* device,
|
||||
openair0_config_t *openair0_cfg,
|
||||
int exmimo_dump_config)
|
||||
int trx_benetel_set_freq(openair0_device* device, openair0_config_t *openair0_cfg)
|
||||
{
|
||||
printf("BENETEL: %s\n", __FUNCTION__);
|
||||
return(0);
|
||||
|
||||
@@ -56,9 +56,7 @@ int trx_benetel_stop(openair0_device *device)
|
||||
}
|
||||
|
||||
|
||||
int trx_benetel_set_freq(openair0_device* device,
|
||||
openair0_config_t *openair0_cfg,
|
||||
int exmimo_dump_config)
|
||||
int trx_benetel_set_freq(openair0_device* device, openair0_config_t *openair0_cfg)
|
||||
{
|
||||
printf("BENETEL: %s\n", __FUNCTION__);
|
||||
return(0);
|
||||
|
||||
@@ -88,7 +88,7 @@ static int trx_iris_start(openair0_device *device) {
|
||||
for (r = 0; r < s->device_num; r++) {
|
||||
int ret = s->iris[r]->activateStream(s->rxStream[r], flags, timeNs, 0);
|
||||
int ret2 = s->iris[r]->activateStream(s->txStream[r]);
|
||||
if (ret < 0 | ret2 < 0)
|
||||
if (ret < 0 || ret2 < 0)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
@@ -135,12 +135,7 @@ static void trx_iris_end(openair0_device *device) {
|
||||
static int
|
||||
trx_iris_write(openair0_device *device, openair0_timestamp timestamp, void **buff, int nsamps, int cc, int flags) {
|
||||
using namespace std::chrono;
|
||||
static long long int loop = 0;
|
||||
static long time_min = 0, time_max = 0, time_avg = 0;
|
||||
struct timespec tp_start, tp_end;
|
||||
long time_diff;
|
||||
|
||||
int ret = 0, ret_i = 0;
|
||||
int flag = 0;
|
||||
|
||||
iris_state_t *s = (iris_state_t *) device->priv;
|
||||
@@ -161,20 +156,17 @@ trx_iris_write(openair0_device *device, openair0_timestamp timestamp, void **buf
|
||||
}
|
||||
}
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC_RAW, &tp_start);
|
||||
|
||||
// This hack was added by cws to help keep packets flowing
|
||||
|
||||
if (flags)
|
||||
flag |= SOAPY_SDR_HAS_TIME;
|
||||
else {
|
||||
long long tempHack = s->iris[0]->getHardwareTime("");
|
||||
return nsamps;
|
||||
}
|
||||
|
||||
if (flags == 2 || flags == 1) { // start of burst
|
||||
|
||||
} else if (flags == 3 | flags == 4) {
|
||||
} else if (flags == 3 || flags == 4) {
|
||||
flag |= SOAPY_SDR_END_BURST;
|
||||
}
|
||||
|
||||
@@ -196,7 +188,7 @@ trx_iris_write(openair0_device *device, openair0_timestamp timestamp, void **buf
|
||||
printf("\n");
|
||||
//printf("\nHardware time before write: %lld, tx_time_stamp: %lld\n", s->iris[0]->getHardwareTime(""), timeNs);
|
||||
#endif
|
||||
ret = s->iris[r]->writeStream(s->txStream[r], (void **) samps, (size_t)(nsamps), flag, timeNs, 1000000);
|
||||
const int ret = s->iris[r]->writeStream(s->txStream[r], (void **) samps, (size_t)(nsamps), flag, timeNs, 1000000);
|
||||
|
||||
if (ret < 0)
|
||||
printf("Unable to write stream!\n");
|
||||
@@ -231,7 +223,7 @@ static int trx_iris_read(openair0_device *device, openair0_timestamp *ptimestamp
|
||||
bool time_set = false;
|
||||
long long timeNs = 0;
|
||||
int flags;
|
||||
int samples_received;
|
||||
int samples_received = 0;
|
||||
uint32_t *samps[2]; //= (uint32_t **)buff;
|
||||
|
||||
int r;
|
||||
@@ -255,7 +247,7 @@ static int trx_iris_read(openair0_device *device, openair0_timestamp *ptimestamp
|
||||
if (ret < 0) {
|
||||
if (ret == SOAPY_SDR_TIME_ERROR)
|
||||
printf("[recv] Time Error in tx stream!\n");
|
||||
else if (ret == SOAPY_SDR_OVERFLOW | (flags & SOAPY_SDR_END_ABRUPT))
|
||||
else if (ret == SOAPY_SDR_OVERFLOW || (flags & SOAPY_SDR_END_ABRUPT))
|
||||
printf("[recv] Overflow occured!\n");
|
||||
else if (ret == SOAPY_SDR_TIMEOUT)
|
||||
printf("[recv] Timeout occured!\n");
|
||||
@@ -344,15 +336,16 @@ void *set_freq_thread(void *arg) {
|
||||
device->openair0_cfg[0].rx_freq[0]);
|
||||
// add check for the number of channels in the cfg
|
||||
for (r = 0; r < s->device_num; r++) {
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
for (i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (i < s->rx_num_channels)
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", device->openair0_cfg[0].rx_freq[i]);
|
||||
}
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
for (i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
if (i < s->tx_num_channels)
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", device->openair0_cfg[0].tx_freq[i]);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*! \brief Set frequencies (TX/RX)
|
||||
@@ -361,31 +354,26 @@ void *set_freq_thread(void *arg) {
|
||||
* \param dummy dummy variable not used
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int trx_iris_set_freq(openair0_device *device, openair0_config_t *openair0_cfg, int dont_block) {
|
||||
iris_state_t *s = (iris_state_t *) device->priv;
|
||||
pthread_t f_thread;
|
||||
if (dont_block)
|
||||
pthread_create(&f_thread, NULL, set_freq_thread, (void *) device);
|
||||
else {
|
||||
int r, i;
|
||||
for (r = 0; r < s->device_num; r++) {
|
||||
printf("Setting Iris TX Freq %f, RX Freq %f\n", openair0_cfg[0].tx_freq[0], openair0_cfg[0].rx_freq[0]);
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (i < s->rx_num_channels) {
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", openair0_cfg[0].rx_freq[i]);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
if (i < s->tx_num_channels) {
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", openair0_cfg[0].tx_freq[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
int trx_iris_set_freq(openair0_device *device, openair0_config_t *openair0_cfg)
|
||||
{
|
||||
iris_state_t *s = (iris_state_t *)device->priv;
|
||||
int r, i;
|
||||
for (r = 0; r < s->device_num; r++) {
|
||||
printf("Setting Iris TX Freq %f, RX Freq %f\n", openair0_cfg[0].tx_freq[0], openair0_cfg[0].rx_freq[0]);
|
||||
for (i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (i < s->rx_num_channels) {
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", openair0_cfg[0].rx_freq[i]);
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
for (i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
if (i < s->tx_num_channels) {
|
||||
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", openair0_cfg[0].tx_freq[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*! \brief Set Gains (TX/RX)
|
||||
* \param device the hardware to use
|
||||
* \param openair0_cfg RF frontend parameters set by application
|
||||
@@ -499,11 +487,9 @@ extern "C" {
|
||||
*/
|
||||
int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
|
||||
size_t i, r, card;
|
||||
int bw_gain_adjust = 0;
|
||||
openair0_cfg[0].rx_gain_calib_table = calib_table_iris;
|
||||
iris_state_t *s = (iris_state_t *) malloc(sizeof(iris_state_t));
|
||||
memset(s, 0, sizeof(iris_state_t));
|
||||
iris_state_t *s = (iris_state_t *) calloc(1, sizeof(*s));
|
||||
|
||||
std::string devFE("DEV");
|
||||
std::string cbrsFE("CBRS");
|
||||
@@ -580,7 +566,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
for (r = 0; r < s->device_num; r++) {
|
||||
for (int r = 0; r < s->device_num; r++) {
|
||||
//this is unnecessary -- it will set the correct master clock based on sample rate
|
||||
/*switch ((int) openair0_cfg[0].sample_rate) {
|
||||
case 1920000:
|
||||
@@ -604,7 +590,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
break;
|
||||
}*/
|
||||
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
for (int i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (i < s->rx_num_channels) {
|
||||
s->iris[r]->setSampleRate(SOAPY_SDR_RX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
||||
#ifdef MOVE_DC
|
||||
@@ -637,7 +623,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
s->iris[r]->setDCOffsetMode(SOAPY_SDR_RX, i, true); // move somewhere else
|
||||
}
|
||||
}
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
for (int i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
if (i < s->tx_num_channels) {
|
||||
s->iris[r]->setSampleRate(SOAPY_SDR_TX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
||||
#ifdef MOVE_DC
|
||||
@@ -686,24 +672,24 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
rx_filt_bw *= 3;
|
||||
#endif
|
||||
/* Setting TX/RX BW */
|
||||
for (i = 0; i < s->tx_num_channels; i++) {
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
||||
for (int i = 0; i < s->tx_num_channels; i++) {
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
||||
s->iris[r]->setBandwidth(SOAPY_SDR_TX, i, tx_filt_bw);
|
||||
printf("Setting tx bandwidth on channel %zu/%lu: BW %f (readback %f)\n", i,
|
||||
printf("Setting tx bandwidth on channel %d/%lu: BW %f (readback %f)\n", i,
|
||||
s->iris[r]->getNumChannels(SOAPY_SDR_TX), tx_filt_bw / 1e6,
|
||||
s->iris[r]->getBandwidth(SOAPY_SDR_TX, i) / 1e6);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < s->rx_num_channels; i++) {
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
||||
for (int i = 0; i < s->rx_num_channels; i++) {
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
||||
s->iris[r]->setBandwidth(SOAPY_SDR_RX, i, rx_filt_bw);
|
||||
printf("Setting rx bandwidth on channel %zu/%lu : BW %f (readback %f)\n", i,
|
||||
printf("Setting rx bandwidth on channel %d/%lu : BW %f (readback %f)\n", i,
|
||||
s->iris[r]->getNumChannels(SOAPY_SDR_RX), rx_filt_bw / 1e6,
|
||||
s->iris[r]->getBandwidth(SOAPY_SDR_RX, i) / 1e6);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
for (int i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||
if (i < s->tx_num_channels) {
|
||||
printf("\nUsing SKLK calibration...\n");
|
||||
s->iris[r]->writeSetting(SOAPY_SDR_TX, i, "CALIBRATE", "SKLK");
|
||||
@@ -712,7 +698,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
|
||||
}
|
||||
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
for (int i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (i < s->rx_num_channels) {
|
||||
printf("\nUsing SKLK calibration...\n");
|
||||
s->iris[r]->writeSetting(SOAPY_SDR_RX, i, "CALIBRATE", "SKLK");
|
||||
@@ -722,7 +708,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
}
|
||||
|
||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) == 0) {
|
||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
for (int i = 0; i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||
if (openair0_cfg[0].duplex_mode == 0) {
|
||||
printf("\nFDD: Setting receive antenna to %s\n", s->iris[r]->listAntennas(SOAPY_SDR_RX, i)[1].c_str());
|
||||
if (i < s->rx_num_channels)
|
||||
@@ -745,22 +731,22 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
rxStreamArgs["WIRE"] = SOAPY_SDR_CS16;
|
||||
|
||||
std::vector <size_t> channels;
|
||||
for (i = 0; i < s->rx_num_channels; i++)
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX))
|
||||
for (int i = 0; i < s->rx_num_channels; i++)
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX))
|
||||
channels.push_back(i);
|
||||
s->rxStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_RX, SOAPY_SDR_CS16, channels));//, rxStreamArgs));
|
||||
|
||||
std::vector <size_t> tx_channels = {};
|
||||
for (i = 0; i < s->tx_num_channels; i++)
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX))
|
||||
for (int i = 0; i < s->tx_num_channels; i++)
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX))
|
||||
tx_channels.push_back(i);
|
||||
s->txStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_TX, SOAPY_SDR_CS16, tx_channels)); //, arg));
|
||||
//s->iris[r]->setHardwareTime(0, "");
|
||||
|
||||
std::cout << "Front end detected: " << s->iris[r]->getHardwareInfo()["frontend"] << "\n";
|
||||
for (i = 0; i < s->rx_num_channels; i++) {
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
||||
printf("RX Channel %zu\n", i);
|
||||
for (int i = 0; i < s->rx_num_channels; i++) {
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
||||
printf("RX Channel %d\n", i);
|
||||
printf("Actual RX sample rate: %fMSps...\n", (s->iris[r]->getSampleRate(SOAPY_SDR_RX, i) / 1e6));
|
||||
printf("Actual RX frequency: %fGHz...\n", (s->iris[r]->getFrequency(SOAPY_SDR_RX, i) / 1e9));
|
||||
printf("Actual RX gain: %f...\n", (s->iris[r]->getGain(SOAPY_SDR_RX, i)));
|
||||
@@ -776,9 +762,9 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < s->tx_num_channels; i++) {
|
||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
||||
printf("TX Channel %zu\n", i);
|
||||
for (int i = 0; i < s->tx_num_channels; i++) {
|
||||
if (i < (int) s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
||||
printf("TX Channel %d\n", i);
|
||||
printf("Actual TX sample rate: %fMSps...\n", (s->iris[r]->getSampleRate(SOAPY_SDR_TX, i) / 1e6));
|
||||
printf("Actual TX frequency: %fGHz...\n", (s->iris[r]->getFrequency(SOAPY_SDR_TX, i) / 1e9));
|
||||
printf("Actual TX gain: %f...\n", (s->iris[r]->getGain(SOAPY_SDR_TX, i)));
|
||||
@@ -795,10 +781,10 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
}
|
||||
}
|
||||
s->iris[0]->writeSetting("SYNC_DELAYS", "");
|
||||
for (r = 0; r < s->device_num; r++)
|
||||
for (int r = 0; r < s->device_num; r++)
|
||||
s->iris[r]->setHardwareTime(0, "TRIGGER");
|
||||
s->iris[0]->writeSetting("TRIGGER_GEN", "");
|
||||
for (r = 0; r < s->device_num; r++)
|
||||
for (int r = 0; r < s->device_num; r++)
|
||||
printf("Device timestamp: %f...\n", (s->iris[r]->getHardwareTime("TRIGGER") / 1e9));
|
||||
|
||||
device->priv = s;
|
||||
|
||||
@@ -283,10 +283,9 @@ int trx_lms_stop(openair0_device *device) {
|
||||
/*! \brief Set frequencies (TX/RX)
|
||||
* \param device the hardware to use
|
||||
* \param openair0_cfg openair0 Config structure (ignored. It is there to comply with RF common API)
|
||||
* \param exmimo_dump_config (ignored)
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int trx_lms_set_freq(openair0_device* device, openair0_config_t *openair0_cfg,int exmimo_dump_config) {
|
||||
int trx_lms_set_freq(openair0_device* device, openair0_config_t *openair0_cfg) {
|
||||
//Control port must be connected
|
||||
LMS_SetLOFrequency(lms_device,LMS_CH_TX,0,openair0_cfg->tx_freq[0]);
|
||||
LMS_SetLOFrequency(lms_device,LMS_CH_RX,0,openair0_cfg->rx_freq[0]);
|
||||
|
||||
@@ -794,22 +794,15 @@ void *freq_thread(void *arg) {
|
||||
* \param dummy dummy variable not used
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int trx_usrp_set_freq(openair0_device *device, openair0_config_t *openair0_cfg, int dont_block) {
|
||||
int trx_usrp_set_freq(openair0_device *device, openair0_config_t *openair0_cfg)
|
||||
{
|
||||
usrp_state_t *s = (usrp_state_t *)device->priv;
|
||||
pthread_t f_thread;
|
||||
printf("Setting USRP TX Freq %f, RX Freq %f, tune_offset: %f, dont_block: %d\n",
|
||||
openair0_cfg[0].tx_freq[0],openair0_cfg[0].rx_freq[0],
|
||||
openair0_cfg[0].tune_offset, dont_block);
|
||||
printf("Setting USRP TX Freq %f, RX Freq %f, tune_offset: %f\n", openair0_cfg[0].tx_freq[0], openair0_cfg[0].rx_freq[0], openair0_cfg[0].tune_offset);
|
||||
|
||||
// spawn a thread to handle the frequency change to not block the calling thread
|
||||
if (dont_block == 1)
|
||||
pthread_create(&f_thread,NULL,freq_thread,(void *)device);
|
||||
else {
|
||||
uhd::tune_request_t tx_tune_req(openair0_cfg[0].tx_freq[0], openair0_cfg[0].tune_offset);
|
||||
uhd::tune_request_t rx_tune_req(openair0_cfg[0].rx_freq[0], openair0_cfg[0].tune_offset);
|
||||
s->usrp->set_tx_freq(tx_tune_req);
|
||||
s->usrp->set_rx_freq(rx_tune_req);
|
||||
}
|
||||
uhd::tune_request_t tx_tune_req(openair0_cfg[0].tx_freq[0], openair0_cfg[0].tune_offset);
|
||||
uhd::tune_request_t rx_tune_req(openair0_cfg[0].rx_freq[0], openair0_cfg[0].tune_offset);
|
||||
s->usrp->set_tx_freq(tx_tune_req);
|
||||
s->usrp->set_rx_freq(rx_tune_req);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -916,7 +916,7 @@ static void rfsimulator_end(openair0_device *device) {
|
||||
static int rfsimulator_stop(openair0_device *device) {
|
||||
return 0;
|
||||
}
|
||||
static int rfsimulator_set_freq(openair0_device *device, openair0_config_t *openair0_cfg,int exmimo_dump_config) {
|
||||
static int rfsimulator_set_freq(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
return 0;
|
||||
}
|
||||
static int rfsimulator_set_gains(openair0_device *device, openair0_config_t *openair0_cfg) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#ifndef OPENAIRINTERFACE5G_LIMITS_H_
|
||||
#define OPENAIRINTERFACE5G_LIMITS_H_
|
||||
|
||||
#if 1 /*defined(CBMIMO1) || defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)*/
|
||||
# define NUMBER_OF_eNB_MAX 1
|
||||
# define NUMBER_OF_gNB_MAX 1
|
||||
# define NUMBER_OF_RU_MAX 2
|
||||
@@ -43,67 +42,5 @@
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 1
|
||||
# define NUMBER_OF_CONNECTED_gNB_MAX 1
|
||||
# endif
|
||||
#else
|
||||
# define NUMBER_OF_eNB_MAX 7
|
||||
# define NUMBER_OF_gNB_MAX 7
|
||||
# define NUMBER_OF_RU_MAX 32
|
||||
# define NUMBER_OF_NR_RU_MAX 32
|
||||
# ifndef UE_EXPANSION
|
||||
/* if the value of MAX_MOBILES_PER_ENB and NUMBER_OF_UE_MAX is different,
|
||||
eNB process will exit because unexpected access happens.
|
||||
Now some parts are using NUMBER_OF_UE_MAX
|
||||
and the other are using MAX_MOBILES_PER_ENB in for-loop.
|
||||
*/
|
||||
# define NUMBER_OF_UE_MAX 16
|
||||
# define NUMBER_OF_UCI_VARS_MAX 56
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 3
|
||||
# define NUMBER_OF_CONNECTED_gNB_MAX 3
|
||||
# else
|
||||
# define NUMBER_OF_UE_MAX 256
|
||||
# define NUMBER_OF_UCI_VARS_MAX 256
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 1
|
||||
# define NUMBER_OF_CONNECTED_gNB_MAX 1
|
||||
# endif
|
||||
# if defined(STANDALONE) && STANDALONE==1
|
||||
# undef NUMBER_OF_eNB_MAX
|
||||
# undef NUMBER_OF_gNB_MAX
|
||||
|
||||
# undef NUMBER_OF_UE_MAX
|
||||
|
||||
# undef NUMBER_OF_RU_MAX
|
||||
# undef NUMBER_OF_NR_RU_MAX
|
||||
|
||||
# define NUMBER_OF_eNB_MAX 3
|
||||
# define NUMBER_OF_gNB_MAX 3
|
||||
|
||||
# define NUMBER_OF_UE_MAX 3
|
||||
|
||||
# define NUMBER_OF_RU_MAX 3
|
||||
# define NUMBER_OF_NR_RU_MAX 3
|
||||
# endif
|
||||
# if defined(LARGE_SCALE) && LARGE_SCALE
|
||||
# undef NUMBER_OF_eNB_MAX
|
||||
# undef NUMBER_OF_gNB_MAX
|
||||
|
||||
# undef NUMBER_OF_UE_MAX
|
||||
|
||||
# undef NUMBER_OF_CONNECTED_eNB_MAX
|
||||
# undef NUMBER_OF_CONNECTED_gNB_MAX
|
||||
|
||||
# undef NUMBER_OF_RU_MAX
|
||||
# undef NUMBER_OF_NR_RU_MAX
|
||||
|
||||
# define NUMBER_OF_eNB_MAX 2
|
||||
# define NUMBER_OF_gNB_MAX 2
|
||||
|
||||
# define NUMBER_OF_UE_MAX 120
|
||||
|
||||
# define NUMBER_OF_RU_MAX 16
|
||||
# define NUMBER_OF_NR_RU_MAX 16
|
||||
|
||||
# define NUMBER_OF_CONNECTED_eNB_MAX 1 // to save some memory
|
||||
# define NUMBER_OF_CONNECTED_gNB_MAX 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* OPENAIRINTERFACE5G_LIMITS_H_ */
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
This directory contains different targets for OpenAirInterface.org implementations
|
||||
|
||||
ARCH/EXMIMO - Kernel driver for EXMIMO1+2
|
||||
RTAI/USER - Target to run .11p (uses openairITS) or LTE modem (uses openair1 and openair2) for x86 in RTAI user-space
|
||||
SIMU - Simulator/Emulator target for x86
|
||||
DOCS - Doxygen documentation generation for openair1/openair2
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
sh /opt/XIO2000/xio_script.sh
|
||||
cd ../USERSPACE_TOOLS/OPENAIR_RF
|
||||
./openair_rf_cbmimo1_lte 0 4 1
|
||||
rmmod -f openair_rf
|
||||
cd ../..
|
||||
make install_cbmimo1_softmodem_lte_emos_l2
|
||||
cd LAUNCH_SCRIPTS
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
echo "start setting up eNB interface"
|
||||
|
||||
cd $OPENAIR2_DIR
|
||||
sudo rmmod nasmesh
|
||||
#make nasmesh_netlink_address_fix.ko
|
||||
#make nasmesh_netlink.ko
|
||||
#make nasmesh.ko
|
||||
#make rb_tool
|
||||
#route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
|
||||
cd -
|
||||
|
||||
sudo insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
|
||||
|
||||
sudo ifconfig oai0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||
|
||||
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -s 10.0.1.1 -t 10.0.1.2 -r 3
|
||||
|
||||
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c1 -i0 -z0 -s 10.0.1.1 -t 10.0.1.3 -r 11
|
||||
|
||||
echo "end setting up NAS interface"
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/bin/sh
|
||||
echo "setting up UE NAS interface"
|
||||
|
||||
cd $OPENAIR2_DIR
|
||||
sudo rmmod nasmesh
|
||||
#make nasmesh_netlink_address_fix.ko
|
||||
#make nasmesh_netlink.ko
|
||||
#make nasmesh.ko
|
||||
#make rb_tool
|
||||
#route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
|
||||
cd -
|
||||
sudo insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
|
||||
|
||||
sudo ifconfig oai0 10.0.1.2 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||
|
||||
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -s 10.0.1.2 -t 10.0.1.1 -r 3
|
||||
|
||||
echo "end setting up NAS interface"
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/bin/sh
|
||||
echo "setting up UE NAS interface"
|
||||
|
||||
cd $OPENAIR2_DIR
|
||||
sudo rmmod nasmesh
|
||||
#make nasmesh_netlink_address_fix.ko
|
||||
#make nasmesh_netlink.ko
|
||||
#make nasmesh.ko
|
||||
#make rb_tool
|
||||
#route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
|
||||
cd -
|
||||
sudo insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
|
||||
|
||||
sudo ifconfig oai0 10.0.1.3 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||
|
||||
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -s 10.0.1.3 -t 10.0.1.1 -r 3
|
||||
|
||||
echo "end setting up NAS interface"
|
||||
@@ -1,13 +0,0 @@
|
||||
sudo sh $OPENAIR1_DIR/xio_script.sh
|
||||
sh stop_rf.sh
|
||||
sh start_rf.sh
|
||||
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 0 0 1 # dump Config
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 6 110 110 100 100 #Set TX gains
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 2 26 100 #Card v2_10 synched to v2_19
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 14 0 #SET RX RF Mode
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 32 1 #Set DLSCH Transmission Mod
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 1 0 0 #Start Primary Clusterhead
|
||||
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/SCOPE/lte_scope_ul 0 0 &
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/SCOPE/lte_scope_ul 0 1 &
|
||||
@@ -1,10 +0,0 @@
|
||||
sudo sh $OPENAIR1_DIR/xio_script.sh
|
||||
sh stop_rf.sh
|
||||
sh start_rf.sh
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 0 1 1
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 6 110 110 100 100
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 2 26 100 #Card v2_10 synched to v2_19
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 14 0
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 32 2
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 1 1 0
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
cd USERSPACE_TOOLS/OPENAIR_RF
|
||||
./openair_rf_cbmimo1_lte 0 4 1
|
||||
rmmod -f openair_rf
|
||||
cd ../..
|
||||
make install_cbmimo1_softmodem_lte_emos_l2
|
||||
cd USERSPACE_TOOLS/OPENAIR_RF
|
||||
./openair_rf_cbmimo1_lte 0 0 1 1
|
||||
./openair_rf_cbmimo1_lte 0 6 137 137 140 140
|
||||
./openair_rf_cbmimo1_lte 0 14 2
|
||||
./openair_rf_cbmimo1_lte 0 32 6
|
||||
source /opt/XIO2000/xio_script.sh
|
||||
./openair_rf_cbmimo1_lte 0 1 1 0
|
||||
cd ../..
|
||||
@@ -1,10 +0,0 @@
|
||||
gpsd /dev/ttyUSB0
|
||||
cd USERSPACE_TOOLS/OPENAIR_RF
|
||||
|
||||
./openair_rf_cbmimo1_lte 0 4 1
|
||||
rmmod -f openair_rf
|
||||
cd ../..
|
||||
make install_cbmimo1_softmodem_lte_emos_l2
|
||||
cd EMOS/LTE/GUI
|
||||
./emos_gui &
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
sudo insmod $OPENAIR2_DIR/RRC/LITE/MESSAGES/asn1_msg_kern.ko
|
||||
sudo insmod $OPENAIR1_DIR/ARCH/CBMIMO1/DEVICE_DRIVER/openair_rf_softmodem.ko
|
||||
@@ -1,13 +0,0 @@
|
||||
sh $OPENAIR1_DIR/xio_script.sh
|
||||
cd ../USERSPACE_TOOLS/OPENAIR_RF
|
||||
./openair_rf_cbmimo1_lte 0 4 1
|
||||
rmmod -f openair_rf
|
||||
cd ../..
|
||||
make install_cbmimo1_softmodem
|
||||
cd USERSPACE_TOOLS/OPENAIR_RF
|
||||
./openair_rf_cbmimo1_lte 0 0 1 1
|
||||
./openair_rf_cbmimo1_lte 0 26 100
|
||||
./openair_rf_cbmimo1_lte 0 6 150 150 140 140
|
||||
./openair_rf_cbmimo1_lte 0 14 0
|
||||
./openair_rf_cbmimo1_lte 0 8 1
|
||||
cd ../../LAUNCH_SCRIPTS
|
||||
@@ -1,18 +0,0 @@
|
||||
sudo sh $OPENAIR1_DIR/xio_script.sh
|
||||
sh stop_rf.sh
|
||||
sh start_rf.sh
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 0 0 1 # dump config
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 6 100 100 100 100 #Set TX gains
|
||||
#./openair_rf_cbmimo1_lte 0 25 0
|
||||
#./openair_rf_cbmimo1_lte 0 15 101 # Card v15 synched to card v38
|
||||
#./openair_rf_cbmimo1_lte 0 15 117 # Card v15 synched to card v5
|
||||
#./openair_rf_cbmimo1_lte 0 15 135 # Card v37 synched to card v5
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 15 89 # Card v42 synched to card v43
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 15 85 # Card v47 synched to card v43
|
||||
#./openair_rf_cbmimo1_lte 0 26 400
|
||||
#$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 15 103 # Card v47 synched to card v42
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 15 110 # Card v42 synched to card v47
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 14 0 #RF mode 0 = mixer low gain, lna off
|
||||
#./openair_rf_cbmimo1_lte 0 14 1 #RF mode 1 = mixer low gain, lna on
|
||||
#./openair_rf_cbmimo1_lte 0 14 2 #RF mode 2 = mixer high gain, lna on
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 3 1 0 #Start Node - param 0/1
|
||||
@@ -1,14 +0,0 @@
|
||||
sudo sh $OPENAIR1_DIR/xio_script.sh
|
||||
sh stop_rf.sh
|
||||
sh start_rf.sh
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 0 0 1
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 6 100 100 100 100
|
||||
#./openair_rf_cbmimo1_lte 0 25 0
|
||||
#./openair_rf_cbmimo1_lte 0 15 101 # Card v15 synched to card v38
|
||||
#./openair_rf_cbmimo1_lte 0 15 117 # Card v15 synched to card v5
|
||||
#./openair_rf_cbmimo1_lte 0 15 135 # Card v37 synched to card v5
|
||||
#./openair_rf_cbmimo1_lte 0 26 400
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 14 0 #RF mode 0 = mixer low gain, lna off
|
||||
#./openair_rf_cbmimo1_lte 0 14 1 #RF mode 1 = mixer low gain, lna on
|
||||
#./openair_rf_cbmimo1_lte 0 14 2 #RF mode 2 = mixer high gain, lna on
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 3 1 1
|
||||
@@ -1,7 +0,0 @@
|
||||
killall lte_scope
|
||||
killall lte_scope_ul
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OPENAIR_RF/openair_rf_cbmimo1_lte 0 4 1
|
||||
sudo rmmod -f nasmesh
|
||||
sudo rmmod -f openair_rf
|
||||
sudo rmmod -f asn1_msg_kern
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
sleeptest:lxrt+sem+mbx+msg+fifos:!./sleeptest;sleep 1;popall:control_c
|
||||
synctest:lxrt+sem+mbx+msg+fifos:!./synctest -V;sleep 1;popall:control_c
|
||||
condtest:lxrt+sem+mbx+msg+fifos:!sudo ./condtest;sleep 1;popall:control_c
|
||||
msg_test:lxrt+sem+mbx+msg+fifos:!sudo ./msg_test;sleep 1;popall:control_c
|
||||
msg_many:lxrt+sem+mbx+msg+fifos:!sudo ./msg_test;sleep 1;popall:control_c
|
||||
eNB:lxrt+sem+mbx+msg+fifos:!sudo ./synctest;sleep 1;popall:control_c
|
||||
eNB_test:lxrt+sem+mbx+msg+smi:!sudo ./lte-softmodem -S -F enb2tx;sleep 1;popall:control_c
|
||||
UE:lxrt+sem+mbx+msg+fifos:!sudo ./synctest -U -d -T 108;sleep 1;popall:control_c
|
||||
UE0:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 2680000000 -V -K /tmp/itti_UE0.log;sleep 1;popall:control_c
|
||||
#EXMIMO2 card 5
|
||||
#UE0_smbv:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907598252 -V;sleep 1;popall:control_c
|
||||
#EXMIMO2 card 24
|
||||
#UE0_smbv:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907595776 -V;sleep 1;popall:control_c
|
||||
#EXMIMO2 card 38
|
||||
#UE0_smbv:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907592704 -V;sleep 1;popall:control_c
|
||||
#EXMIMO2 card 39
|
||||
UE0_smbv:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 2679998592 -V;sleep 1;popall:control_c
|
||||
UE850:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 859498000 -F ex2_850;sleep 1;popall:control_c
|
||||
eNB850:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -d -C 859500000 -F ex2_850;sleep 1;popall:control_c
|
||||
UE0noL2:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600480 --no-L2-connect;sleep 1;popall:control_c
|
||||
UE0calib:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1912600000 --calib-ue-rx -70 ;sleep 1;popall:control_c
|
||||
UE0calibmed:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1912600000 --calib-ue-rx-med -70 ;sleep 1;popall:control_c
|
||||
UE0calibbyp:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1912600000 --calib-ue-rx-byp -70 ;sleep 1;popall:control_c
|
||||
UE0prach:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1912606900 -F ue1 --debug-ue-prach;sleep 1;popall:control_c
|
||||
UE1:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue1 ;sleep 1;popall:control_c
|
||||
UE1prach:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue1 --debug-ue-prach;sleep 1;popall:control_c
|
||||
UE1noL2:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue1 --no-L2-connect;sleep 1;popall:control_c
|
||||
UE2:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue2;sleep 1;popall:control_c
|
||||
UE2prach:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue2 --debug-ue-prach;sleep 1;popall:control_c
|
||||
UE2noL2:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -U -d -C 1907600000 -F ue2 --no-L2-connect;sleep 1;popall:control_c
|
||||
#eNB0:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -C 1907600000 -d -V;sleep 1;popall:control_c
|
||||
#eNB0:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -C 1907598252 -d -V;sleep 1;popall:control_c
|
||||
eNB0:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -d -O../../PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.conf -V -K /tmp/itti_eNB0.log;sleep 1;popall:control_c
|
||||
eNB1:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -C 2680000000 -r 50 -d -V;sleep 1;popall:control_c
|
||||
eNB2:lxrt+sem+mbx+msg+fifos:!sudo ./lte-softmodem -C 2680000000 -r 100 -d -V;sleep 1;popall:control_c
|
||||
dot11:lxrt+sem+mbx+msg+fifos:!sudo ./dot11 -C 1907600000 -d;sleep 1;popall:control_c
|
||||
dot11_tx_test: lxrt+sem+mbx+msg+fifos:!sudo ./dot11 -C 1907600000 -d -t;sleep 1;popall:control_c
|
||||
eNB2_750:lxrt+sem+mbx+msg+fifos:!sudo ./synctest_eNB -C 746000000 -F enb1tx_750 -d;sleep 1;popall:control_c
|
||||
eNB2_1900:lxrt+sem+mbx+msg+fifos:!sudo ./synctest_eNB -C 19076000000 -F enb1tx_1900 -d;sleep 1;popall:control_c
|
||||
emos-raw:lxrt+sem+mbx+msg+fifos:!sudo ./emos-raw -d -V;sleep 1;popall:control_c
|
||||
@@ -1,64 +0,0 @@
|
||||
[*]
|
||||
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
||||
[*] Wed Sep 9 13:46:33 2015
|
||||
[*]
|
||||
[dumpfile] "/homes/kaltenbe/openair_dump_eNB_exmimo2_sequans.vcd"
|
||||
[dumpfile_mtime] "Mon Sep 7 15:31:31 2015"
|
||||
[dumpfile_size] 894802540
|
||||
[savefile] "/homes/kaltenbe/Devel/openair/openair4G/trunk/targets/RT/USER/eNB_exmimo2.gtkw"
|
||||
[timestart] 362571890000
|
||||
[size] 1855 1056
|
||||
[pos] -176 -45
|
||||
*-21.066544 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
||||
[sst_width] 257
|
||||
[signals_width] 230
|
||||
[sst_expanded] 1
|
||||
[sst_vpaned_height] 262
|
||||
@420
|
||||
variables.daq_mbox[63:0]
|
||||
variables.diff2[63:0]
|
||||
@28
|
||||
functions.rt_sleep
|
||||
@24
|
||||
variables.missed_slot_enb[63:0]
|
||||
variables.hw_subframe[63:0]
|
||||
variables.hw_frame[63:0]
|
||||
variables.frame_number_TX_eNB[63:0]
|
||||
variables.frame_number_RX_eNB[63:0]
|
||||
@28
|
||||
functions.eNB_thread_rx0
|
||||
functions.eNB_thread_tx0
|
||||
functions.eNB_thread_rx1
|
||||
functions.eNB_thread_tx1
|
||||
functions.eNB_thread_rx2
|
||||
functions.eNB_thread_tx2
|
||||
functions.eNB_thread_rx3
|
||||
functions.eNB_thread_tx3
|
||||
functions.eNB_thread_rx4
|
||||
functions.eNB_thread_tx4
|
||||
functions.eNB_thread_rx5
|
||||
functions.eNB_thread_tx5
|
||||
functions.eNB_thread_rx6
|
||||
functions.eNB_thread_tx6
|
||||
functions.eNB_thread_rx7
|
||||
functions.eNB_thread_tx7
|
||||
functions.eNB_thread_rx8
|
||||
functions.eNB_thread_tx8
|
||||
functions.eNB_thread_rx9
|
||||
functions.eNB_thread_tx9
|
||||
functions.phy_procedures_eNb_tx
|
||||
functions.phy_procedures_eNb_rx
|
||||
functions.phy_enb_prach_rx
|
||||
functions.phy_eNB_dlsch_encoding
|
||||
functions.phy_eNB_dlsch_modulation
|
||||
functions.phy_eNB_dlsch_scrambling
|
||||
functions.phy_enb_pdcch_tx
|
||||
@29
|
||||
functions.phy_enb_ulsch_decoding
|
||||
@28
|
||||
functions.phy_enb_rs_tx
|
||||
functions.rrc_mac_config_req
|
||||
functions.rlc_data_req
|
||||
functions.udp_enb_task
|
||||
[pattern_trace] 1
|
||||
[pattern_trace] 0
|
||||
@@ -1,10 +0,0 @@
|
||||
# this file contains the calibration values to compute the RSSI
|
||||
# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning
|
||||
# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB
|
||||
# this is for Express MIMO2 without any additional RF frontend
|
||||
# high gain
|
||||
103 107 106 104
|
||||
# med gain
|
||||
98 101 100 98
|
||||
# low gain (byp)
|
||||
94 97 96 94
|
||||
@@ -1,10 +0,0 @@
|
||||
# this file contains the calibration values to compute the RSSI
|
||||
# we can use three different gain stages (high, low, med) as well as a gain factor for fine tuning
|
||||
# the three lines in this file gives the total rx gain in dB for the three gain stages if the rx gain is set to 30dB
|
||||
# this is for Express MIMO2 without any additional RF frontend
|
||||
# high gain
|
||||
128 128 128 126
|
||||
# med gain
|
||||
122 123 123 120
|
||||
# low gain (byp)
|
||||
116 117 116 116
|
||||
@@ -1,12 +0,0 @@
|
||||
sudo rmmod openair_rf
|
||||
sudo insmod $OPENAIR1_DIR/ARCH/CBMIMO1/DEVICE_DRIVER/openair_rf_softmodem.ko
|
||||
sudo mknod /dev/openair0 c 127 0
|
||||
sudo chmod a+rw /dev/openair0
|
||||
|
||||
$OPENAIR1_DIR/USERSPACE_TOOLS/OAI_FW_INIT/updatefw -f $OPENAIR1_DIR/USERSPACE_TOOLS/OAI_FW_INIT/main -s 0x43fffff0
|
||||
sudo rmmod openair_rf
|
||||
sudo insmod $OPENAIR1_DIR/ARCH/CBMIMO1/DEVICE_DRIVER/openair_rf_softmodem.ko
|
||||
|
||||
sudo rmmod nasmesh
|
||||
sudo insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
PCI=`lspci -m | grep Xilinx`
|
||||
if [ -z "$PCI" ]; then
|
||||
echo "No card found. Stopping!"
|
||||
return
|
||||
fi
|
||||
|
||||
## This part corrects the wrong configuration of the endpoint done by the bios in some machines
|
||||
echo "$PCI" | while read config_reg; do
|
||||
SLOT_NUMBER=`echo $config_reg | awk -F\" '{print $1}'`
|
||||
sudo setpci -s $SLOT_NUMBER 60.b=10
|
||||
done
|
||||
|
||||
load_module() {
|
||||
mod_name=${1##*/}
|
||||
mod_name=${mod_name%.*}
|
||||
if awk "/$mod_name/ {found=1 ;exit} END {if (found!=1) exit 1}" /proc/modules
|
||||
then
|
||||
echo "module $mod_name already loaded: I remove it first"
|
||||
sudo rmmod $mod_name
|
||||
fi
|
||||
echo loading $mod_name
|
||||
sudo insmod $1
|
||||
}
|
||||
|
||||
load_module $OPENAIR_TARGETS/ARCH/EXMIMO/DRIVER/eurecom/openair_rf.ko
|
||||
sleep 1
|
||||
|
||||
if [ ! -e /dev/openair0 ]; then
|
||||
sudo mknod /dev/openair0 c 127 0
|
||||
sudo chmod a+rw /dev/openair0
|
||||
fi
|
||||
|
||||
DEVICE=`echo $PCI | awk -F\" '{print $(NF-1)}' | awk '{print $2}'`
|
||||
DEVICE_SWID=${DEVICE:2:2}
|
||||
if [ $DEVICE_SWID == '08' ]; then
|
||||
echo "Using firmware version 8"
|
||||
$OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2
|
||||
else
|
||||
if [ $DEVICE_SWID == '09' ]; then
|
||||
echo "Using firmware version 9"
|
||||
$OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v9
|
||||
else
|
||||
if [ $DEVICE_SWID == '0a' ]; then
|
||||
echo "Using firware version 10"
|
||||
#$OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw -s 0x43fffff0 -b -f $OPENAIR0_DIR/express-mimo/software/sdr/exmimo2/sdr_expressmimo2
|
||||
#$OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10_spectra
|
||||
$OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
|
||||
else
|
||||
echo 'No corresponding firmware found'
|
||||
return
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#load_module $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
|
||||
|
||||
#if [ "$1" = "eNB" ]; then
|
||||
# echo "bring up oai0 interface for enb"
|
||||
# sudo ifconfig oai0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||
# $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -s 10.0.1.1 -t 10.0.1.9 -r 1
|
||||
#else
|
||||
# if [ "$1" = "UE" ]; then
|
||||
# echo "bring up oai0 interface for UE"
|
||||
# sudo ifconfig oai0 10.0.1.9 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||
# $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -s 10.0.1.9 -t 10.0.1.1 -r 1
|
||||
# fi
|
||||
#fi
|
||||
@@ -917,14 +917,6 @@ void init_eNB_proc(int inst) {
|
||||
pthread_mutex_init( &proc->mutex_RU_PRACH_br,NULL);
|
||||
pthread_cond_init( &proc->cond_prach_br, NULL);
|
||||
pthread_attr_init( &proc->attr_prach_br);
|
||||
#ifndef DEADLINE_SCHEDULER
|
||||
attr0 = &L1_proc->attr;
|
||||
attr1 = &L1_proc_tx->attr;
|
||||
attr_prach = &proc->attr_prach;
|
||||
attr_prach_br = &proc->attr_prach_br;
|
||||
// attr_td = &proc->attr_td;
|
||||
// attr_te = &proc->attr_te;
|
||||
#endif
|
||||
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
init_te_thread(eNB);
|
||||
|
||||
@@ -1082,7 +1082,7 @@ static void do_ru_synch(RU_t *ru) {
|
||||
ru->rfdevice.openair0_cfg->tx_freq[i] = temp_freq1;
|
||||
}
|
||||
|
||||
ru->rfdevice.trx_set_freq_func(&ru->rfdevice,ru->rfdevice.openair0_cfg,0);
|
||||
ru->rfdevice.trx_set_freq_func(&ru->rfdevice,ru->rfdevice.openair0_cfg);
|
||||
|
||||
while ((ru->in_synch ==0)&&(!oai_exit)) {
|
||||
// read in frame
|
||||
@@ -2277,15 +2277,6 @@ void init_RU_proc(RU_t *ru) {
|
||||
pthread_mutex_init( &proc->mutex_rf_tx, NULL);
|
||||
pthread_cond_init( &proc->cond_rf_tx, NULL);
|
||||
#endif
|
||||
#ifndef DEADLINE_SCHEDULER
|
||||
attr_FH = &proc->attr_FH;
|
||||
attr_FH1 = &proc->attr_FH1;
|
||||
attr_prach = &proc->attr_prach;
|
||||
attr_synch = &proc->attr_synch;
|
||||
attr_asynch = &proc->attr_asynch_rxtx;
|
||||
attr_emulateRF = &proc->attr_emulateRF;
|
||||
attr_prach_br = &proc->attr_prach_br;
|
||||
#endif
|
||||
|
||||
if (ru->has_ctrl_prt == 1) pthread_create( &proc->pthread_ctrl, attr_ctrl, ru_thread_control, (void*)ru );
|
||||
else {
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
#define CONFIG_HLP_PRB "Set the PRB, valid values: 6, 25, 50, 100 \n"
|
||||
#define CONFIG_HLP_DLSHIFT "dynamic shift for LLR compuation for TM3/4 (default 0)\n"
|
||||
#define CONFIG_HLP_USRP_ARGS "set the arguments to identify USRP (same syntax as in UHD)\n"
|
||||
#define CONFIG_HLP_DMAMAP "sets flag for improved EXMIMO UE performance\n"
|
||||
#define CONFIG_HLP_DMAMAP "use DMA memory mapping\n"
|
||||
#define CONFIG_HLP_TDD "Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).\n"
|
||||
#define CONFIG_HLP_TADV "Set timing_advance\n"
|
||||
|
||||
|
||||
@@ -203,22 +203,6 @@ void init_thread(int sched_runtime,
|
||||
int sched_fifo,
|
||||
cpu_set_t *cpuset,
|
||||
char *name) {
|
||||
#ifdef DEADLINE_SCHEDULER
|
||||
|
||||
if (sched_runtime!=0) {
|
||||
struct sched_attr attr= {0};
|
||||
attr.size = sizeof(attr);
|
||||
attr.sched_policy = SCHED_DEADLINE;
|
||||
attr.sched_runtime = sched_runtime;
|
||||
attr.sched_deadline = sched_deadline;
|
||||
attr.sched_period = 0;
|
||||
AssertFatal(sched_setattr(0, &attr, 0) == 0,
|
||||
"[SCHED] %s thread: sched_setattr failed %s \n", name, strerror(errno));
|
||||
LOG_I(HW,"[SCHED][eNB] %s deadline thread %lu started on CPU %d\n",
|
||||
name, (unsigned long)gettid(), sched_getcpu());
|
||||
}
|
||||
|
||||
#else
|
||||
int settingPriority = 1;
|
||||
|
||||
if (checkIfFedoraDistribution())
|
||||
@@ -250,7 +234,6 @@ void init_thread(int sched_runtime,
|
||||
}
|
||||
|
||||
CPU_FREE(cset);
|
||||
#endif
|
||||
}
|
||||
|
||||
void init_UE(int nb_inst,
|
||||
@@ -637,7 +620,7 @@ static void *UE_thread_synch(void *arg) {
|
||||
break;
|
||||
}
|
||||
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0);
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0]);
|
||||
//UE->rfdevice.trx_set_gains_func(&openair0,&openair0_cfg[0]);
|
||||
//UE->rfdevice.trx_stop_func(&UE->rfdevice);
|
||||
sleep(1);
|
||||
@@ -721,7 +704,7 @@ static void *UE_thread_synch(void *arg) {
|
||||
openair0_cfg[UE->rf_map.card].autocal[UE->rf_map.chain+i] = 1;
|
||||
}
|
||||
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0);
|
||||
UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0]);
|
||||
}// initial_sync=0
|
||||
|
||||
break;
|
||||
@@ -858,10 +841,6 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
(UE->frame_parms.frame_type == FDD) )
|
||||
phy_procedures_UE_TX(UE,proc,0,0,UE->mode);
|
||||
|
||||
if ((subframe_select( &UE->frame_parms, proc->subframe_tx) == SF_S) &&
|
||||
(UE->frame_parms.frame_type == TDD))
|
||||
phy_procedures_UE_S_TX(UE,0,0);
|
||||
|
||||
proc->instance_cnt_rxtx--;
|
||||
|
||||
if (IS_SOFTMODEM_RFSIM) {
|
||||
|
||||
@@ -703,9 +703,6 @@ int main( int argc, char **argv ) {
|
||||
printf("error reading from file\n");
|
||||
}
|
||||
|
||||
//p_exmimo_config->framing.tdd_config = TXRXSWITCH_TESTRX;
|
||||
|
||||
|
||||
if(IS_SOFTMODEM_DOSCOPE)
|
||||
load_softscope("ue",NULL);
|
||||
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
[*]
|
||||
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
||||
[*] Tue Jun 23 10:22:38 2015
|
||||
[*]
|
||||
[dumpfile] "/tmp/openair_dump_UE.vcd"
|
||||
[dumpfile_mtime] "Tue Jun 23 10:21:56 2015"
|
||||
[dumpfile_size] 15561726
|
||||
[savefile] "/home/stevens/openair4G/targets/RT/USER/ue_exmimo2.gtkw"
|
||||
[timestart] 10448200000
|
||||
[size] 1215 640
|
||||
[pos] 105 102
|
||||
*-23.292629 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
||||
[sst_width] 224
|
||||
[signals_width] 262
|
||||
[sst_expanded] 1
|
||||
[sst_vpaned_height] 155
|
||||
@24
|
||||
variables.hw_subframe[63:0]
|
||||
variables.daq_mbox[63:0]
|
||||
variables.diff2[63:0]
|
||||
variables.ue_rx_offset[63:0]
|
||||
variables.rx_offset_mbox[63:0]
|
||||
@28
|
||||
functions.rt_sleep
|
||||
@24
|
||||
variables.subframe_number_RX_UE[63:0]
|
||||
variables.subframe_number_TX_UE[63:0]
|
||||
variables.slot_number_RX_UE[63:0]
|
||||
variables.slot_number_RX_UE[63:0]
|
||||
@28
|
||||
functions.ue_thread_rx
|
||||
functions.ue_thread_tx
|
||||
@420
|
||||
variables.ue_inst_cnt_rx[63:0]
|
||||
@421
|
||||
variables.ue_inst_cnt_tx[63:0]
|
||||
@28
|
||||
functions.phy_procedures_ue_rx
|
||||
functions.phy_procedures_ue_tx
|
||||
@24
|
||||
variables.frame_number_RX_UE[63:0]
|
||||
variables.frame_number_TX_UE[63:0]
|
||||
@28
|
||||
functions.ue_slot_fep
|
||||
functions.lte_ue_measurement_procedures
|
||||
functions.ue_rrc_measurements
|
||||
functions.ue_gain_control
|
||||
functions.ue_adjust_synch
|
||||
functions.lte_ue_pbch_procedures
|
||||
functions.lte_ue_pdcch_procedures
|
||||
functions.rx_pdcch
|
||||
functions.dci_decoding
|
||||
functions.phy_ue_generate_prach
|
||||
functions.phy_ue_ulsch_encoding
|
||||
functions.phy_ue_ulsch_modulation
|
||||
functions.phy_ue_ulsch_scrambling
|
||||
functions.phy_ue_config_sib2
|
||||
[pattern_trace] 1
|
||||
[pattern_trace] 0
|
||||
Reference in New Issue
Block a user