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
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
|