improve button handling
authorJohn Crispin <john@openwrt.org>
Fri, 21 Dec 2012 13:47:50 +0000 (13:47 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 21 Dec 2012 13:47:50 +0000 (13:47 +0000)
SVN-Revision: 34823

target/linux/lantiq/base-files/etc/hotplug.d/button/10-generic.sh

index e6dcb347f1a72adf8ecdec55e13dc8898bf13e11..4b305fbdfbd548bdda91694b1e8066605b054d95 100644 (file)
@@ -4,21 +4,49 @@
 
 . /lib/functions.sh
 
+logger "$BUTTON pressed for $SEEN seconds"
+
+local rfkill_state=0
+
+wifi_rfkill_set() {
+       uci set wireless.$1.disabled=$rfkill_state
+}
+
+wifi_rfkill_check() {
+       local disabled
+       config_get disabled $1 disabled
+       [ "$disabled" = "1" ] || rfkill_state=1
+}
+
 case "${BUTTON}" in
        reset)
-               logger "reset pressed"
-               echo "REBOOT" > /dev/console
-               sleep 3
-               sync
-               reboot
+               if [ "$SEEN" -lt 1 ]
+               then
+                       echo "REBOOT" > /dev/console
+                       sync
+                       reboot
+               elif [ "$SEEN" -gt 5 ]
+               then
+                       echo "FACTORY RESET" > /dev/console
+                       firstboot && reboot &
+               fi
                ;;
-       BTN_1)
-               logger "factory pressed"
-               echo "FACTORY RESET" > /dev/console
-               jffs2_mark_erase "rootfs_data"
-               sync
-               reboot
+
+       wps)
+               for dir in /var/run/hostapd-*; do
+                       [ -d "$dir" ] || continue
+                       hostapd_cli -p "$dir" wps_pbc
+               done
+               ;;
+
+       rfkill)
+               config_load wireless
+               config_foreach wifi_rfkill_check wifi-device
+               config_foreach wifi_rfkill_set wifi-device
+               uci commit wireless
+               wifi up
                ;;
+
        *)
                logger "unknown button ${BUTTON}"
                ;;