diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lang/english.lang | 70 | ||||
-rw-r--r-- | apps/main.c | 9 | ||||
-rw-r--r-- | apps/menus/settings_menu.c | 89 | ||||
-rw-r--r-- | apps/settings.c | 10 | ||||
-rw-r--r-- | apps/settings.h | 4 | ||||
-rw-r--r-- | apps/settings_list.c | 11 |
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 */ | ||
455 | char drivers[16][32]; | ||
456 | static char* usb_menu_getname(int item, void * data, char *buffer) | ||
457 | { | ||
458 | (void)data; (void)buffer; | ||
459 | return drivers[item]; | ||
460 | } | ||
461 | int 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 | |||
516 | MENUITEM_SETTING(usbstack_mode, &global_settings.usb_stack_mode, NULL); | ||
517 | MENUITEM_FUNCTION(usbdriver, 0, ID2P(LANG_USBSTACK_DEVICE_DRIVER), | ||
518 | usbdriver_menuitem, 0, NULL, Icon_NOICON); | ||
519 | |||
520 | MAKE_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 */ |
447 | static int language_browse(void) | 530 | static 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 | |||
101 | long lasttime = 0; | 105 | long 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 | ||
1265 | const int nb_settings = sizeof(settings)/sizeof(*settings); | 1276 | const int nb_settings = sizeof(settings)/sizeof(*settings); |