LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Common Class Definitions

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 }
 

SCSI Commands

#define SCSI_CMD_INQUIRY   0x12
 
#define SCSI_CMD_REQUEST_SENSE   0x03
 
#define SCSI_CMD_TEST_UNIT_READY   0x00
 
#define SCSI_CMD_READ_CAPACITY_10   0x25
 
#define SCSI_CMD_SEND_DIAGNOSTIC   0x1D
 
#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL   0x1E
 
#define SCSI_CMD_WRITE_10   0x2A
 
#define SCSI_CMD_READ_10   0x28
 
#define SCSI_CMD_WRITE_6   0x0A
 
#define SCSI_CMD_READ_6   0x08
 
#define SCSI_CMD_VERIFY_10   0x2F
 
#define SCSI_CMD_MODE_SENSE_6   0x1A
 
#define SCSI_CMD_MODE_SENSE_10   0x5A
 

SCSI Sense Key Values

#define SCSI_SENSE_KEY_GOOD   0x00
 
#define SCSI_SENSE_KEY_RECOVERED_ERROR   0x01
 
#define SCSI_SENSE_KEY_NOT_READY   0x02
 
#define SCSI_SENSE_KEY_MEDIUM_ERROR   0x03
 
#define SCSI_SENSE_KEY_HARDWARE_ERROR   0x04
 
#define SCSI_SENSE_KEY_ILLEGAL_REQUEST   0x05
 
#define SCSI_SENSE_KEY_UNIT_ATTENTION   0x06
 
#define SCSI_SENSE_KEY_DATA_PROTECT   0x07
 
#define SCSI_SENSE_KEY_BLANK_CHECK   0x08
 
#define SCSI_SENSE_KEY_VENDOR_SPECIFIC   0x09
 
#define SCSI_SENSE_KEY_COPY_ABORTED   0x0A
 
#define SCSI_SENSE_KEY_ABORTED_COMMAND   0x0B
 
#define SCSI_SENSE_KEY_VOLUME_OVERFLOW   0x0D
 
#define SCSI_SENSE_KEY_MISCOMPARE   0x0E
 

SCSI Additional Sense Codes

#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION   0x00
 
#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY   0x04
 
#define SCSI_ASENSE_INVALID_FIELD_IN_CDB   0x24
 
#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE   0x28
 
#define SCSI_ASENSE_WRITE_PROTECTED   0x27
 
#define SCSI_ASENSE_FORMAT_ERROR   0x31
 
#define SCSI_ASENSE_INVALID_COMMAND   0x20
 
#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE   0x21
 
#define SCSI_ASENSE_MEDIUM_NOT_PRESENT   0x3A
 

SCSI Additional Sense Key Code Qualifiers

#define SCSI_ASENSEQ_NO_QUALIFIER   0x00
 
#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED   0x01
 
#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED   0x02
 
#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS   0x07
 

Detailed Description

Module Description

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

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

Enumeration Type Documentation

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 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 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.