# Quectel EM160R-GL

O=$(sms_tool -d $DEVICE at "at+qtemp")

T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
if [ -n "$T" ]; then
	TEMP="$T &deg;C"
fi

O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")

T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
	COPS="$T"
fi

if [ "x$MODE_NUM" = "x7" ]; then
	echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE-A |"
fi

T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
	B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
	MODE="$MODE $(band4g ${B})"

	T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
	if [ -n "$T1" ]; then
		for T in $T1; do
			B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
			MODE="$MODE / $(band4g ${B})"
		done
	fi
fi

if [ "x$MODE_NUM" = "x7" ]; then
	T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
	if [ "x$T" = "xLTE" ]; then
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
			T_DEC=$(printf "%d" "0x$T")
			T_HEX=$T
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
#		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
		SINR=$T

		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}' | xargs)
		if [ -n "$T" ]; then
			RSSI=$T
		fi
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}' | xargs)
		if [ -n "$T" ]; then
			RSRP=$T
		fi
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}' | xargs)
		if [ -n "$T" ]; then
			RSRQ=$T
		fi

		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}' | xargs)
		if [ -n "$T" ]; then
			PCI=$T
		fi
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}' | xargs)
		if [ -n "$T" ]; then
			EARFCN=$T
		fi

		QO=$(sms_tool -d $DEVICE at "at+qnwinfo;")
		PBAND=$(echo "$QO" | awk -F[,:] '/^\+QNWINFO:/ {print $4}' | xargs)
		MAINCUT=$(echo $PBAND | sed 's/LTE BAND //g')

		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
		case $T in
			0*) T1="1.4";;
			1*) T1="3";;
			2*) T1="5";;
			3*) T1="10";;
			4*) T1="15";;
			5*) T1="20";;
			*) T1="?";;
		esac
		ULBW="UL: @$T1 MHz"
		T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
		case $T in
			0*) T1="1.4";;
			1*) T1="3";;
			2*) T1="5";;
			3*) T1="10";;
			4*) T1="15";;
			5*) T1="20";;
			*) T1="";;
		esac
		DLBW="DL: @$T1 MHz"

		PBAND="$(band4g $MAINCUT "") $DLBW $ULBW"
		if [ "x$MODE" = "xLTE" ]; then	
      			MODE="LTE | $(band4g $MAINCUT "")"
		fi
	fi
fi

IFS="
"

T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
	B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
	T2=$(band4g ${B})
	T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
	case $T3 in
		6) T4="1.4";;
		15) T4="3";;
		25) T4="5";;
		50) T4="10";;
		75) T4="15";;
		100) T4="20";;
		*) T4="?";;
	esac
	if [ -z "$T4" ]; then
		PBAND="$T2"
	else
		PBAND="$T2 @$T4 MHz"
	fi
	T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
	EARFCN=$T
	T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
	PCI=$T
	T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
	RSSI=$T
	T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
	RSRP=$T
	T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
	RSRQ=$T

	IDX=1
	LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
	for LINE in $LINES; do

		T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
		B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
		T2=$(band4g ${B})
		T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
		case $T3 in
			6) T4="1.4";;
			15) T4="3";;
			25) T4="5";;
			50) T4="10";;
			75) T4="15";;
			100) T4="20";;
			*) T4="?";;
		esac
		if [ -z "$T4" ]; then

			case $IDX in
				1) S1BAND="$T2";;
				2) S2BAND="$T2";;
				3) S3BAND="$T2";;
				4) S4BAND="$T2";;
				*) ;;
			esac

		else

			case $IDX in
				1) S1BAND="$T2 @$T4 MHz";;
				2) S2BAND="$T2 @$T4 MHz";;
				3) S3BAND="$T2 @$T4 MHz";;
				4) S4BAND="$T2 @$T4 MHz";;
				*) ;;
			esac

		fi

		T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
		if [ -n "$T" ]; then

			case $IDX in
				1) S1EARFCN="$T";;
				2) S2EARFCN="$T";;
				3) S3EARFCN="$T";;
				4) S4EARFCN="$T";;
				*) ;;
			esac

		fi
		T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
		if [ -n "$T" ]; then

			case $IDX in
				1) S1PCI="$T";;
				2) S2PCI="$T";;
				3) S3PCI="$T";;
				4) S4PCI="$T";;
				*) ;;
			esac

		fi

		IDX=$((IDX + 1))
	done
fi

MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')

# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)

MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT

# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
	SSIM="$T"
fi

# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
	NR_IMEI="$NR_I"
fi

# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
	NR_IMSI="$NR_C"
fi

#  Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
	NR_ICCID="$NR_D"
fi

# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0620' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
    PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
    PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
    PROTO="ecm"
fi

