2 #if (USE_STM32_USB_HOST_MODE || USE_STM32_USB_USE_DEVICE_MODE || USE_STM32_USB_OTG_MODE)
31 #ifndef __USBH_MSC_BOT_H__
32 #define __USBH_MSC_BOT_H__
35 #include "stm32/usb/usbh_stdreq.h"
60 typedef union _USBH_CBW_Block
64 uint32_t CBWSignature;
66 uint32_t CBWTransferLength;
77 USBH_MSC_BOT_INIT_STATE = 0,
80 USBH_MSC_TEST_UNIT_READY,
81 USBH_MSC_READ_CAPACITY10,
83 USBH_MSC_REQUEST_SENSE,
84 USBH_MSC_BOT_USB_TRANSFERS,
85 USBH_MSC_DEFAULT_APPLI_STATE,
86 USBH_MSC_CTRL_ERROR_STATE,
87 USBH_MSC_UNRECOVERED_STATE
92 typedef struct _BOTXfer
96 uint8_t MSCStateCurrent;
97 uint8_t CmdStateMachine;
102 uint8_t BOTXferErrorCount;
103 uint8_t BOTXferStatus;
104 } USBH_BOTXfer_TypeDef;
107 typedef union _USBH_CSW_Block
111 uint32_t CSWSignature;
113 uint32_t CSWDataResidue;
116 uint8_t CSWArray[13];
128 #define USBH_MSC_SEND_CBW 1
129 #define USBH_MSC_SENT_CBW 2
130 #define USBH_MSC_BOT_DATAIN_STATE 3
131 #define USBH_MSC_BOT_DATAOUT_STATE 4
132 #define USBH_MSC_RECEIVE_CSW_STATE 5
133 #define USBH_MSC_DECODE_CSW 6
134 #define USBH_MSC_BOT_ERROR_IN 7
135 #define USBH_MSC_BOT_ERROR_OUT 8
138 #define USBH_MSC_BOT_CBW_SIGNATURE 0x43425355
139 #define USBH_MSC_BOT_CBW_TAG 0x20304050
140 #define USBH_MSC_BOT_CSW_SIGNATURE 0x53425355
141 #define USBH_MSC_CSW_DATA_LENGTH 0x000D
142 #define USBH_MSC_BOT_CBW_PACKET_LENGTH 31
143 #define USBH_MSC_CSW_LENGTH 13
144 #define USBH_MSC_CSW_MAX_LENGTH 63
147 #define USBH_MSC_CSW_CMD_PASSED 0x00
148 #define USBH_MSC_CSW_CMD_FAILED 0x01
149 #define USBH_MSC_CSW_PHASE_ERROR 0x02
151 #define USBH_MSC_SEND_CSW_DISABLE 0
152 #define USBH_MSC_SEND_CSW_ENABLE 1
154 #define USBH_MSC_DIR_IN 0
155 #define USBH_MSC_DIR_OUT 1
156 #define USBH_MSC_BOTH_DIR 2
159 #define USBH_MSC_PAGE_LENGTH 512
162 #define CBW_CB_LENGTH 16
163 #define CBW_LENGTH 10
164 #define CBW_LENGTH_TEST_UNIT_READY 6
166 #define USB_REQ_BOT_RESET 0xFF
167 #define USB_REQ_GET_MAX_LUN 0xFE
169 #define MAX_BULK_STALL_COUNT_LIMIT 0x04
188 extern USBH_BOTXfer_TypeDef USBH_MSC_BOTXferParam;
189 extern HostCBWPkt_TypeDef USBH_MSC_CBWData;
190 extern HostCSWPkt_TypeDef USBH_MSC_CSWData;
198 void USBH_MSC_HandleBOTXfer(USB_OTG_CORE_HANDLE *pdev,
200 uint8_t USBH_MSC_DecodeCSW(USB_OTG_CORE_HANDLE *pdev,
202 void USBH_MSC_Init(USB_OTG_CORE_HANDLE *pdev);
203 USBH_Status USBH_MSC_BOT_Abort(USB_OTG_CORE_HANDLE *pdev,
210 #endif //__USBH_MSC_BOT_H__
libheivs configuration file