9#ifndef _USB_HOST_MSD_H_
10#define _USB_HOST_MSD_H_
21#define USB_HOST_MSD_CBW_FLAGS_DIRECTION_OUT (0x00U)
22#define USB_HOST_MSD_CBW_FLAGS_DIRECTION_IN (0x80U)
23#define USB_HOST_MSD_CBW_SIGNATURE (0x43425355U)
24#define USB_HOST_MSD_CSW_SIGNATURE (0x53425355U)
27#define USB_HOST_UFI_BLOCK_DATA_VALID_LENGTH (10U)
28#define USB_HOST_UFI_LOGICAL_UNIT_POSITION (5U)
29#define USB_HOST_UFI_CBW_LENGTH (31U)
30#define USB_HOST_UFI_CSW_LENGTH (13U)
31#define USB_HOST_UFI_MODE_SENSE_PAGE_CONTROL_SHIFT (6U)
32#define USB_HOST_UFI_MODE_SENSE_PAGE_CODE_SHIFT (0U)
33#define USB_HOST_UFI_START_STOP_UNIT_LOEJ_SHIFT (1U)
34#define USB_HOST_UFI_START_STOP_UNIT_START_SHIFT (0U)
35#define USB_HOST_UFI_SEND_DIAGNOSTIC_SELF_TEST_SHIFT (2U)
46#define USB_HOST_MSD_RETRY_MAX_TIME (1U)
48#define USB_HOST_MSD_BLOCK_SIZE (512U)
51#define USB_HOST_MSD_CLASS_CODE (8U)
53#define USB_HOST_MSD_SUBCLASS_CODE_UFI (4U)
55#define USB_HOST_MSD_SUBCLASS_CODE_SCSI (6U)
57#define USB_HOST_MSD_PROTOCOL_BULK (0x50U)
60#define USB_HOST_HID_MASS_STORAGE_RESET (0xFFU)
62#define USB_HOST_HID_GET_MAX_LUN (0xFEU)
68 kMSD_CommandTransferCBW,
69 kMSD_CommandTransferData,
70 kMSD_CommandTransferCSW,
73 kMSD_CommandErrorDone,
234 uint8_t alternateSetting,
236 void *callbackParam);
266 void *callbackParam);
287 uint8_t *logicalUnitNumber,
289 void *callbackParam);
316 uint32_t blockAddress,
318 uint32_t bufferLength,
319 uint32_t blockNumber,
321 void *callbackParam);
348 uint32_t blockAddress,
350 uint32_t bufferLength,
351 uint32_t blockNumber,
353 void *callbackParam);
380 uint32_t blockAddress,
382 uint32_t bufferLength,
383 uint32_t blockNumber,
385 void *callbackParam);
412 uint32_t blockAddress,
414 uint32_t bufferLength,
415 uint32_t blockNumber,
417 void *callbackParam);
443 uint32_t bufferLength,
445 void *callbackParam);
469 void *callbackParam);
495 uint32_t bufferLength,
497 void *callbackParam);
523 uint32_t bufferLength,
525 void *callbackParam);
555 uint32_t bufferLength,
557 void *callbackParam);
583 uint32_t bufferLength,
585 void *callbackParam);
611 uint32_t bufferLength,
613 void *callbackParam);
643 uint32_t bufferLength,
645 void *callbackParam);
673 void *callbackParam);
700 uint32_t blockAddress,
702 uint32_t bufferLength,
703 uint32_t blockNumber,
705 void *callbackParam);
736 void *callbackParam);
761 uint32_t blockAddress,
762 uint16_t verificationLength,
764 void *callbackParam);
788 void *callbackParam);
812 uint32_t blockAddress,
814 void *callbackParam);
840 void *callbackParam);
859 uint32_t bufferLength,
863 uint8_t byteValues[10]);
enum _usb_status usb_status_t
USB error code.
void * usb_host_handle
USB host handle type define.
Definition nxp_usb.h:70
void * usb_device_handle
USB device handle type define.
Definition nxp_usb.h:73
void * usb_host_pipe_handle
USB host pipe handle type define.
Definition usb_host.h:40
void(* transfer_callback_t)(void *param, uint8_t *data, uint32_t dataLen, usb_status_t status)
Transfer callback function typedef.
Definition usb_host.h:178
void * usb_host_class_handle
USB host class handle type define.
Definition usb_host.h:28
void * usb_host_interface_handle
USB host interface handle type define.
Definition usb_host.h:37
usb_status_t USB_HostMsdInit(usb_device_handle deviceHandle, usb_host_class_handle *classHandle)
Initializes the MSD instance.
usb_status_t USB_HostMsdSeek10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, transfer_callback_t callbackFn, void *callbackParam)
Mass storage seek(10).
usb_status_t USB_HostMsdMassStorageReset(usb_host_class_handle classHandle, transfer_callback_t callbackFn, void *callbackParam)
Mass storage reset.
_usb_host_msd_command_status
UFI command process status.
Definition usb_host_msd.h:66
usb_status_t USB_HostMsdGetMaxLun(usb_host_class_handle classHandle, uint8_t *logicalUnitNumber, transfer_callback_t callbackFn, void *callbackParam)
Gets the maximum logical unit number.
usb_status_t USB_HostMsdWrite12(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write (12).
struct _usb_host_msd_command usb_host_msd_command_t
MSC UFI command information structure.
usb_status_t USB_HostMsdReadFormatCapacities(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read format capacities.
usb_status_t USB_HostMsdWrite10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write (10).
usb_status_t USB_HostMsdSendDiagnostic(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t selfTest, transfer_callback_t callbackFn, void *callbackParam)
Mass storage send diagnostic.
usb_status_t USB_HostMsdDeinit(usb_device_handle deviceHandle, usb_host_class_handle classHandle)
Deinitializes the MSD instance.
struct _usb_host_ufi_inquiry_data usb_host_ufi_inquiry_data_t
UFI standard inquiry data structure.
struct _usb_host_msd_instance usb_host_msd_instance_t
MSD instance structure, MSD usb_host_class_handle pointer to this structure.
usb_status_t USB_HostMsdFormatUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t trackNumber, uint16_t interLeave, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage format unit.
usb_status_t USB_HostMsdRead12(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read (12).
usb_status_t USB_HostMsdInquiry(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage inquiry.
usb_status_t USB_HostMsdTestUnitReady(usb_host_class_handle classHandle, uint8_t logicalUnit, transfer_callback_t callbackFn, void *callbackParam)
Mass storage test unit ready.
usb_status_t USB_HostMsdCommand(usb_host_class_handle classHandle, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam, uint8_t direction, uint8_t byteValues[10])
all ufi function calls this api.
struct _usb_host_csw usb_host_csw_t
MSC Bulk-Only command status wrapper (CSW)
usb_status_t USB_HostMsdPreventAllowRemoval(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t prevent, transfer_callback_t callbackFn, void *callbackParam)
Mass storage prevents/allows a medium removal.
struct _usb_host_cbw usb_host_cbw_t
MSC Bulk-Only command block wrapper (CBW)
usb_status_t USB_HostMsdRezeroUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, transfer_callback_t callbackFn, void *callbackParam)
Mass storage rezero.
usb_status_t USB_HostMsdVerify(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint16_t verificationLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage verify.
usb_status_t USB_HostMsdReadCapacity(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read capacity.
usb_status_t USB_HostMsdStartStopUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t loadEject, uint8_t start, transfer_callback_t callbackFn, void *callbackParam)
Mass storage start stop unit.
usb_status_t USB_HostMsdModeSense(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t pageControl, uint8_t pageCode, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage mode sense.
struct _usb_host_ufi_sense_data usb_host_ufi_sense_data_t
UFI standard sense data structure.
usb_status_t USB_HostMsdSetInterface(usb_host_class_handle classHandle, usb_host_interface_handle interfaceHandle, uint8_t alternateSetting, transfer_callback_t callbackFn, void *callbackParam)
Sets the interface.
usb_status_t USB_HostMsdRequestSense(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
mass storage request sense.
usb_status_t USB_HostMsdModeSelect(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage mode select.
enum _usb_host_msd_command_status usb_host_msd_command_status_t
UFI command process status.
usb_status_t USB_HostMsdRead10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read (10).
usb_status_t USB_HostMsdWriteAndVerify(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write and verify.
struct _usb_host_ufi_read_capacity usb_host_ufi_read_capacity_t
UFI read capacity data structure.
MSC Bulk-Only command block wrapper (CBW)
Definition usb_host_msd.h:78
uint8_t CBWFlags
Definition usb_host_msd.h:85
uint8_t CBWLun
Definition usb_host_msd.h:93
uint8_t CBWCB[16]
Definition usb_host_msd.h:96
uint32_t CBWSignature
Definition usb_host_msd.h:79
uint32_t CBWTag
Definition usb_host_msd.h:81
uint32_t CBWDataTransferLength
Definition usb_host_msd.h:83
uint8_t CBWCBLength
Definition usb_host_msd.h:94
MSC Bulk-Only command status wrapper (CSW)
Definition usb_host_msd.h:101
uint8_t CSWStatus
Definition usb_host_msd.h:107
uint32_t CSWDataResidue
Definition usb_host_msd.h:105
uint32_t CSWTag
Definition usb_host_msd.h:104
uint32_t CSWSignature
Definition usb_host_msd.h:102
MSC UFI command information structure.
Definition usb_host_msd.h:118
usb_host_transfer_t * transfer
Definition usb_host_msd.h:124
usb_host_cbw_t * cbwBlock
Definition usb_host_msd.h:119
usb_host_csw_t * cswBlock
Definition usb_host_msd.h:120
uint32_t dataLength
Definition usb_host_msd.h:122
uint8_t retryTime
Definition usb_host_msd.h:125
uint32_t dataSofar
Definition usb_host_msd.h:123
uint8_t * dataBuffer
Definition usb_host_msd.h:121
uint8_t dataDirection
Definition usb_host_msd.h:126
MSD instance structure, MSD usb_host_class_handle pointer to this structure.
Definition usb_host_msd.h:131
uint8_t commandStatus
Definition usb_host_msd.h:144
void * commandCallbackParam
Definition usb_host_msd.h:139
transfer_callback_t commandCallbackFn
Definition usb_host_msd.h:138
usb_host_pipe_handle controlPipe
Definition usb_host_msd.h:135
usb_host_interface_handle interfaceHandle
Definition usb_host_msd.h:134
transfer_callback_t controlCallbackFn
Definition usb_host_msd.h:140
uint8_t internalResetRecovery
Definition usb_host_msd.h:145
void * controlCallbackParam
Definition usb_host_msd.h:141
usb_host_handle hostHandle
Definition usb_host_msd.h:132
usb_host_msd_command_t msdCommand
Definition usb_host_msd.h:143
usb_host_pipe_handle inPipe
Definition usb_host_msd.h:137
usb_device_handle deviceHandle
Definition usb_host_msd.h:133
usb_host_transfer_t * controlTransfer
Definition usb_host_msd.h:142
usb_host_pipe_handle outPipe
Definition usb_host_msd.h:136
USB host transfer structure.
Definition usb_host.h:241
UFI standard inquiry data structure.
Definition usb_host_msd.h:167
uint8_t version
Definition usb_host_msd.h:170
uint8_t peripheralDeviceType
Definition usb_host_msd.h:168
uint8_t reserved1[3]
Definition usb_host_msd.h:173
uint8_t productRevisionLevel[4]
Definition usb_host_msd.h:176
uint8_t additionalLength
Definition usb_host_msd.h:172
uint8_t productIdentification[16]
Definition usb_host_msd.h:175
uint8_t responseDataFormat
Definition usb_host_msd.h:171
uint8_t removableMediaBit
Definition usb_host_msd.h:169
uint8_t vendorInformation[8]
Definition usb_host_msd.h:174
UFI read capacity data structure.
Definition usb_host_msd.h:181
uint8_t lastLogicalBlockAddress[4]
Definition usb_host_msd.h:182
uint8_t blockLengthInBytes[4]
Definition usb_host_msd.h:183
UFI standard sense data structure.
Definition usb_host_msd.h:151
uint8_t reserved2[4]
Definition usb_host_msd.h:159
uint8_t reserved1
Definition usb_host_msd.h:153
uint8_t reserved3[4]
Definition usb_host_msd.h:162
uint8_t additionalSenseCodeQualifier
Definition usb_host_msd.h:161
uint8_t information[4]
Definition usb_host_msd.h:155
uint8_t senseKey
Definition usb_host_msd.h:154
uint8_t errorCode
Definition usb_host_msd.h:152
uint8_t additionalSenseCode
Definition usb_host_msd.h:160
uint8_t additionalSenseLength
Definition usb_host_msd.h:157