Set blackbox file handler to NULL after closing file
[inav.git] / lib / main / STM32H7 / Drivers / STM32H7xx_HAL_Driver / Inc / stm32h7xx_hal_hcd.h
blob1e60d5549985ffaad07f08698a6299b1347ab2f7
1 /**
2 ******************************************************************************
3 * @file stm32h7xx_hal_hcd.h
4 * @author MCD Application Team
5 * @brief Header file of HCD HAL module.
6 ******************************************************************************
7 * @attention
9 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
10 * All rights reserved.</center></h2>
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
17 ******************************************************************************
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32H7xx_HAL_HCD_H
22 #define STM32H7xx_HAL_HCD_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32h7xx_ll_usb.h"
31 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
32 /** @addtogroup STM32H7xx_HAL_Driver
33 * @{
36 /** @addtogroup HCD
37 * @{
40 /* Exported types ------------------------------------------------------------*/
41 /** @defgroup HCD_Exported_Types HCD Exported Types
42 * @{
45 /** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition
46 * @{
48 typedef enum
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;
57 typedef USB_OTG_GlobalTypeDef HCD_TypeDef;
58 typedef USB_OTG_CfgTypeDef HCD_InitTypeDef;
59 typedef USB_OTG_HCTypeDef HCD_HCTypeDef;
60 typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef;
61 typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef;
62 /**
63 * @}
66 /** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition
67 * @{
69 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
70 typedef struct __HCD_HandleTypeDef
71 #else
72 typedef struct
73 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
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 */
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 * @}
99 /**
100 * @}
103 /* Exported constants --------------------------------------------------------*/
104 /** @defgroup HCD_Exported_Constants HCD Exported Constants
105 * @{
108 /** @defgroup HCD_Speed HCD Speed
109 * @{
111 #define HCD_SPEED_HIGH USBH_HS_SPEED
112 #define HCD_SPEED_FULL USBH_FS_SPEED
113 #define HCD_SPEED_LOW USBH_LS_SPEED
116 * @}
119 /** @defgroup HCD_PHY_Module HCD PHY Module
120 * @{
122 #define HCD_PHY_ULPI 1U
123 #define HCD_PHY_EMBEDDED 2U
125 * @}
128 /** @defgroup HCD_Error_Code_definition HCD Error Code definition
129 * @brief HCD Error Code definition
130 * @{
132 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
133 #define HAL_HCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */
134 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
137 * @}
141 * @}
144 /* Exported macro ------------------------------------------------------------*/
145 /** @defgroup HCD_Exported_Macros HCD Exported Macros
146 * @brief macros to handle interrupts and specific clock configurations
147 * @{
149 #define __HAL_HCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
150 #define __HAL_HCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
152 #define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
153 #define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
154 #define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
156 #define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__))
157 #define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM)
158 #define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM)
159 #define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM)
160 #define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM)
162 * @}
165 /* Exported functions --------------------------------------------------------*/
166 /** @addtogroup HCD_Exported_Functions HCD Exported Functions
167 * @{
170 /** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions
171 * @{
173 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd);
174 HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd);
175 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd,
176 uint8_t ch_num,
177 uint8_t epnum,
178 uint8_t dev_address,
179 uint8_t speed,
180 uint8_t ep_type,
181 uint16_t mps);
183 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
184 void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd);
185 void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd);
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 * @{
192 typedef enum
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 */
200 HAL_HCD_MSPINIT_CB_ID = 0x06, /*!< USB HCD MspInit callback ID */
201 HAL_HCD_MSPDEINIT_CB_ID = 0x07 /*!< USB HCD MspDeInit callback ID */
203 } HAL_HCD_CallbackIDTypeDef;
205 * @}
208 /** @defgroup HAL_HCD_Callback_pointer_definition HAL USB OTG HCD Callback pointer definition
209 * @brief HAL USB OTG HCD Callback pointer definition
210 * @{
213 typedef void (*pHCD_CallbackTypeDef)(HCD_HandleTypeDef *hhcd); /*!< pointer to a common USB OTG HCD callback function */
214 typedef void (*pHCD_HC_NotifyURBChangeCallbackTypeDef)(HCD_HandleTypeDef *hhcd,
215 uint8_t epnum,
216 HCD_URBStateTypeDef urb_state); /*!< pointer to USB OTG HCD host channel callback */
218 * @}
221 HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef CallbackID, pHCD_CallbackTypeDef pCallback);
222 HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef CallbackID);
224 HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback);
225 HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd);
226 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
228 * @}
231 /* I/O operation functions ***************************************************/
232 /** @addtogroup HCD_Exported_Functions_Group2 Input and Output operation functions
233 * @{
235 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd,
236 uint8_t ch_num,
237 uint8_t direction,
238 uint8_t ep_type,
239 uint8_t token,
240 uint8_t *pbuff,
241 uint16_t length,
242 uint8_t do_ping);
244 /* Non-Blocking mode: Interrupt */
245 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);
246 void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd);
247 void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd);
248 void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd);
249 void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd);
250 void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd);
251 void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd,
252 uint8_t chnum,
253 HCD_URBStateTypeDef urb_state);
255 * @}
258 /* Peripheral Control functions **********************************************/
259 /** @addtogroup HCD_Exported_Functions_Group3 Peripheral Control functions
260 * @{
262 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd);
263 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd);
264 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd);
266 * @}
269 /* Peripheral State functions ************************************************/
270 /** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions
271 * @{
273 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd);
274 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
275 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum);
276 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
277 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);
278 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);
280 * @}
284 * @}
287 /* Private macros ------------------------------------------------------------*/
288 /** @defgroup HCD_Private_Macros HCD Private Macros
289 * @{
293 * @}
296 /* Private functions prototypes ----------------------------------------------*/
297 /** @defgroup HCD_Private_Functions_Prototypes HCD Private Functions Prototypes
298 * @{
302 * @}
305 /* Private functions ---------------------------------------------------------*/
306 /** @defgroup HCD_Private_Functions HCD Private Functions
307 * @{
311 * @}
315 * @}
319 * @}
321 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
323 #ifdef __cplusplus
325 #endif
327 #endif /* STM32H7xx_HAL_HCD_H */
329 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/