source: S-port/trunk/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h

Last change on this file was 1, checked in by AlexLir, 3 years ago
File size: 12.0 KB
Line 
1/**
2 ******************************************************************************
3 * @file stm32f4xx_hal_hcd.h
4 * @author MCD Application Team
5 * @brief Header file of HCD HAL module.
6 ******************************************************************************
7 * @attention
8 *
9 * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10 * All rights reserved.</center></h2>
11 *
12 * This software component is licensed by ST under BSD 3-Clause license,
13 * the "License"; You may not use this file except in compliance with the
14 * License. You may obtain a copy of the License at:
15 * opensource.org/licenses/BSD-3-Clause
16 *
17 ******************************************************************************
18 */
19
20/* Define to prevent recursive inclusion -------------------------------------*/
21#ifndef STM32F4xx_HAL_HCD_H
22#define STM32F4xx_HAL_HCD_H
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28/* Includes ------------------------------------------------------------------*/
29#include "stm32f4xx_ll_usb.h"
30
31#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
32/** @addtogroup STM32F4xx_HAL_Driver
33 * @{
34 */
35
36/** @addtogroup HCD HCD
37 * @{
38 */
39
40/* Exported types ------------------------------------------------------------*/
41/** @defgroup HCD_Exported_Types HCD Exported Types
42 * @{
43 */
44
45/** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition
46 * @{
47 */
48typedef enum
49{
50 HAL_HCD_STATE_RESET = 0x00,
51 HAL_HCD_STATE_READY = 0x01,
52 HAL_HCD_STATE_ERROR = 0x02,
53 HAL_HCD_STATE_BUSY = 0x03,
54 HAL_HCD_STATE_TIMEOUT = 0x04
55} HCD_StateTypeDef;
56
57typedef USB_OTG_GlobalTypeDef HCD_TypeDef;
58typedef USB_OTG_CfgTypeDef HCD_InitTypeDef;
59typedef USB_OTG_HCTypeDef HCD_HCTypeDef;
60typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef;
61typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef;
62/**
63 * @}
64 */
65
66/** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition
67 * @{
68 */
69#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
70typedef struct __HCD_HandleTypeDef
71#else
72typedef struct
73#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
74{
75 HCD_TypeDef *Instance; /*!< Register base address */
76 HCD_InitTypeDef Init; /*!< HCD required parameters */
77 HCD_HCTypeDef hc[16]; /*!< Host channels parameters */
78 HAL_LockTypeDef Lock; /*!< HCD peripheral status */
79 __IO HCD_StateTypeDef State; /*!< HCD communication state */
80 __IO uint32_t ErrorCode; /*!< HCD Error code */
81 void *pData; /*!< Pointer Stack Handler */
82#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
83 void (* SOFCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD SOF callback */
84 void (* ConnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Connect callback */
85 void (* DisconnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Disconnect callback */
86 void (* PortEnabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Enable callback */
87 void (* PortDisabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Disable callback */
88 void (* HC_NotifyURBChangeCallback)(struct __HCD_HandleTypeDef *hhcd, uint8_t chnum,
89 HCD_URBStateTypeDef urb_state); /*!< USB OTG HCD Host Channel Notify URB Change callback */
90
91 void (* MspInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp Init callback */
92 void (* MspDeInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp DeInit callback */
93#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
94} HCD_HandleTypeDef;
95/**
96 * @}
97 */
98
99/**
100 * @}
101 */
102
103/* Exported constants --------------------------------------------------------*/
104/** @defgroup HCD_Exported_Constants HCD Exported Constants
105 * @{
106 */
107
108/** @defgroup HCD_Speed HCD Speed
109 * @{
110 */
111#define HCD_SPEED_HIGH USBH_HS_SPEED
112#define HCD_SPEED_FULL USBH_FSLS_SPEED
113#define HCD_SPEED_LOW USBH_FSLS_SPEED
114
115#define HCD_DEVICE_SPEED_HIGH 0U
116#define HCD_DEVICE_SPEED_FULL 1U
117#define HCD_DEVICE_SPEED_LOW 2U
118
119/**
120 * @}
121 */
122
123/** @defgroup HCD_PHY_Module HCD PHY Module
124 * @{
125 */
126#define HCD_PHY_ULPI 1U
127#define HCD_PHY_EMBEDDED 2U
128/**
129 * @}
130 */
131
132/** @defgroup HCD_Error_Code_definition HCD Error Code definition
133 * @brief HCD Error Code definition
134 * @{
135 */
136#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
137#define HAL_HCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */
138#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
139
140/**
141 * @}
142 */
143
144/**
145 * @}
146 */
147
148/* Exported macro ------------------------------------------------------------*/
149/** @defgroup HCD_Exported_Macros HCD Exported Macros
150 * @brief macros to handle interrupts and specific clock configurations
151 * @{
152 */
153#define __HAL_HCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
154#define __HAL_HCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
155
156#define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
157#define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
158#define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
159
160#define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__))
161#define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM)
162#define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM)
163#define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM)
164#define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM)
165/**
166 * @}
167 */
168
169/* Exported functions --------------------------------------------------------*/
170/** @addtogroup HCD_Exported_Functions HCD Exported Functions
171 * @{
172 */
173
174/** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions
175 * @{
176 */
177HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd);
178HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd);
179HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
180 uint8_t epnum, uint8_t dev_address,
181 uint8_t speed, uint8_t ep_type, uint16_t mps);
182
183HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
184void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd);
185void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd);
186
187#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
188/** @defgroup HAL_HCD_Callback_ID_enumeration_definition HAL USB OTG HCD Callback ID enumeration definition
189 * @brief HAL USB OTG HCD Callback ID enumeration definition
190 * @{
191 */
192typedef enum
193{
194 HAL_HCD_SOF_CB_ID = 0x01, /*!< USB HCD SOF callback ID */
195 HAL_HCD_CONNECT_CB_ID = 0x02, /*!< USB HCD Connect callback ID */
196 HAL_HCD_DISCONNECT_CB_ID = 0x03, /*!< USB HCD Disconnect callback ID */
197 HAL_HCD_PORT_ENABLED_CB_ID = 0x04, /*!< USB HCD Port Enable callback ID */
198 HAL_HCD_PORT_DISABLED_CB_ID = 0x05, /*!< USB HCD Port Disable callback ID */
199
200 HAL_HCD_MSPINIT_CB_ID = 0x06, /*!< USB HCD MspInit callback ID */
201 HAL_HCD_MSPDEINIT_CB_ID = 0x07 /*!< USB HCD MspDeInit callback ID */
202
203} HAL_HCD_CallbackIDTypeDef;
204/**
205 * @}
206 */
207
208/** @defgroup HAL_HCD_Callback_pointer_definition HAL USB OTG HCD Callback pointer definition
209 * @brief HAL USB OTG HCD Callback pointer definition
210 * @{
211 */
212
213typedef void (*pHCD_CallbackTypeDef)(HCD_HandleTypeDef *hhcd); /*!< pointer to a common USB OTG HCD callback function */
214typedef void (*pHCD_HC_NotifyURBChangeCallbackTypeDef)(HCD_HandleTypeDef *hhcd,
215 uint8_t epnum,
216 HCD_URBStateTypeDef urb_state); /*!< pointer to USB OTG HCD host channel callback */
217/**
218 * @}
219 */
220
221HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd,
222 HAL_HCD_CallbackIDTypeDef CallbackID,
223 pHCD_CallbackTypeDef pCallback);
224
225HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd,
226 HAL_HCD_CallbackIDTypeDef CallbackID);
227
228HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd,
229 pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback);
230
231HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd);
232#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
233/**
234 * @}
235 */
236
237/* I/O operation functions ***************************************************/
238/** @addtogroup HCD_Exported_Functions_Group2 Input and Output operation functions
239 * @{
240 */
241HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
242 uint8_t direction, uint8_t ep_type,
243 uint8_t token, uint8_t *pbuff,
244 uint16_t length, uint8_t do_ping);
245
246/* Non-Blocking mode: Interrupt */
247void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);
248void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd);
249void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd);
250void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd);
251void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd);
252void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd);
253void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd);
254void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum,
255 HCD_URBStateTypeDef urb_state);
256/**
257 * @}
258 */
259
260/* Peripheral Control functions **********************************************/
261/** @addtogroup HCD_Exported_Functions_Group3 Peripheral Control functions
262 * @{
263 */
264HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd);
265HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd);
266HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd);
267/**
268 * @}
269 */
270
271/* Peripheral State functions ************************************************/
272/** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions
273 * @{
274 */
275HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd);
276HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
277HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
278uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum);
279uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);
280uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);
281
282/**
283 * @}
284 */
285
286/**
287 * @}
288 */
289
290/* Private macros ------------------------------------------------------------*/
291/** @defgroup HCD_Private_Macros HCD Private Macros
292 * @{
293 */
294/**
295 * @}
296 */
297/* Private functions prototypes ----------------------------------------------*/
298
299 /**
300 * @}
301 */
302 /**
303 * @}
304 */
305#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
306
307#ifdef __cplusplus
308}
309#endif
310
311#endif /* STM32F4xx_HAL_HCD_H */
312
313/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Note: See TracBrowser for help on using the repository browser.