Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
USB Mass Storage Class (MSC) protocol definitions

Modules

 SCSI Block Commands protocol definitions
 
 SCSI Primary Commands protocol definitions
 

Data Structures

struct  usb_msc_cbw
 
struct  usb_msc_csw
 

Enumerations

enum  usb_reqid_msc {
  USB_REQ_MSC_BULK_RESET = 0xFF,
  USB_REQ_MSC_GET_MAX_LUN = 0xFE
}
 MSC USB requests (bRequest) More...
 

Possible Class value

#define MSC_CLASS   0x08
 

Possible SubClass value

Note
In practise, most devices should use MSC_SUBCLASS_TRANSPARENT and specify the actual command set in the standard INQUIRY data block, even if the MSC spec indicates otherwise. In particular, RBC is not supported by certain major operating systems like Windows XP.
#define MSC_SUBCLASS_RBC   0x01
 Reduced Block Commands. More...
 
#define MSC_SUBCLASS_ATAPI   0x02
 CD/DVD devices. More...
 
#define MSC_SUBCLASS_QIC_157   0x03
 Tape devices. More...
 
#define MSC_SUBCLASS_UFI   0x04
 Floppy disk drives. More...
 
#define MSC_SUBCLASS_SFF_8070I   0x05
 Floppy disk drives. More...
 
#define MSC_SUBCLASS_TRANSPARENT   0x06
 Determined by INQUIRY. More...
 

Possible protocol value

Note
Only the BULK protocol should be used in new designs.
#define MSC_PROTOCOL_CBI   0x00
 Command/Bulk/Interrupt. More...
 
#define MSC_PROTOCOL_CBI_ALT   0x01
 W/o command completion. More...
 
#define MSC_PROTOCOL_BULK   0x50
 Bulk-only. More...
 

A Command Block Wrapper (CBW).

#define USB_CBW_SIGNATURE   0x55534243
 dCBWSignature value More...
 
#define USB_CBW_DIRECTION_IN   (1<<7)
 Data from device to host. More...
 
#define USB_CBW_DIRECTION_OUT   (0<<7)
 Data from host to device. More...
 
#define USB_CBW_LUN_MASK   0x0F
 Valid bits in bCBWLUN. More...
 
#define USB_CBW_LEN_MASK   0x1F
 Valid bits in bCBWCBLength. More...
 

A Command Status Wrapper (CSW).

#define USB_CSW_SIGNATURE   0x55534253
 dCSWSignature value More...
 
#define USB_CSW_STATUS_PASS   0x00
 Command Passed. More...
 
#define USB_CSW_STATUS_FAIL   0x01
 Command Failed. More...
 
#define USB_CSW_STATUS_PE   0x02
 Phase Error. More...
 

#define MSC_CLASS   0x08
#define MSC_PROTOCOL_BULK   0x50

Bulk-only.

#define MSC_PROTOCOL_CBI   0x00

Command/Bulk/Interrupt.

#define MSC_PROTOCOL_CBI_ALT   0x01

W/o command completion.

#define MSC_SUBCLASS_ATAPI   0x02

CD/DVD devices.

#define MSC_SUBCLASS_QIC_157   0x03

Tape devices.

#define MSC_SUBCLASS_RBC   0x01

Reduced Block Commands.

#define MSC_SUBCLASS_SFF_8070I   0x05

Floppy disk drives.

#define MSC_SUBCLASS_TRANSPARENT   0x06

Determined by INQUIRY.

#define MSC_SUBCLASS_UFI   0x04

Floppy disk drives.

#define USB_CBW_DIRECTION_IN   (1<<7)

Data from device to host.

#define USB_CBW_DIRECTION_OUT   (0<<7)

Data from host to device.

#define USB_CBW_LEN_MASK   0x1F

Valid bits in bCBWCBLength.

#define USB_CBW_LUN_MASK   0x0F

Valid bits in bCBWLUN.

#define USB_CBW_SIGNATURE   0x55534243

dCBWSignature value

#define USB_CSW_SIGNATURE   0x55534253

dCSWSignature value

#define USB_CSW_STATUS_FAIL   0x01

Command Failed.

#define USB_CSW_STATUS_PASS   0x00

Command Passed.

#define USB_CSW_STATUS_PE   0x02

Phase Error.

MSC USB requests (bRequest)

Enumerator
USB_REQ_MSC_BULK_RESET 

Mass Storage Reset.

USB_REQ_MSC_GET_MAX_LUN 

Get Max LUN.