Index: apps/settings.c =================================================================== --- apps/settings.c (revision 31435) +++ apps/settings.c (working copy) @@ -844,6 +844,8 @@ dac_line_in(global_settings.line_in); #endif set_poweroff_timeout(global_settings.poweroff); + set_keypress_restarts_sleep_timer( + global_settings.keypress_restarts_sleeptimer); #if defined(BATTERY_CAPACITY_INC) && BATTERY_CAPACITY_INC > 0 /* only call if it's really exchangable */ Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 31435) +++ apps/lang/english.lang (working copy) @@ -12979,3 +12979,17 @@ *: "Startup/Shutdown" + + id: LANG_KEYPRESS_RESTARTS_SLEEP_TIMER + desc: whether to restart running sleep timer on keypress + user: core + + *: "Restart Sleep Timer On Keypress" + + + *: "Restart Sleep Timer On Keypress" + + + *: "Restart Sleep Timer On Keypress" + + Index: apps/settings.h =================================================================== --- apps/settings.h (revision 31435) +++ apps/settings.h (working copy) @@ -800,6 +800,7 @@ int sleeptimer_duration; bool sleeptimer_on_startup; + bool keypress_restarts_sleeptimer; #ifdef HAVE_MORSE_INPUT bool morse_input; /* text input method setting */ Index: apps/menus/settings_menu.c =================================================================== --- apps/menus/settings_menu.c (revision 31435) +++ apps/menus/settings_menu.c (working copy) @@ -439,13 +439,16 @@ /* make it look like a setting to the user */ MENUITEM_SETTING(sleeptimer_on_startup, &global_settings.sleeptimer_on_startup, NULL); +MENUITEM_SETTING(keypress_restarts_sleeptimer, + &global_settings.keypress_restarts_sleeptimer, NULL); MAKE_MENU(startup_shutdown_menu, ID2P(LANG_STARTUP_SHUTDOWN), 0, Icon_System_menu, &start_screen, &poweroff, &sleep_timer_call, - &sleeptimer_on_startup + &sleeptimer_on_startup, + &keypress_restarts_sleeptimer ); /* STARTUP/SHUTDOWN MENU */ Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (revision 31435) +++ apps/settings_list.c (working copy) @@ -1808,6 +1808,8 @@ UNIT_MIN, 5, 300, 5, sleeptimer_formatter, NULL, NULL), OFFON_SETTING(0, sleeptimer_on_startup, LANG_SLEEP_TIMER_ON_POWER_UP, false, "sleeptimer on startup", NULL), + OFFON_SETTING(0, keypress_restarts_sleeptimer, LANG_KEYPRESS_RESTARTS_SLEEP_TIMER, false, + "keypress restarts sleeptimer", set_keypress_restarts_sleep_timer), #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING CHOICE_SETTING(0, touchpad_sensitivity, LANG_TOUCHPAD_SENSITIVITY, 0, "touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2, Index: firmware/export/powermgmt.h =================================================================== --- firmware/export/powermgmt.h (revision 31435) +++ firmware/export/powermgmt.h (working copy) @@ -164,6 +164,7 @@ void set_sleep_timer(int seconds); int get_sleep_timer(void); +void set_keypress_restarts_sleep_timer(bool enable); void handle_auto_poweroff(void); void set_car_adapter_mode(bool setting); void reset_poweroff_timer(void); Index: firmware/powermgmt.c =================================================================== --- firmware/powermgmt.c (revision 31435) +++ firmware/powermgmt.c (working copy) @@ -64,6 +64,10 @@ static bool sleeptimer_active = false; static long sleeptimer_endtick; +/* Whether an active sleep timer should be restarted when a key is pressed */ +static bool sleeptimer_key_restarts = false; +/* The number of seconds the sleep timer was last set to */ +static unsigned int sleeptimer_duration = 0; #if CONFIG_CHARGING /* State of the charger input as seen by the power thread */ @@ -707,6 +711,8 @@ void reset_poweroff_timer(void) { last_event_tick = current_tick; + if (sleeptimer_active && sleeptimer_key_restarts) + set_sleep_timer(sleeptimer_duration); } void sys_poweroff(void) @@ -777,6 +783,7 @@ sleeptimer_active = false; sleeptimer_endtick = 0; } + sleeptimer_duration = seconds; } int get_sleep_timer(void) @@ -787,6 +794,11 @@ return 0; } +void set_keypress_restarts_sleep_timer(bool enable) +{ + sleeptimer_key_restarts = enable; +} + static void handle_sleep_timer(void) { #ifndef BOOTLOADER Index: manual/appendix/config_file_options.tex =================================================================== --- manual/appendix/config_file_options.tex (revision 31435) +++ manual/appendix/config_file_options.tex (working copy) @@ -107,6 +107,7 @@ sleeptimer duration & 5 to 300 (in steps of 5) & min\\ sleeptimer on startup & off, on & N/A\\ + keypress restarts sleeptimer & off, on & N/A\\ max files in playlist & 1000 - 32000 & N/A\\ max files in dir & 50 - 10000 & N/A\\ lang & /path/filename.lng & N/A\\ Index: manual/configure_rockbox/startup_shutdown_options.tex =================================================================== --- manual/configure_rockbox/startup_shutdown_options.tex (revision 31435) +++ manual/configure_rockbox/startup_shutdown_options.tex (working copy) @@ -54,4 +54,7 @@ \item[Start Sleep Timer On Boot:] If set, a \setting{Sleep Timer} will be initiated when the device starts. + \item[Restart Sleep Timer On Keypress:] + If set, when a \setting{Sleep Timer} is active and a key is pressed, the + \setting{Sleep Timer} will be restarted with the initial duration. \end{description}