mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-29 05:15:14 +08:00
🌴 Sync 2026-07-08 20:36:07
This commit is contained in:
1 parent
6dda8a8707
commit
7fafcddf49
28 files changed
+839
-198
No files matched your search
@@ -8,8 +8,10 @@ function modem_data(){
|
||||
set -- $(echo "$O" | awk '
|
||||
/\+GTPKGVER:/{gsub("\"","");fw=$2}
|
||||
/CGMI:/ {gsub("\"|\r","",$0); split($0,a,":"); manuf=a[2]}
|
||||
/GMM:/ {gsub("\"|\r","",$0); split($0,a,/[:,]/); model=a[2]}
|
||||
/GMM:|FMM:/ {gsub("\"|\r","",$0); split($0,a,/[:,]/); model=a[2]}
|
||||
/CCID:/ {iccid=$2; getline imsi; getline imei}
|
||||
/\+CIMI:/ {imsi=$2}
|
||||
/\+CGSN:/ {imei=$2}
|
||||
/\+MTSM:/ {split($0,a,":"); temp=a[2]}
|
||||
END { print manuf "|" model "|" fw "|" iccid "|" imsi "|" imei "|" temp }
|
||||
')
|
||||
@@ -17,13 +19,13 @@ function modem_data(){
|
||||
IFS="$OIFS"; unset OIFS
|
||||
# signal data
|
||||
OIFS="$IFS";IFS="|"
|
||||
set -- $(echo "$O" | awk -v mode=$MODE '
|
||||
set -- $(echo "$O" | awk -v mode="$MODE" '
|
||||
# define maps and variables
|
||||
BEGIN {
|
||||
map[1]=15; map[2]=25; map[3]=50; map[4]=75; map[5]=100
|
||||
csq_range["black"] = "0:0"; csq_range["red"] = "1:10"
|
||||
csq_range["orange"] = "11:20"; csq_range["green"] = "21:50"
|
||||
rsrp = bwc = csq = rssi = csq_per = 0; csq_col = "black";
|
||||
rsrp = rsrq = bwc = csq = rssi = csq_per = ""; csq_col = "black";
|
||||
}
|
||||
# text color percentage
|
||||
function get_csq_color(csq_raw_val) {
|
||||
@@ -38,25 +40,33 @@ function modem_data(){
|
||||
# lte mode
|
||||
mode ~ /LTE/ {
|
||||
if (/\+CEREG/){gsub("\"","");split($0,a,",");reg=a[2];lac=a[3]; cid=a[4]}
|
||||
if (/\+XLEC:/){gsub("\r","");split($0,a,/[:,]/);lte_ca=a[3]-1;bw=a[4];bwc=map[bw]}
|
||||
if (/\+XLEC:/){gsub("\r","");split($0,a,/[:,]/);lte_ca=a[3]-1;bw=a[4];bwc=(bw in map)?map[bw]:""}
|
||||
if (/\+RSRP:/){split($0,a,/[:,]/);pci=a[2];earfcn=a[3];rsrp=sprintf("%.0f",a[4])}
|
||||
if (/\+RSRQ:/){split($0,a,/[:,]/);rsrq=sprintf("%.0f",a[4])}
|
||||
if (/\+XMCI: 4/){gsub(/"/,"");split($0,a,/[:,]/)
|
||||
pci=sprintf("%d", a[7]);sinr=sprintf("%.0f", a[13]/4+5)
|
||||
distance=sprintf("%.2f", (a[14]*78/1000))
|
||||
if (/\+XMCI: 4/){gsub(/"/,"");gsub("\r","");split($0,a,/[:,]/)
|
||||
pci=sprintf("%d", a[7])
|
||||
if (a[8] != "") earfcn=sprintf("%d", a[8])
|
||||
if (a[11] != "" && (rsrp == "" || rsrp !~ /^-?[0-9]+$/ || rsrp < -141 || rsrp > -41))
|
||||
rsrp=sprintf("%.0f", a[11] - 141)
|
||||
if (a[12] != "" && (rsrq == "" || rsrq !~ /^-?[0-9]+$/ || rsrq < -40 || rsrq > -3))
|
||||
rsrq=sprintf("%.0f", a[12] / 2 - 20)
|
||||
if (a[13] != "") sinr=sprintf("%.0f", a[13] / 4 + 5)
|
||||
if (a[14] != "") distance=sprintf("%.2f", (a[14] * 78.125 / 1000))
|
||||
}
|
||||
# RSSI not correct sending via modem. Calc manually.
|
||||
csq_raw=sprintf("%.0f", ((rsrp+10*log(12*bwc)/log(10))+113)/2)
|
||||
csq = (csq_raw > 50) ? 50 : csq = csq_raw
|
||||
csq_col = get_csq_color(csq)
|
||||
csq_per = (csq > 30) ? 100 : sprintf("%.0f", csq*100/31); rssi=(2*csq-113)
|
||||
if (rsrp != "" && bwc != "" && bwc > 0) {
|
||||
csq_raw=sprintf("%.0f", ((rsrp+10*log(12*bwc)/log(10))+113)/2)
|
||||
csq = (csq_raw > 50) ? 50 : csq_raw
|
||||
csq_col = get_csq_color(csq)
|
||||
csq_per = (csq > 30) ? 100 : sprintf("%.0f", csq*100/31); rssi=(2*csq-113)
|
||||
}
|
||||
}
|
||||
# 3g mode
|
||||
mode !~ /LTE/{
|
||||
if (/\+CREG/){gsub("\"","");split($0,a,",");reg=a[2];lac=a[3];cid=a[4]}
|
||||
if (/\+RSCP:/){split($0,a,",");earfcn=a[2]}
|
||||
if (/\+XMCI: 2/) {n=split($0,a,",");sinr_raw=a[n-1]; rssi_raw=a[n-2]; sinr = sprintf("%.0f", (sinr_raw*24)/24-50); rssi = (rssi_raw*64/64-110)
|
||||
csq=rssi_raw/2; csq_col = get_csq_color(csq); csq_per = (csq > 30) ? 100 : sprintf("%.0f", csq*100/31)}
|
||||
csq=rssi_raw/2; csq_col = get_csq_color(csq); csq_per = (csq > 30) ? 100 : sprintf("%.0f", csq*100/31)}
|
||||
rsrp=""
|
||||
}
|
||||
END {print reg "|" earfcn "|" lac "|" cid "|" rssi "|" sinr "|" rsrp "|" rsrq "|" bw "|" bwc "|" pci "|" lte_ca "|" csq_col "|" csq_per "|" distance}
|
||||
@@ -64,12 +74,13 @@ function modem_data(){
|
||||
REGST=${1}; EARFCN=${2}; LAC=${3}; CID=${4}; CSQ_RSSI=${5}; SINR=${6}; RSRP=${7}; RSRQ=${8}; BWDL=${9}; BWCx=${10}
|
||||
PCI=${11}; LTE_CA=${12}; CSQ_COL=${13}; CSQ_PER=${14}; DISTANCE=${15}
|
||||
IFS="$OIFS"; unset OIFS
|
||||
if [ "$MODE" = "LTE" ]; then
|
||||
ENBx=$(echo $CID | sed -e 's/..$//')
|
||||
CELL=$(printf %d 0x${CID: -2})
|
||||
if [ "$MODE" = LTE ]; then
|
||||
ENBx=$(echo "$CID" | sed -e 's/..$//')
|
||||
CELLx=$(echo "$CID" | sed -e 's/^.*\(..\)$/\1/')
|
||||
CELL=$(printf %d 0x$CELLx)
|
||||
ENBID=$(printf %d 0x$ENBx)
|
||||
OIFS="$IFS";IFS="|"
|
||||
set -- $(echo "$O"| awk -F [:,] -v lte_ca=$LTE_CA -v mode="$MODE" '
|
||||
set -- $(echo "$O"| awk -F '[:,]' -v lte_ca="${LTE_CA:-0}" -v mode="$MODE" '
|
||||
# define maps and variables
|
||||
BEGIN { map[1]=3; map[2]=5; map[3]=10; map[4]=15; map[5]=20; scc = "" }
|
||||
function earfcn_to_band(channel, cmd, band) {
|
||||
@@ -115,7 +126,7 @@ function modem_data(){
|
||||
IFS="$OIFS"; unset OIFS
|
||||
fi
|
||||
|
||||
if [ $(uci -q get modeminfo.@general[0].decimail) = "1" ]; then
|
||||
if [ "$(uci -q get modeminfo.@general[0].decimail)" = "1" ]; then
|
||||
LAC=$(printf %d 0x$LAC)
|
||||
CID=$(printf %d 0x$CID)
|
||||
fi
|
||||
|
||||
Reference in new issue
Block a user