diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2005-04-15 16:16:26 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2005-04-15 16:16:26 +0000 |
commit | 19631f455226f5f02c577c732072ba3f04ccb9bb (patch) | |
tree | c2393a2d4a02c5fea2f80a51afe85059833e7bd9 | |
parent | 21aa3b135dddce1b186ccede3a981e312c2700f6 (diff) | |
download | rockbox-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.c | 65 | ||||
-rw-r--r-- | firmware/drivers/button.c | 7 | ||||
-rw-r--r-- | firmware/export/backlight.h | 2 |
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 | ||
45 | static void backlight_thread(void); | 47 | static void backlight_thread(void); |
46 | static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)]; | 48 | static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)]; |
@@ -51,6 +53,9 @@ static bool charger_was_inserted = 0; | |||
51 | static bool backlight_on_when_charging = 0; | 53 | static bool backlight_on_when_charging = 0; |
52 | 54 | ||
53 | static int backlight_timer; | 55 | static int backlight_timer; |
56 | #ifdef HAVE_REMOTE_LCD | ||
57 | static int remote_backlight_timer; | ||
58 | #endif | ||
54 | static unsigned int backlight_timeout = 5; | 59 | static unsigned int backlight_timeout = 5; |
55 | 60 | ||
56 | static void __backlight_off(void) | 61 | static 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 | ||
76 | static void __backlight_on(void) | 77 | static 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 | ||
97 | void backlight_thread(void) | 94 | void 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 | ||
175 | void remote_backlight_on(void) | ||
176 | { | ||
177 | queue_post(&backlight_queue, REMOTE_BACKLIGHT_ON, NULL); | ||
178 | } | ||
179 | |||
180 | void remote_backlight_off(void) | ||
181 | { | ||
182 | queue_post(&backlight_queue, REMOTE_BACKLIGHT_OFF, NULL); | ||
183 | } | ||
184 | #endif | ||
185 | |||
155 | int backlight_get_timeout(void) | 186 | int 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 | ||
200 | void backlight_init(void) | 241 | void 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;} | |||
225 | void backlight_set_timeout(int index) {(void)index;} | 269 | void backlight_set_timeout(int index) {(void)index;} |
226 | bool backlight_get_on_when_charging(void) {return 0;} | 270 | bool backlight_get_on_when_charging(void) {return 0;} |
227 | void backlight_set_on_when_charging(bool yesno) {(void)yesno;} | 271 | void backlight_set_on_when_charging(bool yesno) {(void)yesno;} |
228 | 272 | #ifdef HAVE_REMOTE_LCD | |
273 | void remote_backlight_on(void) {} | ||
274 | void 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); | |||
27 | void backlight_set_timeout(int index); | 27 | void backlight_set_timeout(int index); |
28 | bool backlight_get_on_when_charging(void); | 28 | bool backlight_get_on_when_charging(void); |
29 | void backlight_set_on_when_charging(bool yesno); | 29 | void backlight_set_on_when_charging(bool yesno); |
30 | void remote_backlight_on(void); | ||
31 | void remote_backlight_off(void); | ||
30 | extern const char backlight_timeout_value[]; | 32 | extern const char backlight_timeout_value[]; |
31 | 33 | ||
32 | #endif | 34 | #endif |