diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/powermgmt.h | 1 | ||||
-rw-r--r-- | firmware/powermgmt.c | 12 |
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 | ||
165 | void set_sleep_timer(int seconds); | 165 | void set_sleep_timer(int seconds); |
166 | int get_sleep_timer(void); | 166 | int get_sleep_timer(void); |
167 | void set_keypress_restarts_sleep_timer(bool enable); | ||
167 | void handle_auto_poweroff(void); | 168 | void handle_auto_poweroff(void); |
168 | void set_car_adapter_mode(bool setting); | 169 | void set_car_adapter_mode(bool setting); |
169 | void reset_poweroff_timer(void); | 170 | void 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 | ||
65 | static bool sleeptimer_active = false; | 65 | static bool sleeptimer_active = false; |
66 | static long sleeptimer_endtick; | 66 | static long sleeptimer_endtick; |
67 | /* Whether an active sleep timer should be restarted when a key is pressed */ | ||
68 | static bool sleeptimer_key_restarts = false; | ||
69 | /* The number of seconds the sleep timer was last set to */ | ||
70 | static 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) | |||
707 | void reset_poweroff_timer(void) | 711 | void 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 | ||
712 | void sys_poweroff(void) | 718 | void 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 | ||
782 | int get_sleep_timer(void) | 789 | int get_sleep_timer(void) |
@@ -787,6 +794,11 @@ int get_sleep_timer(void) | |||
787 | return 0; | 794 | return 0; |
788 | } | 795 | } |
789 | 796 | ||
797 | void set_keypress_restarts_sleep_timer(bool enable) | ||
798 | { | ||
799 | sleeptimer_key_restarts = enable; | ||
800 | } | ||
801 | |||
790 | static void handle_sleep_timer(void) | 802 | static void handle_sleep_timer(void) |
791 | { | 803 | { |
792 | #ifndef BOOTLOADER | 804 | #ifndef BOOTLOADER |