2 ******************************************************************************
4 * @author MCD Application Team
7 * @brief Header file for usbh_core.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 ----------------------------------------------*/
26 /* Includes ------------------------------------------------------------------*/
29 #include "usbh_conf.h"
31 /** @addtogroup USBH_LIB
35 /** @addtogroup USBH_LIB_CORE
39 /** @defgroup USBH_CORE
40 * @brief This file is the Header file for usbh_core.c
45 /** @defgroup USBH_CORE_Exported_Defines
49 #define MSC_CLASS 0x08
50 #define HID_CLASS 0x03
51 #define MSC_PROTOCOL 0x50
52 #define CBI_PROTOCOL 0x01
55 #define USBH_MAX_ERROR_COUNT 2
56 #define USBH_DEVICE_ADDRESS_DEFAULT 0
57 #define USBH_DEVICE_ADDRESS 1
65 /** @defgroup USBH_CORE_Exported_Types
74 USBH_UNRECOVERED_ERROR,
75 USBH_ERROR_SPEED_UNKNOWN,
79 /* Following states are used for gState */
82 HOST_ISSUE_CORE_RESET,
84 HOST_DEV_DISCONNECTED,
86 HOST_DETECT_DEVICE_SPEED,
96 /* Following states are used for EnumerationState */
99 ENUM_GET_FULL_DEV_DESC,
102 ENUM_GET_FULL_CFG_DESC,
103 ENUM_GET_MFC_STRING_DESC,
104 ENUM_GET_PRODUCT_STRING_DESC,
105 ENUM_GET_SERIALNUM_STRING_DESC,
106 ENUM_SET_CONFIGURATION,
112 /* Following states are used for CtrlXferStateMachine */
124 CTRL_STATUS_OUT_WAIT,
130 USBH_USR_NO_RESP = 0,
131 USBH_USR_RESP_OK = 1,
135 /* Following states are used for RequestState */
154 USB_Setup_TypeDef setup;
161 typedef struct _DeviceProp
166 USBH_DevDesc_TypeDef Dev_Desc;
167 USBH_CfgDesc_TypeDef Cfg_Desc;
168 USBH_InterfaceDesc_TypeDef Itf_Desc[USBH_MAX_NUM_INTERFACES];
169 USBH_EpDesc_TypeDef Ep_Desc[USBH_MAX_NUM_INTERFACES][USBH_MAX_NUM_ENDPOINTS];
170 USBH_HIDDesc_TypeDef HID_Desc;
172 }USBH_Device_TypeDef;
174 typedef struct _USBH_Class_cb
177 (USB_OTG_CORE_HANDLE *pdev , void *phost);
179 (USB_OTG_CORE_HANDLE *pdev , void *phost);
180 USBH_Status (*Requests)\
181 (USB_OTG_CORE_HANDLE *pdev , void *phost);
182 USBH_Status (*Machine)\
183 (USB_OTG_CORE_HANDLE *pdev , void *phost);
185 } USBH_Class_cb_TypeDef;
188 typedef struct _USBH_USR_PROP
190 void (*Init)(void); /* HostLibInitialized */
191 void (*DeInit)(void); /* HostLibInitialized */
192 void (*DeviceAttached)(void); /* DeviceAttached */
193 void (*ResetDevice)(void);
194 void (*DeviceDisconnected)(void);
195 void (*OverCurrentDetected)(void);
196 void (*DeviceSpeedDetected)(uint8_t DeviceSpeed); /* DeviceSpeed */
197 void (*DeviceDescAvailable)(void *); /* DeviceDescriptor is available */
198 void (*DeviceAddressAssigned)(void); /* Address is assigned to USB Device */
199 void (*ConfigurationDescAvailable)(USBH_CfgDesc_TypeDef *,
200 USBH_InterfaceDesc_TypeDef *,
201 USBH_EpDesc_TypeDef *);
202 /* Configuration Descriptor available */
203 void (*ManufacturerString)(void *); /* ManufacturerString*/
204 void (*ProductString)(void *); /* ProductString*/
205 void (*SerialNumString)(void *); /* SerialNubString*/
206 void (*EnumerationDone)(void); /* Enumeration finished */
207 USBH_USR_Status (*UserInput)(void);
208 int (*USBH_USR_MSC_Application) (void);
209 void (*USBH_USR_DeviceNotSupported)(void); /* Device is not supported*/
210 void (*UnrecoveredError)(void);
215 typedef struct _Host_TypeDef
217 HOST_State gState; /* Host State Machine Value */
218 HOST_State gStateBkp; /* backup of previous State machine value */
219 ENUM_State EnumState; /* Enumeration state Machine */
220 CMD_State RequestState;
221 USBH_Ctrl_TypeDef Control;
223 USBH_Device_TypeDef device_prop;
225 USBH_Class_cb_TypeDef *class_cb;
226 USBH_Usr_cb_TypeDef *usr_cb;
229 } USBH_HOST, *pUSBH_HOST;
237 /** @defgroup USBH_CORE_Exported_Macros
245 /** @defgroup USBH_CORE_Exported_Variables
253 /** @defgroup USBH_CORE_Exported_FunctionsPrototype
256 void USBH_Init(USB_OTG_CORE_HANDLE *pdev,
257 USB_OTG_CORE_ID_TypeDef coreID,
259 USBH_Class_cb_TypeDef *class_cb,
260 USBH_Usr_cb_TypeDef *usr_cb);
262 USBH_Status USBH_DeInit(USB_OTG_CORE_HANDLE *pdev,
264 void USBH_Process(USB_OTG_CORE_HANDLE *pdev ,
266 void USBH_ErrorHandle(USBH_HOST *phost,
267 USBH_Status errType);
273 #endif /* __USBH_CORE_H */
286 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/