mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-08-03 16:19:32 +08:00
75 lines
1.8 KiB
Bash
Executable File
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"
|
|
}
|