#!/bin/bash
#
# Log cellular connection info to blockgraph
#
# Depends on presence of cellmodemtest

MODEM_PATH=$(mmcli -L -K|grep "modem-list.value\[1\]"|cut -d: -f2|xargs)

if [ $MODEM_PATH ]; then
  CONNECTION=$(cellmodemtest connection)
  OPERATOR=$(echo "$CONNECTION" | grep -i operator | cut -d: -f2 | xargs)
  TECHNOLOGY=$(echo "$CONNECTION" | grep -i "connection technology" | cut -d: -f2 | xargs)
  SIGNAL_PCT=$(echo "$CONNECTION"|grep -i signal|cut -d: -f2|cut -d% -f1|xargs)
  SIGNAL=$(cellmodemtest signal | grep rssi | cut -d= -f2 | xargs)
  CELLID=$(mmcli -m $MODEM_PATH --location-get -K|grep "modem.location.3gpp.cid"|cut -d: -f2|xargs)
  if which qmicli > /dev/null; then
    PORT=$(mmcli -m ${MODEM_PATH} -K|grep "modem.generic.primary-port"|cut -d: -f2|xargs)
    RFINFO=$(qmicli -p -d /dev/${PORT} --nas-get-rf-band-info)
    BAND=$(echo "$RFINFO"|grep -i "Active Band Class"|head -1|cut -d: -f2 | xargs)
    CHANNEL=$(echo "$RFINFO"|grep -i "Active Channel"|head -1|cut -d: -f2 | xargs)
  else
    BAND=""
    CHANNEL=""
  fi
else
  OPERATOR="not connected"
  TECHNOLOGY=""
  BAND=""
  CHANNEL=""
  SIGNAL="-200"
  SIGNAL_PCT=0
  CELLID=0
fi

bgsystemlog -j cellular -m "{\"operator\":\"${OPERATOR}\",\"technology\":\"${TECHNOLOGY}\",\"band\":\"${BAND}\",\"channel\":\"${CHANNEL}\",\"signal_dBm\":${SIGNAL},\"signal_pct\":${SIGNAL_PCT},\"CID\":\"${CELLID}\"}"

