summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/lang/english.lang70
-rw-r--r--apps/main.c9
-rw-r--r--apps/menus/settings_menu.c89
-rw-r--r--apps/settings.c10
-rw-r--r--apps/settings.h4
-rw-r--r--apps/settings_list.c11
6 files changed, 189 insertions, 4 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index adc3041119..2503fa500a 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -11156,3 +11156,73 @@
11156 recording: "" 11156 recording: ""
11157 </voice> 11157 </voice>
11158</phrase> 11158</phrase>
11159<phrase>
11160 id: LANG_USBSTACK
11161 desc: in settings_menu
11162 user:
11163 <source>
11164 *: "USB Stack"
11165 </source>
11166 <dest>
11167 *: "USB Stack"
11168 </dest>
11169 <voice>
11170 *: "USB Stack"
11171 </voice>
11172</phrase>
11173<phrase>
11174 id: LANG_USBSTACK_MODE
11175 desc: in usbstack settings
11176 user:
11177 <source>
11178 *: "USB Stack Mode"
11179 </source>
11180 <dest>
11181 *: "USB Stack Mode"
11182 </dest>
11183 <voice>
11184 *: "USB Stack Mode"
11185 </voice>
11186</phrase>
11187<phrase>
11188 id: LANG_USBSTACK_DEVICE
11189 desc: in usbstack settings
11190 user:
11191 <source>
11192 *: "Device"
11193 </source>
11194 <dest>
11195 *: "Device"
11196 </dest>
11197 <voice>
11198 *: "Device"
11199 </voice>
11200</phrase>
11201<phrase>
11202 id: LANG_USBSTACK_HOST
11203 desc: in usbstack settings
11204 user:
11205 <source>
11206 *: "Host"
11207 </source>
11208 <dest>
11209 *: "Host"
11210 </dest>
11211 <voice>
11212 *: "Host"
11213 </voice>
11214</phrase>
11215<phrase>
11216 id: LANG_USBSTACK_DEVICE_DRIVER
11217 desc: in usbstack settings
11218 user:
11219 <source>
11220 *: "Device Driver"
11221 </source>
11222 <dest>
11223 *: "Device Driver"
11224 </dest>
11225 <voice>
11226 *: "Device Driver"
11227 </voice>
11228</phrase> \ No newline at end of file
diff --git a/apps/main.c b/apps/main.c
index df250843e5..54787d6e9e 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -99,6 +99,10 @@
99#include "lcd-remote.h" 99#include "lcd-remote.h"
100#endif 100#endif
101 101
102#ifdef HAVE_USBSTACK
103#include "usbstack.h"
104#endif
105
102#if CONFIG_USBOTG == USBOTG_ISP1362 106#if CONFIG_USBOTG == USBOTG_ISP1362
103#include "isp1362.h" 107#include "isp1362.h"
104#endif 108#endif
@@ -373,7 +377,10 @@ static void init(void)
373#endif 377#endif
374 378
375 adc_init(); 379 adc_init();
376 380
381#ifdef HAVE_USBSTACK
382 usb_stack_init();
383#endif
377 usb_init(); 384 usb_init();
378#if CONFIG_USBOTG == USBOTG_ISP1362 385#if CONFIG_USBOTG == USBOTG_ISP1362
379 isp1362_init(); 386 isp1362_init();
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 039949835b..5c97ac21db 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -42,6 +42,13 @@
42#include "radio.h" 42#include "radio.h"
43#endif 43#endif
44 44
45#ifdef HAVE_USBSTACK
46#include "list.h"
47#include "usbstack.h"
48#include "statusbar.h"
49#include "misc.h"
50#endif
51
45/***********************************/ 52/***********************************/
46/* TAGCACHE MENU */ 53/* TAGCACHE MENU */
47#ifdef HAVE_TAGCACHE 54#ifdef HAVE_TAGCACHE
@@ -442,6 +449,82 @@ MAKE_MENU(voice_settings_menu, ID2P(LANG_VOICE), 0, Icon_Voice,
442/* VOICE MENU */ 449/* VOICE MENU */
443/***********************************/ 450/***********************************/
444 451
452#ifdef HAVE_USBSTACK
453/***********************************/
454/* USB STACK MENU */
455char drivers[16][32];
456static char* usb_menu_getname(int item, void * data, char *buffer)
457{
458 (void)data; (void)buffer;
459 return drivers[item];
460}
461int usbdriver_menuitem(void)
462{
463 struct gui_synclist lists;
464 int action, count = 0;
465 char *s = device_driver_names, *e;
466 do {
467 e = strchr(s, ',');
468 if (e)
469 {
470 strncpy(drivers[count++], s, e-s);
471 s = e+1;
472 }
473 } while (e && count < 16);
474 if (count < 16)
475 strcpy(drivers[count++], s);
476 for (action=0; action<count; action++)
477 {
478 if (!strcmp(drivers[action],
479 global_settings.usb_stack_device_driver))
480 break;
481 }
482
483 gui_synclist_init(&lists, usb_menu_getname, drivers, false, 1);
484 gui_synclist_set_title(&lists, str(LANG_USBSTACK_DEVICE_DRIVER), NOICON);
485 gui_synclist_set_icon_callback(&lists, NULL);
486 gui_synclist_set_nb_items(&lists, count);
487 gui_synclist_select_item(&lists, action==count?0:action);
488 gui_synclist_draw(&lists);
489
490 while(1)
491 {
492 gui_syncstatusbar_draw(&statusbars, true);
493 action = get_action(CONTEXT_STD, HZ/5);
494 if (gui_synclist_do_button(&lists, action, LIST_WRAP_UNLESS_HELD))
495 continue;
496 if (action == ACTION_STD_CANCEL)
497 {
498 // setting was canceled
499 break;
500 }
501 else if (action == ACTION_STD_OK)
502 {
503 // setting was accepted... save
504 strcpy(global_settings.usb_stack_device_driver,
505 drivers[gui_synclist_get_sel_pos(&lists)]);
506 break;
507 }
508 else if (action == ACTION_REDRAW)
509 gui_synclist_draw(&lists);
510 else if(default_event_handler(action) == SYS_USB_CONNECTED)
511 return true;
512 }
513 return false;
514}
515
516MENUITEM_SETTING(usbstack_mode, &global_settings.usb_stack_mode, NULL);
517MENUITEM_FUNCTION(usbdriver, 0, ID2P(LANG_USBSTACK_DEVICE_DRIVER),
518 usbdriver_menuitem, 0, NULL, Icon_NOICON);
519
520MAKE_MENU(usbstack_menu, ID2P(LANG_USBSTACK), 0, Icon_NOICON,
521 &usbstack_mode, &usbdriver);
522/* USB STACK MENU */
523/***********************************/
524#endif
525
526/***********************************/
527
445/***********************************/ 528/***********************************/
446/* SETTINGS MENU */ 529/* SETTINGS MENU */
447static int language_browse(void) 530static int language_browse(void)
@@ -458,6 +541,10 @@ MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0,
458 &tagcache_menu, 541 &tagcache_menu,
459#endif 542#endif
460 &display_menu, &system_menu, 543 &display_menu, &system_menu,
461 &bookmark_settings_menu, &browse_langs, &voice_settings_menu ); 544 &bookmark_settings_menu, &browse_langs, &voice_settings_menu
545#ifdef HAVE_USBSTACK
546 , &usbstack_menu
547#endif
548 );
462/* SETTINGS MENU */ 549/* SETTINGS MENU */
463/***********************************/ 550/***********************************/
diff --git a/apps/settings.c b/apps/settings.c
index cd1c252426..c7c8772975 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -98,6 +98,10 @@ struct system_status global_status;
98#include "lcd-remote.h" 98#include "lcd-remote.h"
99#endif 99#endif
100 100
101#ifdef HAVE_USBSTACK
102#include "usbstack.h"
103#endif
104
101long lasttime = 0; 105long lasttime = 0;
102 106
103/** NVRAM stuff, if the target doesnt have NVRAM it is saved in ROCKBOX_DIR /nvram.bin **/ 107/** NVRAM stuff, if the target doesnt have NVRAM it is saved in ROCKBOX_DIR /nvram.bin **/
@@ -875,11 +879,13 @@ void settings_apply(void)
875 read_color_theme_file(); 879 read_color_theme_file();
876#endif 880#endif
877 881
882#ifdef HAVE_USBSTACK
883 usb_controller_select(global_settings.usb_stack_mode);
884 usb_device_driver_bind(global_settings.usb_stack_device_driver);
885#endif
878} 886}
879 887
880 888
881
882
883/* 889/*
884 * reset all settings to their default value 890 * reset all settings to their default value
885 */ 891 */
diff --git a/apps/settings.h b/apps/settings.h
index 987709ce72..c4cb917c1f 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -748,6 +748,10 @@ struct user_settings
748 int list_accel_start_delay; /* ms before we start increaseing step size */ 748 int list_accel_start_delay; /* ms before we start increaseing step size */
749 int list_accel_wait; /* ms between increases */ 749 int list_accel_wait; /* ms between increases */
750#endif 750#endif
751#ifdef HAVE_USBSTACK
752 int usb_stack_mode; /* device or host */
753 unsigned char usb_stack_device_driver[32]; /* usb device driver to load */
754#endif
751}; 755};
752 756
753/** global variables **/ 757/** global variables **/
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 16c3222b5e..1218dbf3e4 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -47,6 +47,9 @@
47#include "radio.h" 47#include "radio.h"
48#endif 48#endif
49 49
50#ifdef HAVE_USBSTACK
51#include "usbstack.h"
52#endif
50 53
51#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) 54#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT)
52/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h 55/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h
@@ -1260,6 +1263,14 @@ const struct settings_list settings[] = {
1260 3, "list_accel_wait", UNIT_SEC, 1, 10, 1, 1263 3, "list_accel_wait", UNIT_SEC, 1, 10, 1,
1261 scanaccel_formatter, scanaccel_getlang, NULL), 1264 scanaccel_formatter, scanaccel_getlang, NULL),
1262#endif /* HAVE_SCROLLWHEEL */ 1265#endif /* HAVE_SCROLLWHEEL */
1266#ifdef HAVE_USBSTACK
1267 CHOICE_SETTING(0, usb_stack_mode, LANG_USBSTACK_MODE, 0, "usb mode",
1268 "device,host",
1269 usb_controller_select,
1270 2, ID2P(LANG_USBSTACK_DEVICE), ID2P(LANG_USBSTACK_HOST)),
1271 FILENAME_SETTING(0, usb_stack_device_driver, "usb device driver",
1272 "storage", NULL, NULL, 32),
1273#endif /* HAVE_USBSTACK */
1263}; 1274};
1264 1275
1265const int nb_settings = sizeof(settings)/sizeof(*settings); 1276const int nb_settings = sizeof(settings)/sizeof(*settings);