| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Typedefs | Enumerations
Common Class Definitions
Mass Storage Class Driver

## Detailed Description

# Module Description

Constants, Types and Enum definitions that are common to both Device and Host modes for the USB Mass Storage Class.

## Macros
#define | MS_CBW_SIGNATURE 0x43425355UL
#define | MS_CSW_SIGNATURE 0x53425355UL
#define | MS_COMMAND_DIR_DATA_OUT (0 << 7)
#define | MS_COMMAND_DIR_DATA_IN (1 << 7)

## Typedefs
struct {
uint32_t Signature
uint32_t Tag
uint32_t DataTransferLength
uint8_t Flags
uint8_t LUN
uint8_t SCSICommandLength
uint8_t SCSICommandData [16]
} | MS_CommandBlockWrapper_t
struct {
uint32_t Signature
uint32_t Tag
uint32_t DataTransferResidue
uint8_t Status
} | MS_CommandStatusWrapper_t
struct {
uint8_t ResponseCode
uint8_t SegmentNumber
unsigned SenseKey: 4
unsigned Reserved: 1
unsigned ILI: 1
unsigned EOM: 1
unsigned FileMark: 1
uint8_t Information [4]
uint8_t AdditionalLength
uint8_t CmdSpecificInformation [4]
uint8_t AdditionalSenseCode
uint8_t AdditionalSenseQualifier
uint8_t FieldReplaceableUnitCode
uint8_t SenseKeySpecific [3]
} | SCSI_Request_Sense_Response_t
struct {
unsigned DeviceType: 5
unsigned PeripheralQualifier: 3
unsigned Reserved: 7
unsigned Removable: 1
uint8_t Version
unsigned ResponseDataFormat: 4
unsigned Reserved2: 1
unsigned NormACA: 1
unsigned TrmTsk: 1
unsigned AERC: 1
uint8_t AdditionalLength
uint8_t Reserved3 [2]
unsigned SoftReset: 1
unsigned CmdQue: 1
unsigned Reserved4: 1
unsigned Linked: 1
unsigned Sync: 1
unsigned WideBus16Bit: 1
unsigned WideBus32Bit: 1
unsigned RelAddr: 1
uint8_t VendorID [8]
uint8_t ProductID [16]
uint8_t RevisionID [4]
} | SCSI_Inquiry_Response_t

## Enumerations
enum | MS_Descriptor_ClassSubclassProtocol_t { MS_CSCP_MassStorageClass = 0x08, MS_CSCP_SCSITransparentSubclass = 0x06, MS_CSCP_BulkOnlyTransportProtocol = 0x50 }
enum | MS_ClassRequests_t { MS_REQ_GetMaxLUN = 0xFE, MS_REQ_MassStorageReset = 0xFF }
enum | MS_CommandStatusCodes_t { MS_SCSI_COMMAND_Pass = 0, MS_SCSI_COMMAND_Fail = 1, MS_SCSI_COMMAND_PhaseError = 2 }

## Macro Definition Documentation

#define MS_CBW_SIGNATURE 0x43425355UL

Magic signature for a Command Block Wrapper used in the Mass Storage Bulk-Only transport protocol.

Definition at line 61 of file MassStorageClassCommon.h.

#define MS_COMMAND_DIR_DATA_IN (1 << 7)

Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from device-to-host.

Definition at line 70 of file MassStorageClassCommon.h.

#define MS_COMMAND_DIR_DATA_OUT (0 << 7)

Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from host-to-device.

Definition at line 67 of file MassStorageClassCommon.h.

#define MS_CSW_SIGNATURE 0x53425355UL

Magic signature for a Command Status Wrapper used in the Mass Storage Bulk-Only transport protocol.

Definition at line 64 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_FORMAT_ERROR 0x31

SCSI Additional Sense Code to indicate an error whilst formatting the device medium.

Definition at line 181 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_INVALID_COMMAND 0x20

SCSI Additional Sense Code to indicate an invalid command was issued.

