FunKey-OS/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/powerdown

84 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# Uncomment the following line to get debug info
#set -x
SELF="$(basename ${0})"
REBOOTING_FILE="/run/rebooting"
usage() {
>&2 echo "Usage: ${SELF} schedule delay"
>&2 echo " ${SELF} handle"
>&2 echo " ${SELF} now"
exit 1
}
schedule_powerdown() {
# Send USR1 signal to the running FunKey process to warn about
# impending shutdown
pkill -USR1 "$(pid print)" > /dev/null 2>&1
# Delay for the given grace period seconds to catch signal USR2.
# If the signal is caught, then it means the running FunKey
# process canceled this shutdown and will handle it by itself.
sleep ${1}
# Delay expired, initiate final powerdown
powerdown_now
}
handle_powerdown() {
pkill -f "powerdown schedule"
}
powerdown_now() {
# Sync before all else
sync
# Notif fullscreen "Shutting down"
notif set 0 "^^^^^^^^ SHUTTING DOWN...^^^^^^^^"
# Notify system, reboot in progress
touch "${REBOOTING_FILE}"
# Shutdown amp
audio_amp off >/dev/null 2>&1
# Force Read Only
ro
# Poweroff
poweroff
}
action="${1:-now}"
case "${action}" in
schedule)
if [ ${#} != 2 -o "${2}" == "0" ]; then
usage
fi
schedule_powerdown ${2}
;;
handle)
if [ ${#} -ne 1 ]; then
usage
fi
handle_powerdown
;;
now)
if [ ${#} -gt 1 ]; then
usage
fi
powerdown_now
;;
*)
usage
;;
esac
exit 0