2 ******************************************************************************
4 * @author MCD Application Team
7 * @brief Header file for usbh_msc_bot.c
8 ******************************************************************************
11 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18 * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
19 ******************************************************************************
22 /* Define to prevent recursive ----------------------------------------------*/
23 #ifndef __USBH_MSC_BOT_H__
24 #define __USBH_MSC_BOT_H__
26 /* Includes ------------------------------------------------------------------*/
27 #include "usbh_stdreq.h"
30 /** @addtogroup USBH_LIB
34 /** @addtogroup USBH_CLASS
38 /** @addtogroup USBH_MSC_CLASS
42 /** @defgroup USBH_MSC_BOT
43 * @brief This file is the Header file for usbh_msc_core.c
48 /** @defgroup USBH_MSC_BOT_Exported_Types
52 typedef union _USBH_CBW_Block
56 uint32_t CBWSignature;
58 uint32_t CBWTransferLength;
69 USBH_MSC_BOT_INIT_STATE = 0,
72 USBH_MSC_TEST_UNIT_READY,
73 USBH_MSC_READ_CAPACITY10,
75 USBH_MSC_REQUEST_SENSE,
76 USBH_MSC_BOT_USB_TRANSFERS,
77 USBH_MSC_DEFAULT_APPLI_STATE,
78 USBH_MSC_CTRL_ERROR_STATE,
79 USBH_MSC_UNRECOVERED_STATE
84 typedef struct _BOTXfer
88 uint8_t MSCStateCurrent;
89 uint8_t CmdStateMachine;
94 uint8_t BOTXferErrorCount;
95 uint8_t BOTXferStatus;
96 } USBH_BOTXfer_TypeDef;
99 typedef union _USBH_CSW_Block
103 uint32_t CSWSignature;
105 uint32_t CSWDataResidue;
108 uint8_t CSWArray[13];
117 /** @defgroup USBH_MSC_BOT_Exported_Defines
120 #define USBH_MSC_SEND_CBW 1
121 #define USBH_MSC_SENT_CBW 2
122 #define USBH_MSC_BOT_DATAIN_STATE 3
123 #define USBH_MSC_BOT_DATAOUT_STATE 4
124 #define USBH_MSC_RECEIVE_CSW_STATE 5
125 #define USBH_MSC_DECODE_CSW 6
126 #define USBH_MSC_BOT_ERROR_IN 7
127 #define USBH_MSC_BOT_ERROR_OUT 8
130 #define USBH_MSC_BOT_CBW_SIGNATURE 0x43425355
131 #define USBH_MSC_BOT_CBW_TAG 0x20304050
132 #define USBH_MSC_BOT_CSW_SIGNATURE 0x53425355
133 #define USBH_MSC_CSW_DATA_LENGTH 0x000D
134 #define USBH_MSC_BOT_CBW_PACKET_LENGTH 31
135 #define USBH_MSC_CSW_LENGTH 13
136 #define USBH_MSC_CSW_MAX_LENGTH 63
138 /* CSW Status Definitions */
139 #define USBH_MSC_CSW_CMD_PASSED 0x00
140 #define USBH_MSC_CSW_CMD_FAILED 0x01
141 #define USBH_MSC_CSW_PHASE_ERROR 0x02
143 #define USBH_MSC_SEND_CSW_DISABLE 0
144 #define USBH_MSC_SEND_CSW_ENABLE 1
146 #define USBH_MSC_DIR_IN 0
147 #define USBH_MSC_DIR_OUT 1
148 #define USBH_MSC_BOTH_DIR 2
150 //#define USBH_MSC_PAGE_LENGTH 0x40
151 #define USBH_MSC_PAGE_LENGTH 512
154 #define CBW_CB_LENGTH 16
155 #define CBW_LENGTH 10
156 #define CBW_LENGTH_TEST_UNIT_READY 6
158 #define USB_REQ_BOT_RESET 0xFF
159 #define USB_REQ_GET_MAX_LUN 0xFE
161 #define MAX_BULK_STALL_COUNT_LIMIT 0x04 /* If STALL is seen on Bulk
162 Endpoint continously, this means
163 that device and Host has phase error
164 Hence a Reset is needed */
170 /** @defgroup USBH_MSC_BOT_Exported_Macros
177 /** @defgroup USBH_MSC_BOT_Exported_Variables
180 extern USBH_BOTXfer_TypeDef USBH_MSC_BOTXferParam;
181 extern HostCBWPkt_TypeDef USBH_MSC_CBWData;
182 extern HostCSWPkt_TypeDef USBH_MSC_CSWData;
187 /** @defgroup USBH_MSC_BOT_Exported_FunctionsPrototype
190 void USBH_MSC_HandleBOTXfer(USB_OTG_CORE_HANDLE *pdev,
192 uint8_t USBH_MSC_DecodeCSW(USB_OTG_CORE_HANDLE *pdev,
194 void USBH_MSC_Init(USB_OTG_CORE_HANDLE *pdev);
195 USBH_Status USBH_MSC_BOT_Abort(USB_OTG_CORE_HANDLE *pdev,
202 #endif //__USBH_MSC_BOT_H__
220 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/