#!/bin/bash #/* # * 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.0 (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 run_enb_s1_exmimo # brief run script for eNB EXMIMO. # author Lionel GAUTHIER # company Eurecom # email: lionel.gauthier@eurecom.fr ################################ # include helper functions ################################ THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) source $THIS_SCRIPT_PATH/build_helper function help() { echo_error " " echo_error "Usage: run_enb_s1_exmimo -c config_file [OPTION]..." echo_error "Run the eNB executable, hardware target is EXMIMO." echo_error " " echo_error "Mandatory arguments:" echo_error " -c, -C, --config-file eNB_config_file eNB config file, (see $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF)" echo_error " " echo_error "Options:" echo_error "Mandatory arguments to long options are mandatory for short options too." echo_error " -g, --gdb Run with GDB." echo_error " -h, --help Print this help." echo_error " -K, --itti-dump-file filename ITTI dump file containing all ITTI events occuring during EPC runtime.(can omit file name if last argument)" echo_error " -M, --target-dl-mcs mcs Downlink target MCS." echo_error " -V, --vcd Dump timings of processing in a GTKWave compliant file format." echo_error " -S, --enable-missed-slot Continue execution in case of missed slot." echo_error " -T, --target-ul-mcs mcs Uplink target MCS." echo_error " -W, --wireshark-l2 Dump MAC frames for visualization with wireshark." echo_error " You need to open Wireshark, open the preferences, and check try heuristics for the UDP protocol, MAC-LTE, RLC-LTE," echo_error " and PDCP-LTE. Then capture for all the interfaces with the following filters: s1ap or lte_rrc or mac-lte or rlc-lte" echo_error " or pdcp-lte. Note the L2 pdus are transmitted to the local interface." echo_error " -x, --xforms Run XFORMS scope windows." } function main() { local -i run_gdb=0 local exe_arguments="" until [ -z "$1" ] do case "$1" in -c | -C | --config-file) CONFIG_FILE=$2 # may be relative path if [ -f $(dirname $(readlink -f $0))/$CONFIG_FILE ]; then CONFIG_FILE=$(dirname $(readlink -f $0))/$CONFIG_FILE echo "setting config file to: $CONFIG_FILE" CONFIG_FILE_ACCESS_OK=1 else # may be absolute path if [ -f $CONFIG_FILE ]; then echo "setting config file to: $CONFIG_FILE" else echo_fatal "config file $CONFIG_FILE not found" fi fi exe_arguments="$exe_arguments -O $CONFIG_FILE -F $THIS_SCRIPT_PATH/exmimo2_2arxg.lime" shift 2; ;; -g | --gdb) run_gdb=1 echo "setting GDB flag to: $GDB" shift; ;; -h | --help) help shift; exit 0 ;; -K | --itti-dump-file) ITTI_DUMP_FILE=$2 # can omit file name if last arg on the line if [ "x$ITTI_DUMP_FILE" = "x" ]; then ITTI_DUMP_FILE="/tmp/enb_s1_exmimo_itti.log" shift 1; else shift 2; fi echo "setting ITTI dump file to: $ITTI_DUMP_FILE" exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE" ;; -M | --target-dl-mcs) echo "setting target dl MCS to $2" exe_arguments="$exe_arguments -m $2" shift 2; ;; -V | --vcd) "setting gtk-wave output" exe_arguments="$exe_arguments -V /tmp/oai_gtk_wave.vcd" shift ; ;; -S | --enable-missed-slot) echo "setting continue even if missed slot" exe_arguments="$exe_arguments -S" shift ; ;; -T | --target-ul-mcs) echo "setting target ul MCS to $2" exe_arguments="$exe_arguments -t $2" shift 2; ;; -W | ----wireshark-l2) echo "setting l2 pcap dump output" exe_arguments="$exe_arguments -W" shift ; ;; -x | --xforms) exe_arguments="$exe_arguments -d" echo "setting xforms to: $XFORMS" shift; ;; *) echo "Unknown option $1" help exit 0 ;; esac done set_openair_env cecho "OPENAIR_DIR = $OPENAIR_DIR" $green if [ ! -e $OPENAIR_DIR/targets/bin/lte-softmodem ]; then echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/lte-softmodem executable" fi if [ ! -e $OPENAIR_DIR/targets/bin/updatefw ]; then echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/updatefw executable" fi if [ ! -e $OPENAIR_DIR/targets/bin/openair_rf.ko ]; then echo_fatal "Cannot find $OPENAIR_DIR/targets/bin/openair_rf.ko kernel module" fi for i in `seq 0 64`; do have_rtfX=`ls /dev/ |grep -c rtf$i`; if [ "$have_rtfX" -eq 0 ] ; then $SUDO mknod -m 666 /dev/rtf$i c 150 $i; fi; done $THIS_SCRIPT_PATH/init_exmimo2 if [ $run_gdb -eq 0 ]; then exec $OPENAIR_DIR/targets/bin/lte-softmodem `echo $exe_arguments` 2>&1 > /tmp/lte_softmodem.stdout.txt else touch ~/.gdb_lte_softmodem chmod 777 ~/.gdb_lte_softmodem echo "file $OPENAIR_DIR/targets/bin/lte-softmodem" > ~/.gdb_lte_softmodem echo "set args $exe_arguments" >> ~/.gdb_lte_softmodem echo "run" >> ~/.gdb_lte_softmodem cat ~/.gdb_lte_softmodem gdb -n -x ~/.gdb_lte_softmodem 2>&1 > /tmp/gdb_lte_softmodem.stdout.txt fi } main "$@"