implement SCSI_START_STOP command, add debug output for unhandled CBWs origin/fix/USBMSD
authorMichael Moon <triffid.hunter@gmail.com>
Fri, 15 Feb 2013 00:46:45 +0000 (11:46 +1100)
committerMichael Moon <triffid.hunter@gmail.com>
Fri, 15 Feb 2013 00:46:45 +0000 (11:46 +1100)
src/libs/USBDevice/USBMSD/USBMSD.cpp

index 3d1b656..a1b4fe3 100644 (file)
 #define MSC_REQUEST_RESET          0xFF\r
 #define MSC_REQUEST_GET_MAX_LUN    0xFE\r
 \r
+#define STARTSTOP_STOPMOTOR        0x0\r
+#define STARTSTOP_STARTMOTOR       0x1\r
+#define STARTSTOP_EJECT            0x2\r
+#define STARTSTOP_LOAD             0x3\r
+\r
 #define DEFAULT_CONFIGURATION (1)\r
 \r
 // max packet size\r
@@ -563,7 +568,25 @@ void USBMSD::CBWDecode(uint8_t * buf, uint16_t size) {
                             }\r
                         }\r
                         break;\r
+                    case START_STOP_UNIT:\r
+                    {\r
+                        switch (cbw.CB[4] & 0x03)\r
+                        {\r
+                            case STARTSTOP_STOPMOTOR:\r
+                                break;\r
+                            case STARTSTOP_STARTMOTOR:\r
+                                break;\r
+                            case STARTSTOP_EJECT:\r
+                                break;\r
+                            case STARTSTOP_LOAD:\r
+                                break;\r
+                        }\r
+                        csw.Status = CSW_PASSED;\r
+                        sendCSW();\r
+                        break;\r
+                    }\r
                     default:\r
+                        iprintf("MSD: Unhandled SCSI CBW 0x%02X\n", cbw.CB[0]);\r
                         fail();\r
                         break;\r
                 }\r