mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 06:43:56 +08:00
🌴 Sync 2026-05-27 21:11:55
This commit is contained in:
1 parent
9a80633c00
commit
a5d0ad7cb9
24 files changed
+529
-241
No files matched your search
+31
-27
@@ -2,6 +2,7 @@
|
||||
|
||||
# SIM slot switcher for HuastLink HC-G60 or ZBT-WE2806-A
|
||||
# by Konstantine Shevlakov at <shevlakov@132lan.ru> 2025
|
||||
# Audited & fixed 2025
|
||||
|
||||
START=99
|
||||
STOP=10
|
||||
@@ -11,7 +12,6 @@ load_config_gpio(){
|
||||
local gpio value
|
||||
for c in gpio value; do
|
||||
config_get $1_$c "$1" $c
|
||||
export $1_$c
|
||||
done
|
||||
}
|
||||
|
||||
@@ -19,54 +19,58 @@ 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" ] && {
|
||||
[ "$iface" ] && {
|
||||
for i in $iface; do
|
||||
ifup $i
|
||||
ifup "$i"
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
_apply_modem_state(){
|
||||
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 &
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
local modem_cur sim_cur
|
||||
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" ] && [ "$sim_value" = "$sim_cur" ]; then
|
||||
logger -t "SIM SW" "Modem and SIM already in correct state. Nothing to do."
|
||||
return 0
|
||||
elif [ "$modem_value" = "$modem_cur" ] && [ "$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 &
|
||||
_apply_modem_state
|
||||
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 &
|
||||
logger -t "SIM SW" "Modem power state changed."
|
||||
_apply_modem_state
|
||||
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
|
||||
start_service
|
||||
}
|
||||
|
||||
service_triggers(){
|
||||
|
||||
Reference in new issue
Block a user