]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_hcd.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_hcd.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_hcd.h\r
4   * @author  MCD Application Team\r
5   * @version V0.3.0\r
6   * @date    06-March-2015\r
7   * @brief   Header file of HCD HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_HCD_H\r
40 #define __STM32F7xx_HAL_HCD_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_ll_usb.h"\r
48    \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @defgroup HCD HCD\r
54   * @brief HCD HAL module driver\r
55   * @{\r
56   */ \r
57 \r
58 /* Exported types ------------------------------------------------------------*/\r
59 /** @defgroup HCD_Exported_Types HCD Exported Types\r
60   * @{\r
61   */ \r
62 \r
63 /** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition \r
64   * @{\r
65   */\r
66 typedef enum \r
67 {\r
68   HAL_HCD_STATE_RESET    = 0x00,\r
69   HAL_HCD_STATE_READY    = 0x01,\r
70   HAL_HCD_STATE_ERROR    = 0x02,\r
71   HAL_HCD_STATE_BUSY     = 0x03,\r
72   HAL_HCD_STATE_TIMEOUT  = 0x04\r
73 } HCD_StateTypeDef;\r
74 \r
75 typedef USB_OTG_GlobalTypeDef   HCD_TypeDef;\r
76 typedef USB_OTG_CfgTypeDef      HCD_InitTypeDef;\r
77 typedef USB_OTG_HCTypeDef       HCD_HCTypeDef ;   \r
78 typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef ;\r
79 typedef USB_OTG_HCStateTypeDef  HCD_HCStateTypeDef ;\r
80 /**\r
81   * @}\r
82   */\r
83 \r
84 /** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition   \r
85   * @{\r
86   */ \r
87 typedef struct\r
88 {\r
89   HCD_TypeDef               *Instance;  /*!< Register base address    */ \r
90   HCD_InitTypeDef           Init;       /*!< HCD required parameters  */\r
91   HCD_HCTypeDef             hc[15];     /*!< Host channels parameters */\r
92   HAL_LockTypeDef           Lock;       /*!< HCD peripheral status    */\r
93   __IO HCD_StateTypeDef     State;      /*!< HCD communication state  */\r
94   void                      *pData;     /*!< Pointer Stack Handler    */\r
95 } HCD_HandleTypeDef;\r
96 /**\r
97   * @}\r
98   */\r
99 \r
100 /**\r
101   * @}\r
102   */ \r
103   \r
104 /* Exported constants --------------------------------------------------------*/\r
105 /** @defgroup HCD_Exported_Constants HCD Exported Constants\r
106   * @{\r
107   */\r
108 /** @defgroup HCD_Speed HCD Speed\r
109   * @{\r
110   */\r
111 #define HCD_SPEED_HIGH               0\r
112 #define HCD_SPEED_LOW                2  \r
113 #define HCD_SPEED_FULL               3\r
114 /**\r
115   * @}\r
116   */\r
117   \r
118 /** @defgroup HCD_PHY_Module HCD PHY Module\r
119   * @{\r
120   */\r
121 #define HCD_PHY_ULPI                 1\r
122 #define HCD_PHY_EMBEDDED             2\r
123 /**\r
124   * @}\r
125   */\r
126   \r
127 /**\r
128   * @}\r
129   */ \r
130   \r
131 /* Exported macro ------------------------------------------------------------*/\r
132 /** @defgroup HCD_Exported_Macros HCD Exported Macros\r
133  *  @brief macros to handle interrupts and specific clock configurations\r
134  * @{\r
135  */\r
136 #define __HAL_HCD_ENABLE(__HANDLE__)                   USB_EnableGlobalInt ((__HANDLE__)->Instance)\r
137 #define __HAL_HCD_DISABLE(__HANDLE__)                  USB_DisableGlobalInt ((__HANDLE__)->Instance)\r
138 \r
139 #define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__)      ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))\r
140 #define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)    (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))\r
141 #define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__)         (USB_ReadInterrupts((__HANDLE__)->Instance) == 0)    \r
142 \r
143 #define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__)  (USBx_HC(chnum)->HCINT = (__INTERRUPT__)) \r
144 #define __HAL_HCD_MASK_HALT_HC_INT(chnum)             (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM) \r
145 #define __HAL_HCD_UNMASK_HALT_HC_INT(chnum)           (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM) \r
146 #define __HAL_HCD_MASK_ACK_HC_INT(chnum)              (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM) \r
147 #define __HAL_HCD_UNMASK_ACK_HC_INT(chnum)            (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM) \r
148 /**\r
149   * @}\r
150   */\r
151 \r
152 /* Exported functions --------------------------------------------------------*/\r
153 /** @defgroup HCD_Exported_Functions HCD Exported Functions\r
154   * @{\r
155   */\r
156 \r
157 /** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions\r
158   * @{\r
159   */\r
160 HAL_StatusTypeDef      HAL_HCD_Init(HCD_HandleTypeDef *hhcd);\r
161 HAL_StatusTypeDef      HAL_HCD_DeInit (HCD_HandleTypeDef *hhcd);\r
162 HAL_StatusTypeDef      HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd,  \r
163                                   uint8_t ch_num,\r
164                                   uint8_t epnum,\r
165                                   uint8_t dev_address,\r
166                                   uint8_t speed,\r
167                                   uint8_t ep_type,\r
168                                   uint16_t mps);\r
169 \r
170 HAL_StatusTypeDef   HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num);\r
171 void                HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd);\r
172 void                HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd);\r
173 /**\r
174   * @}\r
175   */\r
176 \r
177 /** @defgroup HCD_Exported_Functions_Group2 IO operation functions\r
178   * @{\r
179   */\r
180 HAL_StatusTypeDef       HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd,\r
181                                                  uint8_t pipe, \r
182                                                  uint8_t direction ,\r
183                                                  uint8_t ep_type,  \r
184                                                  uint8_t token, \r
185                                                  uint8_t* pbuff, \r
186                                                  uint16_t length,\r
187                                                  uint8_t do_ping);\r
188 \r
189  /* Non-Blocking mode: Interrupt */\r
190 void                    HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);\r
191 void             HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd);\r
192 void             HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd);\r
193 void             HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd);\r
194 void             HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, \r
195                                                             uint8_t chnum, \r
196                                                             HCD_URBStateTypeDef urb_state);\r
197 /**\r
198   * @}\r
199   */\r
200 \r
201 /** @defgroup HCD_Exported_Functions_Group3 Peripheral Control functions\r
202   * @{\r
203   */\r
204 HAL_StatusTypeDef       HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd);\r
205 HAL_StatusTypeDef       HAL_HCD_Start(HCD_HandleTypeDef *hhcd);\r
206 HAL_StatusTypeDef       HAL_HCD_Stop(HCD_HandleTypeDef *hhcd);\r
207 /**\r
208   * @}\r
209   */\r
210 \r
211 /** @defgroup HCD_Exported_Functions_Group4 Peripheral State functions\r
212   * @{\r
213   */\r
214 HCD_StateTypeDef        HAL_HCD_GetState(HCD_HandleTypeDef *hhcd);\r
215 HCD_URBStateTypeDef     HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum);\r
216 uint32_t                HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum);\r
217 HCD_HCStateTypeDef      HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum);\r
218 uint32_t                HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);\r
219 uint32_t                HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);\r
220 /**\r
221   * @}\r
222   */\r
223 \r
224 /**\r
225   * @}\r
226   */\r
227 \r
228 /* Private macros ------------------------------------------------------------*/\r
229 /** @defgroup HCD_Private_Macros HCD Private Macros\r
230  * @{\r
231  */\r
232 /** @defgroup HCD_Instance_definition HCD Instance definition\r
233   * @{\r
234   */\r
235 #define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_OTG_FS) || \\r
236                                        ((INSTANCE) == USB_OTG_HS))\r
237 /**\r
238   * @}\r
239   */\r
240 \r
241 /**\r
242   * @}\r
243   */\r
244 \r
245 /* Private functions prototypes ----------------------------------------------*/\r
246 /** @defgroup HCD_Private_Functions_Prototypes HCD Private Functions Prototypes\r
247   * @{\r
248   */\r
249 \r
250 /**\r
251   * @}\r
252   */\r
253 \r
254 /* Private functions ---------------------------------------------------------*/\r
255 /** @defgroup HCD_Private_Functions HCD Private Functions\r
256   * @{\r
257   */\r
258 \r
259 /**\r
260   * @}\r
261   */\r
262 \r
263 /**\r
264   * @}\r
265   */\r
266 \r
267 /**\r
268   * @}\r
269   */ \r
270 \r
271 #ifdef __cplusplus\r
272 }\r
273 #endif\r
274 \r
275 #endif /* __STM32F7xx_HAL_HCD_H */\r
276 \r
277 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r