# Fibocom FM150-AE / FM160-EAU (Shared ID)

# LTE bandwidth conversion based on RB number
convert_bw_lte() {
  case "${1}" in
    "6") echo "1.4 MHz";;
    "15") echo "3 MHz";;
    "25") echo "5 MHz";;
    "50") echo "10 MHz";;
    "75") echo "15 MHz";;
    "100") echo "20 MHz";;
    "125") echo "25 MHz";;
    "150") echo "30 MHz";;
    "200") echo "40 MHz";;
    "250") echo "50 MHz";;
    "300") echo "60 MHz";;
    "400") echo "80 MHz";;
    "450") echo "90 MHz";;
    "500") echo "100 MHz";;
    "1000") echo "200 MHz";;
    "2000") echo "400 MHz";;
    # Non-standard values
    "275") echo "15 MHz";;
    "1350") echo "20 MHz";;
    "3175") echo "15 MHz";;
    "9360") echo "10 MHz";;
    *) echo "";;
  esac
}

# NR bandwidth conversion according to documentation
convert_bw_nr() {
  case "${1}" in
    "0") echo "5 MHz";;
    "10") echo "10 MHz";;
    "15") echo "15 MHz";;
    "20") echo "20 MHz";;
    "25") echo "25 MHz";;
    "30") echo "30 MHz";;
    "40") echo "40 MHz";;
    "50") echo "50 MHz";;
    "60") echo "60 MHz";;
    "80") echo "80 MHz";;
    "90") echo "90 MHz";;
    "100") echo "100 MHz";;
    "200") echo "200 MHz";;
    "400") echo "400 MHz";;
    *) echo "";;
  esac
}

# Get cell information
O=$(sms_tool -d $DEVICE at "AT+GTCCINFO?;+GTCAINFO?")

# Set mode based on MODE_NUM
case "$MODE_NUM" in
  7*)
       if echo "$O" | grep -q -E '^LTE SCC|^SCC[0-9]:'; then
         MODE="LTE-A |"
       fi
       ;;
  11*)
       MODE="5G SA |"
       ;;
  13*) MODE="5G NSA |"
       ;;
esac

T_MODE=""

