289 lines
7.5 KiB
Bash
Executable File
289 lines
7.5 KiB
Bash
Executable File
#!/bin/sh
|
||
SCRIPT_DIR="/usr/share/qmodem"
|
||
source /usr/share/libubox/jshn.sh
|
||
source "${SCRIPT_DIR}/modem_util.sh"
|
||
add_plain_info_entry()
|
||
{
|
||
key=$1
|
||
value=$2
|
||
key_full_name=$3
|
||
class_overwrite=$4
|
||
if [ -n "$class_overwrite" ]; then
|
||
class="$class_overwrite"
|
||
fi
|
||
json_add_object ""
|
||
json_add_string key "$key"
|
||
json_add_string value "$value"
|
||
json_add_string "full_name" "$key_full_name"
|
||
json_add_string "type" "plain_text"
|
||
if [ -n "$class" ]; then
|
||
json_add_string "class" "$class"
|
||
fi
|
||
json_close_object
|
||
}
|
||
|
||
add_warning_message_entry()
|
||
{
|
||
key=$1
|
||
value=$2
|
||
key_full_name=$3
|
||
class_overwrite=$4
|
||
if [ -n "$class_overwrite" ]; then
|
||
class="$class_overwrite"
|
||
fi
|
||
json_add_object ""
|
||
json_add_string key "$key"
|
||
json_add_string value "$value"
|
||
json_add_string "full_name" "$key_full_name"
|
||
json_add_string "type" "warnning_message"
|
||
if [ -n "$class" ]; then
|
||
json_add_string "class" "$class"
|
||
fi
|
||
json_close_object
|
||
}
|
||
|
||
add_bar_info_entry()
|
||
{
|
||
key=$1
|
||
value=$2
|
||
key_full_name=$3
|
||
min_value=$4
|
||
max_value=$5
|
||
unit=$6
|
||
class_overwrite=$7
|
||
if [ -n "$class_overwrite" ]; then
|
||
class="$class_overwrite"
|
||
fi
|
||
json_add_object ""
|
||
json_add_string key "$key"
|
||
json_add_string value "$value"
|
||
json_add_string min_value "$min_value"
|
||
json_add_string max_value "$max_value"
|
||
json_add_string "full_name" "$key_full_name"
|
||
json_add_string "unit" "$unit"
|
||
json_add_string "type" "progress_bar"
|
||
if [ -n "$class" ]; then
|
||
json_add_string "class" "$class"
|
||
fi
|
||
json_close_object
|
||
}
|
||
|
||
add_avalible_band_entry()
|
||
{
|
||
band_id=$1
|
||
band_name=$2
|
||
json_add_object ""
|
||
json_add_string band_id "$band_id"
|
||
json_add_string band_name "$band_name"
|
||
json_add_string "type" "avalible_band"
|
||
json_close_object
|
||
}
|
||
|
||
|
||
get_dns()
|
||
{
|
||
[ -z "$define_connect" ] && {
|
||
define_connect="1"
|
||
}
|
||
|
||
local public_dns1_ipv4="223.5.5.5"
|
||
local public_dns2_ipv4="119.29.29.29"
|
||
local public_dns1_ipv6="2400:3200::1" #下一代互联网北京研究中心:240C::6666,阿里:2400:3200::1,腾讯:2402:4e00::
|
||
local public_dns2_ipv6="2402:4e00::"
|
||
|
||
#获取DNS地址
|
||
at_command="AT+GTDNS=${define_connect}"
|
||
local response=$(at ${at_port} ${at_command} | grep "+GTDNS: ")
|
||
|
||
local ipv4_dns1=$(echo "${response}" | awk -F'"' '{print $2}' | awk -F',' '{print $1}')
|
||
[ -z "$ipv4_dns1" ] && {
|
||
ipv4_dns1="${public_dns1_ipv4}"
|
||
}
|
||
|
||
local ipv4_dns2=$(echo "${response}" | awk -F'"' '{print $4}' | awk -F',' '{print $1}')
|
||
[ -z "$ipv4_dns2" ] && {
|
||
ipv4_dns2="${public_dns2_ipv4}"
|
||
}
|
||
|
||
local ipv6_dns1=$(echo "${response}" | awk -F'"' '{print $2}' | awk -F',' '{print $2}')
|
||
[ -z "$ipv6_dns1" ] && {
|
||
ipv6_dns1="${public_dns1_ipv6}"
|
||
}
|
||
|
||
local ipv6_dns2=$(echo "${response}" | awk -F'"' '{print $4}' | awk -F',' '{print $2}')
|
||
[ -z "$ipv6_dns2" ] && {
|
||
ipv6_dns2="${public_dns2_ipv6}"
|
||
}
|
||
json_add_object "dns"
|
||
json_add_string "ipv4_dns1" "$ipv4_dns1"
|
||
json_add_string "ipv4_dns2" "$ipv4_dns2"
|
||
json_add_string "ipv6_dns1" "$ipv6_dns1"
|
||
json_add_string "ipv6_dns2" "$ipv6_dns2"
|
||
json_close_object
|
||
}
|
||
|
||
get_sim_status()
|
||
{
|
||
local sim_status
|
||
case $1 in
|
||
"")
|
||
sim_status="miss"
|
||
sim_state_code=0
|
||
;;
|
||
*"ERROR"*)
|
||
sim_status="miss"
|
||
sim_state_code=0
|
||
;;
|
||
*"READY"*)
|
||
sim_status="ready"
|
||
sim_state_code=1
|
||
;;
|
||
*"SIM PIN"*)
|
||
sim_status="MT is waiting SIM PIN to be given"
|
||
sim_state_code=2
|
||
;;
|
||
*"SIM PUK"*)
|
||
sim_status="MT is waiting SIM PUK to be given"
|
||
sim_state_code=3
|
||
;;
|
||
*"PH-FSIM PIN"*)
|
||
sim_status="MT is waiting phone-to-SIM card password to be given"
|
||
sim_state_code=4
|
||
;;
|
||
*"PH-FSIM PIN"*)
|
||
sim_status="MT is waiting phone-to-very first SIM card password to be given"
|
||
sim_state_code=5
|
||
;;
|
||
*"PH-FSIM PUK"*)
|
||
sim_status="MT is waiting phone-to-very first SIM card unblocking password to be given"
|
||
sim_state_code=6
|
||
;;
|
||
*"SIM PIN2"*)
|
||
sim_status="MT is waiting SIM PIN2 to be given"
|
||
sim_state_code=7
|
||
;;
|
||
*"SIM PUK2"*)
|
||
sim_status="MT is waiting SIM PUK2 to be given"
|
||
sim_state_code=8
|
||
;;
|
||
*"PH-NET PIN"*)
|
||
sim_status="MT is waiting network personalization password to be given"
|
||
sim_state_code=9
|
||
;;
|
||
*"PH-NET PUK"*)
|
||
sim_status="MT is waiting network personalization unblocking password to be given"
|
||
sim_state_code=10
|
||
;;
|
||
*"PH-NETSUB PIN"*)
|
||
sim_status="MT is waiting network subset personalization password to be given"
|
||
sim_state_code=11
|
||
;;
|
||
*"PH-NETSUB PUK"*)
|
||
sim_status="MT is waiting network subset personalization unblocking password to be given"
|
||
sim_state_code=12
|
||
;;
|
||
*"PH-SP PIN"*)
|
||
sim_status="MT is waiting service provider personalization password to be given"
|
||
sim_state_code=13
|
||
;;
|
||
*"PH-SP PUK"*)
|
||
sim_status="MT is waiting service provider personalization unblocking password to be given"
|
||
sim_state_code=14
|
||
;;
|
||
*"PH-CORP PIN"*)
|
||
sim_status="MT is waiting corporate personalization password to be given"
|
||
sim_state_code=16
|
||
;;
|
||
|
||
*"PH-CORP PUK"*)
|
||
sim_status="MT is waiting corporate personalization unblocking password to be given"
|
||
sim_state_code=17
|
||
;;
|
||
*)
|
||
sim_status="unknown"
|
||
sim_state_code=99
|
||
;;
|
||
esac
|
||
echo "$sim_status"
|
||
}
|
||
|
||
#获取信号强度指示
|
||
# $1:信号强度指示数字
|
||
get_rssi()
|
||
{
|
||
local rssi
|
||
case $1 in
|
||
"99") rssi="unknown" ;;
|
||
* ) rssi=$((2 * $1 - 113)) ;;
|
||
esac
|
||
echo "$rssi"
|
||
}
|
||
|
||
#获取网络类型
|
||
# $1:网络类型数字
|
||
get_rat()
|
||
{
|
||
local rat
|
||
case $1 in
|
||
"0"|"1"|"3"|"8") rat="GSM" ;;
|
||
"2"|"4"|"5"|"6"|"9"|"10") rat="WCDMA" ;;
|
||
"7") rat="LTE" ;;
|
||
"11"|"12") rat="NR" ;;
|
||
esac
|
||
echo "${rat}"
|
||
}
|
||
|
||
#获取连接状态
|
||
#return raw data
|
||
get_connect_status()
|
||
{
|
||
at_cmd="AT+CGPADDR=1"
|
||
[ "$define_connect" == "3" ] && at_cmd="AT+CGPADDR=3"
|
||
expect="+CGPADDR:"
|
||
result=$(at $at_port $at_cmd | grep $expect)
|
||
if [ -n "$result" ];then
|
||
ipv6=$(echo $result | grep -oE "\b([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}\b")
|
||
ipv4=$(echo $result | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
|
||
disallow_ipv4="0.0.0.0"
|
||
#remove the disallow ip
|
||
if [ "$ipv4" == "$disallow_ipv4" ];then
|
||
ipv4=""
|
||
fi
|
||
fi
|
||
if [ -n "$ipv4" ] || [ -n "$ipv6" ];then
|
||
connect_status="Yes"
|
||
else
|
||
connect_status="No"
|
||
fi
|
||
add_plain_info_entry "connect_status" "$connect_status" "Connect Status"
|
||
}
|
||
|
||
#获取移远模组信息
|
||
# $1:AT串口
|
||
# $2:平台
|
||
# $3:连接定义
|
||
get_info()
|
||
{
|
||
#基本信息
|
||
base_info
|
||
|
||
#SIM卡信息
|
||
sim_info
|
||
if [ "$sim_status" != "ready" ]; then
|
||
add_warning_message_entry "sim_status" "$sim_status" "SIM Error,Error code:" "warning"
|
||
return
|
||
fi
|
||
|
||
#网络信息
|
||
network_info
|
||
if [ "$connect_status" != "Yes" ]; then
|
||
return
|
||
fi
|
||
|
||
#小区信息
|
||
cell_info
|
||
|
||
return
|
||
|
||
}
|