#!/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