# Tri Cascade VOS_5G / Compal RXM-G1 (Qualcomm SDX55)
sms_tool() { command sms_tool "$@" | tr -d "\r"; }

if [ "$REGOK" = "1" ]; then

# LTE info from AT+BINFO
BINFO=$(sms_tool -d $DEVICE at "AT+BINFO?")
if [ -n "$BINFO" ]; then
	T=$(echo "$BINFO" | awk -F'[ ,]' '/^BAND /{print $2}')
	[ -n "$T" ] && PBAND="$(band4g $T)"

	T=$(echo "$BINFO" | grep "EARFCN" | head -1 | sed 's/.*EARFCN \([0-9]*\).*/\1/')
	[ -n "$T" ] && EARFCN="$T"

	T=$(echo "$BINFO" | grep "physical cell ID" | sed 's/.*physical cell ID \([0-9]*\).*/\1/')
	[ -n "$T" ] && PCI="$T"

	T=$(echo "$BINFO" | grep "Serving Cell ID" | sed 's/.*Serving Cell ID \([0-9]*\).*/\1/')
	[ -n "$T" ] && CID="$(printf "%X" $T 2>/dev/null)"

	T=$(echo "$BINFO" | grep "TAC" | head -1 | sed 's/.*TAC \([0-9]*\).*/\1/')
	[ -n "$T" ] && TAC_DEC="$T" && TAC_HEX="$(printf "%X" $T 2>/dev/null)"

	SIGLINE=$(echo "$BINFO" | grep "RSRQ.*RSRP.*SINR" | head -1)
	if [ -n "$SIGLINE" ]; then
		RSRP=$(echo "$SIGLINE" | sed 's/.*RSRP \([-0-9]*\).*/\1/')
		RSRQ=$(echo "$SIGLINE" | sed 's/.*RSRQ \([-0-9]*\).*/\1/')
		SINR=$(echo "$SIGLINE" | sed 's/.*SINR \([-0-9]*\).*/\1/')
	fi
fi

# NR info from AT+BNRINFO
NRINFO=$(sms_tool -d $DEVICE at "AT+BNRINFO?")
if echo "$NRINFO" | grep -q "NR BAND"; then
	T=$(echo "$NRINFO" | awk -F'[:,]' '/^NR BAND/{gsub(" ","",$2); print $2}')
	[ -n "$T" ] && S1BAND="$(band5g $T)"

	T=$(echo "$NRINFO" | grep "^NR BAND" | sed 's/.*EARFCN:\([0-9]*\).*/\1/')
	[ -n "$T" ] && S1EARFCN="$T"

	T=$(echo "$NRINFO" | grep "physical cell ID" | sed 's/.*physical cell ID:\([0-9]*\).*/\1/')
	[ -n "$T" ] && S1PCI="$T"

	NRSIGLINE=$(echo "$NRINFO" | grep "NR5G:.*RSRP" | head -1)
	if [ -n "$NRSIGLINE" ]; then
		NR5G_RSRP=$(echo "$NRSIGLINE" | sed 's/.*RSRP \([-0-9]*\).*/\1/')
		NR5G_RSRQ=$(echo "$NRSIGLINE" | sed 's/.*RSRQ \([-0-9]*\).*/\1/')
		NR5G_SINR=$(echo "$NRSIGLINE" | sed 's/.*SINR \([-0-9]*\).*/\1/')
	fi
fi

# LTE CA from AT+LCAINFO + PCI/EARFCN from AT$QCRSRP
CAINFO=$(sms_tool -d $DEVICE at "AT+LCAINFO")
SCC1_BAND=$(echo "$CAINFO" | grep "SCC 1" | grep -v "NA" | sed 's/.*Band:\([0-9]*\).*/\1/')
SCC2_BAND=$(echo "$CAINFO" | grep "SCC 2" | grep -v "NA" | sed 's/.*Band:\([0-9]*\).*/\1/')
SCC3_BAND=$(echo "$CAINFO" | grep "SCC 3" | grep -v "NA" | sed 's/.*Band:\([0-9]*\).*/\1/')

[ -n "$SCC1_BAND" ] && S2BAND="$(band4g $SCC1_BAND)"
[ -n "$SCC2_BAND" ] && S3BAND="$(band4g $SCC2_BAND)"
[ -n "$SCC3_BAND" ] && S4BAND="$(band4g $SCC3_BAND)"

# CA bands are from LCAINFO (no PCI/EARFCN available for SCells)

# Mode
O=$(sms_tool -d $DEVICE at "AT+CREG?")
MODE_NUM=$(echo "$O" | awk -F, '/\+CREG:/ {print $NF}')

case "$MODE_NUM" in
	"7")
		MODE="LTE | $PBAND"
		[ -n "$SCC1_BAND" ] && MODE="LTE-A | $PBAND"
		;;
	"13")
		MODE="5G NSA | $PBAND"
		[ -n "$SCC1_BAND" ] && MODE="$MODE + $S2BAND"
		[ -n "$SCC2_BAND" ] && MODE="$MODE + $S3BAND"
		[ -n "$S1BAND" ] && MODE="$MODE / $S1BAND"
		;;
	"11")
		MODE="5G SA"
		[ -n "$S1BAND" ] && MODE="$MODE | $S1BAND"
		;;
	*) MODE="$MODE_NUM | $PBAND";;
esac

fi

# Operator name fix (firmware returns "00490" instead of real name)
if [ -n "$COPS_NUM" ] && echo "$COPS" | grep -q "^[0-9]*$"; then
	T=$(awk -F[\;] '/^'$COPS_NUM';/ {print $3}' /usr/share/3ginfo-lite/mccmnc.dat | xargs)
	[ -n "$T" ] && COPS="$T"
fi

# Modem info
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | grep -v "^AT" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | grep -v "^AT" | xargs)
MODEL="$MODELB $MODELA"
FW=$(sms_tool -d $DEVICE at "AT+CGMR" | grep -v "^AT" | xargs)
NR_IMEI=$(sms_tool -d $DEVICE at "AT+CGSN" | grep -v "^AT" | xargs)
NR_IMSI=$(sms_tool -d $DEVICE at "AT+CIMI" | grep -v "^AT" | xargs)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$O" | awk -F: '/ICCID:/{print $2}' | xargs)

PROTO="ecm"
