Subversion Repositories LedShow

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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