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

75 lines
1.8 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# SIM slot switcher for HuastLink HC-G60 or ZBT-WE2806-A
# by Konstantine Shevlakov at <shevlakov@132lan.ru> 2025
START=99
STOP=10
USE_PROCD=1
load_config_gpio(){
local gpio value
for c in gpio value; do
config_get $1_$c "$1" $c
export $1_$c
done
}
load_config_failover(){
local enable mode interval times_rsrp times_ping revert rsrp host
for c in enable mode interval times_rsrp times_ping revert rsrp host; do
config_get $1_$c "$1" $c
export $1_$c
done
}
reload_iface(){
[ "$iface" ] && {
for i in $iface; do
ifup $i
done
}
}
start_service(){
config_load ssw
config_foreach load_config_gpio modem
config_foreach load_config_gpio sim
modem_cur=$(cat /sys/class/gpio/$modem_gpio/value)
sim_cur=$(cat /sys/class/gpio/$sim_gpio/value)
iface=$(uci show network | awk -F [.] '/devices/{gsub("'\''","");print $2}' | tail -1)
if [ "$modem_value" = "$modem_cur" -a "$sim_value" = "$sim_cur" ]; then
continue
elif [ "$modem_value" = "$modem_cur" -a "$modem_value" = "1" ]; then
logger -t "SIM SW" "modem already enabled on gpio $modem_gpio. Restart it"
echo "0" > /sys/class/gpio/$modem_gpio/value
sleep 2
echo "$sim_value" > /sys/class/gpio/$sim_gpio/value
echo "$modem_value" > /sys/class/gpio/$modem_gpio/value
if [ -x /etc/init.d/smstools3 ]; then
/etc/init.d/smstools3 restart
fi
sleep 30 && reload_iface &
else
logger -t "SIM SW" "modem powered changed"
echo "$sim_value" > /sys/class/gpio/$sim_gpio/value
echo "$modem_value" > /sys/class/gpio/$modem_gpio/value
if [ -x /etc/init.d/smstools3 ]; then
/etc/init.d/smstools3 restart
fi
sleep 30 && reload_iface &
fi
#config_foreach load_config_failover failover
procd_open_instance
procd_set_param command /usr/share/ssw_track.sh
procd_close_instance
}
reload_service(){
start
}
service_triggers(){
procd_add_reload_trigger "ssw"
}