# Parse GTCCINFO to get service cell info
T1=$(echo "$O" | grep -A10 '+GTCCINFO:' | grep "1,[49],${COPS_MCC}" | head -1)
if [ -n "$T1" ]; then
  T_RAT=$(echo "$T1" | awk -F, '{print $2}')
  T=$(echo "$T1" | awk -F, '{print $5}')
  if [ -n "$T" ]; then
    T_DEC=$(printf "%d" "0x$T")
    T_HEX=$T
  fi

  # Process LTE cell information
  if [ "$T_RAT" = "4" ]; then
    T=$(echo "$T1" | awk -F, '{print $7}')  # earfcn
    if [ -n "$T" ]; then
      # Convert hex to decimal if needed
      if echo "$T" | grep -q '[A-Fa-f]'; then
        EARFCN=$(printf "%d" "0x$T")
      else
        EARFCN=$T
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $8}')  # physicalcellId
    if [ -n "$T" ]; then
      # Convert hex to decimal if needed
      if echo "$T" | grep -q '[A-Fa-f]'; then
        PCI=$(printf "%d" "0x$T")
      else
        PCI=$T
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $9}')  # band
    if [ -n "$T" ]; then
      T=$((T - 100))
      T_MODE="$(band4g $T)"
      PBAND="$(band4g $T)"
    fi

    T=$(echo "$T1" | awk -F, '{print $10}')  # bandwidth
    if [ -n "$T" ] && echo "$T" | grep -q '^[0-9]\+$' && [ "$T" -ne "0" ]; then
      BW=$(convert_bw_lte $T)
      if [ -n "$BW" ]; then
        DBW=" @$BW"
        PBAND="${PBAND}${DBW}"
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $11}')  # rssnr_value
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      SINR=$(echo "$T" | xargs | awk '{printf "%0.1f", $1/2 }')
    fi

    T=$(echo "$T1" | awk -F, '{print $13}')  # rsrp
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      RSRP=$((T - 141))
    fi

    T=$(echo "$T1" | awk -F, '{print $14}')  # rsrq
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-34)/2-3 }')
    fi

  # Process NR cell information
  elif [ "$T_RAT" = "9" ]; then
    T=$(echo "$T1" | awk -F, '{print $7}')  # narfcn
    if [ -n "$T" ]; then
      # Convert hex to decimal if needed
      if echo "$T" | grep -q '[A-Fa-f]'; then
        EARFCN=$(printf "%d" "0x$T")
      else
        EARFCN=$T
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $8}')  # physicalcellId
    if [ -n "$T" ]; then
      # Convert hex to decimal if needed
      if echo "$T" | grep -q '[A-Fa-f]'; then
        PCI=$(printf "%d" "0x$T")
      else
        PCI=$T
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $9}')  # band
    if [ -n "$T" ]; then
      T=$(echo "$T" | sed 's/^50//')
      T_MODE="$(band5g $T)"
      PBAND="$(band5g $T)"
    fi

    T=$(echo "$T1" | awk -F, '{print $10}')  # bandwidth
    if [ -n "$T" ] && echo "$T" | grep -q '^[0-9]\+$' && [ "$T" -ne "0" ]; then
      BW=$(convert_bw_nr $T)
      if [ -n "$BW" ]; then
        DBW=" @$BW"
        PBAND="${PBAND}${DBW}"
      fi
    fi

    T=$(echo "$T1" | awk -F, '{print $11}')  # ss_sinr
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      SINR=$(echo "$T" | xargs | awk '{printf "%0.1f", ($1-23)/2 }')
    fi

    T=$(echo "$T1" | awk -F, '{print $13}')  # ss_rsrp
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      RSRP=$((T - 157))
    fi

    T=$(echo "$T1" | awk -F, '{print $14}')  # ss_rsrq
    if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
      RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-87)/2 }')
    fi
  fi

  # Calculate signal strength percentage
  MAX_RSRP=-44
  MIN_RSRP=-140

  if [ -n "$RSRP" ] && echo "$RSRP" | grep -q '^-\?[0-9]\+$' && [ "$RSRP" -ge "$MIN_RSRP" ]; then
      if [ "$RSRP" -gt "$MAX_RSRP" ]; then
          signal=100
      else
          signal=$(echo "scale=0; ($RSRP - $MIN_RSRP) * 100 / ($MAX_RSRP - $MIN_RSRP)" | bc)
      fi
  else
      signal=0
  fi

  # Calculate RSSI from RSRP
  nRB=50

  if [ -n "$RSRP" ] && echo "$RSRP" | grep -q '^-\?[0-9]\+$'; then
    RSSI=$(echo "scale=2; $RSRP + 10 * l($nRB) / l(10)" | bc -l 2>/dev/null)
    if [ -n "$RSSI" ]; then
      RSSI=$(printf "%.0f" "$RSSI" 2>/dev/null)
    else
      RSSI=0
    fi
  else
    RSSI=0
  fi

  # Calculate CSQ and CSQ percentage
  if [ -n "$RSSI" ] && echo "$RSSI" | grep -q '^-\?[0-9]\+$' && [ "$RSSI" -ge -113 ]; then
      if [ "$RSSI" -gt -51 ]; then
          CSQ=31
      else
          CSQ=$(echo "($RSSI + 113) * 31 / 62" | bc)
          if [ "$CSQ" -gt 31 ]; then
              CSQ=31
          elif [ "$CSQ" -lt 0 ]; then
              CSQ=0
          fi
      fi
  else
      CSQ=0
  fi

  if [ "$CSQ" -ge 0 ] && [ "$CSQ" -le 31 ]; then
      CSQ_PER=$(echo "$CSQ * 100 / 31" | bc)
  else
      CSQ_PER=0
  fi
