diff --git a/luci/luci-app-qmodem/root/etc/init.d/qmodem_network b/luci/luci-app-qmodem/root/etc/init.d/qmodem_network index f9c47fb..1f95d09 100755 --- a/luci/luci-app-qmodem/root/etc/init.d/qmodem_network +++ b/luci/luci-app-qmodem/root/etc/init.d/qmodem_network @@ -2,65 +2,110 @@ START=99 STOP=13 USE_PROCD=1 - +service="$(basename ${basescript:-$initscript})" #脚本目录 SCRIPT_DIR="/usr/share/qmodem" #运行目录 MODEM_RUNDIR="/var/run/qmodem" +extra_command "dial" " run dial script" +extra_command "hang" " run hang script" +extra_command "redial" " stop previous dial script. run hang script. and run dial script" +extra_command "modem_status" " Check dial script status" + + service_triggers() { procd_add_reload_trigger "qmodem" } -start_service() { +start_service(){ + force_stop=0 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() { - stop - start + force_stop=0 + mkdir -p $MODEM_RUNDIR + update_modem } -stop_service() -{ - #清理运行目录 + +update_modem(){ config_load qmodem - config_foreach hang_modem modem-device + config_get g_enabled main enable_dial + config_foreach _update_modem modem-device } - - -run_modem() +dial() { - config_get state $1 state - if [ "$state" = "disabled" ] ;then - return - fi + _dial $1 +} + +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 - if [ "$enabled" = "0" ] ;then - hang_modem $1 - return + config_get state $1 state + if [ "$state" = "disabled" ] || [ "$enabled" = "0" ] || [ "$g_enabled" = "0" ] || [ "$force_stop" = "1" ];then + target=0 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_set_param command "/usr/share/qmodem/modem_dial.sh" "$1" dial procd_set_param respawn 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" - "/usr/share/qmodem/modem_dial.sh" "$1" hang - logger -t modem_network "hang modem $1" + procd_kill $service "modem_$1" + /usr/share/qmodem/modem_dial.sh "$1" hang + 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" } diff --git a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh index 6d8f2ad..a11cbb8 100755 --- a/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh +++ b/luci/luci-app-qmodem/root/usr/share/qmodem/modem_dial.sh @@ -575,8 +575,7 @@ dial(){ wwan_hang() { - #kill quectel-CM - killall quectel-CM + m_debug "wwan_hang" }