Subversion Repositories DashDisplay

Rev

Rev 61 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32l1xx_hal_pcd_ex.c
  4.   * @author  MCD Application Team
  5.   * @brief   PCD Extended HAL module driver.
  6.   *          This file provides firmware functions to manage the following
  7.   *          functionalities of the USB Peripheral Controller:
  8.   *           + Extended features functions
  9.   *
  10.   ******************************************************************************
  11.   * @attention
  12.   *
  13.   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  14.   * All rights reserved.</center></h2>
  15.   *
  16.   * This software component is licensed by ST under BSD 3-Clause license,
  17.   * the "License"; You may not use this file except in compliance with the
  18.   * License. You may obtain a copy of the License at:
  19.   *                        opensource.org/licenses/BSD-3-Clause
  20.   *
  21.   ******************************************************************************
  22.   */
  23.  
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32l1xx_hal.h"
  26.  
  27. /** @addtogroup STM32L1xx_HAL_Driver
  28.   * @{
  29.   */
  30.  
  31. /** @defgroup PCDEx PCDEx
  32.   * @brief PCD Extended HAL module driver
  33.   * @{
  34.   */
  35.  
  36. #ifdef HAL_PCD_MODULE_ENABLED
  37.  
  38. #if defined (USB)
  39. /* Private types -------------------------------------------------------------*/
  40. /* Private variables ---------------------------------------------------------*/
  41. /* Private constants ---------------------------------------------------------*/
  42. /* Private macros ------------------------------------------------------------*/
  43. /* Private functions ---------------------------------------------------------*/
  44. /* Exported functions --------------------------------------------------------*/
  45.  
  46. /** @defgroup PCDEx_Exported_Functions PCDEx Exported Functions
  47.   * @{
  48.   */
  49.  
  50. /** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions
  51.   * @brief    PCDEx control functions
  52.   *
  53. @verbatim
  54.  ===============================================================================
  55.                  ##### Extended features functions #####
  56.  ===============================================================================
  57.     [..]  This section provides functions allowing to:
  58.       (+) Update FIFO configuration
  59.  
  60. @endverbatim
  61.   * @{
  62.   */
  63.  
  64. /**
  65.   * @brief  Configure PMA for EP
  66.   * @param  hpcd  Device instance
  67.   * @param  ep_addr endpoint address
  68.   * @param  ep_kind endpoint Kind
  69.   *                  USB_SNG_BUF: Single Buffer used
  70.   *                  USB_DBL_BUF: Double Buffer used
  71.   * @param  pmaadress: EP address in The PMA: In case of single buffer endpoint
  72.   *                   this parameter is 16-bit value providing the address
  73.   *                   in PMA allocated to endpoint.
  74.   *                   In case of double buffer endpoint this parameter
  75.   *                   is a 32-bit value providing the endpoint buffer 0 address
  76.   *                   in the LSB part of 32-bit value and endpoint buffer 1 address
  77.   *                   in the MSB part of 32-bit value.
  78.   * @retval HAL status
  79.   */
  80.  
  81. HAL_StatusTypeDef  HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr,
  82.                                        uint16_t ep_kind, uint32_t pmaadress)
  83. {
  84.   PCD_EPTypeDef *ep;
  85.  
  86.   /* initialize ep structure*/
  87.   if ((0x80U & ep_addr) == 0x80U)
  88.   {
  89.     ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
  90.   }
  91.   else
  92.   {
  93.     ep = &hpcd->OUT_ep[ep_addr];
  94.   }
  95.  
  96.   /* Here we check if the endpoint is single or double Buffer*/
  97.   if (ep_kind == PCD_SNG_BUF)
  98.   {
  99.     /* Single Buffer */
  100.     ep->doublebuffer = 0U;
  101.     /* Configure the PMA */
  102.     ep->pmaadress = (uint16_t)pmaadress;
  103.   }
  104.   else /* USB_DBL_BUF */
  105.   {
  106.     /* Double Buffer Endpoint */
  107.     ep->doublebuffer = 1U;
  108.     /* Configure the PMA */
  109.     ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU);
  110.     ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16);
  111.   }
  112.  
  113.   return HAL_OK;
  114. }
  115.  
  116. /**
  117.   * @brief  Software Device Connection,
  118.   *         this function is not required by USB OTG FS peripheral, it is used
  119.   *         only by USB Device FS peripheral.
  120.   * @param  hpcd PCD handle
  121.   * @param  state connection state (0 : disconnected / 1: connected)
  122.   * @retval None
  123.   */
  124. __weak void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state)
  125. {
  126.   /* Prevent unused argument(s) compilation warning */
  127.   UNUSED(hpcd);
  128.   UNUSED(state);
  129.   /* NOTE : This function Should not be modified, when the callback is needed,
  130.             the HAL_PCDEx_SetConnectionState could be implemented in the user file
  131.    */
  132. }
  133.  
  134.  
  135. /**
  136.   * @brief  Send LPM message to user layer callback.
  137.   * @param  hpcd PCD handle
  138.   * @param  msg LPM message
  139.   * @retval HAL status
  140.   */
  141. __weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
  142. {
  143.   /* Prevent unused argument(s) compilation warning */
  144.   UNUSED(hpcd);
  145.   UNUSED(msg);
  146.  
  147.   /* NOTE : This function should not be modified, when the callback is needed,
  148.             the HAL_PCDEx_LPM_Callback could be implemented in the user file
  149.    */
  150. }
  151.  
  152. /**
  153.   * @brief  Send BatteryCharging message to user layer callback.
  154.   * @param  hpcd PCD handle
  155.   * @param  msg LPM message
  156.   * @retval HAL status
  157.   */
  158. __weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
  159. {
  160.   /* Prevent unused argument(s) compilation warning */
  161.   UNUSED(hpcd);
  162.   UNUSED(msg);
  163.  
  164.   /* NOTE : This function should not be modified, when the callback is needed,
  165.             the HAL_PCDEx_BCD_Callback could be implemented in the user file
  166.    */
  167. }
  168.  
  169. /**
  170.   * @}
  171.   */
  172.  
  173. /**
  174.   * @}
  175.   */
  176. #endif /* defined (USB) */
  177. #endif /* HAL_PCD_MODULE_ENABLED */
  178.  
  179. /**
  180.   * @}
  181.   */
  182.  
  183. /**
  184.   * @}
  185.   */
  186.  
  187. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  188.