diff options
-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 | 7 | ||||
-rw-r--r-- | firmware/backlight.c | 79 | ||||
-rw-r--r-- | firmware/export/backlight.h | 6 | ||||
-rw-r--r-- | firmware/export/config-e200.h | 3 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/backlight-e200.c | 11 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/backlight-target.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/button-e200.c | 25 |
11 files changed, 139 insertions, 24 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 69900c5e6a..a2592eb26b 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -10741,3 +10741,20 @@ | |||
10741 | *: "Context Menu" | 10741 | *: "Context Menu" |
10742 | </voice> | 10742 | </voice> |
10743 | </phrase> | 10743 | </phrase> |
10744 | <phrase> | ||
10745 | id: LANG_BUTTONLIGHT_TIMEOUT | ||
10746 | desc: in settings_menu | ||
10747 | user: | ||
10748 | <source> | ||
10749 | *: "" | ||
10750 | e200: "Wheel Light Timeout" | ||
10751 | </source> | ||
10752 | <dest> | ||
10753 | *: "" | ||
10754 | e200: "Wheel Light Timeout" | ||
10755 | </dest> | ||
10756 | <voice> | ||
10757 | *: "" | ||
10758 | e200: "Wheel Light Timeout" | ||
10759 | </voice> | ||
10760 | </phrase> | ||
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index bc253ed398..528587dffb 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c | |||
@@ -319,6 +319,10 @@ MENUITEM_SETTING(car_adapter_mode, &global_settings.car_adapter_mode, NULL); | |||
319 | #endif | 319 | #endif |
320 | MENUITEM_SETTING(start_screen, &global_settings.start_in_screen, NULL); | 320 | MENUITEM_SETTING(start_screen, &global_settings.start_in_screen, NULL); |
321 | 321 | ||
322 | #ifdef HAVE_BUTTON_LIGHT | ||
323 | MENUITEM_SETTING(button_light_timeout, &global_settings.button_light_timeout, NULL); | ||
324 | #endif | ||
325 | |||
322 | MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), | 326 | MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), |
323 | 0, Icon_System_menu, | 327 | 0, Icon_System_menu, |
324 | &start_screen, | 328 | &start_screen, |
@@ -345,6 +349,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), | |||
345 | #if CONFIG_CHARGING | 349 | #if CONFIG_CHARGING |
346 | &car_adapter_mode, | 350 | &car_adapter_mode, |
347 | #endif | 351 | #endif |
352 | #ifdef HAVE_BUTTON_LIGHT | ||
353 | &button_light_timeout, | ||
354 | #endif | ||
348 | ); | 355 | ); |
349 | 356 | ||
350 | /* SYSTEM MENU */ | 357 | /* SYSTEM MENU */ |
diff --git a/apps/settings.c b/apps/settings.c index f3ce2d41c1..537ca9f5b6 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -709,6 +709,9 @@ void settings_apply(void) | |||
709 | backlight_set_fade_out(global_settings.backlight_fade_out); | 709 | backlight_set_fade_out(global_settings.backlight_fade_out); |
710 | #endif | 710 | #endif |
711 | #endif | 711 | #endif |
712 | #ifdef HAVE_BUTTON_LIGHT | ||
713 | button_backlight_set_timeout(global_settings.button_light_timeout); | ||
714 | #endif | ||
712 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 715 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
713 | backlight_set_brightness(global_settings.brightness); | 716 | backlight_set_brightness(global_settings.brightness); |
714 | #endif | 717 | #endif |
diff --git a/apps/settings.h b/apps/settings.h index 0a82051498..13291be3df 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -717,6 +717,9 @@ struct user_settings | |||
717 | unsigned char remote_icon_file[MAX_FILENAME+1]; | 717 | unsigned char remote_icon_file[MAX_FILENAME+1]; |
718 | unsigned char remote_viewers_icon_file[MAX_FILENAME+1]; | 718 | unsigned char remote_viewers_icon_file[MAX_FILENAME+1]; |
719 | #endif | 719 | #endif |
720 | #ifdef HAVE_BUTTON_LIGHT | ||
721 | int button_light_timeout; | ||
722 | #endif | ||
720 | }; | 723 | }; |
721 | 724 | ||
722 | /** global variables **/ | 725 | /** global variables **/ |
diff --git a/apps/settings_list.c b/apps/settings_list.c index ce45074f36..49ec5b5f32 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -1175,6 +1175,13 @@ const struct settings_list settings[] = { | |||
1175 | "remote viewers iconset", "", | 1175 | "remote viewers iconset", "", |
1176 | ICON_DIR "/", ".bmp", MAX_FILENAME+1), | 1176 | ICON_DIR "/", ".bmp", MAX_FILENAME+1), |
1177 | #endif /* HAVE_REMOTE_LCD */ | 1177 | #endif /* HAVE_REMOTE_LCD */ |
1178 | #ifdef HAVE_BUTTON_LIGHT | ||
1179 | INT_SETTING_W_CFGVALS(F_FLIPLIST, button_light_timeout, | ||
1180 | LANG_BUTTONLIGHT_TIMEOUT, 6, | ||
1181 | "button light timeout", backlight_times_conf, UNIT_SEC, | ||
1182 | 0, 18, 1, backlight_formatter, backlight_getlang, | ||
1183 | button_backlight_set_timeout), | ||
1184 | #endif | ||
1178 | }; | 1185 | }; |
1179 | 1186 | ||
1180 | const int nb_settings = sizeof(settings)/sizeof(*settings); | 1187 | const int nb_settings = sizeof(settings)/sizeof(*settings); |
diff --git a/firmware/backlight.c b/firmware/backlight.c index 54737da647..2bdfe86c77 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c | |||
@@ -75,6 +75,10 @@ const signed char backlight_timeout_value[19] = | |||
75 | #ifdef HAVE_LCD_SLEEP | 75 | #ifdef HAVE_LCD_SLEEP |
76 | #define LCD_SLEEP 6 | 76 | #define LCD_SLEEP 6 |
77 | #endif | 77 | #endif |
78 | #ifdef HAVE_BUTTON_LIGHT | ||
79 | #define BUTTON_LIGHT_ON 7 | ||
80 | #define BUTTON_LIGHT_OFF 8 | ||
81 | #endif | ||
78 | 82 | ||
79 | static void backlight_thread(void); | 83 | static void backlight_thread(void); |
80 | static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)]; | 84 | static long backlight_stack[DEFAULT_STACK_SIZE/sizeof(long)]; |
@@ -93,6 +97,60 @@ static int backlight_timeout_plugged = 5*HZ; | |||
93 | static int backlight_on_button_hold = 0; | 97 | static int backlight_on_button_hold = 0; |
94 | #endif | 98 | #endif |
95 | 99 | ||
100 | #ifdef HAVE_BUTTON_LIGHT | ||
101 | static int button_backlight_timer; | ||
102 | static int button_backlight_timeout = 5*HZ; | ||
103 | |||
104 | /* external interface */ | ||
105 | void button_backlight_on(void) | ||
106 | { | ||
107 | queue_remove_from_head(&backlight_queue, BUTTON_LIGHT_ON); | ||
108 | queue_post(&backlight_queue, BUTTON_LIGHT_ON, 0); | ||
109 | } | ||
110 | |||
111 | void button_backlight_off(void) | ||
112 | { | ||
113 | queue_post(&backlight_queue, BUTTON_LIGHT_OFF, 0); | ||
114 | } | ||
115 | |||
116 | void button_backlight_set_timeout(int index) | ||
117 | { | ||
118 | if((unsigned)index >= sizeof(backlight_timeout_value)) | ||
119 | /* if given a weird value, use default */ | ||
120 | index = 6; | ||
121 | button_backlight_timeout = HZ * backlight_timeout_value[index]; | ||
122 | if (index == 0) /* off */ | ||
123 | button_backlight_off(); | ||
124 | else if (index == 1) /* on */ | ||
125 | button_backlight_on(); | ||
126 | |||
127 | if (button_backlight_timer) | ||
128 | button_backlight_timer = button_backlight_timeout; | ||
129 | } | ||
130 | |||
131 | /* internal interface */ | ||
132 | static void _button_backlight_on(void) | ||
133 | { | ||
134 | if (button_backlight_timeout < 0) | ||
135 | return; | ||
136 | button_backlight_timer = button_backlight_timeout; | ||
137 | #ifndef SIMULATOR | ||
138 | __button_backlight_on(); | ||
139 | #endif | ||
140 | } | ||
141 | |||
142 | static void _button_backlight_off(void) | ||
143 | { | ||
144 | if (button_backlight_timeout == 0) | ||
145 | return; | ||
146 | button_backlight_timer = 0; | ||
147 | #ifndef SIMULATOR | ||
148 | __button_backlight_off(); | ||
149 | #endif | ||
150 | } | ||
151 | |||
152 | #endif | ||
153 | |||
96 | #ifdef HAVE_REMOTE_LCD | 154 | #ifdef HAVE_REMOTE_LCD |
97 | static int remote_backlight_timer; | 155 | static int remote_backlight_timer; |
98 | static int remote_backlight_timeout = 5*HZ; | 156 | static int remote_backlight_timeout = 5*HZ; |
@@ -444,6 +502,14 @@ void backlight_thread(void) | |||
444 | lcd_sleep(); | 502 | lcd_sleep(); |
445 | break; | 503 | break; |
446 | #endif | 504 | #endif |
505 | #ifdef HAVE_BUTTON_LIGHT | ||
506 | case BUTTON_LIGHT_ON: | ||
507 | _button_backlight_on(); | ||
508 | break; | ||
509 | case BUTTON_LIGHT_OFF: | ||
510 | _button_backlight_off(); | ||
511 | break; | ||
512 | #endif | ||
447 | 513 | ||
448 | #ifdef X5_BACKLIGHT_SHUTDOWN | 514 | #ifdef X5_BACKLIGHT_SHUTDOWN |
449 | case BACKLIGHT_QUIT: | 515 | case BACKLIGHT_QUIT: |
@@ -521,6 +587,16 @@ static void backlight_tick(void) | |||
521 | } | 587 | } |
522 | } | 588 | } |
523 | #endif /* HAVE_REMOVE_LCD */ | 589 | #endif /* HAVE_REMOVE_LCD */ |
590 | #ifdef HAVE_BUTTON_LIGHT | ||
591 | if (button_backlight_timer) | ||
592 | { | ||
593 | button_backlight_timer--; | ||
594 | if (button_backlight_timer == 0) | ||
595 | { | ||
596 | button_backlight_off(); | ||
597 | } | ||
598 | } | ||
599 | #endif /* HAVE_BUTTON_LIGHT */ | ||
524 | } | 600 | } |
525 | 601 | ||
526 | void backlight_init(void) | 602 | void backlight_init(void) |
@@ -542,6 +618,9 @@ void backlight_init(void) | |||
542 | #ifdef HAVE_REMOTE_LCD | 618 | #ifdef HAVE_REMOTE_LCD |
543 | remote_backlight_on(); | 619 | remote_backlight_on(); |
544 | #endif | 620 | #endif |
621 | #ifdef HAVE_BUTTON_LIGHT | ||
622 | button_backlight_on(); | ||
623 | #endif | ||
545 | 624 | ||
546 | create_thread(backlight_thread, backlight_stack, | 625 | create_thread(backlight_thread, backlight_stack, |
547 | sizeof(backlight_stack), backlight_thread_name | 626 | sizeof(backlight_stack), backlight_thread_name |
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h index 4b164c63d2..9bcb6e9d1d 100644 --- a/firmware/export/backlight.h +++ b/firmware/export/backlight.h | |||
@@ -80,4 +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_BUTTON_LIGHT | ||
84 | void button_backlight_on(void); | ||
85 | void button_backlight_off(void); | ||
86 | void button_backlight_set_timeout(int index); | ||
87 | #endif | ||
88 | |||
83 | #endif /* BACKLIGHT_H */ | 89 | #endif /* BACKLIGHT_H */ |
diff --git a/firmware/export/config-e200.h b/firmware/export/config-e200.h index ccff38dbf2..87d7e78fbb 100644 --- a/firmware/export/config-e200.h +++ b/firmware/export/config-e200.h | |||
@@ -22,6 +22,9 @@ | |||
22 | #define MAX_BRIGHTNESS_SETTING 12 | 22 | #define MAX_BRIGHTNESS_SETTING 12 |
23 | #define DEFAULT_BRIGHTNESS_SETTING 6 | 23 | #define DEFAULT_BRIGHTNESS_SETTING 6 |
24 | 24 | ||
25 | /* define this if you have a light associated with the buttons */ | ||
26 | #define HAVE_BUTTON_LIGHT | ||
27 | |||
25 | /* define this if you have access to the quickscreen */ | 28 | /* define this if you have access to the quickscreen */ |
26 | #define HAVE_QUICKSCREEN | 29 | #define HAVE_QUICKSCREEN |
27 | 30 | ||
diff --git a/firmware/target/arm/sandisk/sansa-e200/backlight-e200.c b/firmware/target/arm/sandisk/sansa-e200/backlight-e200.c index 787f14b1a6..0ec19b4df1 100644 --- a/firmware/target/arm/sandisk/sansa-e200/backlight-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/backlight-e200.c | |||
@@ -39,3 +39,14 @@ void __backlight_off(void) | |||
39 | { | 39 | { |
40 | pp_i2c_send( 0x46, 0x23, 0x0); | 40 | pp_i2c_send( 0x46, 0x23, 0x0); |
41 | } | 41 | } |
42 | |||
43 | |||
44 | void __button_backlight_on(void) | ||
45 | { | ||
46 | GPIOG_OUTPUT_VAL |=0x80; | ||
47 | } | ||
48 | |||
49 | void __button_backlight_off(void) | ||
50 | { | ||
51 | GPIOG_OUTPUT_VAL &=~ 0x80; | ||
52 | } | ||
diff --git a/firmware/target/arm/sandisk/sansa-e200/backlight-target.h b/firmware/target/arm/sandisk/sansa-e200/backlight-target.h index 16a02a4d11..2227278985 100644 --- a/firmware/target/arm/sandisk/sansa-e200/backlight-target.h +++ b/firmware/target/arm/sandisk/sansa-e200/backlight-target.h | |||
@@ -24,4 +24,6 @@ void __backlight_on(void); | |||
24 | void __backlight_off(void); | 24 | void __backlight_off(void); |
25 | void __backlight_set_brightness(int brightness); | 25 | void __backlight_set_brightness(int brightness); |
26 | 26 | ||
27 | void __button_backlight_on(void); | ||
28 | void __button_backlight_off(void); | ||
27 | #endif | 29 | #endif |
diff --git a/firmware/target/arm/sandisk/sansa-e200/button-e200.c b/firmware/target/arm/sandisk/sansa-e200/button-e200.c index fe0b1eaf18..bbe37bcd9a 100644 --- a/firmware/target/arm/sandisk/sansa-e200/button-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/button-e200.c | |||
@@ -31,18 +31,6 @@ | |||
31 | static unsigned int old_wheel_value = 0; | 31 | static unsigned int old_wheel_value = 0; |
32 | static unsigned int wheel_repeat = BUTTON_NONE; | 32 | static unsigned int wheel_repeat = BUTTON_NONE; |
33 | 33 | ||
34 | /* Wheel backlight control */ | ||
35 | #define WHEEL_BACKLIGHT_TIMEOUT 5*HZ; | ||
36 | static unsigned int wheel_backlight_timer; | ||
37 | |||
38 | void wheel_backlight_on(bool enable) | ||
39 | { | ||
40 | if(enable) | ||
41 | GPIOG_OUTPUT_VAL |=0x80; | ||
42 | else | ||
43 | GPIOG_OUTPUT_VAL &=~ 0x80; | ||
44 | } | ||
45 | |||
46 | void button_init_device(void) | 34 | void button_init_device(void) |
47 | { | 35 | { |
48 | /* Enable all buttons */ | 36 | /* Enable all buttons */ |
@@ -52,7 +40,6 @@ void button_init_device(void) | |||
52 | /* Scrollwheel light - enable control through GPIOG pin 7 and set timeout */ | 40 | /* Scrollwheel light - enable control through GPIOG pin 7 and set timeout */ |
53 | GPIOG_ENABLE = 0x80; | 41 | GPIOG_ENABLE = 0x80; |
54 | GPIOG_OUTPUT_EN |= 0x80; | 42 | GPIOG_OUTPUT_EN |= 0x80; |
55 | wheel_backlight_timer = WHEEL_BACKLIGHT_TIMEOUT; | ||
56 | 43 | ||
57 | /* Read initial wheel value (bit 6-7 of GPIOH) */ | 44 | /* Read initial wheel value (bit 6-7 of GPIOH) */ |
58 | old_wheel_value = GPIOH_INPUT_VAL & 0xc0; | 45 | old_wheel_value = GPIOH_INPUT_VAL & 0xc0; |
@@ -153,23 +140,13 @@ int button_read_device(void) | |||
153 | old_wheel_value = new_wheel_value; | 140 | old_wheel_value = new_wheel_value; |
154 | } | 141 | } |
155 | 142 | ||
156 | if(wheel_backlight_timer>0){ | ||
157 | wheel_backlight_timer--; | ||
158 | if(wheel_backlight_timer==0){ | ||
159 | wheel_backlight_on(false); | ||
160 | } | ||
161 | } | ||
162 | |||
163 | if( (btn & BUTTON_SCROLL_UP) || (btn & BUTTON_SCROLL_DOWN) ){ | 143 | if( (btn & BUTTON_SCROLL_UP) || (btn & BUTTON_SCROLL_DOWN) ){ |
164 | /* only trigger once per click */ | 144 | /* only trigger once per click */ |
165 | if ((new_wheel_value == 0x00) || (new_wheel_value == 0xc0)) | 145 | if ((new_wheel_value == 0x00) || (new_wheel_value == 0xc0)) |
166 | { | 146 | { |
167 | btn = btn&(~(BUTTON_SCROLL_UP|BUTTON_SCROLL_DOWN)); | 147 | btn = btn&(~(BUTTON_SCROLL_UP|BUTTON_SCROLL_DOWN)); |
168 | } | 148 | } |
169 | if(wheel_backlight_timer==0){ | 149 | button_backlight_on(); |
170 | wheel_backlight_on(true); | ||
171 | } | ||
172 | wheel_backlight_timer = WHEEL_BACKLIGHT_TIMEOUT; | ||
173 | } | 150 | } |
174 | 151 | ||
175 | return btn; | 152 | return btn; |