#!/bin/bash set -euo pipefail PREFIX=/opt/oai-lte-ue # Based another env var, pick one template to use if [[ -v USE_NFAPI ]]; then ln -s $PREFIX/etc/ue.nfapi.conf $PREFIX/etc/ue.conf; fi # Only this template will be manipulated and the USIM one! CONFIG_FILES=`ls $PREFIX/etc/ue.conf $PREFIX/etc/ue_usim.conf || true` for c in ${CONFIG_FILES}; do # grep variable names (format: ${VAR}) from template to be rendered VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs) # create sed expressions for substituting each occurrence of ${VAR} # with the value of the environment variable "VAR" EXPRESSIONS="" for v in ${VARS}; do NEW_VAR=`echo $v | sed -e "s#@##g"` if [[ "${!NEW_VAR}x" == "x" ]]; then echo "Error: Environment variable '${NEW_VAR}' is not set." \ "Config file '$(basename $c)' requires all of $VARS." exit 1 fi EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g" done EXPRESSIONS="${EXPRESSIONS#';'}" # render template and inline replace config file sed -i "${EXPRESSIONS}" ${c} done #now generate USIM files # At this point all operations will be run from $PREFIX! cd $PREFIX $PREFIX/bin/conf2uedata -c $PREFIX/etc/ue_usim.conf -o $PREFIX # Load the USRP binaries if [[ -v USE_B2XX ]]; then $PREFIX/bin/uhd_images_downloader.py -t b2xx elif [[ -v USE_X3XX ]]; then $PREFIX/bin/uhd_images_downloader.py -t x3xx elif [[ -v USE_N3XX ]]; then $PREFIX/bin/uhd_images_downloader.py -t n3xx fi # in case we have conf file, append new_args=() while [[ $# -gt 0 ]]; do new_args+=("$1") shift done if [[ -v USE_NFAPI ]]; then new_args+=("-O") new_args+=("$PREFIX/etc/ue.conf") fi echo "==================================" echo "== Starting LTE UE soft modem" if [[ -v USE_ADDITIONAL_OPTIONS ]]; then echo "Additional option(s): ${USE_ADDITIONAL_OPTIONS}" for word in ${USE_ADDITIONAL_OPTIONS}; do new_args+=("$word") done echo "${new_args[@]}" exec "${new_args[@]}" else echo "${new_args[@]}" exec "${new_args[@]}" fi