From da6f1e1d1e2feb4b7aa4ee6c84e7e2c816d2bead Mon Sep 17 00:00:00 2001 From: Jim Mussared Date: Fri, 1 Sep 2023 16:03:27 +1000 Subject: [PATCH] rp2/msc_disk: Allow configuring the USB MSC inquiry response. This was previously hard-coded to "Micropy" / "Mass Storage" / "1.0". Now allow it to be overridden by a board. Also change "Micropy" to "MicroPy" and "1.0" to "1.00" to match stm32. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared --- ports/rp2/msc_disk.c | 10 +++------- shared/tinyusb/tusb_config.h | 12 ++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ports/rp2/msc_disk.c b/ports/rp2/msc_disk.c index 24bd51cec3..0937eeddf0 100644 --- a/ports/rp2/msc_disk.c +++ b/ports/rp2/msc_disk.c @@ -44,13 +44,9 @@ static bool ejected = false; // Invoked when received SCSI_CMD_INQUIRY // Application fill vendor id, product id and revision with string up to 8, 16, 4 characters respectively void tud_msc_inquiry_cb(uint8_t lun, uint8_t vendor_id[8], uint8_t product_id[16], uint8_t product_rev[4]) { - const char vid[] = "Micropy"; - const char pid[] = "Mass Storage"; - const char rev[] = "1.0"; - - strncpy((char *)vendor_id, vid, 8); - strncpy((char *)product_id, pid, 16); - strncpy((char *)product_rev, rev, 4); + memcpy(vendor_id, MICROPY_HW_USB_MSC_INQUIRY_VENDOR_STRING, MIN(strlen(MICROPY_HW_USB_MSC_INQUIRY_VENDOR_STRING), 8)); + memcpy(product_id, MICROPY_HW_USB_MSC_INQUIRY_PRODUCT_STRING, MIN(strlen(MICROPY_HW_USB_MSC_INQUIRY_PRODUCT_STRING), 16)); + memcpy(product_rev, MICROPY_HW_USB_MSC_INQUIRY_REVISION_STRING, MIN(strlen(MICROPY_HW_USB_MSC_INQUIRY_REVISION_STRING), 4)); } // Invoked when received Test Unit Ready command. diff --git a/shared/tinyusb/tusb_config.h b/shared/tinyusb/tusb_config.h index 96e883fc88..266cb88cc2 100644 --- a/shared/tinyusb/tusb_config.h +++ b/shared/tinyusb/tusb_config.h @@ -43,6 +43,18 @@ #define MICROPY_HW_USB_CDC_INTERFACE_STRING "Board CDC" #endif +#ifndef MICROPY_HW_USB_MSC_INQUIRY_VENDOR_STRING +#define MICROPY_HW_USB_MSC_INQUIRY_VENDOR_STRING "MicroPy" +#endif + +#ifndef MICROPY_HW_USB_MSC_INQUIRY_PRODUCT_STRING +#define MICROPY_HW_USB_MSC_INQUIRY_PRODUCT_STRING "Mass Storage" +#endif + +#ifndef MICROPY_HW_USB_MSC_INQUIRY_REVISION_STRING +#define MICROPY_HW_USB_MSC_INQUIRY_REVISION_STRING "1.00" +#endif + #ifndef CFG_TUSB_RHPORT0_MODE #define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE) #endif