summaryrefslogtreecommitdiff
path: root/apps/screens.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/screens.c')
-rw-r--r--apps/screens.c287
1 files changed, 0 insertions, 287 deletions
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{