Definition at line 184 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_INVALID_FIELD_IN_CDB 0x24

SCSI Additional Sense Code to indicate an invalid field was encountered while processing the issued command.

Definition at line 170 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x21

SCSI Additional Sense Code to indicate a write to a block out outside of the medium's range was issued.

Definition at line 187 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY 0x04

SCSI Additional Sense Code to indicate that the logical unit (LUN) addressed is not ready.

Definition at line 167 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_MEDIUM_NOT_PRESENT 0x3A

SCSI Additional Sense Code to indicate that no removable medium is inserted into the device.

Definition at line 190 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION 0x00

SCSI Additional Sense Code to indicate no additional sense information is available.

Definition at line 164 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE 0x28

SCSI Additional Sense Code to indicate that a medium that was previously indicated as not ready has now become ready for use.

Definition at line 175 of file MassStorageClassCommon.h.

#define SCSI_ASENSE_WRITE_PROTECTED 0x27

SCSI Additional Sense Code to indicate that an attempt to write to a protected area was made.

Definition at line 178 of file MassStorageClassCommon.h.

#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED 0x01

SCSI Additional Sense Qualifier Code to indicate that a medium format command failed to complete.

Definition at line 199 of file MassStorageClassCommon.h.

#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED 0x02

SCSI Additional Sense Qualifier Code to indicate that an initializing command must be issued before the issued command can be executed.

Definition at line 204 of file MassStorageClassCommon.h.

#define SCSI_ASENSEQ_NO_QUALIFIER 0x00

SCSI Additional Sense Qualifier Code to indicate no additional sense qualifier information is available.

Definition at line 196 of file MassStorageClassCommon.h.

#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS 0x07

SCSI Additional Sense Qualifier Code to indicate that an operation is currently in progress.

Definition at line 207 of file MassStorageClassCommon.h.

#define SCSI_CMD_INQUIRY 0x12

SCSI Command Code for an INQUIRY command.

Definition at line 75 of file MassStorageClassCommon.h.

#define SCSI_CMD_MODE_SENSE_10 0x5A

SCSI Command Code for a MODE SENSE (10) command.

Definition at line 111 of file MassStorageClassCommon.h.

#define SCSI_CMD_MODE_SENSE_6 0x1A

SCSI Command Code for a MODE SENSE (6) command.

Definition at line 108 of file MassStorageClassCommon.h.

#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1E

SCSI Command Code for a PREVENT ALLOW MEDIUM REMOVAL command.

Definition at line 90 of file MassStorageClassCommon.h.

#define SCSI_CMD_READ_10 0x28

SCSI Command Code for a READ (10) command.

Definition at line 96 of file MassStorageClassCommon.h.

#define SCSI_CMD_READ_6 0x08

SCSI Command Code for a READ (6) command.

Definition at line 102 of file MassStorageClassCommon.h.

#define SCSI_CMD_READ_CAPACITY_10 0x25

SCSI Command Code for a READ CAPACITY (10) command.

Definition at line 84 of file MassStorageClassCommon.h.

#define SCSI_CMD_REQUEST_SENSE 0x03

SCSI Command Code for a REQUEST SENSE command.

Definition at line 78 of file MassStorageClassCommon.h.

#define SCSI_CMD_SEND_DIAGNOSTIC 0x1D

SCSI Command Code for a SEND DIAGNOSTIC command.

Definition at line 87 of file MassStorageClassCommon.h.

#define SCSI_CMD_TEST_UNIT_READY 0x00

SCSI Command Code for a TEST UNIT READY command.

Definition at line 81 of file MassStorageClassCommon.h.

#define SCSI_CMD_VERIFY_10 0x2F

SCSI Command Code for a VERIFY (10) command.

Definition at line 105 of file MassStorageClassCommon.h.

#define SCSI_CMD_WRITE_10 0x2A

SCSI Command Code for a WRITE (10) command.

Definition at line 93 of file MassStorageClassCommon.h.

