modem_data(){
        # hwinfo
	O=$(echo "$O" | grep -Ev '^OK|^$|^NO|^ERR')
        MANUF=$(echo "$O" | awk 'c&&! --c;/CEREG/{c=1}')
        MODEL=$(echo "$O" | awk 'c&&! --c;/CEREG/{c=2}')
        DEVICE="$MANUF $MODEL"
        FW=$(echo "$O" | awk 'c&&! --c;/CEREG/{c=3}')
        ICCID=$(echo "$O" | awk -F [:] '/ICCID:/{gsub("\r","");print $2}')
        IMEI=$(echo "$O" | awk 'c&&! --c;/ICCID/{c=1}')
        IMSI=$(echo "$O" | awk 'c&&! --c;/ICCID/{c=2}')
	generic_data
	if [ "$MODE" = "LTE" ]; then
		LAC=$(echo "$O" | awk -F [,] '/\+CEREG/{gsub("\"","");print $3}')
                CID=$(echo "$O" | awk -F [,] '/\+CEREG/{gsub("\"","");print $4}')
		EARFCN=$(echo "$O" | grep 'pcell:' -A2 |awk -F [\:/\ ] '/channel:/{print $2}')
		PCI=$(echo "$O" | awk -F [\:/\ ] '/pcell:/{getline;print $4}')
		RSRP=$(echo "$O" | awk -F [\:/\ ,] '/pcell:/{getline;getline;gsub("dB|dBm","");printf "%.0f\n", $2}')
		CSQ_RSSI=$(echo "$O" | awk -F [\:/\ ,]  '/pcell:/{getline;getline;getline;gsub("dB|dBm","");printf "%.0f\n", $2}')
		RSRQ=$(echo  "$O" | awk -F [\:/\ ,] '/pcell:/{getline;getline;gsub("dB|dBm","");printf "%.0f\n", $4}')
		SINR=$(echo  "$O" | awk -F [\:/\ ,] '/pcell:/{getline;getline;getline;gsub("dB|dBm","");printf "%.0f\n", $4}')
		if [ ! $SINR ]; then
			SINR=$(echo  "$O" | awk '/^RS-SNR/{gsub("dB",""); printf "%.0f\n", $2}')
		fi
		ENBx=$(echo $CID | sed -e 's/..$//')
                CELL=$(printf %d 0x${CID: -2})
                ENBID=$(printf %d 0x$ENBx)
		#BWDx=$(echo "$O" | awk '/PCC info/{printf "%.0f\n",$8}')
		BWDx=$(echo "$O" | awk -F  [\:/\ ,] '/pcell:/{gsub("MHz","");printf "%.0f\n", $6}')
		LTE_CA=$(echo "$O" | awk '/SCC/{print $0}' | wc -l)
		case $BWDx in
			3) BWDL=1 ;;
			5) BWDL=2 ;;
			10) BWDL=3 ;;
			15) BWDL=4 ;;
			20) BWDL=5 ;;
		esac
		if [ $LTE_CA -ge 1 ]; then
                        CA=$(echo "$O" | awk '/SCC/{print $5}')
                        for cc in $CA; do
                                SC=$(echo $cc | sed -e 's/LTE_B//g' -e 's/.$//')
                                SCC="$SCC+$SC"
                        done
                        bw=$(echo "$O" |awk '/SCC/{printf "%.0f\n",$8}')
                        for bwc in $bw; do
                                bwcc="$bwcc+$bwc"
                        done
                        BWCA=$(($BWDx$bwcc))
                fi
	else
		LAC=$(echo "$O" | awk -F [,] '/\+CREG/{gsub("\"","");print $3}')
                CID=$(echo "$O" | awk -F [,] '/\+CREG/{gsub("\"","");print $4}')
		EARFCN=$(echo "$O" | awk -F [\:/] '/Active channel/{gsub(" ","", $2); print $2}')
		RSCP=$(echo "$O" | awk -F [\:\ ,\)/] '/RSCP/{gsub("dBm|)",""); printf "%.0f\n", $7}')
		CSQ_RSSI=$(echo "$O" | awk -F [:,] '/QCSQ/{print $2}')
                SINR=$(echo "$O" | awk -F [:,] '/QCSQ/{print $3}') 
                if [ $SINR -le -24 ]; then                                    
                        SINR=-24                            
                elif [ $SINR -ge 0 ]; then                                      
                        SINR=0                                                                        
                fi
		
	fi
	LAC_NUM=$(printf %d 0x$LAC)
        CID_NUM=$(printf %d 0x$CID)
        if [ $(uci -q get modeminfo.@general[0].decimail) -eq 1 ]; then
                LAC=$LAC_NUM
                CID=$CID_NUM
        fi
	CHIPTEMP=$(echo "$O" | awk -F [:] '/xo_therm_buf:/{print $2}')
	if [ ! $CHIPTEMP ]; then
		CHIPTEMP=$(echo "$O" | awk -F [:] '/^TSENS/{gsub("C", ""); print $2}')
	fi
}