fi

# Process GTCAINFO to get carrier aggregation information
IFS="
"
IDX=1
# Handle both LTE PCC and PCC formats
LINES_LTE=$(echo "$O" | grep -E '^LTE PCC:|^PCC:')
LINES_NR=$(echo "$O" | grep -E '^NR PCC:')
[ -n "$LINES_LTE" -o -n "$LINES_NR" ] && T_MODE=""

T_4G_MODE=""
T_4G_PBAND=""
T_4G_PCI=""
T_4G_EARFCN=""

T_5G_MODE=""
T_5G_PBAND=""
T_5G_PCI=""
T_5G_EARFCN=""

# Process LTE PCC information
for LINE in $LINES_LTE; do
  # Format: LTE PCC: <band>,<physical cellId>,<earfcn>,<dl_bandwidth>,...
  # or:     PCC: <band>,<physical cellId>,<earfcn>,<dl_bandwidth>,...
  # Extract fields based on format
  if echo "$LINE" | grep -q "^LTE PCC:"; then
    T_BAND_NUM=$(echo "$LINE" | awk -F[:,] '{gsub(/[^0-9]/, "", $2); print $2}' | xargs)
    T_PCI=$(echo "$LINE" | awk -F[:,] '{print $3}' | xargs)
    T_EARFCN=$(echo "$LINE" | awk -F[:,] '{print $4}' | xargs)
    T_DBW=$(echo "$LINE" | awk -F[:,] '{print $5}' | xargs)
  else
    T_BAND_NUM=$(echo "$LINE" | awk -F[:,] '{gsub(/[^0-9]/, "", $1); print $2}' | xargs)
    T_PCI=$(echo "$LINE" | awk -F[:,] '{print $3}' | xargs)
    T_EARFCN=$(echo "$LINE" | awk -F[:,] '{print $4}' | xargs)
    T_DBW=$(echo "$LINE" | awk -F[:,] '{print $5}' | xargs)
  fi

  if [ -n "$T_BAND_NUM" ] && echo "$T_BAND_NUM" | grep -q '^[0-9]\+$'; then
    DBW=""
    if [ -n "$T_DBW" ] && echo "$T_DBW" | grep -q '^[0-9]\+$' && [ "$T_DBW" -ne "0" ]; then
      BW=$(convert_bw_lte $T_DBW)
      if [ -n "$BW" ]; then
        DBW=" @$BW"
      fi
    fi

    if [ "$T_BAND_NUM" -gt "100" ] && [ "$T_BAND_NUM" -lt "200" ]; then
      # Per documentation: 101 = Band 1, 102 = Band 2, etc.
      T_BAND=$((T_BAND_NUM - 100))
      T_4G_MODE="$(band4g ${T_BAND}) + "
      T_4G_PBAND="$(band4g ${T_BAND})${DBW}"
      T_4G_PCI="$T_PCI"
      T_4G_EARFCN="$T_EARFCN"
    fi
  fi
done

