op-packages/luci-app-hypercpe/root/etc/init.d/modem
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

87 lines
2.0 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2014 OpenWrt.org
START=16
STOP=16
USE_PROCD=1
# 运行模块配置
runModem() {
local enabled
config_get_bool enabled $1 enabled
if [ "$enabled" != "1" ]; then
echo "Modem not enabled, skipping." >> /tmp/log4g
return
fi
echo "run runModem" >> /tmp/log4g
local user password apn auth pincode device tool pdptype tty atcmd
config_get user $1 user
config_get password $1 password
config_get apn $1 apn
config_get auth $1 auth
config_get pincode $1 pincode
config_get device $1 device
config_get tool $1 tool
config_get pdptype $1 pdptype
config_get tty $1 tty
config_get atcmd $1 atcmd
if [ -z "$device" ] || [ -z "$tool" ]; then
echo "Critical configuration missing: device or tool is not set." >> /tmp/log4g
return
fi
case "$pdptype" in
"IPV4V6") pdptype='-4 -6' ;;
"IPV6") pdptype='-6' ;;
*) pdptype='' ;;
esac
local devname=$(basename "$device")
local devpath=$(readlink -f "/sys/class/usbmisc/$devname/device/")
local ifname=$(ls "$devpath/net" 2>/dev/null)
# 构建命令参数
local cmd_params=""
if [ -n "$ifname" ]; then
cmd_params="-i $ifname"
fi
cmd_params="$cmd_params -s $apn $pdptype"
if [ -n "$password" ]; then
cmd_params="$cmd_params $user $password $auth"
fi
if [ -n "$pincode" ]; then
cmd_params="$cmd_params -p $pincode"
fi
procd_open_instance
procd_set_param command $tool $cmd_params
procd_set_param respawn
echo "quectel-CM has started."
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "modem"
}
start_service() {
config_load modem
config_foreach runModem ndis
}
stop_service() {
echo "runModem stop" >> /tmp/log4g
killall quectel-CM # 考虑使用更精确的方法来停止服务
echo "quectel-CM has stopped."
}
reload_service() {
restart
}