diff options
Diffstat (limited to 'firmware/usbstack')
-rw-r--r-- | firmware/usbstack/usb_storage.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index 6d407cccc5..8203ad4177 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c | |||
@@ -36,12 +36,6 @@ | |||
36 | /* For sector filter macro definitions */ | 36 | /* For sector filter macro definitions */ |
37 | #include "usb-target.h" | 37 | #include "usb-target.h" |
38 | 38 | ||
39 | /* Enable the following define to export only the SD card slot. This | ||
40 | * is useful for USBCV MSC tests, as those are destructive. | ||
41 | * This won't work right if the device doesn't have a card slot. | ||
42 | */ | ||
43 | //#define HIDE_FIRST_DRIVE | ||
44 | |||
45 | #ifdef USB_USE_RAMDISK | 39 | #ifdef USB_USE_RAMDISK |
46 | #define RAMDISK_SIZE 2048 | 40 | #define RAMDISK_SIZE 2048 |
47 | #endif | 41 | #endif |
@@ -314,6 +308,10 @@ static bool locked[NUM_DRIVES]; | |||
314 | static int usb_interface; | 308 | static int usb_interface; |
315 | static int ep_in, ep_out; | 309 | static int ep_in, ep_out; |
316 | 310 | ||
311 | #if defined(HAVE_MULTIDRIVE) | ||
312 | static bool skip_first = 0; | ||
313 | #endif | ||
314 | |||
317 | #ifdef USB_USE_RAMDISK | 315 | #ifdef USB_USE_RAMDISK |
318 | static unsigned char* ramdisk_buffer; | 316 | static unsigned char* ramdisk_buffer; |
319 | #endif | 317 | #endif |
@@ -400,6 +398,13 @@ void usb_storage_notify_hotswap(int volume,bool inserted) | |||
400 | } | 398 | } |
401 | #endif | 399 | #endif |
402 | 400 | ||
401 | #ifdef HAVE_MULTIDRIVE | ||
402 | void usb_set_skip_first_drive(bool skip) | ||
403 | { | ||
404 | skip_first = skip; | ||
405 | } | ||
406 | #endif | ||
407 | |||
403 | /* called by usb_core_init() */ | 408 | /* called by usb_core_init() */ |
404 | void usb_storage_init(void) | 409 | void usb_storage_init(void) |
405 | { | 410 | { |
@@ -690,8 +695,8 @@ bool usb_storage_control_request(struct usb_ctrlrequest* req, unsigned char* des | |||
690 | switch (req->bRequest) { | 695 | switch (req->bRequest) { |
691 | case USB_BULK_GET_MAX_LUN: { | 696 | case USB_BULK_GET_MAX_LUN: { |
692 | *tb.max_lun = storage_num_drives() - 1; | 697 | *tb.max_lun = storage_num_drives() - 1; |
693 | #ifdef HIDE_FIRST_DRIVE | 698 | #if defined(HAVE_MULTIDRIVE) |
694 | *tb.max_lun --; | 699 | if(skip_first) (*tb.max_lun) --; |
695 | #endif | 700 | #endif |
696 | logf("ums: getmaxlun"); | 701 | logf("ums: getmaxlun"); |
697 | usb_drv_recv(EP_CONTROL, NULL, 0); /* ack */ | 702 | usb_drv_recv(EP_CONTROL, NULL, 0); /* ack */ |
@@ -777,8 +782,8 @@ static void handle_scsi(struct command_block_wrapper* cbw) | |||
777 | * bogus data */ | 782 | * bogus data */ |
778 | cbw->signature=0; | 783 | cbw->signature=0; |
779 | 784 | ||
780 | #ifdef HIDE_FIRST_DRIVE | 785 | #if defined(HAVE_MULTIDRIVE) |
781 | lun++; | 786 | if(skip_first) lun++; |
782 | #endif | 787 | #endif |
783 | 788 | ||
784 | storage_get_info(lun,&info); | 789 | storage_get_info(lun,&info); |