# Process NR PCC information
for LINE in $LINES_NR; do
  # Format: NR PCC: <band>,<physical cellId>,<narfcn>,<nr_dl_bandwidth>,...
  T_BAND_NUM=$(echo "$LINE" | awk -F[:,] '{gsub(/[^0-9]/, "", $2); print $2}' | xargs)
  T_PCI=$(echo "$LINE" | awk -F[:,] '{print $3}' | xargs)
  T_EARFCN=$(echo "$LINE" | awk -F[:,] '{print $4}' | xargs)
  T_DBW=$(echo "$LINE" | awk -F[:,] '{print $5}' | xargs)

  if [ -n "$T_BAND_NUM" ] && echo "$T_BAND_NUM" | grep -q '^[0-9]\+$'; then
    DBW=""
    if [ -n "$T_DBW" ] && echo "$T_DBW" | grep -q '^[0-9]\+$' && [ "$T_DBW" -ne "0" ]; then
      BW=$(convert_bw_nr $T_DBW)
      if [ -n "$BW" ]; then
        DBW=" @$BW"
      fi
    fi

    if [ "$T_BAND_NUM" -gt "500" ]; then
      # Per documentation: 501 = Band 1, 502 = Band 2, etc.
      T_BAND=$(echo "$T_BAND_NUM" | sed 's/^50//')
      T_5G_MODE="$(band5g ${T_BAND}) + "
      T_5G_PBAND="$(band5g ${T_BAND})${DBW}"
      T_5G_PCI="$T_PCI"
      T_5G_EARFCN="$T_EARFCN"
    fi
  fi
done

# If we didn't already set PBAND from GTCCINFO
if [ -z "$PBAND" ]; then
  if [ -n "$T_4G_PBAND" ]; then
    PBAND="$T_4G_PBAND"
    PCI="$T_4G_PCI"
    EARFCN="$T_4G_EARFCN"
  elif [ -n "$T_5G_PBAND" ]; then
    PBAND="$T_5G_PBAND"
    PCI="$T_5G_PCI"
    EARFCN="$T_5G_EARFCN"
  fi
fi

# Process Secondary Component Carriers (SCC)
IFS="
"
IDX=1
# Handle LTE SCC, bare SCC and NR SCC formats. Some Fibocom firmwares label a
# secondary carrier "NR SCC<n>:" even when it carries an LTE band (e.g. B28 with
# earfcn ~9360); the loop below classifies by band number, so include it here.
LINES=$(echo "$O" | grep -E '^LTE SCC[0-9]:|^NR SCC[0-9]:|^SCC[0-9]:')
for LINE in $LINES; do
  # Extract carrier number for reference
  CARRIER_NUM=$(echo "$LINE" | grep -oE 'SCC[0-9]:' | grep -oE '[0-9]')

  # Extract values according to documented format
  # SCC1:<scell_state>,<ul_configured>,<band>,<physical cellId>,<earfcn>,<dl_bandwidth>
  # or:  LTE SCC1:<scell_state>,<ul_configured>,<band>,<physical cellId>,<earfcn>,<dl_bandwidth>
  if echo "$LINE" | grep -q "^LTE SCC"; then
    T_STATE=$(echo "$LINE" | awk -F[:,] '{print $2}' | xargs)
    T_UL_CONFIG=$(echo "$LINE" | awk -F[:,] '{print $3}' | xargs)
    T_BAND_NUM=$(echo "$LINE" | awk -F[:,] '{print $4}' | xargs)
    T_PCI=$(echo "$LINE" | awk -F[:,] '{print $5}' | xargs)
    T_EARFCN=$(echo "$LINE" | awk -F[:,] '{print $6}' | xargs)
    T_DBW=$(echo "$LINE" | awk -F[:,] '{print $7}' | xargs)
  else
    T_STATE=$(echo "$LINE" | awk -F[:,] '{print $2}' | xargs)
    T_UL_CONFIG=$(echo "$LINE" | awk -F[:,] '{print $3}' | xargs)
    T_BAND_NUM=$(echo "$LINE" | awk -F[:,] '{print $4}' | xargs)
    T_PCI=$(echo "$LINE" | awk -F[:,] '{print $5}' | xargs)
    T_EARFCN=$(echo "$LINE" | awk -F[:,] '{print $6}' | xargs)
    T_DBW=$(echo "$LINE" | awk -F[:,] '{print $7}' | xargs)
  fi

  # Always store PCI and EARFCN for this SCC
  if [ -n "$T_PCI" ]; then
    case $IDX in
      "1") S1PCI="$T_PCI";;
      "2") S2PCI="$T_PCI";;
      "3") S3PCI="$T_PCI";;
      "4") S4PCI="$T_PCI";;
      *);;
    esac
  fi

  if [ -n "$T_EARFCN" ]; then
    case $IDX in
      "1") S1EARFCN="$T_EARFCN";;
      "2") S2EARFCN="$T_EARFCN";;
      "3") S3EARFCN="$T_EARFCN";;
      "4") S4EARFCN="$T_EARFCN";;
      *);;
    esac
  fi

  # Process band and bandwidth
  if [ -n "$T_BAND_NUM" ] && echo "$T_BAND_NUM" | grep -q '^[0-9]\+$'; then
    DBW=""
    if [ -n "$T_DBW" ] && echo "$T_DBW" | grep -q '^[0-9]\+$' && [ "$T_DBW" -ne "0" ]; then
      BW=$(convert_bw_lte $T_DBW)
      if [ -n "$BW" ]; then
        DBW=" @$BW"
      fi
    fi

    T2=""
    if [ "$T_BAND_NUM" -gt "100" ] && [ "$T_BAND_NUM" -lt "200" ]; then
      # LTE band: 101 = Band 1, 102 = Band 2, etc.
      T_BAND=$((T_BAND_NUM - 100))
      T2="$(band4g $T_BAND)${DBW}"
      T_4G_MODE="${T_4G_MODE}$(band4g $T_BAND) / "
    elif [ "$T_BAND_NUM" -gt "500" ]; then
      # NR band: 501 = Band 1, 502 = Band 2, etc.
      T_BAND=$(echo "$T_BAND_NUM" | sed 's/^50//')
      # Use NR bandwidth conversion for NR bands
      if [ -n "$T_DBW" ] && echo "$T_DBW" | grep -q '^[0-9]\+$' && [ "$T_DBW" -ne "0" ]; then
        BW=$(convert_bw_nr $T_DBW)
        if [ -n "$BW" ]; then
          DBW=" @$BW"
        fi
      fi
      T2="$(band5g $T_BAND)${DBW}"
      T_5G_MODE="${T_5G_MODE}$(band5g $T_BAND) / "
    fi

    if [ -n "$T2" ]; then
      case $IDX in
        "1") S1BAND="$T2";;
        "2") S2BAND="$T2";;
        "3") S3BAND="$T2";;
        "4") S4BAND="$T2";;
        *);;
      esac
    fi
  fi

  IDX=$((IDX + 1))
