mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 02:11:19 +08:00
64 lines
1.4 KiB
Bash
Executable File
64 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# SIM slot switcher - schedule handler
|
|
# Called by cron, generated by /etc/init.d/ssw
|
|
# by Konstantine Shevlakov at <shevlakov@132lan.ru> 2025
|
|
|
|
NODE="SW SIM SCHED"
|
|
|
|
get_vars() {
|
|
for d in modem sim; do
|
|
for s in gpio value; do
|
|
eval "${d}_${s}=$(uci -q get ssw.${d}.${s} 2>/dev/null)"
|
|
done
|
|
done
|
|
}
|
|
|
|
reload_iface() {
|
|
local iface
|
|
iface=$(uci show network | awk -F'[.]' '/devices/{gsub("'\''",""); print $2}' | tail -1)
|
|
[ -n "$iface" ] && ifup "$iface"
|
|
}
|
|
|
|
sw_sim() {
|
|
local cur_sim next_sim
|
|
cur_sim=$(cat /sys/class/gpio/"$sim_gpio"/value)
|
|
case "$cur_sim" in
|
|
0) next_sim=1 ;;
|
|
1) next_sim=0 ;;
|
|
*) logger -t "$NODE" "ERROR: unexpected sim gpio value: $cur_sim"; exit 1 ;;
|
|
esac
|
|
|
|
logger -t "$NODE" "Switching SIM: slot $cur_sim -> slot $next_sim"
|
|
echo "0" > /sys/class/gpio/"$modem_gpio"/value
|
|
echo "$next_sim" > /sys/class/gpio/"$sim_gpio"/value
|
|
|
|
if [ "$modem_value" = "1" ]; then
|
|
sleep 2
|
|
echo "1" > /sys/class/gpio/"$modem_gpio"/value
|
|
if [ -x /etc/init.d/smstools3 ]; then
|
|
/etc/init.d/smstools3 restart
|
|
fi
|
|
fi
|
|
sleep 5 && reload_iface &
|
|
}
|
|
|
|
sw_revert() {
|
|
local cur_sim
|
|
cur_sim=$(cat /sys/class/gpio/"$sim_gpio"/value)
|
|
if [ "$cur_sim" != "$sim_value" ]; then
|
|
logger -t "$NODE" "Reverting SIM to default slot $sim_value"
|
|
sw_sim
|
|
else
|
|
logger -t "$NODE" "SIM already on default slot $sim_value, nothing to do"
|
|
fi
|
|
}
|
|
|
|
# --- main ---
|
|
get_vars
|
|
|
|
case "$1" in
|
|
revert) sw_revert ;;
|
|
*) sw_sim ;;
|
|
esac
|