mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-31 23:01:21 +08:00
139 lines
3.4 KiB
Bash
Executable File
139 lines
3.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#
|
|
# (c) 2024-2025 Cezary Jackiewicz <cezary@eko.one.pl>
|
|
#
|
|
|
|
. /lib/functions.sh
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
FORMAT=1
|
|
[ "x$1" = "xjson" ] && FORMAT=2
|
|
ECM=""
|
|
|
|
RES="/usr/share/modemdata"
|
|
|
|
format_conn_time() {
|
|
CT=$1
|
|
D=$(expr $CT / 60 / 60 / 24)
|
|
H=$(expr $CT / 60 / 60 % 24)
|
|
M=$(expr $CT / 60 % 60)
|
|
S=$(expr $CT % 60)
|
|
printf "%dd, %02d:%02d:%02d" $D $H $M $S
|
|
}
|
|
|
|
SEPARATOR=""
|
|
parse_section() {
|
|
[ -n "$SEPARATOR" ] && echo "$SEPARATOR"
|
|
local section="$1"
|
|
config_get device "$section" device ""
|
|
config_get network "$section" network ""
|
|
config_get force_plmn "$section" force_plmn "0"
|
|
|
|
if echo "x$device" | grep -q "192.168."; then
|
|
ECM="$RES/addon/ecm/huawei.sh $device"
|
|
else
|
|
ECM=""
|
|
if [ ! -e /var/state/3ginfo-detected ]; then
|
|
[ -z "$device" ] && device=$(/usr/share/3ginfo/detectdevice.sh)
|
|
[ -z "$network" ] && network=$(/usr/share/3ginfo/detectsection.sh "$section")
|
|
fi
|
|
config_get pincode "$section" pincode ""
|
|
if [ -n "$pincode" ] && [ ! -e /var/state/3ginfo-pincode ]; then
|
|
[ -n "$device" ] && sms_tool -d "$device" at "at+cpin=\"$pincode\""
|
|
fi
|
|
fi
|
|
|
|
if [ "$FORMAT" = "1" ]; then
|
|
SEPARATOR="---"
|
|
json_init
|
|
if [ -n "$ECM" ]; then
|
|
json_load "$($ECM product)"
|
|
else
|
|
json_load "$($RES/product.sh "$device")"
|
|
fi
|
|
json_get_vars vendor product revision imei iccid imsi
|
|
echo "Device: ${vendor} ${product}"
|
|
echo "Revision: ${revision}"
|
|
echo "IMEI: ${imei}"
|
|
echo "ICCID: ${iccid}"
|
|
echo "IMSI: ${imsi}"
|
|
echo ""
|
|
|
|
json_init
|
|
json_load "$($RES/network.sh "$network")"
|
|
json_get_vars conn_time_sec rx tx
|
|
echo "Connected time: "$(format_conn_time ${conn_time_sec})
|
|
echo "TX: ${tx}"
|
|
echo "RX: ${rx}"
|
|
echo ""
|
|
|
|
json_init
|
|
if [ -n "$ECM" ]; then
|
|
json_load "$($ECM params)"
|
|
else
|
|
json_load "$($RES/params.sh "$device" "$force_plmn")"
|
|
fi
|
|
json_get_vars signal operator_name operator_mcc operator_mnc country mode registration lac_dec lac_hex cid_dec cid_hex
|
|
echo "Signal: ${signal} %"
|
|
echo "Mode: ${mode}"
|
|
echo "Operator: ${operator_name} (${operator_mcc} ${operator_mnc})"
|
|
[ -n "$country" ] && echo "Country: ${country}"
|
|
case $registration in
|
|
0) REG="not registered";;
|
|
1) REG="registered, home network";;
|
|
2) REG="not registered, searching";;
|
|
3) REG="registration denied";;
|
|
5) REG="registered, roaming";;
|
|
6) REG="registered for SMS only, home network";;
|
|
7) REG="registered for SMS only, roaming";;
|
|
*) REG="$registration";;
|
|
esac
|
|
echo "Registration: ${REG}"
|
|
echo ""
|
|
T="21;CellID: ${cid_dec} (${cid_hex})"
|
|
T="${T}\n22;LAC: ${lac_dec} (${lac_hex})"
|
|
if json_is_a addon array; then
|
|
json_get_keys addon addon
|
|
json_select addon
|
|
for i in $addon; do
|
|
json_select "$i"
|
|
json_get_vars idx key value
|
|
json_select ..
|
|
if [ "$idx" = "10" ]; then
|
|
T="${T}\n${idx};${key}: ${value/°/°}"
|
|
else
|
|
T="${T}\n${idx};${key}: ${value}"
|
|
fi
|
|
done
|
|
fi
|
|
echo -e "$T" | sort | awk -F[\;] '{print $2}'
|
|
else
|
|
SEPARATOR=","
|
|
echo "["
|
|
if [ -n "$ECM" ]; then
|
|
$ECM product
|
|
echo ","
|
|
$RES/network.sh "$network"
|
|
echo ","
|
|
$ECM params
|
|
else
|
|
$RES/product.sh "$device"
|
|
echo ","
|
|
$RES/network.sh "$network"
|
|
echo ","
|
|
$RES/params.sh "$device" "$force_plmn"
|
|
fi
|
|
echo "]"
|
|
fi
|
|
}
|
|
|
|
config_load 3ginfo
|
|
[ "$FORMAT" = "2" ] && echo '{"res":['
|
|
config_foreach parse_section 3ginfo
|
|
[ "$FORMAT" = "2" ] && echo ']}'
|
|
touch /var/state/3ginfo-detected
|
|
touch /var/state/3ginfo-pincode
|
|
|
|
exit 0
|