#define SCSI_CMD_WRITE_6 0x0A

SCSI Command Code for a WRITE (6) command.

Definition at line 99 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_ABORTED_COMMAND 0x0B

SCSI Sense Code to indicate that the device has aborted the issued command.

Definition at line 152 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_BLANK_CHECK 0x08

SCSI Sense Code to indicate an error while trying to write to a write-once medium.

Definition at line 143 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_COPY_ABORTED 0x0A

SCSI Sense Code to indicate that an EXTENDED COPY command has aborted due to an error.

Definition at line 149 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_DATA_PROTECT 0x07

SCSI Sense Code to indicate that a write attempt on a protected block has been made.

Definition at line 140 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_GOOD 0x00

SCSI Sense Code to indicate no error has occurred.

Definition at line 117 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_HARDWARE_ERROR 0x04

SCSI Sense Code to indicate a hardware error has occurred.

Definition at line 129 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_ILLEGAL_REQUEST 0x05

SCSI Sense Code to indicate that an illegal request has been issued.

Definition at line 132 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_MEDIUM_ERROR 0x03

SCSI Sense Code to indicate an error whilst accessing the medium.

Definition at line 126 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_MISCOMPARE 0x0E

SCSI Sense Code to indicate that the source data did not match the data read from the medium.

Definition at line 158 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_NOT_READY 0x02

SCSI Sense Code to indicate that the device is not ready for a new command.

Definition at line 123 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_RECOVERED_ERROR 0x01

SCSI Sense Code to indicate that the device has recovered from an error.

Definition at line 120 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_UNIT_ATTENTION 0x06

SCSI Sense Code to indicate that the unit requires attention from the host to indicate a reset event, medium removal or other condition.

Definition at line 137 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x09

SCSI Sense Code to indicate a vendor specific error has occurred.

Definition at line 146 of file MassStorageClassCommon.h.

#define SCSI_SENSE_KEY_VOLUME_OVERFLOW 0x0D

SCSI Sense Code to indicate an attempt to write past the end of a partition has been made.

Definition at line 155 of file MassStorageClassCommon.h.

## Typedef Documentation

typedef { ... } MS_CommandBlockWrapper_t

typedef { ... } MS_CommandStatusWrapper_t

typedef { ... } SCSI_Inquiry_Response_t

typedef { ... } SCSI_Request_Sense_Response_t

## Enumeration Type Documentation

enum MS_ClassRequests_t

Enum for the Mass Storage class specific control requests that can be issued by the USB bus host.

Enumerator:

  MS_REQ_GetMaxLUN | Mass Storage class-specific request to retrieve the total number of Logical Units (drives) in the SCSI device.
  MS_REQ_MassStorageReset | Mass Storage class-specific request to reset the Mass Storage interface, ready for the next command.

Definition at line 229 of file MassStorageClassCommon.h.

enum MS_CommandStatusCodes_t

Enum for the possible command status wrapper return status codes.

Enumerator:

  MS_SCSI_COMMAND_Pass | Command completed with no error
  MS_SCSI_COMMAND_Fail | Command failed to complete - host may check the exact error via a SCSI REQUEST SENSE command.
  MS_SCSI_COMMAND_PhaseError | Command failed due to being invalid in the current phase.

Definition at line 240 of file MassStorageClassCommon.h.

enum MS_Descriptor_ClassSubclassProtocol_t

Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Mass Storage device class.

Enumerator:

  MS_CSCP_MassStorageClass | Descriptor Class value indicating that the device or interface belongs to the Mass Storage class.
  MS_CSCP_SCSITransparentSubclass | Descriptor Subclass value indicating that the device or interface belongs to the SCSI Transparent Command Set subclass of the Mass storage class.
  MS_CSCP_BulkOnlyTransportProtocol | Descriptor Protocol value indicating that the device or interface belongs to the Bulk Only Transport protocol of the Mass Storage class.

Definition at line 214 of file MassStorageClassCommon.h.