Optimized the dialing daemon to support the start and stop of individual dialing instances
This commit is contained in:
parent
5a743d8b1f
commit
3ed6d90b07
@ -2,13 +2,19 @@
|
|||||||
START=99
|
START=99
|
||||||
STOP=13
|
STOP=13
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
|
service="$(basename ${basescript:-$initscript})"
|
||||||
#脚本目录
|
#脚本目录
|
||||||
SCRIPT_DIR="/usr/share/qmodem"
|
SCRIPT_DIR="/usr/share/qmodem"
|
||||||
|
|
||||||
#运行目录
|
#运行目录
|
||||||
MODEM_RUNDIR="/var/run/qmodem"
|
MODEM_RUNDIR="/var/run/qmodem"
|
||||||
|
|
||||||
|
extra_command "dial" "<modem_cfg> run dial script"
|
||||||
|
extra_command "hang" "<modem_cfg> run hang script"
|
||||||
|
extra_command "redial" "<modem_cfg> stop previous dial script. run hang script. and run dial script"
|
||||||
|
extra_command "modem_status" "<modem_cfg> Check dial script status"
|
||||||
|
|
||||||
|
|
||||||
service_triggers()
|
service_triggers()
|
||||||
{
|
{
|
||||||
procd_add_reload_trigger "qmodem"
|
procd_add_reload_trigger "qmodem"
|
||||||
@ -16,51 +22,90 @@ service_triggers()
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_service(){
|
start_service(){
|
||||||
|
force_stop=0
|
||||||
mkdir -p $MODEM_RUNDIR
|
mkdir -p $MODEM_RUNDIR
|
||||||
|
update_modem
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_service(){
|
||||||
|
force_stop=1
|
||||||
|
update_modem
|
||||||
|
|
||||||
#加载模组配置
|
|
||||||
config_load qmodem
|
|
||||||
config_get enabled main enable_dial
|
|
||||||
[ "$enabled" = "0" ] && config_foreach hang_modem modem-device && stop
|
|
||||||
config_foreach run_modem modem-device
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service()
|
reload_service()
|
||||||
{
|
{
|
||||||
stop
|
force_stop=0
|
||||||
start
|
mkdir -p $MODEM_RUNDIR
|
||||||
|
update_modem
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_service()
|
|
||||||
{
|
update_modem(){
|
||||||
#清理运行目录
|
|
||||||
config_load qmodem
|
config_load qmodem
|
||||||
config_foreach hang_modem modem-device
|
config_get g_enabled main enable_dial
|
||||||
|
config_foreach _update_modem modem-device
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dial()
|
||||||
|
|
||||||
run_modem()
|
|
||||||
{
|
{
|
||||||
config_get state $1 state
|
_dial $1
|
||||||
if [ "$state" = "disabled" ] ;then
|
}
|
||||||
return
|
|
||||||
fi
|
hang()
|
||||||
|
{
|
||||||
|
_hang $1
|
||||||
|
}
|
||||||
|
|
||||||
|
modem_status()
|
||||||
|
{
|
||||||
|
_modem_status $1
|
||||||
|
}
|
||||||
|
|
||||||
|
redial()
|
||||||
|
{
|
||||||
|
hang $1
|
||||||
|
dial $1
|
||||||
|
}
|
||||||
|
|
||||||
|
_update_modem()
|
||||||
|
{
|
||||||
|
local target
|
||||||
|
target=1
|
||||||
config_get enabled $1 enable_dial
|
config_get enabled $1 enable_dial
|
||||||
if [ "$enabled" = "0" ] ;then
|
config_get state $1 state
|
||||||
hang_modem $1
|
if [ "$state" = "disabled" ] || [ "$enabled" = "0" ] || [ "$g_enabled" = "0" ] || [ "$force_stop" = "1" ];then
|
||||||
return
|
target=0
|
||||||
fi
|
fi
|
||||||
|
data=$(_procd_ubus_call list | jq -r ".$service.instances.modem_$1")
|
||||||
|
[ "$data" == "null" ] && current_status=0 || current_status=1
|
||||||
|
logger -t qmodem_network "current:$current_status;target:$target "
|
||||||
|
if [ "$current_status" != "$target" ];then
|
||||||
|
[ "$target" -eq 1 ] && _dial $1 || _hang $1
|
||||||
|
logger -t qmodem_network "update modem cfg: $1 dial:$target"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_dial()
|
||||||
|
{
|
||||||
procd_open_instance "modem_$1"
|
procd_open_instance "modem_$1"
|
||||||
procd_set_param command "/usr/share/qmodem/modem_dial.sh" "$1" dial
|
procd_set_param command "/usr/share/qmodem/modem_dial.sh" "$1" dial
|
||||||
procd_set_param respawn
|
procd_set_param respawn
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
logger -t modem_network "dial modem $1"
|
logger -t qmodem_network "Modem $1 Start Dial Now"
|
||||||
}
|
}
|
||||||
|
|
||||||
hang_modem()
|
_hang()
|
||||||
{
|
{
|
||||||
service_stop "modem_$1"
|
procd_kill $service "modem_$1"
|
||||||
"/usr/share/qmodem/modem_dial.sh" "$1" hang
|
/usr/share/qmodem/modem_dial.sh "$1" hang
|
||||||
logger -t modem_network "hang modem $1"
|
logger -t qmodem_network "Modem $1 Stop Dial and Hang"
|
||||||
|
}
|
||||||
|
|
||||||
|
_modem_status()
|
||||||
|
{
|
||||||
|
local instances="modem_$1"
|
||||||
|
local data
|
||||||
|
data=$(_procd_ubus_call list | jq -r ".$service.instances.$instances")
|
||||||
|
[ "$data" == "null" ] && echo "$instances Not Running" || echo "$data"
|
||||||
}
|
}
|
||||||
|
@ -575,8 +575,7 @@ dial(){
|
|||||||
|
|
||||||
wwan_hang()
|
wwan_hang()
|
||||||
{
|
{
|
||||||
#kill quectel-CM
|
m_debug "wwan_hang"
|
||||||
killall quectel-CM
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user