aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/etc/rc.button
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/files/etc/rc.button')
-rwxr-xr-xpackage/base-files/files/etc/rc.button/failsafe5
-rwxr-xr-xpackage/base-files/files/etc/rc.button/power7
-rwxr-xr-xpackage/base-files/files/etc/rc.button/reset27
-rwxr-xr-xpackage/base-files/files/etc/rc.button/rfkill32
4 files changed, 71 insertions, 0 deletions
diff --git a/package/base-files/files/etc/rc.button/failsafe b/package/base-files/files/etc/rc.button/failsafe
new file mode 100755
index 0000000..ba958fa
--- /dev/null
+++ b/package/base-files/files/etc/rc.button/failsafe
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+[ "${TYPE}" = "switch" ] || echo ${BUTTON} > /tmp/failsafe_button
+
+return 0
diff --git a/package/base-files/files/etc/rc.button/power b/package/base-files/files/etc/rc.button/power
new file mode 100755
index 0000000..c245744
--- /dev/null
+++ b/package/base-files/files/etc/rc.button/power
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+[ "${ACTION}" = "released" ] || exit 0
+
+exec /sbin/poweroff
+
+return 0
diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset
new file mode 100755
index 0000000..c6dc7cf
--- /dev/null
+++ b/package/base-files/files/etc/rc.button/reset
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+case "$ACTION" in
+pressed)
+ return 5
+;;
+timeout)
+ . /etc/diag.sh
+ set_state failsafe
+;;
+released)
+ if [ "$SEEN" -lt 1 ]
+ then
+ echo "REBOOT" > /dev/console
+ sync
+ reboot
+ elif [ "$SEEN" -gt 5 ]
+ then
+ echo "FACTORY RESET" > /dev/console
+ jffs2reset -y && reboot &
+ fi
+;;
+esac
+
+return 0
diff --git a/package/base-files/files/etc/rc.button/rfkill b/package/base-files/files/etc/rc.button/rfkill
new file mode 100755
index 0000000..9e2c12f
--- /dev/null
+++ b/package/base-files/files/etc/rc.button/rfkill
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+[ "${ACTION}" = "released" -o -n "${TYPE}" ] || exit 0
+
+. /lib/functions.sh
+
+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
+}
+
+config_load wireless
+case "${TYPE}" in
+"switch")
+ [ "${ACTION}" = "released" ] && rfkill_state=1
+ ;;
+*)
+ config_foreach wifi_rfkill_check wifi-device
+ ;;
+esac
+config_foreach wifi_rfkill_set wifi-device
+uci commit wireless
+wifi up
+
+return 0