From 7d80bc7eedad8b85096988f27f34f84c1058a610 Mon Sep 17 00:00:00 2001 From: Michel-FK Date: Thu, 3 Jun 2021 23:55:21 +0200 Subject: [PATCH] use single powerdown script Signed-off-by: Michel-FK --- .../usr/local/sbin/assembly_tests | 6 +- .../usr/local/sbin/cancel_sched_powerdown | 11 -- .../usr/local/sbin/instant_play | 2 +- .../usr/local/sbin/low_bat_check | 34 +++--- .../rootfs-overlay/usr/local/sbin/powerdown | 84 +++++++++++++ .../usr/local/sbin/sched_shutdown | 22 ---- .../usr/local/sbin/shutdown_funkey | 20 ---- FunKey/package/FCEUX/FCEUX.mk | 2 +- FunKey/package/PCSX-ReARMed/PCSX-ReARMed.mk | 2 +- FunKey/package/PocketSNES/PocketSNES.mk | 2 +- FunKey/package/ProdScreens/ProdScreens.mk | 2 +- FunKey/package/fkgpiod/fkgpiod.mk | 2 +- FunKey/package/gmenu2x/gmenu2x.mk | 2 +- FunKey/package/gnuboy/gnuboy.mk | 2 +- FunKey/package/gpsp/gpsp.mk | 2 +- FunKey/package/mednafen/mednafen.mk | 2 +- FunKey/package/picodrive/picodrive.mk | 2 +- FunKey/package/retrofe/retrofe.mk | 2 +- .../usr/local/sbin/low_bat_check | 112 +++++++++--------- .../rootfs-overlay/usr/local/sbin/powerdown | 84 +++++++++++++ .../usr/local/sbin/sched_shutdown | 5 - .../usr/local/sbin/shutdown_funkey | 22 ---- Recovery/package/fkgpiod/fkgpiod.mk | 2 +- 23 files changed, 255 insertions(+), 171 deletions(-) delete mode 100755 FunKey/board/funkey/rootfs-overlay/usr/local/sbin/cancel_sched_powerdown create mode 100755 FunKey/board/funkey/rootfs-overlay/usr/local/sbin/powerdown delete mode 100755 FunKey/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown delete mode 100755 FunKey/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey create mode 100755 Recovery/board/funkey/rootfs-overlay/usr/local/sbin/powerdown delete mode 100755 Recovery/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown delete mode 100755 Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/assembly_tests b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/assembly_tests index b992c0a..81b9a1b 100755 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/assembly_tests +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/assembly_tests @@ -42,7 +42,7 @@ QR_CODE_IMG="/root/logs/assembly_tests/qrcode.png" ## Function called when SIGURS1 is caught while waiting for it function function_magnet_detected_ok { ## Kill scheduled shutdown - pkill sched_shutdown + pkill -f "powerdown schedule" ## Write magnet_detected file if $test_failed; then @@ -55,7 +55,7 @@ function function_magnet_detected_ok { ## Clean shutdown echo " Caught SIGUSR1 signal: magnet detected" echo " Rebooting now..." - shutdown_funkey + powerdown now exit 0 } @@ -370,6 +370,6 @@ if ! $test_failed; then exit 0 else ## Shutdown - shutdown_funkey & + powerdown now & exit 1 fi diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/cancel_sched_powerdown b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/cancel_sched_powerdown deleted file mode 100755 index 2952a44..0000000 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/cancel_sched_powerdown +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# Uncomment the following line to get debug info -#set -x - -if [ ${#} != 0 ]; then - echo "Usage: $(basename ${0})" - exit 1 -fi -pkill sched_powerdown -exit 0 diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/instant_play b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/instant_play index 319e885..1aadddb 100755 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/instant_play +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/instant_play @@ -63,7 +63,7 @@ pid erase EOF # Now terminate gracefully - exec shutdown_funkey + exec powerdown now ;; *) diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check index e379f8f..e9dcfe9 100755 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check @@ -3,30 +3,28 @@ # General constants declaration THRESHOLD_PERCENT_LOW_BAT=5 THRESHOLD_PERCENT_EXTREMELY_LOW_BAT=2 -MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN=5 +MAX_LOW_BAT_COUNT=5 SLEEP_SECS=2 RESCALE_MAX_PERCENTAGE=120 # Blink Low bat constants declaration BLINK_ICON=0 -LOW_BAT_SECS_DISPLAYED=5 -LOW_BAT_SECS_NOT_DISPLAYED=5 +LOW_BAT_DISPLAY_TIMEOUT=5 # Files and commands declaration -USB_PRESENT_FILE=/sys/class/power_supply/axp20x-usb/present +USB_PRESENT_FILE="/sys/class/power_supply/axp20x-usb/present" # Cheat for no USB present simulation when debugging -#USB_PRESENT_FILE=/sys/class/power_supply/axp20x-ac/present -BAT_PRESENT_FILE=/sys/class/power_supply/axp20x-battery/present -BAT_PERCENT_FILE=/sys/class/power_supply/axp20x-battery/capacity -BAT_PERCENT_RESCALED_FILE=/tmp/current_battery_percentage -LOW_BAT_ICON=/sys/class/graphics/fb0/low_battery +BAT_PRESENT_FILE="/sys/class/power_supply/axp20x-battery/present" +BAT_PERCENT_FILE="/sys/class/power_supply/axp20x-battery/capacity" +BAT_PERCENT_RESCALED_FILE="/tmp/current_battery_percentage" +LOW_BAT_ICON="/sys/class/graphics/fb0/low_battery" # Variables declaration low_bat_status=0 low_bat_displayed=0 cur_secs_disp=0 -cur_nb_extremely_low_bat_before_shutdown=0 +low_bat_count=0 # Default: Hide Low Bat Icon echo 0 > ${LOW_BAT_ICON} @@ -71,7 +69,7 @@ while true; do # Reset status low_bat_status=0 - cur_nb_extremely_low_bat_before_shutdown=0 + low_bat_count=0 echo 0 > ${LOW_BAT_ICON} fi fi @@ -80,7 +78,7 @@ while true; do # Reset status low_bat_status=0 - cur_nb_extremely_low_bat_before_shutdown=0 + low_bat_count=0 echo 0 > ${LOW_BAT_ICON} fi fi @@ -90,24 +88,24 @@ while true; do # Check extremely low bat for clean shutdown if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_EXTREMELY_LOW_BAT} ]; then - let cur_nb_extremely_low_bat_before_shutdown++ - echo "cur_nb_extremely_low_bat_before_shutdown = ${cur_nb_extremely_low_bat_before_shutdown}" + let low_bat_count++ + echo "low_bat_count = ${low_bat_count}" # Clean shutdown - if [ ${cur_nb_extremely_low_bat_before_shutdown} -ge ${MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN} ]; then + if [ ${low_bat_count} -ge ${MAX_LOW_BAT_COUNT} ]; then echo "Battery extremely low, shutting down now..." - sched_shutdown 1 & signal_usr1_to_emulators + powerdown schedule 1 exit 0 fi fi # Blinking process if [ ${BLINK_ICON} -eq 1 ]; then - if [ ${low_bat_displayed} -eq 1 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_DISPLAYED} ]; then + if [ ${low_bat_displayed} -eq 1 -a ${cur_secs_disp} -ge ${LOW_BAT_DISPLAY_TIMEOUT} ]; then low_bat_displayed=0 cur_secs_disp=0 echo 0 > ${LOW_BAT_ICON} - elif [ ${low_bat_displayed} -eq 0 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_NOT_DISPLAYED} ]; then + elif [ ${low_bat_displayed} -eq 0 -a ${cur_secs_disp} -ge ${LOW_BAT_DISPLAY_TIMEOUT} ]; then low_bat_displayed=1 cur_secs_disp=0 echo 1 > ${LOW_BAT_ICON} diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/powerdown b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/powerdown new file mode 100755 index 0000000..ac48edd --- /dev/null +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/powerdown @@ -0,0 +1,84 @@ +#!/bin/sh + +# Uncomment the following line to get debug info +#set -x + +SELF="$(basename ${0})" +PID_FILE="/var/run/funkey.pid" +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 -F "${PID_FILE}" > /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}" -eq 0 ]; then + usage + fi + schedule_powerdown + ;; + + handle) + if [ ${#} -ne 1 ]; then + usage + fi + handle_powerdown + ;; + + now) + if [ ${#} -gt 1 ]; then + usage + fi + powerdown_now + ;; + + *) + usage + ;; +esac +exit 0 diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown deleted file mode 100755 index 3fa1732..0000000 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# Uncomment the following line to get debug info -#set -x - -if [ ${#} != 1 -o "${1}" -eq 0 ]; then - echo "Usage: $(basename ${0}) grace_delay" - exit 1 -fi - -# Send USR1 signal to the running FunKey process to warn about -# impending shutdown -pkill -USR1 -F /var/run/funkey.pid > /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 shutdown -shutdown_funkey - diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey deleted file mode 100755 index 23be9e1..0000000 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# Sync before all else -sync - -# Notif fullscreen "Shutting down" -notif set 0 "^^^^^^^^ SHUTTING DOWN...^^^^^^^^" - -# Notify system, reboot in progress -REBOOTING_FILE="/run/rebooting" -touch $REBOOTING_FILE - -# Shutdown amp -audio_amp off >/dev/null 2>&1 - -# Force Read Only -ro - -# Poweroff -poweroff diff --git a/FunKey/package/FCEUX/FCEUX.mk b/FunKey/package/FCEUX/FCEUX.mk index 9ab8fa6..a172dc0 100644 --- a/FunKey/package/FCEUX/FCEUX.mk +++ b/FunKey/package/FCEUX/FCEUX.mk @@ -4,7 +4,7 @@ # ################################################################################ -FCEUX_VERSION = c3ae7fa +FCEUX_VERSION = 336090c FCEUX_SITE_METHOD = git FCEUX_SITE = https://github.com/FunKey-Project/fceux.git FCEUX_LICENSE = GPL-2.0 diff --git a/FunKey/package/PCSX-ReARMed/PCSX-ReARMed.mk b/FunKey/package/PCSX-ReARMed/PCSX-ReARMed.mk index c475372..5275197 100644 --- a/FunKey/package/PCSX-ReARMed/PCSX-ReARMed.mk +++ b/FunKey/package/PCSX-ReARMed/PCSX-ReARMed.mk @@ -4,7 +4,7 @@ # ################################################################################ -PCSX_REARMED_VERSION = 2cc6248 +PCSX_REARMED_VERSION = 1888d71 PCSX_REARMED_SITE_METHOD = git PCSX_REARMED_SITE = https://github.com/FunKey-Project/pcsx_rearmed.git PCSX_REARMED_LICENSE = GPL-2.0 diff --git a/FunKey/package/PocketSNES/PocketSNES.mk b/FunKey/package/PocketSNES/PocketSNES.mk index b0a3321..c9543a7 100644 --- a/FunKey/package/PocketSNES/PocketSNES.mk +++ b/FunKey/package/PocketSNES/PocketSNES.mk @@ -4,7 +4,7 @@ # ################################################################################ -POCKETSNES_VERSION = c3de812 +POCKETSNES_VERSION = 5d8490f POCKETSNES_SITE_METHOD = git POCKETSNES_SITE = https://github.com/FunKey-Project/PocketSNES.git POCKETSNES_LICENSE = GPL-2.0 diff --git a/FunKey/package/ProdScreens/ProdScreens.mk b/FunKey/package/ProdScreens/ProdScreens.mk index f023b2f..6d6f585 100644 --- a/FunKey/package/ProdScreens/ProdScreens.mk +++ b/FunKey/package/ProdScreens/ProdScreens.mk @@ -4,7 +4,7 @@ # ################################################################################ -PRODSCREENS_VERSION = e58f3a6 +PRODSCREENS_VERSION = 96d5ac1 PRODSCREENS_SITE_METHOD = git PRODSCREENS_SITE = https://github.com/FunKey-Project/FunKey-ProdScreens.git PRODSCREENS_SITE_LICENSE = GPL-2.1+ diff --git a/FunKey/package/fkgpiod/fkgpiod.mk b/FunKey/package/fkgpiod/fkgpiod.mk index b825934..cb6b85f 100644 --- a/FunKey/package/fkgpiod/fkgpiod.mk +++ b/FunKey/package/fkgpiod/fkgpiod.mk @@ -4,7 +4,7 @@ # ################################################################################ -FKGPIOD_VERSION = 0efd7f0 +FKGPIOD_VERSION = 4df43ea FKGPIOD_SITE_METHOD = git FKGPIOD_SITE = https://github.com/FunKey-Project/fkgpiod.git FKGPIOD_SITE_LICENSE = GPL-2.1+ diff --git a/FunKey/package/gmenu2x/gmenu2x.mk b/FunKey/package/gmenu2x/gmenu2x.mk index ba37c99..c0245f1 100644 --- a/FunKey/package/gmenu2x/gmenu2x.mk +++ b/FunKey/package/gmenu2x/gmenu2x.mk @@ -3,7 +3,7 @@ # gmenu2x # ############################################################# -GMENU2X_VERSION = 2250648 +GMENU2X_VERSION = 737b86e GMENU2X_SITE_METHOD = git GMENU2X_SITE = https://github.com/FunKey-Project/gmenu2x.git GMENU2X_LICENSE = GPL-2.0 diff --git a/FunKey/package/gnuboy/gnuboy.mk b/FunKey/package/gnuboy/gnuboy.mk index d3a0614..1ddd37f 100644 --- a/FunKey/package/gnuboy/gnuboy.mk +++ b/FunKey/package/gnuboy/gnuboy.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUBOY_VERSION = f6b8feb +GNUBOY_VERSION = dcd6186 GNUBOY_SITE_METHOD = git GNUBOY_SITE = https://github.com/FunKey-Project/gnuboy.git GNUBOY_LICENSE = GPL-2.0 diff --git a/FunKey/package/gpsp/gpsp.mk b/FunKey/package/gpsp/gpsp.mk index 3e49f7b..c69ee50 100644 --- a/FunKey/package/gpsp/gpsp.mk +++ b/FunKey/package/gpsp/gpsp.mk @@ -4,7 +4,7 @@ # ################################################################################ -GPSP_VERSION = 5ab34a8 +GPSP_VERSION = 80bf9c6 GPSP_SITE_METHOD = git GPSP_SITE = https://github.com/FunKey-Project/gpsp.git GPSP_LICENSE = GPL-2.0 diff --git a/FunKey/package/mednafen/mednafen.mk b/FunKey/package/mednafen/mednafen.mk index 6cebdbd..68c22d1 100644 --- a/FunKey/package/mednafen/mednafen.mk +++ b/FunKey/package/mednafen/mednafen.mk @@ -4,7 +4,7 @@ # ################################################################################ -MEDNAFEN_VERSION = 2d9ca9d +MEDNAFEN_VERSION = cbcdbd8 MEDNAFEN_SITE_METHOD = git MEDNAFEN_SITE = https://github.com/FunKey-Project/mednafen-git.git MEDNAFEN_LICENSE = GPL-2.0+ diff --git a/FunKey/package/picodrive/picodrive.mk b/FunKey/package/picodrive/picodrive.mk index b6dca58..fdedd91 100644 --- a/FunKey/package/picodrive/picodrive.mk +++ b/FunKey/package/picodrive/picodrive.mk @@ -4,7 +4,7 @@ # ################################################################################ -PICODRIVE_VERSION = 4c09c0b +PICODRIVE_VERSION = 74bc7cb PICODRIVE_SITE_METHOD = git PICODRIVE_SITE = https://github.com/FunKey-Project/picodrive.git PICODRIVE_LICENSE = MAME diff --git a/FunKey/package/retrofe/retrofe.mk b/FunKey/package/retrofe/retrofe.mk index aa12247..a557a05 100644 --- a/FunKey/package/retrofe/retrofe.mk +++ b/FunKey/package/retrofe/retrofe.mk @@ -4,7 +4,7 @@ # ################################################################################ -RETROFE_VERSION = b319dba +RETROFE_VERSION = 9184665 RETROFE_SITE_METHOD = git RETROFE_SITE = https://github.com/FunKey-Project/RetroFE.git RETROFE_DEPENDENCIES = gstreamer1 gst1-plugins-base sdl sdl_image sdl_mixer sdl_sound sdl_ttf libglib2 sqlite zlib diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check index b1a70da..e9dcfe9 100755 --- a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/low_bat_check @@ -3,30 +3,28 @@ # General constants declaration THRESHOLD_PERCENT_LOW_BAT=5 THRESHOLD_PERCENT_EXTREMELY_LOW_BAT=2 -MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN=5 +MAX_LOW_BAT_COUNT=5 SLEEP_SECS=2 RESCALE_MAX_PERCENTAGE=120 # Blink Low bat constants declaration BLINK_ICON=0 -LOW_BAT_SECS_DISPLAYED=5 -LOW_BAT_SECS_NOT_DISPLAYED=5 +LOW_BAT_DISPLAY_TIMEOUT=5 # Files and commands declaration -USB_PRESENT_FILE=/sys/class/power_supply/axp20x-usb/present -#USB_PRESENT_FILE=/sys/class/power_supply/axp20x-ac/present # Cheat for no USB present simulation when debugging -BAT_PRESENT_FILE=/sys/class/power_supply/axp20x-battery/present -BAT_PERCENT_FILE=/sys/class/power_supply/axp20x-battery/capacity -BAT_PERCENT_RESCALED_FILE=/tmp/current_battery_percentage -LOW_BAT_ICON=/sys/class/graphics/fb0/low_battery -SCHEDULE_SHUTDOWN_CMD=sched_shutdown -SIGNAL_URS1_TO_EMULATORS_CMD=signal_usr1_to_emulators +USB_PRESENT_FILE="/sys/class/power_supply/axp20x-usb/present" + +# Cheat for no USB present simulation when debugging +BAT_PRESENT_FILE="/sys/class/power_supply/axp20x-battery/present" +BAT_PERCENT_FILE="/sys/class/power_supply/axp20x-battery/capacity" +BAT_PERCENT_RESCALED_FILE="/tmp/current_battery_percentage" +LOW_BAT_ICON="/sys/class/graphics/fb0/low_battery" # Variables declaration low_bat_status=0 low_bat_displayed=0 cur_secs_disp=0 -cur_nb_extremely_low_bat_before_shutdown=0 +low_bat_count=0 # Default: Hide Low Bat Icon echo 0 > ${LOW_BAT_ICON} @@ -55,64 +53,64 @@ while true; do # Low bat status detection if [ "$(cat ${USB_PRESENT_FILE})" -eq "0" ]; then - # Value of 0 means wrong i2c reading - if [ "${cur_bat_percent}" -ne "0" ]; then + # Value of 0 means wrong i2c reading + if [ "${cur_bat_percent}" -ne "0" ]; then - # Check if we must change state - if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 0 ]; then + # Check if we must change state + if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 0 ]; then - # Set Low Bat status - low_bat_status=1 - low_bat_displayed=1 - cur_secs_disp=0 - echo 1 > ${LOW_BAT_ICON} + # Set Low Bat status + low_bat_status=1 + low_bat_displayed=1 + cur_secs_disp=0 + echo 1 > ${LOW_BAT_ICON} - elif [ ${cur_bat_percent} -gt ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 1 ]; then + elif [ ${cur_bat_percent} -gt ${THRESHOLD_PERCENT_LOW_BAT} -a ${low_bat_status} -eq 1 ]; then - # Reset status - low_bat_status=0 - cur_nb_extremely_low_bat_before_shutdown=0 - echo 0 > ${LOW_BAT_ICON} - fi - fi + # Reset status + low_bat_status=0 + low_bat_count=0 + echo 0 > ${LOW_BAT_ICON} + fi + fi else - if [ ${low_bat_status} -eq 1 ]; then + if [ ${low_bat_status} -eq 1 ]; then - # Reset status - low_bat_status=0 - cur_nb_extremely_low_bat_before_shutdown=0 - echo 0 > ${LOW_BAT_ICON} - fi + # Reset status + low_bat_status=0 + low_bat_count=0 + echo 0 > ${LOW_BAT_ICON} + fi fi # Low bat processing if [ ${low_bat_status} -eq 1 ]; then - # Check extremely low bat for clean shutdown - if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_EXTREMELY_LOW_BAT} ]; then - let cur_nb_extremely_low_bat_before_shutdown++ - echo "cur_nb_extremely_low_bat_before_shutdown = ${cur_nb_extremely_low_bat_before_shutdown}" + # Check extremely low bat for clean shutdown + if [ ${cur_bat_percent} -le ${THRESHOLD_PERCENT_EXTREMELY_LOW_BAT} ]; then + let low_bat_count++ + echo "low_bat_count = ${low_bat_count}" - # Clean shutdown - if [ ${cur_nb_extremely_low_bat_before_shutdown} -ge ${MAX_EXTREMELY_LOW_BAT_BEFORE_SHUTDOWN} ]; then - echo "Battery extremely low, shutting down now..." - sched_shutdown 1 & signal_usr1_to_emulators - exit 0 - fi - fi + # Clean shutdown + if [ ${low_bat_count} -ge ${MAX_LOW_BAT_COUNT} ]; then + echo "Battery extremely low, shutting down now..." + powerdown schedule 1 + exit 0 + fi + fi - # Blinking process - if [ ${BLINK_ICON} -eq 1 ]; then - if [ ${low_bat_displayed} -eq 1 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_DISPLAYED} ]; then - low_bat_displayed=0 - cur_secs_disp=0 - echo 0 > ${LOW_BAT_ICON} - elif [ ${low_bat_displayed} -eq 0 -a ${cur_secs_disp} -ge ${LOW_BAT_SECS_NOT_DISPLAYED} ]; then - low_bat_displayed=1 - cur_secs_disp=0 - echo 1 > ${LOW_BAT_ICON} - fi - fi + # Blinking process + if [ ${BLINK_ICON} -eq 1 ]; then + if [ ${low_bat_displayed} -eq 1 -a ${cur_secs_disp} -ge ${LOW_BAT_DISPLAY_TIMEOUT} ]; then + low_bat_displayed=0 + cur_secs_disp=0 + echo 0 > ${LOW_BAT_ICON} + elif [ ${low_bat_displayed} -eq 0 -a ${cur_secs_disp} -ge ${LOW_BAT_DISPLAY_TIMEOUT} ]; then + low_bat_displayed=1 + cur_secs_disp=0 + echo 1 > ${LOW_BAT_ICON} + fi + fi fi # Sleep before next check diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/powerdown b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/powerdown new file mode 100755 index 0000000..ac48edd --- /dev/null +++ b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/powerdown @@ -0,0 +1,84 @@ +#!/bin/sh + +# Uncomment the following line to get debug info +#set -x + +SELF="$(basename ${0})" +PID_FILE="/var/run/funkey.pid" +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 -F "${PID_FILE}" > /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}" -eq 0 ]; then + usage + fi + schedule_powerdown + ;; + + handle) + if [ ${#} -ne 1 ]; then + usage + fi + handle_powerdown + ;; + + now) + if [ ${#} -gt 1 ]; then + usage + fi + powerdown_now + ;; + + *) + usage + ;; +esac +exit 0 diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown deleted file mode 100755 index d555501..0000000 --- a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/sched_shutdown +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -# No waiting period in Recovery - -shutdown_funkey diff --git a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey b/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey deleted file mode 100755 index b22fdb7..0000000 --- a/Recovery/board/funkey/rootfs-overlay/usr/local/sbin/shutdown_funkey +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# Notif fullscreen "Shutting down" -notif set 0 "^^^^^^^^ SHUTTING DOWN...^^^^^^^^" - -# Kill Emulators -#kill_emulators >/dev/null 2>&1 - -# Kill Retrofe -#pkill retrofe - -# Sync filesystems (useful in case poweroff could not finish) -sync - -# Unmount Roms partition -#umount /mnt - -# Shutdown amp -start_audio_amp 0 >/dev/null 2>&1 - -# Poweroff -poweroff diff --git a/Recovery/package/fkgpiod/fkgpiod.mk b/Recovery/package/fkgpiod/fkgpiod.mk index 6cf5917..cb6b85f 100644 --- a/Recovery/package/fkgpiod/fkgpiod.mk +++ b/Recovery/package/fkgpiod/fkgpiod.mk @@ -4,7 +4,7 @@ # ################################################################################ -FKGPIOD_VERSION = 20b1a37 +FKGPIOD_VERSION = 4df43ea FKGPIOD_SITE_METHOD = git FKGPIOD_SITE = https://github.com/FunKey-Project/fkgpiod.git FKGPIOD_SITE_LICENSE = GPL-2.1+