From 59cc6d9dddcead0f72277d0d13eb0dd773741349 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Fri, 21 Dec 2012 13:47:50 +0000
Subject: [PATCH] improve button handling

SVN-Revision: 34823
---
 .../etc/hotplug.d/button/10-generic.sh        | 50 +++++++++++++++----
 1 file changed, 39 insertions(+), 11 deletions(-)

diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/button/10-generic.sh b/target/linux/lantiq/base-files/etc/hotplug.d/button/10-generic.sh
index e6dcb347f1..4b305fbdfb 100644
--- a/target/linux/lantiq/base-files/etc/hotplug.d/button/10-generic.sh
+++ b/target/linux/lantiq/base-files/etc/hotplug.d/button/10-generic.sh
@@ -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}"
 		;;
-- 
2.30.2