diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2002-10-01 10:59:36 +0000 |
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2002-10-01 10:59:36 +0000 |
| commit | b95fe1afc694ab97b6f39fc4bd0baa238e687a8f (patch) | |
| tree | ce8a338e130571604693bf28cfcdcfbf72e5f0d9 | |
| parent | 180485c30496314ba25b3cdcf59c665bf8d11c0a (diff) | |
| download | rockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.zip rockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.tar.gz rockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.tar.bz2 rockbox-b95fe1afc694ab97b6f39fc4bd0baa238e687a8f.tar.xz | |
Mark A. Hillebrand's patch that offers a new setting that if enabled, keeps
the backlight on all the time while the charger is connected.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2464 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/lang/english.lang | 5 | ||||
| -rw-r--r-- | apps/settings.c | 36 | ||||
| -rw-r--r-- | apps/settings.h | 8 | ||||
| -rw-r--r-- | apps/settings_menu.c | 17 | ||||
| -rw-r--r-- | firmware/backlight.c | 40 | ||||
| -rw-r--r-- | firmware/backlight.h | 3 | ||||
| -rw-r--r-- | uisimulator/common/stubs.c | 5 |
7 files changed, 99 insertions, 15 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index afea869..9ff2b66 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -864,3 +864,8 @@ id: LANG_PM_UNITS_PER_READ desc: in the peak meter menu eng: "Units per read" new: + +id: LANG_BACKLIGHT_ON_WHEN_CHARGING +desc: in display_settings_menu +eng: "Backlight on when charging" +new: diff --git a/apps/settings.c b/apps/settings.c index 1b4f864..450a85b 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -74,7 +74,7 @@ offset abs 0x08 0x1c <loudness byte> 0x09 0x1d <bass boost byte> 0x0a 0x1e <contrast byte> -0x0b 0x1f <backlight byte> +0x0b 0x1f <backlight_on_when_charging, backlight_timeout> 0x0c 0x20 <poweroff timer byte> 0x0d 0x21 <resume settings byte> 0x0e 0x22 <shuffle,dirfilter,sort_case,discharge,statusbar,show_hidden, @@ -270,7 +270,16 @@ int settings_save( void ) config_block[0x9] = (unsigned char)global_settings.bass_boost; config_block[0xa] = (unsigned char)global_settings.contrast; - config_block[0xb] = (unsigned char)global_settings.backlight; + +#ifdef HAVE_CHARGE_CTRL + if( global_settings.backlight_on_when_charging ) { + config_block[0xb] = (unsigned char) (global_settings.backlight_timeout + 128); + } else { + config_block[0xb] = (unsigned char)global_settings.backlight_timeout; + } +#else + config_block[0xb] = (unsigned char)global_settings.backlight_timeout; +#endif config_block[0xc] = (unsigned char)global_settings.poweroff; config_block[0xd] = (unsigned char)global_settings.resume; @@ -366,8 +375,15 @@ void settings_load(void) if ( global_settings.contrast < MIN_CONTRAST_SETTING ) global_settings.contrast = DEFAULT_CONTRAST_SETTING; } +#ifdef HAVE_CHARGE_CTRL + if (config_block[0xb] != 0xFF) { + global_settings.backlight_timeout = config_block[0xb] & 127; + global_settings.backlight_on_when_charging = config_block[0xb] & 128 ? 1 : 0; + } +#else if (config_block[0xb] != 0xFF) - global_settings.backlight = config_block[0xb]; + global_settings.backlight_timeout = config_block[0xb]; +#endif if (config_block[0xc] != 0xFF) global_settings.poweroff = config_block[0xc]; if (config_block[0xd] != 0xFF) @@ -432,7 +448,10 @@ void settings_load(void) } lcd_set_contrast(global_settings.contrast); lcd_scroll_speed(global_settings.scroll_speed); - backlight_time(global_settings.backlight); + backlight_set_timeout(global_settings.backlight_timeout); +#ifdef HAVE_CHARGE_CTRL + backlight_set_on_when_charging(global_settings.backlight_on_when_charging); +#endif ata_spindown(global_settings.disk_spindown); set_poweroff_timeout(global_settings.poweroff); #ifdef HAVE_CHARGE_CTRL @@ -615,7 +634,10 @@ void settings_reset(void) { global_settings.resume = RESUME_ASK; global_settings.contrast = DEFAULT_CONTRAST_SETTING; global_settings.poweroff = DEFAULT_POWEROFF_SETTING; - global_settings.backlight = DEFAULT_BACKLIGHT_SETTING; + global_settings.backlight_timeout = DEFAULT_BACKLIGHT_TIMEOUT_SETTING; +#ifdef HAVE_CHARGE_CTRL + global_settings.backlight_on_when_charging = DEFAULT_BACKLIGHT_ON_WHEN_CHARGING_SETTING; +#endif global_settings.dirfilter = SHOW_MUSIC; global_settings.sort_case = false; global_settings.statusbar = true; @@ -654,10 +676,10 @@ void settings_display(void) global_settings.loudness, global_settings.bass_boost ); - DEBUGF( "contrast:\t%d\npoweroff:\t%d\nbacklight:\t%d\n", + DEBUGF( "contrast:\t%d\npoweroff:\t%d\nbacklight_timeout:\t%d\n", global_settings.contrast, global_settings.poweroff, - global_settings.backlight ); + global_settings.backlight_timeout ); #endif } diff --git a/apps/settings.h b/apps/settings.h index bbc7bb3..eed0b61 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -63,7 +63,10 @@ struct user_settings int contrast; /* lcd contrast: 0-100 0=low 100=high */ int poweroff; /* power off timer */ - int backlight; /* backlight off timer: 0-100 0=never:each 1% = 10 secs */ + int backlight_timeout; /* backlight off timeout: 0-18 0=never,1=always,then according to timeout_values[] */ +#ifdef HAVE_CHARGE_CTRL + bool backlight_on_when_charging; +#endif bool discharge; /* maintain charge of at least: false = 90%, true = 10% */ /* resume settings */ @@ -144,7 +147,8 @@ extern char rockboxdir[]; #endif #define MIN_CONTRAST_SETTING 5 #define DEFAULT_POWEROFF_SETTING 0 -#define DEFAULT_BACKLIGHT_SETTING 5 +#define DEFAULT_BACKLIGHT_TIMEOUT_SETTING 5 +#define DEFAULT_BACKLIGHT_ON_WHEN_CHARGING_SETTING 0 #define DEFAULT_FF_REWIND_MIN_STEP FF_REWIND_1000 #define DEFAULT_FF_REWIND_ACCEL_SETTING 3 diff --git a/apps/settings_menu.c b/apps/settings_menu.c index 3cb270d..4e521bc 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c @@ -144,6 +144,16 @@ static bool resume(void) names, 3, NULL ); } +#ifdef HAVE_CHARGE_CTRL +static bool backlight_on_when_charging(void) +{ + bool result = set_bool(str(LANG_BACKLIGHT_ON_WHEN_CHARGING), + &global_settings.backlight_on_when_charging); + backlight_set_on_when_charging(global_settings.backlight_on_when_charging); + return result; +} +#endif + static bool backlight_timer(void) { char* names[] = { str(LANG_OFF), str(LANG_ON), @@ -151,8 +161,8 @@ static bool backlight_timer(void) "6s ", "7s ", "8s ", "9s ", "10s", "15s", "20s", "25s", "30s", "45s", "60s", "90s"}; - return set_option(str(LANG_BACKLIGHT), &global_settings.backlight, - names, 19, backlight_time ); + return set_option(str(LANG_BACKLIGHT), &global_settings.backlight_timeout, + names, 19, backlight_set_timeout ); } static bool poweroff_idle_timer(void) @@ -377,6 +387,9 @@ static bool display_settings_menu(void) struct menu_items items[] = { { str(LANG_SCROLL_MENU), scroll_speed }, { str(LANG_BACKLIGHT), backlight_timer }, +#ifdef HAVE_CHARGE_CTRL + { str(LANG_BACKLIGHT_ON_WHEN_CHARGING), backlight_on_when_charging }, +#endif { str(LANG_CONTRAST), contrast }, #ifdef HAVE_LCD_BITMAP { str(LANG_PM_MENU), peak_meter_menu }, diff --git a/firmware/backlight.c b/firmware/backlight.c index 4dcdea9..8a7c4ce 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c @@ -25,6 +25,7 @@ #include "debug.h" #include "rtc.h" #include "usb.h" +#include "power.h" #define BACKLIGHT_ON 1 #define BACKLIGHT_OFF 2 @@ -34,6 +35,11 @@ static char backlight_stack[DEFAULT_STACK_SIZE]; static char backlight_thread_name[] = "backlight"; static struct event_queue backlight_queue; +#ifdef HAVE_CHARGE_CTRL +static bool charger_was_inserted = 0; +static bool backlight_on_when_charging = 0; +#endif + static int backlight_timer; static int backlight_timeout = 5; @@ -52,9 +58,22 @@ void backlight_thread(void) switch(ev.id) { case BACKLIGHT_ON: +#ifdef HAVE_CHARGE_CTRL + if( backlight_on_when_charging && charger_inserted() ) + { + /* Forcing to zero keeps the lights on */ + backlight_timer = 0; + } + else + { + backlight_timer = HZ*timeout_value[backlight_timeout]; + } +#else backlight_timer = HZ*timeout_value[backlight_timeout]; +#endif if(backlight_timer < 0) { + backlight_timer = 0; /* timer value 0 will not get ticked */ #ifdef HAVE_RTC /* Disable square wave */ rtc_write(0x0a, rtc_read(0x0a) & ~0x40); @@ -62,7 +81,8 @@ void backlight_thread(void) PADR |= 0x4000; #endif } - else if(backlight_timer) + /* else if(backlight_timer) */ + else { #ifdef HAVE_RTC /* Enable square wave */ @@ -105,14 +125,28 @@ void backlight_off(void) queue_post(&backlight_queue, BACKLIGHT_OFF, NULL); } -void backlight_time(int value) +void backlight_set_timeout(int seconds) +{ + backlight_timeout = seconds; + backlight_on(); +} + +void backlight_set_on_when_charging(bool yesno) { - backlight_timeout = value; + backlight_on_when_charging = yesno; backlight_on(); } void backlight_tick(void) { +#ifdef HAVE_CHARGE_CTRL + bool charger_is_inserted = charger_inserted(); + if( backlight_on_when_charging && (charger_was_inserted != charger_is_inserted) ) + { + backlight_on(); + } + charger_was_inserted = charger_is_inserted; +#endif if(backlight_timer) { backlight_timer--; diff --git a/firmware/backlight.h b/firmware/backlight.h index dca1f21..77049e3 100644 --- a/firmware/backlight.h +++ b/firmware/backlight.h @@ -23,6 +23,7 @@ void backlight_init(void); void backlight_on(void); void backlight_off(void); void backlight_tick(void); -void backlight_time(int seconds); +void backlight_set_timeout(int seconds); +void backlight_set_on_when_charging(bool yesno); #endif diff --git a/uisimulator/common/stubs.c b/uisimulator/common/stubs.c index 3534497..98e1f75 100644 --- a/uisimulator/common/stubs.c +++ b/uisimulator/common/stubs.c @@ -123,3 +123,8 @@ void lcd_set_contrast( int x ) { (void)x; } + +void backlight_set_timeout(int seconds) +{ + (void)seconds; +} |