mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-08-02 15:39:31 +08:00
65 lines
2.5 KiB
Plaintext
65 lines
2.5 KiB
Plaintext
modem_data(){
|
|
# hwinfo
|
|
O=$(echo "$O" | grep -Ev '^OK|^$|^NO|^ERR')
|
|
OIFS="$IFS"; IFS="|"
|
|
set -- $(echo "$O" | awk '
|
|
/^\+CEREG/{getline manuf; getline model; getline fw}
|
|
/ICCID/{iccid=$2;getline imei; getline imsi}
|
|
/^TSENS|xo_therm_buf:/{gsub("C", ""); temp=$2}
|
|
END {print manuf "|" model "|" fw "|" iccid "|" imei "|" imsi "|" temp}
|
|
')
|
|
MANUF=${1}; MODEL=${2}; FW=${3}; ICCID=${4}; IMEI=${5}; IMSI=${6}; CHIPTEMP=${7}
|
|
IFS=$OIFS; unset OIFS
|
|
DEVICE="$MANUF $MODEL"
|
|
# signal info
|
|
generic_data
|
|
OIFS="$IFS"; IFS="|"
|
|
set -- $(echo "$O" | awk -v mode="$MODE" '
|
|
BEGIN { map[3]=1; map[5]=2; map[10]=3; map[15]=4; map[20]=5 }
|
|
mode ~ /LTE/ { # LTE mode
|
|
if (/\+CEREG/) { gsub("\"",""); split($0,a,","); lac=a[3]; cid=a[4]}
|
|
if (/pcell:/) { f=1
|
|
for (i=1; i<=NF; i++) {
|
|
if ($i ~ /lte_band_width:/) { split($i, b, ":"); bwc_raw = b[2]; sub("MHz", "", bwc_raw)
|
|
bwc = sprintf("%.0f", bwc_raw);bw = map[bwc]
|
|
}
|
|
}; next }
|
|
if (/^scell:/) { f=0; next }
|
|
if (f && /channel:/) { split($0,a," "); earfcn=substr(a[1],9)+0; pci=substr(a[2],5)+0 }
|
|
if (f && /lte_rsrp:/) { split($0,a,","); rsrp=sprintf("%.0f", substr(a[1],10)+0); rsrq=sprintf("%.0f", substr(a[2],6)+0)}
|
|
if (f && /lte_snr:/) { split($0,a,","); sinr=sprintf("%.0f", substr(a[2],10)+0) }
|
|
if (/^SCC[0-9]+ info:/) { lte_ca++ }
|
|
if (/\+$QCSQ/) { split($0,a,","); rssi=a[5] }
|
|
}
|
|
mode !~ /LTE/{ # 3G mode
|
|
if (/\+CREG/) { gsub("\"",""); split($0,a,","); lac=a[3]; cid=a[4]}
|
|
if (/channel:/) {split($0,a,":"); earfcn=a[2]}
|
|
if (/\+$QCSQ/) { split($0,a,","); rssi=a[5] }
|
|
if (/cell1:/) { split($0,a,","); sinr=sprintf("%.0f", substr(a[3],6)) }
|
|
}
|
|
END { print earfcn "|" lac "|" cid "|" rssi "|" sinr "|" rsrp "|" rsrq "|" pci "|" bw "|" bwc "|" lte_ca }
|
|
')
|
|
EARFCN=${1}; LAC=${2}; CID=${3}; RSSI=${4}; SINR=${5}; RSRP=${6}; RSRQ=${7}; PCI=${8}; BWDL=${9}; BWDx=${10}; LTE_CA=${11}
|
|
IFS=$OIFS; unset OIFS
|
|
if [ "$MODE" = "LTE" ]; then
|
|
ENBx=$(echo $CID | sed -e 's/..$//')
|
|
CELL=$(printf %d 0x${CID: -2})
|
|
ENBID=$(printf %d 0x$ENBx)
|
|
# CA calc
|
|
if [ $LTE_CA -ge 1 ]; then
|
|
OIFS="$IFS"; IFS="|"
|
|
set -- $(echo "$O" | awk -v bwc=${BWDx:-0} '
|
|
/^SCC\d info:/ {for(i=1; i<=NF; i++) { if($i ~ /LTE_B/) { gsub(/[^0-9]/, "", $i); scc = scc "+" $i}}
|
|
bwca_raw += sprintf("%.0f", $8); bwca=bwca_raw+bwc}
|
|
END { print scc "|" bwca }')
|
|
IFS="$OIFS"; unset BWDx OIFS
|
|
SCC=${1}; BWCA=${2}
|
|
fi
|
|
fi
|
|
|
|
if [ $(uci -q get modeminfo.@general[0].decimail) -eq 1 ]; then
|
|
LAC=$(printf %d 0x$LAC)
|
|
CID=$(printf %d 0x$CID)
|
|
fi
|
|
}
|