done

T_4G_MODE=$(echo "$T_4G_MODE" | sed 's/ [\/\+] $//')
T_5G_MODE=$(echo "$T_5G_MODE" | sed 's/ [\/\+] $//')

# In NSA mode, include 5G band from GTCCINFO in S4 position
if [ -n "$T_4G_PBAND" ]; then
  # Get 5G information from GTCCINFO
  NR_LINE=$(echo "$O" | grep -A10 '+GTCCINFO:' | grep "1,9,${COPS_MCC}" | head -1)
  if [ -n "$NR_LINE" ]; then
    NR_BAND=$(echo "$NR_LINE" | awk -F, '{print $9}')
    NR_BW=$(echo "$NR_LINE" | awk -F, '{print $10}')
    NR_PCI=$(echo "$NR_LINE" | awk -F, '{print $8}')
    NR_EARFCN=$(echo "$NR_LINE" | awk -F, '{print $7}')

    if [ -n "$NR_BAND" ]; then
      NR_BAND_NUM=$(echo "$NR_BAND" | sed 's/^50//')
      NR_BAND_TEXT=$(band5g $NR_BAND_NUM)

      DBW=""
      if [ -n "$NR_BW" ] && echo "$NR_BW" | grep -q '^[0-9]\+$' && [ "$NR_BW" -ne "0" ]; then
        BW=$(convert_bw_nr $NR_BW)
        if [ -n "$BW" ]; then
          DBW=" @$BW"
        fi
      fi

      S4BAND="${NR_BAND_TEXT}${DBW}"

      # Convert hex to decimal if needed for PCI
      if [ -n "$NR_PCI" ]; then
        if echo "$NR_PCI" | grep -q '[A-Fa-f]'; then
          S4PCI=$(printf "%d" "0x$NR_PCI")
        else
          S4PCI="$NR_PCI"
        fi
      fi

      # Convert hex to decimal if needed for EARFCN
      if [ -n "$NR_EARFCN" ]; then
        if echo "$NR_EARFCN" | grep -q '[A-Fa-f]'; then
          S4EARFCN=$(printf "%d" "0x$NR_EARFCN")
        else
          S4EARFCN="$NR_EARFCN"
        fi
      fi

      # Extract NR signal: ss_sinr(11), ss_rsrp(13), ss_rsrq(14)
      T=$(echo "$NR_LINE" | awk -F, '{print $13}')
      if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
        NR5G_RSRP=$((T - 157))
      fi
      T=$(echo "$NR_LINE" | awk -F, '{print $14}')
      if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
        NR5G_RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-87)/2 }')
      fi
      T=$(echo "$NR_LINE" | awk -F, '{print $11}')
      if [ -n "$T" ] && echo "$T" | xargs | grep -q '^[0-9]\+$' && [ "$T" -ne "255" ]; then
        NR5G_SINR=$(echo "$T" | xargs | awk '{printf "%0.1f", ($1-23)/2 }')
      fi
    fi
  fi
