summaryrefslogtreecommitdiff
path: root/recipes-core/multitech/reset-handler/reset-handler.sh
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core/multitech/reset-handler/reset-handler.sh')
-rwxr-xr-xrecipes-core/multitech/reset-handler/reset-handler.sh15
1 files changed, 13 insertions, 2 deletions
diff --git a/recipes-core/multitech/reset-handler/reset-handler.sh b/recipes-core/multitech/reset-handler/reset-handler.sh
index 43f7471..7988342 100755
--- a/recipes-core/multitech/reset-handler/reset-handler.sh
+++ b/recipes-core/multitech/reset-handler/reset-handler.sh
@@ -24,9 +24,10 @@ name="reset-handler"
log="logger -t $name -s"
pid="$$"
-short_signal=10 # SIGUSR1
-long_signal=12 # SIGUSR2
+short_signal=10 # SIGUSR1
+long_signal=12 # SIGUSR2
extralong_signal=1 # SIGHUP
+power_signal=30 # SIGPWR
do_reboot() {
$log "Rebooting on button press"
@@ -34,6 +35,11 @@ do_reboot() {
reboot
}
+do_shutdown() {
+ $log "Shutting down"
+ shutdown -h now
+}
+
do_restore_defaults() {
$log "Removing /var/config contents"
rm -rf /var/config/*
@@ -69,11 +75,16 @@ trap do_reboot $short_signal
trap do_restore_defaults $long_signal
trap do_restore_defaults $extralong_signal
trap log_exit TERM
+trap do_shutdown $power_signal
$log "Enabling reset-monitor for pid $pid"
mts-io-sysfs store reset-monitor "$pid $short_signal $long_signal $extralong_signal"
# set long press to 5 seconds for reset to defaults
mts-io-sysfs store reset-monitor-intervals "5 30"
+# set up SIGPWR shutdown
+if [[ -f /sys/devices/platform/mts-io/supercap-monitor ]] ; then
+ mts-io-sysfs store supercap-monitor "$pid $power_signal"
+fi
# wait for signals
idle_wait