You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.4 KiB
Bash

#!/bin/sh
logger() {
command logger -t "wps-button" "$@"
}
# default: button scheme 2014 Wifi button
WPS_MAX_DEFAULT=3
OFF_MAX=10
ON_MAX=20
. /lib/functions.sh
. /lib/delos-functions.sh
#DEBUG=logger
WPS_MAX=$(uci_get wireless wps max_hold_time WPS_MAX_DEFAULT)
wifi_on() {
local value
config_get value $1 cfg_disabled '0' # default value if unset is 0 (on)
uci_set wireless $1 disabled $value
if [ "$value" == "0" ] ; then
logger "wifi $1 now enabled"
fi
}
wifi_off() {
config_get disabled $1 disabled '0'
[ "$disabled" = 0 ] && {
uci_set wireless $1 disabled 1
logger "wifi $1 now disabled"
}
}
do_wifi() {
logger "wifi $1"
config_load wireless
if [ "$1" = "on" ] ; then
dvl_check_and_set_wifi_cfg_disabled
#reload config . maybe someting has been changed in the function above
config_load wireless
config_foreach wifi_on wifi-device
else
config_foreach wifi_off wifi-device
fi
uci_commit wireless
reload_config # use procd to check for config changes
}
debug "$ACTION after ${SEEN}s"
# get cumulative radio enabled state
wifi=false
for radio in 0 1 ; do
[ -n "$(uci_get wireless wifi$radio)" ] && [ "$(uci_get wireless wifi$radio disabled)" != "1" ] && {
wifi=true
break
}
done
# ignore other releases
! $wifi && [ "$ACTION" = "released" ] && [ "$SEEN" -lt $ON_MAX ] && {
do_wifi on &
exit 0
}
$wifi && [ "$ACTION" = "released" ] && [ "$SEEN" -ge $WPS_MAX ] && [ "$SEEN" -lt $OFF_MAX ] && {
do_wifi off &
exit 0
}
exit 0