fi

# Build mode string
if [ -z "$T_MODE" ]; then
  if [ -n "$T_4G_MODE" ]; then
    MODE="$MODE $T_4G_MODE"
  fi

  if [ -n "$T_5G_MODE" ]; then
    [ -n "$T_4G_MODE" ] && MODE="$MODE /"
    MODE="$MODE $T_5G_MODE"
  fi
fi

# Get modem info
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"

# Get firmware version
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)

# Get IMEI
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)

# Get IMSI
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)

# Get ICCID
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)

# Temperature. Shared USB ID 2cb7:0104 covers several Fibocom modems:
# FM170 answers AT+GTSENRDTEMP (milli-degrees); FM150-AE / FM160-EAU reject it
# with ERROR and answer AT+MTSM instead (whole degrees C). Try GTSENRDTEMP
# first, fall back to MTSM. tr -cd strips the trailing CR that would otherwise
# break the numeric test (response is "<value>\r").
OT=$(sms_tool -d "$DEVICE" at "AT+GTSENRDTEMP=1")
TM=$(echo "$OT" | awk -F'[, ]' '/\+GTSENRDTEMP:/ {print $3}' | tr -cd '0-9')

if [ -n "$TM" ]; then
    TM=$(echo "scale=1; $TM/1000" | bc)
    TEMP="$TM &deg;C"
else
    OT=$(sms_tool -d "$DEVICE" at "AT+MTSM=1")
    TM=$(echo "$OT" | awk -F'[ :]' '/\+MTSM:/ {print $NF}' | tr -cd '0-9')
    if [ -n "$TM" ]; then
        TEMP="$TM &deg;C"
    else
        TEMP="- &deg;C"
    fi
fi

# Get network interface info
TTY=$(basename $DEVICE)
devpath=$(readlink -f /sys/class/tty/$TTY/device)
BASE=$(readlink -f ${devpath%/*/*})

NETIF=$(for a in /sys/class/net/*; do readlink -f $a; done | grep "$BASE")
NETDRV=$(basename $(readlink -f $NETIF/../../driver))

# Determine protocol based on driver
case $NETDRV in
  "qmi_wwan"*)
    PROTO="qmi";;
  "cdc_mbim")
    PROTO="mbim";;
  "cdc_ether")
     PROTO="ecm";;
   "rndis_host")
     PROTO="ncm";;
esac