summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/powermgmt.h1
-rw-r--r--firmware/powermgmt.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 808c8586d8..d54f1d5a18 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -164,6 +164,7 @@ void set_battery_type(int type); /* set local battery type */
164 164
165void set_sleep_timer(int seconds); 165void set_sleep_timer(int seconds);
166int get_sleep_timer(void); 166int get_sleep_timer(void);
167void set_keypress_restarts_sleep_timer(bool enable);
167void handle_auto_poweroff(void); 168void handle_auto_poweroff(void);
168void set_car_adapter_mode(bool setting); 169void set_car_adapter_mode(bool setting);
169void reset_poweroff_timer(void); 170void reset_poweroff_timer(void);
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index 76322d65a3..4d554d6d3c 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -64,6 +64,10 @@ void send_battery_level_event(void);
64 64
65static bool sleeptimer_active = false; 65static bool sleeptimer_active = false;
66static long sleeptimer_endtick; 66static long sleeptimer_endtick;
67/* Whether an active sleep timer should be restarted when a key is pressed */
68static bool sleeptimer_key_restarts = false;
69/* The number of seconds the sleep timer was last set to */
70static unsigned int sleeptimer_duration = 0;
67 71
68#if CONFIG_CHARGING 72#if CONFIG_CHARGING
69/* State of the charger input as seen by the power thread */ 73/* State of the charger input as seen by the power thread */
@@ -707,6 +711,8 @@ void set_poweroff_timeout(int timeout)
707void reset_poweroff_timer(void) 711void reset_poweroff_timer(void)
708{ 712{
709 last_event_tick = current_tick; 713 last_event_tick = current_tick;
714 if (sleeptimer_active && sleeptimer_key_restarts)
715 set_sleep_timer(sleeptimer_duration);
710} 716}
711 717
712void sys_poweroff(void) 718void sys_poweroff(void)
@@ -777,6 +783,7 @@ void set_sleep_timer(int seconds)
777 sleeptimer_active = false; 783 sleeptimer_active = false;
778 sleeptimer_endtick = 0; 784 sleeptimer_endtick = 0;
779 } 785 }
786 sleeptimer_duration = seconds;
780} 787}
781 788
782int get_sleep_timer(void) 789int get_sleep_timer(void)
@@ -787,6 +794,11 @@ int get_sleep_timer(void)
787 return 0; 794 return 0;
788} 795}
789 796
797void set_keypress_restarts_sleep_timer(bool enable)
798{
799 sleeptimer_key_restarts = enable;
800}
801
790static void handle_sleep_timer(void) 802static void handle_sleep_timer(void)
791{ 803{
792#ifndef BOOTLOADER 804#ifndef BOOTLOADER