From e62e50c66360669d5e64d61f615d9b4ee24ca59f Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 9 Mar 2013 10:59:53 +0000 Subject: Add dummy handler for SCSI_CMD_START_STOP_UNIT in all project SCSI handling routines, to prevent ejection errors on *nix systems due to an unknown SCSI command. --- Bootloaders/Incomplete/MassStorage/Lib/SCSI.c | 1 + Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c | 1 + Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c | 1 + Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c | 1 + Demos/Device/LowLevel/MassStorage/Lib/SCSI.c | 1 + LUFA/DoxygenPages/ChangeLog.txt | 10 ++++++++++ LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h | 3 +++ Projects/TempDataLogger/Lib/SCSI.c | 1 + Projects/Webserver/Lib/SCSI.c | 1 + 9 files changed, 20 insertions(+) diff --git a/Bootloaders/Incomplete/MassStorage/Lib/SCSI.c b/Bootloaders/Incomplete/MassStorage/Lib/SCSI.c index 7ab149ccd..a79a4688a 100644 --- a/Bootloaders/Incomplete/MassStorage/Lib/SCSI.c +++ b/Bootloaders/Incomplete/MassStorage/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c index 078f6fe0c..b01366d19 100644 --- a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c +++ b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c index 078f6fe0c..b01366d19 100644 --- a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c +++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c b/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c index 078f6fe0c..b01366d19 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c +++ b/Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.c b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.c index 01f378b26..f9e61a5fa 100644 --- a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.c +++ b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.c @@ -114,6 +114,7 @@ bool SCSI_DecodeSCSICommand(void) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 1f84a3f5e..1b22e1b43 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -10,6 +10,16 @@ * New: * - Library Applications: * - Added new Printer class bootloader + * - Added new Mass Storage class bootloader + * + * Changed: + * - Core: + * - Updated the BUILD build system module to produce binary BIN files in addition to Intel HEX files + * + * Fixed: + * - Library Applications: + * - Added handler for SCSI_CMD_START_STOP_UNIT in demos using the Mass Storage class, to prevent ejection errors on *nix systems due to an + * unknown SCSI command * * \section Sec_ChangeLog130303 Version 130303 * New: diff --git a/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h b/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h index 9008b3309..10feb567a 100644 --- a/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h +++ b/LUFA/Drivers/USB/Class/Common/MassStorageClassCommon.h @@ -90,6 +90,9 @@ /** SCSI Command Code for a READ CAPACITY (10) command. */ #define SCSI_CMD_READ_CAPACITY_10 0x25 + /** SCSI Command Code for a START STOP UNIT command. */ + #define SCSI_CMD_START_STOP_UNIT 0x1B + /** SCSI Command Code for a SEND DIAGNOSTIC command. */ #define SCSI_CMD_SEND_DIAGNOSTIC 0x1D diff --git a/Projects/TempDataLogger/Lib/SCSI.c b/Projects/TempDataLogger/Lib/SCSI.c index 7e4193b5a..c2d0d6f11 100644 --- a/Projects/TempDataLogger/Lib/SCSI.c +++ b/Projects/TempDataLogger/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: diff --git a/Projects/Webserver/Lib/SCSI.c b/Projects/Webserver/Lib/SCSI.c index 7e4193b5a..c2d0d6f11 100644 --- a/Projects/Webserver/Lib/SCSI.c +++ b/Projects/Webserver/Lib/SCSI.c @@ -116,6 +116,7 @@ bool SCSI_DecodeSCSICommand(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) case SCSI_CMD_MODE_SENSE_6: CommandSuccess = SCSI_Command_ModeSense_6(MSInterfaceInfo); break; + case SCSI_CMD_START_STOP_UNIT: case SCSI_CMD_TEST_UNIT_READY: case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: case SCSI_CMD_VERIFY_10: -- cgit v1.2.3