summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/SOURCES1
-rw-r--r--apps/gui/usb_screen.c312
-rw-r--r--apps/gui/usb_screen.h27
-rw-r--r--apps/main.c6
-rw-r--r--apps/misc.c4
-rw-r--r--apps/screens.c287
-rw-r--r--apps/screens.h1
7 files changed, 345 insertions, 293 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index f5bd9d819c..6ec1732881 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -156,6 +156,7 @@ eq_arm.S
156#ifdef USB_ENABLE_HID 156#ifdef USB_ENABLE_HID
157usb_keymaps.c 157usb_keymaps.c
158#endif 158#endif
159gui/usb_screen.c
159metadata.c 160metadata.c
160metadata/mp3.c 161metadata/mp3.c
161#if CONFIG_CODEC == SWCODEC 162#if CONFIG_CODEC == SWCODEC
diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c
new file mode 100644
index 0000000000..6e7c24920f
--- /dev/null
+++ b/apps/gui/usb_screen.c
@@ -0,0 +1,312 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: screens.c 23269 2009-10-19 20:06:51Z tomers $
9 *
10 * Copyright (C) 2002 Björn Stenberg
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "action.h"
23#ifdef HAVE_REMOTE_LCD
24#include "lcd-remote.h"
25#endif
26#include "lang.h"
27#include "usb.h"
28#if defined(HAVE_USBSTACK)
29#include "usb_core.h"
30#ifdef USB_ENABLE_HID
31#include "usb_keymaps.h"
32#endif
33#endif
34#include "settings.h"
35#include "appevents.h"
36
37#ifdef HAVE_LCD_BITMAP
38#include "bitmaps/usblogo.h"
39#endif
40
41#ifdef HAVE_REMOTE_LCD
42#include "bitmaps/remote_usblogo.h"
43#endif
44
45#ifndef SIMULATOR
46
47#ifdef USB_ENABLE_HID
48int usb_keypad_mode;
49#endif
50
51static int handle_usb_events(void)
52{
53#if (CONFIG_STORAGE & STORAGE_MMC)
54 int next_update=0;
55#endif /* STORAGE_MMC */
56
57 /* Don't return until we get SYS_USB_DISCONNECTED or SYS_TIMEOUT */
58 while(1)
59 {
60 int button;
61#ifdef USB_ENABLE_HID
62 if (usb_core_driver_enabled(USB_DRIVER_HID))
63 {
64 button = get_hid_usb_action();
65
66 /* On mode change, we need to refresh the screen */
67 if (button == ACTION_USB_HID_MODE_SWITCH_NEXT ||
68 button == ACTION_USB_HID_MODE_SWITCH_PREV)
69 {
70 break;
71 }
72 }
73 else
74#endif
75 {
76 button = button_get_w_tmo(HZ/2);
77 /* hid emits the event in get_action */
78 send_event(GUI_EVENT_ACTIONUPDATE, NULL);
79 }
80
81 switch(button)
82 {
83 case SYS_USB_DISCONNECTED:
84 usb_acknowledge(SYS_USB_DISCONNECTED_ACK);
85 return 1;
86 case SYS_TIMEOUT:
87 break;
88 }
89
90#if (CONFIG_STORAGE & STORAGE_MMC) /* USB-MMC bridge can report activity */
91 if(TIME_AFTER(current_tick,next_update))
92 {
93 if(usb_inserted()) {
94 led(mmc_usb_active(HZ));
95 }
96 next_update=current_tick+HZ/2;
97 }
98#endif /* STORAGE_MMC */
99 }
100
101 return 0;
102}
103#endif
104
105#ifdef USB_NONE
106void gui_usb_screen_run(void)
107{
108}
109#else
110#define MODE_NAME_LEN 32
111
112struct usb_screen_vps_t
113{
114 struct viewport parent;
115#ifdef HAVE_LCD_BITMAP
116 struct viewport logo;
117#ifdef USB_ENABLE_HID
118 struct viewport title;
119#endif
120#endif
121};
122
123#ifdef HAVE_LCD_BITMAP
124static void usb_screen_fix_viewports(struct screen *screen,
125 struct usb_screen_vps_t *usb_screen_vps)
126{
127 int logo_width, logo_height;
128 struct viewport *parent = &usb_screen_vps->parent;
129 struct viewport *logo = &usb_screen_vps->logo;
130
131#ifdef HAVE_REMOTE_LCD
132 if (screen->screen_type == SCREEN_REMOTE)
133 {
134 logo_width = BMPWIDTH_remote_usblogo;
135 logo_height = BMPHEIGHT_remote_usblogo;
136 }
137 else
138#endif
139 {
140 logo_width = BMPWIDTH_usblogo;
141 logo_height = BMPHEIGHT_usblogo;
142 }
143
144 viewport_set_defaults(parent, screen->screen_type);
145 if (parent->width < logo_width || parent->height < logo_height)
146 viewport_set_fullscreen(parent, screen->screen_type);
147
148 *logo = *parent;
149 logo->x = parent->width - logo_width;
150 logo->y = (parent->height - logo_height) / 2;
151 logo->width = logo_width;
152 logo->height = logo_height;
153
154#ifdef USB_ENABLE_HID
155 struct viewport *title = &usb_screen_vps->title;
156 int char_height, nb_lines;
157
158 /* nb_lines only returns the number of fully visible lines, small screens
159 or really large fonts could cause problems with the calculation below.
160 */
161 nb_lines = viewport_get_nb_lines(parent);
162 if (nb_lines == 0)
163 nb_lines++;
164
165 char_height = parent->height/nb_lines;
166
167 *title = *parent;
168 title->y = logo->y + logo->height + char_height;
169#endif
170}
171#endif
172
173static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
174{
175 int i;
176 int usb_bars = VP_SB_ALLSCREENS; /* force statusbars */
177
178 FOR_NB_SCREENS(i)
179 {
180 struct screen *screen = &screens[i];
181
182 struct usb_screen_vps_t *usb_screen_vps = &usb_screen_vps_ar[i];
183 struct viewport *parent = &usb_screen_vps->parent;
184#ifdef HAVE_LCD_BITMAP
185 struct viewport *logo = &usb_screen_vps->logo;
186#endif
187
188 screen->set_viewport(parent);
189 screen->backdrop_show(BACKDROP_MAIN);
190 screen->backlight_on();
191 screen->clear_viewport();
192
193#ifdef HAVE_LCD_BITMAP
194 screen->set_viewport(logo);
195#ifdef HAVE_REMOTE_LCD
196 if (i == SCREEN_REMOTE)
197 {
198 screen->bitmap(remote_usblogo, 0, 0, logo->width,
199 logo->height);
200 }
201 else
202#endif
203 {
204 screen->transparent_bitmap(usblogo, 0, 0, logo->width,
205 logo->height);
206#ifdef USB_ENABLE_HID
207 screen->set_viewport(&usb_screen_vps->title);
208 usb_screen_vps->title.flags |= VP_FLAG_ALIGN_CENTER;
209 screen->puts_scroll(0, 0, str(keypad_mode_name_get()));
210#endif /* USB_ENABLE_HID */
211 }
212 screen->set_viewport(parent);
213
214#else /* HAVE_LCD_BITMAP */
215 screen->double_height(false);
216 screen->puts_scroll(0, 0, "[USB Mode]");
217 status_set_param(false);
218 status_set_audio(false);
219 status_set_usb(true);
220#endif /* HAVE_LCD_BITMAP */
221
222 screen->update_viewport();
223 screen->set_viewport(NULL);
224
225 /* force statusbar by ignoring the setting */
226 usb_bars |= VP_SB_IGNORE_SETTING(i);
227 }
228
229 viewportmanager_set_statusbar(usb_bars);
230}
231
232void gui_usb_screen_run(void)
233{
234 int i;
235 int old_bars = viewportmanager_get_statusbar();
236 struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS];
237#if defined HAVE_TOUCHSCREEN
238 enum touchscreen_mode old_mode = touchscreen_get_mode();
239
240 /* TODO: Paint buttons on screens OR switch to point mode and use
241 * touchscreen as a touchpad to move the host's mouse cursor */
242 touchscreen_set_mode(TOUCHSCREEN_BUTTON);
243#endif
244
245#ifndef SIMULATOR
246 usb_acknowledge(SYS_USB_CONNECTED_ACK);
247#endif
248
249#ifdef USB_ENABLE_HID
250 usb_keypad_mode = global_settings.usb_keypad_mode;
251#endif
252
253 FOR_NB_SCREENS(i)
254 {
255 struct screen *screen = &screens[i];
256
257 screen->set_viewport(NULL);
258#ifdef HAVE_LCD_BITMAP
259 usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]);
260#endif
261 }
262
263 while (1)
264 {
265 usb_screens_draw(usb_screen_vps_ar);
266#ifdef SIMULATOR
267 if (button_get_w_tmo(HZ/2))
268 break;
269 send_event(GUI_EVENT_ACTIONUPDATE, NULL);
270#else
271 if (handle_usb_events())
272 break;
273#endif /* SIMULATOR */
274 }
275
276 FOR_NB_SCREENS(i)
277 {
278 const struct viewport* vp = NULL;
279
280#if defined(HAVE_LCD_BITMAP) && defined(USB_ENABLE_HID)
281 vp = &usb_screen_vps_ar[i].title;
282#elif !defined(HAVE_LCD_BITMAP)
283 vp = &usb_screen_vps_ar[i].parent;
284#endif
285 if (vp)
286 screens[i].scroll_stop(vp);
287 }
288#ifdef USB_ENABLE_HID
289 if (global_settings.usb_keypad_mode != usb_keypad_mode)
290 {
291 global_settings.usb_keypad_mode = usb_keypad_mode;
292 settings_save();
293 }
294#endif
295
296#ifdef HAVE_TOUCHSCREEN
297 touchscreen_set_mode(old_mode);
298#endif
299
300#ifdef HAVE_LCD_CHARCELLS
301 status_set_usb(false);
302#endif /* HAVE_LCD_CHARCELLS */
303 FOR_NB_SCREENS(i)
304 {
305 screens[i].backlight_on();
306 }
307 viewportmanager_set_statusbar(old_bars);
308 send_event(GUI_EVENT_REFRESH, NULL);
309
310}
311#endif /* !defined(USB_NONE) */
312
diff --git a/apps/gui/usb_screen.h b/apps/gui/usb_screen.h
new file mode 100644
index 0000000000..d601546520
--- /dev/null
+++ b/apps/gui/usb_screen.h
@@ -0,0 +1,27 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: screens.h 21312 2009-06-16 17:04:47Z mcuelenaere $
9 *
10 * Copyright (C) 2002 Björn Stenberg
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#ifndef _USB_SCREEN_H_
22#define _USB_SCREEN_H_
23
24extern void gui_usb_screen_run(void);
25
26#endif
27
diff --git a/apps/main.c b/apps/main.c
index 8b6c1bbfbe..52b161b500 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -56,7 +56,7 @@
56#include "playlist.h" 56#include "playlist.h"
57#include "buffer.h" 57#include "buffer.h"
58#include "rolo.h" 58#include "rolo.h"
59#include "screens.h" 59#include "usb_screen.h"
60#include "power.h" 60#include "power.h"
61#include "talk.h" 61#include "talk.h"
62#include "plugin.h" 62#include "plugin.h"
@@ -492,7 +492,7 @@ static void init(void)
492 (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED)) 492 (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED))
493#endif 493#endif
494 { 494 {
495 usb_screen(); 495 gui_usb_screen_run();
496 mounted = true; /* mounting done @ end of USB mode */ 496 mounted = true; /* mounting done @ end of USB mode */
497 } 497 }
498#ifdef HAVE_USB_POWER 498#ifdef HAVE_USB_POWER
@@ -517,7 +517,7 @@ static void init(void)
517 lcd_update(); 517 lcd_update();
518 518
519 while(button_get(true) != SYS_USB_CONNECTED) {}; 519 while(button_get(true) != SYS_USB_CONNECTED) {};
520 usb_screen(); 520 gui_usb_screen_run();
521 system_reboot(); 521 system_reboot();
522 } 522 }
523 } 523 }
diff --git a/apps/misc.c b/apps/misc.c
index 4400de1b92..198aff3014 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -36,7 +36,7 @@
36#include "errno.h" 36#include "errno.h"
37#include "system.h" 37#include "system.h"
38#include "timefuncs.h" 38#include "timefuncs.h"
39#include "screens.h" 39#include "usb_screen.h"
40#include "talk.h" 40#include "talk.h"
41#include "mpeg.h" 41#include "mpeg.h"
42#include "audio.h" 42#include "audio.h"
@@ -580,7 +580,7 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
580 check_bootfile(false); /* gets initial size */ 580 check_bootfile(false); /* gets initial size */
581#endif 581#endif
582#endif 582#endif
583 usb_screen(); 583 gui_usb_screen_run();
584#ifdef BOOTFILE 584#ifdef BOOTFILE
585#if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF) 585#if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF)
586 check_bootfile(true); 586 check_bootfile(true);
diff --git a/apps/screens.c b/apps/screens.c
index bfc506d6b2..bc416f1baa 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -25,21 +25,11 @@
25#include "backlight.h" 25#include "backlight.h"
26#include "action.h" 26#include "action.h"
27#include "lcd.h" 27#include "lcd.h"
28#ifdef HAVE_REMOTE_LCD
29#include "lcd-remote.h"
30#endif
31#include "lang.h" 28#include "lang.h"
32#include "icons.h" 29#include "icons.h"
33#include "font.h" 30#include "font.h"
34#include "audio.h" 31#include "audio.h"
35#include "mp3_playback.h" 32#include "mp3_playback.h"
36#include "usb.h"
37#if defined(HAVE_USBSTACK)
38#include "usb_core.h"
39#ifdef USB_ENABLE_HID
40#include "usb_keymaps.h"
41#endif
42#endif
43#include "settings.h" 33#include "settings.h"
44#include "status.h" 34#include "status.h"
45#include "playlist.h" 35#include "playlist.h"
@@ -63,17 +53,8 @@
63#include "yesno.h" 53#include "yesno.h"
64#include "backdrop.h" 54#include "backdrop.h"
65#include "viewport.h" 55#include "viewport.h"
66#include "appevents.h"
67#include "language.h" 56#include "language.h"
68 57
69#ifdef HAVE_LCD_BITMAP
70#include "bitmaps/usblogo.h"
71#endif
72
73#ifdef HAVE_REMOTE_LCD
74#include "bitmaps/remote_usblogo.h"
75#endif
76
77#if (CONFIG_STORAGE & STORAGE_MMC) 58#if (CONFIG_STORAGE & STORAGE_MMC)
78#include "ata_mmc.h" 59#include "ata_mmc.h"
79#endif 60#endif
@@ -93,274 +74,6 @@ static int clamp_value_wrap(int value, int max, int min)
93} 74}
94#endif 75#endif
95 76
96#ifndef SIMULATOR
97
98#ifdef USB_ENABLE_HID
99int usb_keypad_mode;
100#endif
101
102static int handle_usb_events(void)
103{
104#if (CONFIG_STORAGE & STORAGE_MMC)
105 int next_update=0;
106#endif /* STORAGE_MMC */
107
108 /* Don't return until we get SYS_USB_DISCONNECTED or SYS_TIMEOUT */
109 while(1)
110 {
111 int button;
112#ifdef USB_ENABLE_HID
113 if (usb_core_driver_enabled(USB_DRIVER_HID))
114 {
115 button = get_hid_usb_action();
116
117 /* On mode change, we need to refresh the screen */
118 if (button == ACTION_USB_HID_MODE_SWITCH_NEXT ||
119 button == ACTION_USB_HID_MODE_SWITCH_PREV)
120 {
121 break;
122 }
123 }
124 else
125#endif
126 {
127 button = button_get_w_tmo(HZ/2);
128 /* hid emits the event in get_action */
129 send_event(GUI_EVENT_ACTIONUPDATE, NULL);
130 }
131
132 switch(button)
133 {
134 case SYS_USB_DISCONNECTED:
135 usb_acknowledge(SYS_USB_DISCONNECTED_ACK);
136 return 1;
137 case SYS_TIMEOUT:
138 break;
139 }
140
141#if (CONFIG_STORAGE & STORAGE_MMC) /* USB-MMC bridge can report activity */
142 if(TIME_AFTER(current_tick,next_update))
143 {
144 if(usb_inserted()) {
145 led(mmc_usb_active(HZ));
146 }
147 next_update=current_tick+HZ/2;
148 }
149#endif /* STORAGE_MMC */
150 }
151
152 return 0;
153}
154#endif
155
156#ifdef USB_NONE
157void usb_screen(void)
158{
159}
160#else
161#define MODE_NAME_LEN 32
162
163struct usb_screen_vps_t
164{
165 struct viewport parent;
166#ifdef HAVE_LCD_BITMAP
167 struct viewport logo;
168#ifdef USB_ENABLE_HID
169 struct viewport title;
170#endif
171#endif
172};
173
174#ifdef HAVE_LCD_BITMAP
175static void usb_screen_fix_viewports(struct screen *screen,
176 struct usb_screen_vps_t *usb_screen_vps)
177{
178 int logo_width, logo_height;
179 struct viewport *parent = &usb_screen_vps->parent;
180 struct viewport *logo = &usb_screen_vps->logo;
181
182#ifdef HAVE_REMOTE_LCD
183 if (screen->screen_type == SCREEN_REMOTE)
184 {
185 logo_width = BMPWIDTH_remote_usblogo;
186 logo_height = BMPHEIGHT_remote_usblogo;
187 }
188 else
189#endif
190 {
191 logo_width = BMPWIDTH_usblogo;
192 logo_height = BMPHEIGHT_usblogo;
193 }
194
195 viewport_set_defaults(parent, screen->screen_type);
196 if (parent->width < logo_width || parent->height < logo_height)
197 viewport_set_fullscreen(parent, screen->screen_type);
198
199 *logo = *parent;
200 logo->x = parent->width - logo_width;
201 logo->y = (parent->height - logo_height) / 2;
202 logo->width = logo_width;
203 logo->height = logo_height;
204
205#ifdef USB_ENABLE_HID
206 struct viewport *title = &usb_screen_vps->title;
207 int char_height, nb_lines;
208
209 /* nb_lines only returns the number of fully visible lines, small screens
210 or really large fonts could cause problems with the calculation below.
211 */
212 nb_lines = viewport_get_nb_lines(parent);
213 if (nb_lines == 0)
214 nb_lines++;
215
216 char_height = parent->height/nb_lines;
217
218 *title = *parent;
219 title->y = logo->y + logo->height + char_height;
220#endif
221}
222#endif
223
224static void usb_screens_draw(struct usb_screen_vps_t *usb_screen_vps_ar)
225{
226 int i;
227 int usb_bars = VP_SB_ALLSCREENS; /* force statusbars */
228
229 FOR_NB_SCREENS(i)
230 {
231 struct screen *screen = &screens[i];
232
233 struct usb_screen_vps_t *usb_screen_vps = &usb_screen_vps_ar[i];
234 struct viewport *parent = &usb_screen_vps->parent;
235#ifdef HAVE_LCD_BITMAP
236 struct viewport *logo = &usb_screen_vps->logo;
237#endif
238
239 screen->set_viewport(parent);
240 screen->backdrop_show(BACKDROP_MAIN);
241 screen->backlight_on();
242 screen->clear_viewport();
243
244#ifdef HAVE_LCD_BITMAP
245 screen->set_viewport(logo);
246#ifdef HAVE_REMOTE_LCD
247 if (i == SCREEN_REMOTE)
248 {
249 screen->bitmap(remote_usblogo, 0, 0, logo->width,
250 logo->height);
251 }
252 else
253#endif
254 {
255 screen->transparent_bitmap(usblogo, 0, 0, logo->width,
256 logo->height);
257#ifdef USB_ENABLE_HID
258 screen->set_viewport(&usb_screen_vps->title);
259 usb_screen_vps->title.flags |= VP_FLAG_ALIGN_CENTER;
260 screen->puts_scroll(0, 0, str(keypad_mode_name_get()));
261#endif /* USB_ENABLE_HID */
262 }
263 screen->set_viewport(parent);
264
265#else /* HAVE_LCD_BITMAP */
266 screen->double_height(false);
267 screen->puts_scroll(0, 0, "[USB Mode]");
268 status_set_param(false);
269 status_set_audio(false);
270 status_set_usb(true);
271#endif /* HAVE_LCD_BITMAP */
272
273 screen->update_viewport();
274 screen->set_viewport(NULL);
275
276 /* force statusbar by ignoring the setting */
277 usb_bars |= VP_SB_IGNORE_SETTING(i);
278 }
279
280 viewportmanager_set_statusbar(usb_bars);
281}
282
283void usb_screen(void)
284{
285 int i;
286 int old_bars = viewportmanager_get_statusbar();
287 struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS];
288#if defined HAVE_TOUCHSCREEN
289 enum touchscreen_mode old_mode = touchscreen_get_mode();
290
291 /* TODO: Paint buttons on screens OR switch to point mode and use
292 * touchscreen as a touchpad to move the host's mouse cursor */
293 touchscreen_set_mode(TOUCHSCREEN_BUTTON);
294#endif
295
296#ifndef SIMULATOR
297 usb_acknowledge(SYS_USB_CONNECTED_ACK);
298#endif
299
300#ifdef USB_ENABLE_HID
301 usb_keypad_mode = global_settings.usb_keypad_mode;
302#endif
303
304 FOR_NB_SCREENS(i)
305 {
306 struct screen *screen = &screens[i];
307
308 screen->set_viewport(NULL);
309#ifdef HAVE_LCD_BITMAP
310 usb_screen_fix_viewports(screen, &usb_screen_vps_ar[i]);
311#endif
312 }
313
314 while (1)
315 {
316 usb_screens_draw(usb_screen_vps_ar);
317#ifdef SIMULATOR
318 if (button_get_w_tmo(HZ/2))
319 break;
320 send_event(GUI_EVENT_ACTIONUPDATE, NULL);
321#else
322 if (handle_usb_events())
323 break;
324#endif /* SIMULATOR */
325 }
326
327 FOR_NB_SCREENS(i)
328 {
329 const struct viewport* vp = NULL;
330
331#if defined(HAVE_LCD_BITMAP) && defined(USB_ENABLE_HID)
332 vp = &usb_screen_vps_ar[i].title;
333#elif !defined(HAVE_LCD_BITMAP)
334 vp = &usb_screen_vps_ar[i].parent;
335#endif
336 if (vp)
337 screens[i].scroll_stop(vp);
338 }
339#ifdef USB_ENABLE_HID
340 if (global_settings.usb_keypad_mode != usb_keypad_mode)
341 {
342 global_settings.usb_keypad_mode = usb_keypad_mode;
343 settings_save();
344 }
345#endif
346
347#ifdef HAVE_TOUCHSCREEN
348 touchscreen_set_mode(old_mode);
349#endif
350
351#ifdef HAVE_LCD_CHARCELLS
352 status_set_usb(false);
353#endif /* HAVE_LCD_CHARCELLS */
354 FOR_NB_SCREENS(i)
355 {
356 screens[i].backlight_on();
357 }
358 viewportmanager_set_statusbar(old_bars);
359 send_event(GUI_EVENT_REFRESH, NULL);
360
361}
362#endif /* !defined(USB_NONE) */
363
364#if (CONFIG_STORAGE & STORAGE_MMC) 77#if (CONFIG_STORAGE & STORAGE_MMC)
365int mmc_remove_request(void) 78int mmc_remove_request(void)
366{ 79{
diff --git a/apps/screens.h b/apps/screens.h
index 56e2f36b25..7f2bc6ed0e 100644
--- a/apps/screens.h
+++ b/apps/screens.h
@@ -26,7 +26,6 @@
26 26
27struct screen; 27struct screen;
28 28
29void usb_screen(void);
30#if CONFIG_CHARGING && !defined(HAVE_POWEROFF_WHILE_CHARGING) && defined(CPU_SH) 29#if CONFIG_CHARGING && !defined(HAVE_POWEROFF_WHILE_CHARGING) && defined(CPU_SH)
31int charging_screen(void); 30int charging_screen(void);
32#endif 31#endif