# Fibocom FM350 parse data
#

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

function modem_data(){
    generic_data
    # AT+CSQ not correct RSSI value data use AT+CESQ
    RSSI_RAW=$(echo "$O" | awk -F[,\ ] '/^\+CESQ/ {print $2}')
    # Need correct value!
    CSQ_RSSI=$((-113+2*$RSSI_RAW))
    CSQ=$(((113-$RSSI_RAW)/2))
    [ "x$CSQ" = "x" ] && CSQ=-1
    if [ $CSQ -ge 0 -a $CSQ -le 31 ]; then
        CSQ_PER=$(($CSQ * 100/31))
        CSQ_COL="red"
        [ $CSQ -ge 10 ] && CSQ_COL="red"
        [ $CSQ -ge 15 ] && CSQ_COL="orange"
        [ $CSQ -ge 20 ] && CSQ_COL="green"
    elif [ $CSQ -ge 32 -a $CSQ -le 90 ]; then
 	CSQ_PER="100"
	CSQ_COL="green"
    else
        CSQ_PER="0"
        CSQ_COL="black"
    fi

    MANUF=$(echo "$O" | awk -F [:,] '/\+CGMI/{gsub("\"","");print $2}')
    MODEL=$(echo "$O" | awk -F [:,] '/\+CGMM/{gsub("\"","");print $2}')
    DEVICE="$MANUF $MODEL"
    FW=$(echo "$O" | awk '/\+GTPKGVER/{gsub("\"",""); print $2}')
    ICCID=$(echo "$O" | awk -F [:] '/ICCID:/{gsub("\r","");print $2}')
    IMSI=$(echo "$O" | awk -F [:,] '/\+CIMI/{gsub("\"","");print $2}')
    IMEI=$(echo "$O" | awk -F [:,] '/\+CGSN/{gsub("\"","");print $2}')
    NETWORK=$(echo "$O"| grep -A2 '+GTCCINFO:' | awk 'NR ==2{print}')
    EARFCN=$(echo "$NETWORK" | awk -F [,] '{print $7}')
    if [ "$MODE" = "LTE" ]; then
        REGST=$(echo "$O" | awk -F[,] '/\+CEREG/ {print $2}')
        LAC=$(echo "$O" | awk -F[,] '/^\+CEREG/{gsub("\"","");print $3}' | tail -1)
        CID=$(echo "$O" | awk -F[,] '/^\+CEREG/{gsub("\"","");print $4}' | tail -1)
        RSRQ=$(echo "$NETWORK" | awk -F [,] '{printf "%.0f\n", -20+($14/2)}')
        RSRP=$(echo "$NETWORK" | awk -F [,] '{printf "%.0f\n", $13-140}')
        SINR=$(echo "$NETWORK" | awk -F [,] '{printf "%.0f\n", ($11/4)+5}')
        ENBx=$(echo $CID | sed -e 's/..$//')
        CELL=$(printf %d 0x${CID: -2})
        ENBID=$(printf %d 0x$ENBx)
        PCI=$(echo "$NETWORK" | awk -F [,] '{print $8}')
        BWDx=$(echo "$NETWORK" | awk -F [,] '{print $10}')
        case $BWDx in
            15)  BWDL=1 NP=3 ;;
            25)  BWDL=2 NP=5 ;;
            50)  BWDL=3 NP=10 ;;
            75)  BWDL=4 NP=15 ;;
            100) BWDL=5 NP=20 ;;
            *)   NP=0  ;;
        esac
        BWCA=$NP
        LTE_CA=$(echo "$O" | awk '/SCC/{print $0}' | wc -l)
        if [ $LTE_CA -ge 1 ]; then
            SCx=$(echo "$O" | awk -F [:,] '/SCC/{print $6}')
            for sca in $SCx; do
                SCC="$SCC+$(ch_to_band $MODE $sca)"
            done
            BWCx=$(echo "$O" | awk -F [:,] '/SCC/{printf "%.0f\n", $7}')
            for ca in $BWCx; do
                case $ca in
                    15)  N=3 ;;
                    25)  N=5 ;;
                    50)  N=10 ;;
                    75)  N=15 ;;
                    100) N=20 ;;
                    *)   N=0 ;;
                esac
                BWCA=$(($BWCA+$N))
            done
        fi        
    else
        LAC=$(echo "$O" |awk -F[,] '/^\+CGREG/{gsub("\"","");print $3}' | tail -1)
        CID=$(echo "$O" |awk -F[,] '/^\+CGREG/{gsub("\"","");print $4}' | tail -1)
    fi
    LAC_NUM=$(printf %d 0x$LAC)
    CID_NUM=$(printf %d 0x$CID)
    CHIPTEMP=$(echo "$O" | awk -F [,] '/^\+GTSENRDTEMP:/{printf "%.0f", $2/1000}')
    if [ $(uci -q get modeminfo.@general[0].decimail) = "1" ]; then
        LAC=$LAC_NUM
        CID=$CID_NUM
    fi
}
