summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2007-05-08 06:45:38 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2007-05-08 06:45:38 +0000
commit6f95ab7de7370bc8d5c803d22984908f6174a0e3 (patch)
treeb69ab3bb886ca4ad5d17cd3283ee21aa19751533
parent830576bb0b08dca0f5e9a90bf0526505b1c34a0a (diff)
downloadrockbox-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.lang17
-rw-r--r--apps/menus/settings_menu.c7
-rw-r--r--apps/settings.c3
-rw-r--r--apps/settings.h3
-rw-r--r--apps/settings_list.c5
-rw-r--r--firmware/backlight.c23
-rw-r--r--firmware/export/backlight.h4
-rw-r--r--firmware/export/config-gigabeat.h2
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c39
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);
323MENUITEM_SETTING(button_light_timeout, &global_settings.button_light_timeout, NULL); 323MENUITEM_SETTING(button_light_timeout, &global_settings.button_light_timeout, NULL);
324#endif 324#endif
325 325
326#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
327MENUITEM_SETTING(buttonlight_brightness, &global_settings.buttonlight_brightness, NULL);
328#endif
329
326MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), 330MAKE_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
1188const int nb_settings = sizeof(settings)/sizeof(*settings); 1193const 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
63static 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
858void 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
872void backlight_set_brightness(int val) { (void)val; } 892void backlight_set_brightness(int val) { (void)val; }
873#endif 893#endif
894#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
895void 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);
80void backlight_set_brightness(int val); 80void backlight_set_brightness(int val);
81#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ 81#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
82 82
83#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
84void buttonlight_set_brightness(int val);
85#endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */
86
83#ifdef HAVE_BUTTON_LIGHT 87#ifdef HAVE_BUTTON_LIGHT
84void button_backlight_on(void); 88void button_backlight_on(void);
85void button_backlight_off(void); 89void 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
32static void led_control_service(void); 32static void led_control_service(void);
33static unsigned short backlight_brightness; 33static unsigned short backlight_brightness;
34static unsigned short buttonlight_brightness;
34static unsigned short backlight_target; 35static unsigned short backlight_target;
35static unsigned short buttonlight_target; 36static 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)
288void __button_backlight_on(void) 295void __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
295void __button_backlight_off(void) 305void __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
302void __backlight_dim(bool dim_now) 315void __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
331void __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}