modem_data(){
        # hwinfo
        MANUF=$(echo "$O" | grep -i $FAMILY)
        MODEL=$(echo "$O" | grep -A1 -i $FAMILY | tail -1)
        DEVICE="$MANUF $MODEL"
        FW=$(echo "$O" | grep -A2 -i $FAMILY | tail -1)
        ICCID=$(echo "$O" | awk -F [:] '/ICCID:/{gsub("\r","");print $2}')
        IMEI=$(echo "$O" | grep -A1 -i ICCID | tail -1)
        IMSI=$(echo "$O" | grep -A2 -i ICCID | tail -1)
	generic_data
	if [ "$MODE" = "LTE" ]; then
		LAC=$(echo "$O" | awk -F [,] '/\+CEREG/{gsub("\"","");print $3}')
                CID=$(echo "$O" | awk -F [,] '/\+CEREG/{gsub("\"","");print $5}')
		EARFCN=$(echo "$O" | awk -F [\:/] '/ARFCN/{gsub(" ","", $3); print $3}' | head -1)
		PCI=$(echo "$O" | awk -F [\(,\)] '/PCI/{print $4}')
		RSRP=$(echo "$O" | awk '/^RSRP/{gsub("dBm",""); printf "%.0f\n", $2}' | head -1)
		CSQ_RSSI=$(echo "$O" | awk '/^RSSI/{gsub("dBm",""); printf "%.0f\n", $2}' | head -1)
		RSRQ=$(echo  "$O" | awk '/^RSRQ/{gsub("dB",""); printf "%.0f\n", $2}')
		SINR=$(echo  "$O" | awk '/^RS-SINR/{gsub("dB",""); printf "%.0f\n", $2}')
		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}')
		LTE_CA=$(echo "$O" | awk '/SCC\d info:/{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\d info:/{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\d info:/{printf "%.0f\n",$8}')
                        for bwc in $bw; do
                                bwcc="$bwcc+$bwc"
                        done
                        BWCA=$(($BWDx$bwcc))
			unset BWDx CA bwcc bwc
                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) = "1" ]; then
                LAC=$LAC_NUM
                CID=$CID_NUM
        fi
	CHIPTEMP=$(echo "$O" | awk -F [:] '/^PA|xo_therm_buf:/{gsub("C", ""); print $2}')
}
