sfwtw c04684dabe luci-app-qmodem: add support for Telit FN990A40
Signed-off-by: sfwtw <wtw@cr.cx>
2025-06-27 21:35:03 +08:00

194 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# Copyright (C) 2024 Tom <fjrcn@outlook.com>
at()
{
local at_port=$1
local new_str="${2/[$]/$}"
local atcmd="${new_str/\"/\"}"
#过滤空行
#sms_tool_q -d $at_port at "$atcmd"
tom_modem -d $at_port -o a -c "$atcmd"
}
fastat()
{
local at_port=$1
local new_str="${2/[$]/$}"
local atcmd="${new_str/\"/\"}"
#过滤空行
# sms_tool_q -t 1 -d $at_port at "$atcmd"
tom_modem -d $at_port -o a -c "$atcmd" -t 1
}
log2file()
{
local subject="$1"
local msg="$2"
local path="$3"
#打印日志
local update_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "[${update_time}] ${subject}:${msg} " >> "${path}"
}
log2sys()
{
local subject="$1"
local msg="$2"
logger -t "$subject" "$msg"
}
m_debug ()
{
[ -z "$debug_subject" ] && subject="modem_util" || subject="$debug_subject"
[ -n "$direct_debug" ] && echo "$subject" "$1"
if [ -n "$log_file" ];then
log2file "$subject" "$1" "$log_file"
else
log2sys "$subject" "$1"
fi
}
update_sim_slot()
{
. /lib/functions.sh
board=$(board_name)
case $board in
HC,HC-G80*)
sim_pin="/sys/class/gpio/sim/value"
sim_pin_value=$(cat $sim_pin)
[ "$sim_pin_value" == "0" ] && sim_slot="2" || sim_slot="1"
#电平高表示SIM卡在卡槽1电平低表示SIM卡在卡槽2
debug "update_sim_slot:sim_slot=$sim_slot"
;;
ailf,gs2410|\
huasifei,ws3006)
sim_pin="/sys/class/gpio/dual_sim/value"
#电平高则都在卡槽1电平低则需要使用at查询
[ "$(cat $sim_pin)" == "1" ] && sim_slot="1" || at_get_slot
;;
*)
at_get_slot
;;
esac
}
at_get_slot()
{
case $vendor in
"quectel")
at_res=$(at $at_port AT+QSIMDET? |grep +QSIMDET: |awk -F: '{print $2}')
case "$at_res" in
"1")
sim_slot="1"
;;
"2")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
"fibocom")
at_res=$(at $at_port AT+GTDUALSIM? |grep +GTDUALSIM: |awk -F: '{print $2}')
case $at_res in
"0")
sim_slot="1"
;;
"1")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
"simcom")
at_res=$(at $at_port AT+SMSIMCFG? | grep "+SMSIMCFG:" | awk -F',' '{print $2}' | sed 's/\r//g')
case $at_res in
"1")
sim_slot="1"
;;
"2")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
"meig")
at_res=$(at $at_port AT^SIMSLOT? | grep "\^SIMSLOT:" | awk -F': ' '{print $2}' | awk -F',' '{print $2}')
case $at_res in
"1")
sim_slot="1"
;;
"0")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
"neoway")
at_res=$(at $at_port 'AT+SIMCROSS?' | grep "+SIMCROSS:" | awk -F'[ ,]' '{print $2}' | sed 's/\r//g')
case $at_res in
"1")
sim_slot="1"
;;
"2")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
"telit")
at_res=$(at $at_port AT#QSS? | grep "#QSS:" | awk -F',' '{print $3}' | sed 's/\r//g')
case $at_res in
"0")
sim_slot="1"
;;
"1")
sim_slot="2"
;;
*)
sim_slot="1"
;;
*)
sim_slot="1"
;;
esac
;;
*)
at_q_res=$(at $at_port AT+QSIMDET? |grep +QSIMDET: |awk -F: '{print $2}')
at_f_res=$(at $at_port AT+GTDUALSIM? |grep +GTDUALSIM: |awk -F: '{print $2}')
[ "$at_q_res" == "1" ] && sim_slot="1" && return
[ "$at_q_res" == "2" ] && sim_slot="2" && return
[ "$at_f_res" == "0" ] && sim_slot="1" && return
[ "$at_f_res" == "1" ] && sim_slot="2" && return
sim_slot="1"
;;
esac
}