summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2005-04-15 16:16:26 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2005-04-15 16:16:26 +0000
commit19631f455226f5f02c577c732072ba3f04ccb9bb (patch)
treec2393a2d4a02c5fea2f80a51afe85059833e7bd9
parent21aa3b135dddce1b186ccede3a981e312c2700f6 (diff)
downloadrockbox-19631f455226f5f02c577c732072ba3f04ccb9bb.tar.gz
rockbox-19631f455226f5f02c577c732072ba3f04ccb9bb.zip
iRiver: Independent backlight timers for the main and remote LCD
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6303 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/backlight.c65
-rw-r--r--firmware/drivers/button.c7
-rw-r--r--firmware/export/backlight.h2
3 files changed, 64 insertions, 10 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index a13277705e..84dc7c6884 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -41,6 +41,8 @@ const char backlight_timeout_value[19] =
41 41
42#define BACKLIGHT_ON 1 42#define BACKLIGHT_ON 1
43#define BACKLIGHT_OFF 2 43#define BACKLIGHT_OFF 2
44#define REMOTE_BACKLIGHT_ON 3
45#define REMOTE_BACKLIGHT_OFF 4
44 46
45static void backlight_thread(void); 47static void backlight_thread(void);
46static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)]; 48static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)];
@@ -51,6 +53,9 @@ static bool charger_was_inserted = 0;
51static bool backlight_on_when_charging = 0; 53static bool backlight_on_when_charging = 0;
52 54
53static int backlight_timer; 55static int backlight_timer;
56#ifdef HAVE_REMOTE_LCD
57static int remote_backlight_timer;
58#endif
54static unsigned int backlight_timeout = 5; 59static unsigned int backlight_timeout = 5;
55 60
56static void __backlight_off(void) 61static void __backlight_off(void)
@@ -67,10 +72,6 @@ static void __backlight_off(void)
67#elif CONFIG_BACKLIGHT == BL_GMINI 72#elif CONFIG_BACKLIGHT == BL_GMINI
68 P1 &= ~0x10; 73 P1 &= ~0x10;
69#endif 74#endif
70
71#ifdef HAVE_REMOTE_LCD
72 lcd_remote_backlight_off();
73#endif
74} 75}
75 76
76static void __backlight_on(void) 77static void __backlight_on(void)
@@ -88,10 +89,6 @@ static void __backlight_on(void)
88#elif CONFIG_BACKLIGHT == BL_GMINI 89#elif CONFIG_BACKLIGHT == BL_GMINI
89 P1 |= 0x10; 90 P1 |= 0x10;
90#endif 91#endif
91
92#ifdef HAVE_REMOTE_LCD
93 lcd_remote_backlight_on();
94#endif
95} 92}
96 93
97void backlight_thread(void) 94void backlight_thread(void)
@@ -103,6 +100,28 @@ void backlight_thread(void)
103 queue_wait(&backlight_queue, &ev); 100 queue_wait(&backlight_queue, &ev);
104 switch(ev.id) 101 switch(ev.id)
105 { 102 {
103#ifdef HAVE_REMOTE_LCD
104 case REMOTE_BACKLIGHT_ON:
105 remote_backlight_timer =
106 HZ*backlight_timeout_value[backlight_timeout];
107
108 /* Backlight == OFF in the setting? */
109 if(remote_backlight_timer < 0)
110 {
111 remote_backlight_timer = 0; /* Disable the timeout */
112 lcd_remote_backlight_off();
113 }
114 else
115 {
116 lcd_remote_backlight_on();
117 }
118 break;
119
120 case REMOTE_BACKLIGHT_OFF:
121 lcd_remote_backlight_off();
122 break;
123
124#endif
106 case BACKLIGHT_ON: 125 case BACKLIGHT_ON:
107 if( backlight_on_when_charging && charger_inserted() ) 126 if( backlight_on_when_charging && charger_inserted() )
108 { 127 {
@@ -152,6 +171,18 @@ void backlight_off(void)
152 queue_post(&backlight_queue, BACKLIGHT_OFF, NULL); 171 queue_post(&backlight_queue, BACKLIGHT_OFF, NULL);
153} 172}
154 173
174#ifdef HAVE_REMOTE_LCD
175void remote_backlight_on(void)
176{
177 queue_post(&backlight_queue, REMOTE_BACKLIGHT_ON, NULL);
178}
179
180void remote_backlight_off(void)
181{
182 queue_post(&backlight_queue, REMOTE_BACKLIGHT_OFF, NULL);
183}
184#endif
185
155int backlight_get_timeout(void) 186int backlight_get_timeout(void)
156{ 187{
157 return backlight_timeout; 188 return backlight_timeout;
@@ -195,6 +226,16 @@ void backlight_tick(void)
195 backlight_off(); 226 backlight_off();
196 } 227 }
197 } 228 }
229#ifdef HAVE_REMOTE_LCD
230 if(remote_backlight_timer)
231 {
232 remote_backlight_timer--;
233 if(remote_backlight_timer == 0)
234 {
235 remote_backlight_off();
236 }
237 }
238#endif
198} 239}
199 240
200void backlight_init(void) 241void backlight_init(void)
@@ -213,6 +254,9 @@ void backlight_init(void)
213 P1CON |= 0x10; /* P1.4 C-MOS output mode */ 254 P1CON |= 0x10; /* P1.4 C-MOS output mode */
214#endif 255#endif
215 backlight_on(); 256 backlight_on();
257#ifdef HAVE_REMOTE_LCD
258 remote_backlight_on();
259#endif
216} 260}
217 261
218#else /* no backlight, empty dummy functions */ 262#else /* no backlight, empty dummy functions */
@@ -225,6 +269,9 @@ int backlight_get_timeout(void) {return 0;}
225void backlight_set_timeout(int index) {(void)index;} 269void backlight_set_timeout(int index) {(void)index;}
226bool backlight_get_on_when_charging(void) {return 0;} 270bool backlight_get_on_when_charging(void) {return 0;}
227void backlight_set_on_when_charging(bool yesno) {(void)yesno;} 271void backlight_set_on_when_charging(bool yesno) {(void)yesno;}
228 272#ifdef HAVE_REMOTE_LCD
273void remote_backlight_on(void) {}
274void remote_backlight_off(void) {}
275#endif
229#endif /* #ifdef CONFIG_BACKLIGHT */ 276#endif /* #ifdef CONFIG_BACKLIGHT */
230 277
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index cd4492315d..684acf6c97 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -150,7 +150,12 @@ static void button_tick(void)
150 queue_post(&button_queue, BUTTON_REPEAT | btn, NULL); 150 queue_post(&button_queue, BUTTON_REPEAT | btn, NULL);
151 else 151 else
152 queue_post(&button_queue, btn, NULL); 152 queue_post(&button_queue, btn, NULL);
153 backlight_on(); 153#ifdef HAVE_REMOTE_LCD
154 if(btn & BUTTON_REMOTE)
155 remote_backlight_on();
156 else
157#endif
158 backlight_on();
154 159
155 reset_poweroff_timer(); 160 reset_poweroff_timer();
156 } 161 }
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h
index d80f2bbe61..6025fbaf3b 100644
--- a/firmware/export/backlight.h
+++ b/firmware/export/backlight.h
@@ -27,6 +27,8 @@ int backlight_get_timeout(void);
27void backlight_set_timeout(int index); 27void backlight_set_timeout(int index);
28bool backlight_get_on_when_charging(void); 28bool backlight_get_on_when_charging(void);
29void backlight_set_on_when_charging(bool yesno); 29void backlight_set_on_when_charging(bool yesno);
30void remote_backlight_on(void);
31void remote_backlight_off(void);
30extern const char backlight_timeout_value[]; 32extern const char backlight_timeout_value[];
31 33
32#endif 34#endif