# Meiglink modems
function ch_to_band(){
        /usr/share/modeminfo/scripts/ch_to_band $1 $2
}

function modem_data(){
	generic_data
	# hwinfo
	DATA=$(echo "$O" | grep -Ev '^OK|^$')
	MANUF=$(echo "$DATA" | grep -i ${FAMILY:0:4} | awk -F': ' '{print $2}')
	MODEL=$(echo "$DATA" | grep -A1 -i ${FAMILY:0:4} | tail -1 | awk -F': ' '{print $2}')
	DEVICE="$MANUF $MODEL"
	FW=$(echo "$DATA" | grep -A2 -i ${FAMILY:0:4} | tail -1 | awk -F': ' '{print $2}')
	ICCID=$(echo "$DATA" | awk -F [:] '/ICCID:/{gsub("\r","");print $2}')
	IMSI=$(echo "$DATA" | grep -A1 -i $FW | tail -1)
	IMEI=$(echo "$DATA" | grep -A1 -i $ICCID | tail -1)
	CHIPTEMP=$(echo "$DATA" | awk -F[,\ ] '/^\+TEMP: \"cpuss-usr\"/ {gsub("\"","");print $3}')
	# signal info
	CSQ_RSSI=$(echo "$DATA" | awk -F [,\ ] '/^\$QCSQ/{gsub(":","");print $2}')
	case $MODE in
		*LTE*)
			BSP=$(echo "$DATA" |awk -F "[\, ]" '/\^CELLINFO:/{print $0}' | head -1)
			EARFCN=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $13}')
			RSRP=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $16}')
			RSRQ=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $17}')
			SINR=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {printf "%.0f\n", $18/5-20}')
			PCI=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $7}')
			LAC_NUM=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $10}')
			CID_NUM=$(echo $BSP |awk -F "[\, ]" '/\^CELLINFO:/ {print $6}')
			LAC=$(printf "%x\n" $LAC_NUM | awk '{print toupper($1)}')
			CID=$(printf "%x\n" $CID_NUM | awk '{print toupper($1)}')
			CELL=$(printf %d 0x${CID: -2})
			ENBx=$(echo $CID | awk '{print $1}' | sed -e 's/..$//' )
			ENBID=$(printf %d 0x$ENBx)
			BWDx=$(echo $BSP | awk -F "[\, ]" '/\^CELLINFO:/ {print $12}')
			case $BWDx in
				15) BWDL=1 ;;
				25) BWDL=2 ;;
				50) BWDL=3 ;;
				75) BWDL=4 ;;
				100) BWDL=5 ;;
			esac
			LTE_CA=$(echo "$DATA" | awk '/\^CELLINFO: / {print $0}' | wc -l)
			if [ $LTE_CA -gt 0 ]; then

				CA=$(echo "$DATA" | awk -F "[\, ]" '/\^CELLINFO: \"SCC\"/ {print $6}')
				BWC=$(echo "$DATA" | awk -F "[\, ]" '/\^CELLINFO: \"SCC\"/ {print $7}')
				for cc in $CA; do
					SCC="$SCC+$(ch_to_band $MODE $cc)"
				done
				case $BWDL in
					1) BWCP=3 ;;
					2) BWCP=5 ;;
					3) BWCP=10 ;;
					4) BWCP=15 ;;
					5) BWCP=20 ;;
				esac
				for BW in $BWC; do
					case $BW in
						15) BWCC=3 ;;
						25) BWCC=5 ;;
						50) BWCC=10 ;;
						75) BWCC=15 ;;
						100) BWCC=20 ;;
					esac
					BWCA="$BWCA+$BWCC"
				done
				BWCA=$(($BWCP$BWCA))
			fi
		;;
		WCDMA|UMTS)
			EARFCN=$(echo "$O" |awk -F "[\, ]" '/\^CELLINFO:/ {print $10}')
			CID_NUM=$(echo "$O" |awk -F "[\, ]" '/\^CELLINFO:/ {print $7}')
			LAC_NUM=$(echo "$O" |awk -F "[\, ]" '/\^CELLINFO:/ {print $8}')
			LAC=$(printf "%x\n" $LAC_NUM | awk '{print toupper($1)}')
                        CID=$(printf "%x\n" $CID_NUM | awk '{print toupper($1)}')
			SINR=$(echo "$O" |awk -F "[\, ]" '/\$QCSQ :/ {print $3}')
		;;
		*)
			LAC=$(echo "$O" |awk -F[,\ ] '/^\^CELLINFO:/ {print $6}')
			CID=$(echo "$O" |awk -F "[\, ]" '/\+CGREG:/ {print $5}' | sed 's/"//g')
		;;
	esac

	if [ $(uci -q get modeminfo.@general[0].decimail) = "1" ] ; then
		LAC=$LAC_NUM
		CID=$CID_NUM
	fi
}
