diff options
author | Karl Kurbjun <kkurbjun@gmail.com> | 2007-05-08 06:45:38 +0000 |
---|---|---|
committer | Karl Kurbjun <kkurbjun@gmail.com> | 2007-05-08 06:45:38 +0000 |
commit | 6f95ab7de7370bc8d5c803d22984908f6174a0e3 (patch) | |
tree | b69ab3bb886ca4ad5d17cd3283ee21aa19751533 | |
parent | 830576bb0b08dca0f5e9a90bf0526505b1c34a0a (diff) | |
download | rockbox-6f95ab7de7370bc8d5c803d22984908f6174a0e3.tar.gz rockbox-6f95ab7de7370bc8d5c803d22984908f6174a0e3.zip |
Add in buttonlight brightness setting for the Gigabeat, and setup the framework for future players that have adjustable button light brightness settings. Also fixed a bug in the backlight code when the brightness was set to 0.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13356 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/lang/english.lang | 17 | ||||
-rw-r--r-- | apps/menus/settings_menu.c | 7 | ||||
-rw-r--r-- | apps/settings.c | 3 | ||||
-rw-r--r-- | apps/settings.h | 3 | ||||
-rw-r--r-- | apps/settings_list.c | 5 | ||||
-rw-r--r-- | firmware/backlight.c | 23 | ||||
-rw-r--r-- | firmware/export/backlight.h | 4 | ||||
-rw-r--r-- | firmware/export/config-gigabeat.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | 39 |
9 files changed, 98 insertions, 5 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index fb19485d43..e8dcf4867d 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -10776,6 +10776,23 @@ | |||
10776 | </voice> | 10776 | </voice> |
10777 | </phrase> | 10777 | </phrase> |
10778 | <phrase> | 10778 | <phrase> |
10779 | id: LANG_BUTTONLIGHT_BRIGHTNESS | ||
10780 | desc: in settings_menu | ||
10781 | user: | ||
10782 | <source> | ||
10783 | *: "" | ||
10784 | gigabeatf: "Button Light Brightness" | ||
10785 | </source> | ||
10786 | <dest> | ||
10787 | *: "" | ||
10788 | gigabeatf: "Button Light Brightness" | ||
10789 | </dest> | ||
10790 | <voice> | ||
10791 | *: "" | ||
10792 | gigabeatf: "Button Light Brightness" | ||
10793 | </voice> | ||
10794 | </phrase> | ||
10795 | <phrase> | ||
10779 | id: LANG_PLAYLISTVIEWER_SETTINGS | 10796 | id: LANG_PLAYLISTVIEWER_SETTINGS |
10780 | desc: title for the playlist viewer settings menus | 10797 | desc: title for the playlist viewer settings menus |
10781 | user: | 10798 | user: |
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 528587dffb..6d962824f1 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c | |||
@@ -323,6 +323,10 @@ MENUITEM_SETTING(start_screen, &global_settings.start_in_screen, NULL); | |||
323 | MENUITEM_SETTING(button_light_timeout, &global_settings.button_light_timeout, NULL); | 323 | MENUITEM_SETTING(button_light_timeout, &global_settings.button_light_timeout, NULL); |
324 | #endif | 324 | #endif |
325 | 325 | ||
326 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
327 | MENUITEM_SETTING(buttonlight_brightness, &global_settings.buttonlight_brightness, NULL); | ||
328 | #endif | ||
329 | |||
326 | MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), | 330 | MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), |
327 | 0, Icon_System_menu, | 331 | 0, Icon_System_menu, |
328 | &start_screen, | 332 | &start_screen, |
@@ -352,6 +356,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), | |||
352 | #ifdef HAVE_BUTTON_LIGHT | 356 | #ifdef HAVE_BUTTON_LIGHT |
353 | &button_light_timeout, | 357 | &button_light_timeout, |
354 | #endif | 358 | #endif |
359 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
360 | &buttonlight_brightness | ||
361 | #endif | ||
355 | ); | 362 | ); |
356 | 363 | ||
357 | /* SYSTEM MENU */ | 364 | /* SYSTEM MENU */ |
diff --git a/apps/settings.c b/apps/settings.c index 35a063bf96..81dbe71491 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -713,6 +713,9 @@ void settings_apply(void) | |||
713 | #ifdef HAVE_BUTTON_LIGHT | 713 | #ifdef HAVE_BUTTON_LIGHT |
714 | button_backlight_set_timeout(global_settings.button_light_timeout); | 714 | button_backlight_set_timeout(global_settings.button_light_timeout); |
715 | #endif | 715 | #endif |
716 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
717 | buttonlight_set_brightness(global_settings.buttonlight_brightness); | ||
718 | #endif | ||
716 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 719 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
717 | backlight_set_brightness(global_settings.brightness); | 720 | backlight_set_brightness(global_settings.brightness); |
718 | #endif | 721 | #endif |
diff --git a/apps/settings.h b/apps/settings.h index 13291be3df..5e9da84bae 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -720,6 +720,9 @@ struct user_settings | |||
720 | #ifdef HAVE_BUTTON_LIGHT | 720 | #ifdef HAVE_BUTTON_LIGHT |
721 | int button_light_timeout; | 721 | int button_light_timeout; |
722 | #endif | 722 | #endif |
723 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
724 | int buttonlight_brightness; | ||
725 | #endif | ||
723 | }; | 726 | }; |
724 | 727 | ||
725 | /** global variables **/ | 728 | /** global variables **/ |
diff --git a/apps/settings_list.c b/apps/settings_list.c index e781c51be0..d39779607d 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -1183,6 +1183,11 @@ const struct settings_list settings[] = { | |||
1183 | 0, 18, 1, backlight_formatter, backlight_getlang, | 1183 | 0, 18, 1, backlight_formatter, backlight_getlang, |
1184 | button_backlight_set_timeout), | 1184 | button_backlight_set_timeout), |
1185 | #endif | 1185 | #endif |
1186 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
1187 | INT_SETTING(0, buttonlight_brightness, LANG_BUTTONLIGHT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SETTING, | ||
1188 | "button light brightness",UNIT_INT, MIN_BRIGHTNESS_SETTING, MAX_BRIGHTNESS_SETTING, 1, | ||
1189 | NULL, NULL, buttonlight_set_brightness), | ||
1190 | #endif | ||
1186 | }; | 1191 | }; |
1187 | 1192 | ||
1188 | const int nb_settings = sizeof(settings)/sizeof(*settings); | 1193 | const int nb_settings = sizeof(settings)/sizeof(*settings); |
diff --git a/firmware/backlight.c b/firmware/backlight.c index a7fab787e8..d695d1ee19 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c | |||
@@ -58,6 +58,14 @@ static inline void __backlight_set_brightness(int val) | |||
58 | (void)val; | 58 | (void)val; |
59 | } | 59 | } |
60 | #endif | 60 | #endif |
61 | |||
62 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
63 | static inline void __buttonlight_set_brightness(int val) | ||
64 | { | ||
65 | (void)val; | ||
66 | } | ||
67 | #endif | ||
68 | |||
61 | #endif /* SIMULATOR */ | 69 | #endif /* SIMULATOR */ |
62 | 70 | ||
63 | #if defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) | 71 | #if defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) |
@@ -846,6 +854,18 @@ void backlight_set_brightness(int val) | |||
846 | } | 854 | } |
847 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ | 855 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ |
848 | 856 | ||
857 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
858 | void buttonlight_set_brightness(int val) | ||
859 | { | ||
860 | if (val < MIN_BRIGHTNESS_SETTING) | ||
861 | val = MIN_BRIGHTNESS_SETTING; | ||
862 | else if (val > MAX_BRIGHTNESS_SETTING) | ||
863 | val = MAX_BRIGHTNESS_SETTING; | ||
864 | |||
865 | __buttonlight_set_brightness(val); | ||
866 | } | ||
867 | #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ | ||
868 | |||
849 | #else /* !defined(HAVE_BACKLIGHT) || defined(BOOTLOADER) | 869 | #else /* !defined(HAVE_BACKLIGHT) || defined(BOOTLOADER) |
850 | -- no backlight, empty dummy functions */ | 870 | -- no backlight, empty dummy functions */ |
851 | 871 | ||
@@ -871,4 +891,7 @@ bool is_remote_backlight_on(void) {return true;} | |||
871 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 891 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
872 | void backlight_set_brightness(int val) { (void)val; } | 892 | void backlight_set_brightness(int val) { (void)val; } |
873 | #endif | 893 | #endif |
894 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
895 | void buttonlight_set_brightness(int val) { (void)val; } | ||
896 | #endif | ||
874 | #endif /* defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) */ | 897 | #endif /* defined(HAVE_BACKLIGHT) && !defined(BOOTLOADER) */ |
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h index 9bcb6e9d1d..15dfbf1ddf 100644 --- a/firmware/export/backlight.h +++ b/firmware/export/backlight.h | |||
@@ -80,6 +80,10 @@ void sim_remote_backlight(int value); | |||
80 | void backlight_set_brightness(int val); | 80 | void backlight_set_brightness(int val); |
81 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ | 81 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ |
82 | 82 | ||
83 | #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS | ||
84 | void buttonlight_set_brightness(int val); | ||
85 | #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ | ||
86 | |||
83 | #ifdef HAVE_BUTTON_LIGHT | 87 | #ifdef HAVE_BUTTON_LIGHT |
84 | void button_backlight_on(void); | 88 | void button_backlight_on(void); |
85 | void button_backlight_off(void); | 89 | void button_backlight_off(void); |
diff --git a/firmware/export/config-gigabeat.h b/firmware/export/config-gigabeat.h index a83dc55fd8..5f45bdbff0 100644 --- a/firmware/export/config-gigabeat.h +++ b/firmware/export/config-gigabeat.h | |||
@@ -49,6 +49,8 @@ | |||
49 | 49 | ||
50 | #define HAVE_BACKLIGHT_BRIGHTNESS | 50 | #define HAVE_BACKLIGHT_BRIGHTNESS |
51 | 51 | ||
52 | #define HAVE_BUTTONLIGHT_BRIGHTNESS | ||
53 | |||
52 | /* Main LCD backlight brightness range and defaults */ | 54 | /* Main LCD backlight brightness range and defaults */ |
53 | #define MIN_BRIGHTNESS_SETTING 0 /* 0.5 mA */ | 55 | #define MIN_BRIGHTNESS_SETTING 0 /* 0.5 mA */ |
54 | #define MAX_DIM_BRIGHTNESS_SETTING 15 /* highest 'dimness' */ | 56 | #define MAX_DIM_BRIGHTNESS_SETTING 15 /* highest 'dimness' */ |
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c index 7b7e8518ec..40b093c689 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c | |||
@@ -31,6 +31,7 @@ | |||
31 | 31 | ||
32 | static void led_control_service(void); | 32 | static void led_control_service(void); |
33 | static unsigned short backlight_brightness; | 33 | static unsigned short backlight_brightness; |
34 | static unsigned short buttonlight_brightness; | ||
34 | static unsigned short backlight_target; | 35 | static unsigned short backlight_target; |
35 | static unsigned short buttonlight_target; | 36 | static unsigned short buttonlight_target; |
36 | 37 | ||
@@ -57,6 +58,7 @@ enum buttonlight_states | |||
57 | BUTTONLIGHT_CONTROL_IDLE, | 58 | BUTTONLIGHT_CONTROL_IDLE, |
58 | BUTTONLIGHT_CONTROL_OFF, | 59 | BUTTONLIGHT_CONTROL_OFF, |
59 | BUTTONLIGHT_CONTROL_ON, | 60 | BUTTONLIGHT_CONTROL_ON, |
61 | BUTTONLIGHT_CONTROL_SET, | ||
60 | BUTTONLIGHT_CONTROL_FADE, | 62 | BUTTONLIGHT_CONTROL_FADE, |
61 | } buttonlight_control; | 63 | } buttonlight_control; |
62 | 64 | ||
@@ -214,10 +216,15 @@ static void led_control_service(void) | |||
214 | break; | 216 | break; |
215 | case BUTTONLIGHT_CONTROL_ON: | 217 | case BUTTONLIGHT_CONTROL_ON: |
216 | sc606_changed=true; | 218 | sc606_changed=true; |
217 | sc606regBval=sc606regCval=backlight_brightness; | 219 | sc606regBval=sc606regCval=buttonlight_brightness; |
218 | sc606regCONFval |= 0x3C; | 220 | sc606regCONFval |= 0x3C; |
219 | buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; | 221 | buttonlight_control=BUTTONLIGHT_CONTROL_IDLE; |
220 | break; | 222 | break; |
223 | case BUTTONLIGHT_CONTROL_SET: | ||
224 | sc606regBval=sc606regCval=buttonlight_brightness; | ||
225 | sc606_changed=true; | ||
226 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; | ||
227 | break; | ||
221 | case BUTTONLIGHT_CONTROL_FADE: | 228 | case BUTTONLIGHT_CONTROL_FADE: |
222 | /* Was this mode set while the button light is already on/off? */ | 229 | /* Was this mode set while the button light is already on/off? */ |
223 | if(buttonlight_target==sc606regBval) | 230 | if(buttonlight_target==sc606regBval) |
@@ -288,15 +295,21 @@ static void led_control_service(void) | |||
288 | void __button_backlight_on(void) | 295 | void __button_backlight_on(void) |
289 | { | 296 | { |
290 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | 297 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; |
291 | buttonlight_target = backlight_brightness; | 298 | buttonlight_target = buttonlight_brightness; |
292 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | 299 | if(buttonlight_brightness==0) |
300 | buttonlight_control = BUTTONLIGHT_CONTROL_ON; | ||
301 | else | ||
302 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | ||
293 | } | 303 | } |
294 | 304 | ||
295 | void __button_backlight_off(void) | 305 | void __button_backlight_off(void) |
296 | { | 306 | { |
297 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | 307 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; |
298 | buttonlight_target = 0; | 308 | buttonlight_target = 0; |
299 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | 309 | if(buttonlight_brightness==0) |
310 | buttonlight_control = BUTTONLIGHT_CONTROL_OFF; | ||
311 | else | ||
312 | buttonlight_control = BUTTONLIGHT_CONTROL_FADE; | ||
300 | } | 313 | } |
301 | 314 | ||
302 | void __backlight_dim(bool dim_now) | 315 | void __backlight_dim(bool dim_now) |
@@ -304,5 +317,21 @@ void __backlight_dim(bool dim_now) | |||
304 | /* dont let the interrupt tick happen */ | 317 | /* dont let the interrupt tick happen */ |
305 | backlight_control = BACKLIGHT_CONTROL_IDLE; | 318 | backlight_control = BACKLIGHT_CONTROL_IDLE; |
306 | backlight_target = (dim_now == true) ? 0 : backlight_brightness; | 319 | backlight_target = (dim_now == true) ? 0 : backlight_brightness; |
307 | backlight_control = BACKLIGHT_CONTROL_FADE; | 320 | if(backlight_target==0 && backlight_brightness==0) |
321 | { | ||
322 | if(dim_now == false) | ||
323 | backlight_control = BACKLIGHT_CONTROL_ON; | ||
324 | else | ||
325 | backlight_control = BACKLIGHT_CONTROL_OFF; | ||
326 | } | ||
327 | else | ||
328 | backlight_control = BACKLIGHT_CONTROL_FADE; | ||
329 | } | ||
330 | |||
331 | void __buttonlight_set_brightness(int brightness) | ||
332 | { | ||
333 | /* stop the interrupt from messing us up */ | ||
334 | buttonlight_control = BUTTONLIGHT_CONTROL_IDLE; | ||
335 | buttonlight_brightness = brightness; | ||
336 | buttonlight_control = BUTTONLIGHT_CONTROL_SET; | ||
308 | } | 337 | } |