From da91fbbc152ea54426736655bd4056bb9469a98b Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Tue, 5 Nov 2019 11:17:40 -0500 Subject: [PATCH] USBMSD: implement MODE SENSE (10) command --- drivers/USBMSD.h | 1 + drivers/source/usb/USBMSD.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/drivers/USBMSD.h b/drivers/USBMSD.h index 301ce491c5..b6e992ae3b 100644 --- a/drivers/USBMSD.h +++ b/drivers/USBMSD.h @@ -302,6 +302,7 @@ private: bool infoTransfer(void); void memoryRead(void); bool modeSense6(void); + bool modeSense10(void); void testUnitReady(void); bool requestSense(void); void memoryVerify(uint8_t *buf, uint16_t size); diff --git a/drivers/source/usb/USBMSD.cpp b/drivers/source/usb/USBMSD.cpp index 1071eec7d8..ef8819868f 100644 --- a/drivers/source/usb/USBMSD.cpp +++ b/drivers/source/usb/USBMSD.cpp @@ -706,6 +706,15 @@ bool USBMSD::modeSense6(void) return true; } +bool USBMSD::modeSense10(void) +{ + uint8_t sense10[] = { 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + if (!write(sense10, sizeof(sense10))) { + return false; + } + return true; +} + void USBMSD::sendCSW() { _csw.Signature = CSW_Signature; @@ -826,6 +835,9 @@ void USBMSD::CBWDecode(uint8_t *buf, uint16_t size) sendCSW(); _media_removed = true; break; + case MODE_SENSE10: + modeSense10(); + break; default: fail(); break;