summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-08-15 13:56:06 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-08-15 13:56:06 +0000
commit3ed34a6227fbb87884aa50b3494d6686ffe5bb50 (patch)
tree03e5cca572b9f37690f89dc48696caf519d1831f
parent1330bfbb7ccd88554c6ec1e8d83c58faff0f6fc4 (diff)
New backlight settings with always-off
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1766 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings_menu.c10
-rw-r--r--firmware/backlight.c24
2 files changed, 26 insertions, 8 deletions
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index 3def0574a1..517716ef3c 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -59,9 +59,13 @@ static void sort_case(void)
static void backlight_timer(void)
{
- set_int( "[Backlight]", "s", &global_settings.backlight,
- backlight_time, 1, 0, 60 );
- backlight_on();
+ char* names[] = { "off", "on ",
+ "1s ", "2s ", "3s ", "4s ", "5s ",
+ "6s ", "7s ", "8s ", "9s ", "10s",
+ "15s", "20s", "25s", "30s", "45s",
+ "60s", "90s"};
+ set_option("[Backlight]", &global_settings.backlight, names, 19 );
+ backlight_time(global_settings.backlight);
}
static void scroll_speed(void)
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 9fe73f4d9a..b7f4761415 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -37,6 +37,11 @@ static struct event_queue backlight_queue;
static int backlight_timer;
static int backlight_timeout = 5;
+static char timeout_value[19] =
+{
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 45, 60, 90
+};
+
void backlight_thread(void)
{
struct event ev;
@@ -47,8 +52,17 @@ void backlight_thread(void)
switch(ev.id)
{
case BACKLIGHT_ON:
- backlight_timer = HZ*backlight_timeout;
- if(backlight_timer)
+ backlight_timer = HZ*timeout_value[backlight_timeout];
+ if(backlight_timer < 0)
+ {
+#ifdef HAVE_RTC
+ /* Disable square wave */
+ rtc_write(0x0a, rtc_read(0x0a) & ~0x40);
+#else
+ PADR |= 0x4000;
+#endif
+ }
+ else if(backlight_timer)
{
#ifdef HAVE_RTC
/* Enable square wave */
@@ -65,7 +79,7 @@ void backlight_thread(void)
rtc_write(0x0a, rtc_read(0x0a) & ~0x40);
#else
PADR |= 0x4000;
-#endif
+#endif
break;
case SYS_USB_CONNECTED:
@@ -91,9 +105,9 @@ void backlight_off(void)
queue_post(&backlight_queue, BACKLIGHT_OFF, NULL);
}
-void backlight_time(int seconds)
+void backlight_time(int value)
{
- backlight_timeout = seconds;
+ backlight_timeout = value;
backlight_on();
}