From b95fe1afc694ab97b6f39fc4bd0baa238e687a8f Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 1 Oct 2002 10:59:36 +0000 Subject: 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 --- firmware/backlight.c | 40 +++++++++++++++++++++++++++++++++++++--- firmware/backlight.h | 3 ++- 2 files changed, 39 insertions(+), 4 deletions(-) (limited to 'firmware') diff --git a/firmware/backlight.c b/firmware/backlight.c index 4dcdea917c..8a7c4ceb76 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 dca1f214f3..77049e3ce8 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 -- cgit v1.2.3