mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_STM/TARGET_STM32H7/device/stm32h7xx_hal_smartcard_ex.c@189:f392fc9709a3, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 22:31:08 2019 +0000
- Revision:
- 189:f392fc9709a3
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 189:f392fc9709a3 | 1 | /** |
AnnaBridge | 189:f392fc9709a3 | 2 | ****************************************************************************** |
AnnaBridge | 189:f392fc9709a3 | 3 | * @file stm32h7xx_hal_smartcard_ex.c |
AnnaBridge | 189:f392fc9709a3 | 4 | * @author MCD Application Team |
AnnaBridge | 189:f392fc9709a3 | 5 | * @brief SMARTCARD HAL module driver. |
AnnaBridge | 189:f392fc9709a3 | 6 | * This file provides extended firmware functions to manage the following |
AnnaBridge | 189:f392fc9709a3 | 7 | * functionalities of the SmartCard. |
AnnaBridge | 189:f392fc9709a3 | 8 | * + Initialization and de-initialization functions |
AnnaBridge | 189:f392fc9709a3 | 9 | * + Peripheral Control functions |
AnnaBridge | 189:f392fc9709a3 | 10 | * |
AnnaBridge | 189:f392fc9709a3 | 11 | @verbatim |
AnnaBridge | 189:f392fc9709a3 | 12 | ============================================================================= |
AnnaBridge | 189:f392fc9709a3 | 13 | ##### SMARTCARD peripheral extended features ##### |
AnnaBridge | 189:f392fc9709a3 | 14 | ============================================================================= |
AnnaBridge | 189:f392fc9709a3 | 15 | [..] |
AnnaBridge | 189:f392fc9709a3 | 16 | The Extended SMARTCARD HAL driver can be used as follows: |
AnnaBridge | 189:f392fc9709a3 | 17 | |
AnnaBridge | 189:f392fc9709a3 | 18 | (#) After having configured the SMARTCARD basic features with HAL_SMARTCARD_Init(), |
AnnaBridge | 189:f392fc9709a3 | 19 | then program SMARTCARD advanced features if required (TX/RX pins swap, TimeOut, |
AnnaBridge | 189:f392fc9709a3 | 20 | auto-retry counter,...) in the hsmartcard AdvancedInit structure. |
AnnaBridge | 189:f392fc9709a3 | 21 | |
AnnaBridge | 189:f392fc9709a3 | 22 | (#) FIFO mode enabling/disabling and RX/TX FIFO threshold programming. |
AnnaBridge | 189:f392fc9709a3 | 23 | |
AnnaBridge | 189:f392fc9709a3 | 24 | -@- When SMARTCARD operates in FIFO mode, FIFO mode must be enabled prior |
AnnaBridge | 189:f392fc9709a3 | 25 | starting RX/TX transfers. Also RX/TX FIFO thresholds must be |
AnnaBridge | 189:f392fc9709a3 | 26 | configured prior starting RX/TX transfers. |
AnnaBridge | 189:f392fc9709a3 | 27 | |
AnnaBridge | 189:f392fc9709a3 | 28 | @endverbatim |
AnnaBridge | 189:f392fc9709a3 | 29 | ****************************************************************************** |
AnnaBridge | 189:f392fc9709a3 | 30 | * @attention |
AnnaBridge | 189:f392fc9709a3 | 31 | * |
AnnaBridge | 189:f392fc9709a3 | 32 | * <h2><center>© Copyright (c) 2017 STMicroelectronics. |
AnnaBridge | 189:f392fc9709a3 | 33 | * All rights reserved.</center></h2> |
AnnaBridge | 189:f392fc9709a3 | 34 | * |
AnnaBridge | 189:f392fc9709a3 | 35 | * This software component is licensed by ST under BSD 3-Clause license, |
AnnaBridge | 189:f392fc9709a3 | 36 | * the "License"; You may not use this file except in compliance with the |
AnnaBridge | 189:f392fc9709a3 | 37 | * License. You may obtain a copy of the License at: |
AnnaBridge | 189:f392fc9709a3 | 38 | * opensource.org/licenses/BSD-3-Clause |
AnnaBridge | 189:f392fc9709a3 | 39 | * |
AnnaBridge | 189:f392fc9709a3 | 40 | ****************************************************************************** |
AnnaBridge | 189:f392fc9709a3 | 41 | */ |
AnnaBridge | 189:f392fc9709a3 | 42 | |
AnnaBridge | 189:f392fc9709a3 | 43 | /* Includes ------------------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 44 | #include "stm32h7xx_hal.h" |
AnnaBridge | 189:f392fc9709a3 | 45 | |
AnnaBridge | 189:f392fc9709a3 | 46 | /** @addtogroup STM32H7xx_HAL_Driver |
AnnaBridge | 189:f392fc9709a3 | 47 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 48 | */ |
AnnaBridge | 189:f392fc9709a3 | 49 | |
AnnaBridge | 189:f392fc9709a3 | 50 | /** @defgroup SMARTCARDEx SMARTCARDEx |
AnnaBridge | 189:f392fc9709a3 | 51 | * @brief SMARTCARD Extended HAL module driver |
AnnaBridge | 189:f392fc9709a3 | 52 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 53 | */ |
AnnaBridge | 189:f392fc9709a3 | 54 | #ifdef HAL_SMARTCARD_MODULE_ENABLED |
AnnaBridge | 189:f392fc9709a3 | 55 | |
AnnaBridge | 189:f392fc9709a3 | 56 | /* Private typedef -----------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 57 | /* Private define ------------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 58 | /* UART RX FIFO depth */ |
AnnaBridge | 189:f392fc9709a3 | 59 | #define RX_FIFO_DEPTH 8U |
AnnaBridge | 189:f392fc9709a3 | 60 | |
AnnaBridge | 189:f392fc9709a3 | 61 | /* UART TX FIFO depth */ |
AnnaBridge | 189:f392fc9709a3 | 62 | #define TX_FIFO_DEPTH 8U |
AnnaBridge | 189:f392fc9709a3 | 63 | |
AnnaBridge | 189:f392fc9709a3 | 64 | /* Private macros ------------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 65 | /* Private variables ---------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 66 | /* Private function prototypes -----------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 67 | static void SMARTCARDEx_SetNbDataToProcess(SMARTCARD_HandleTypeDef *hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 68 | |
AnnaBridge | 189:f392fc9709a3 | 69 | /* Exported functions --------------------------------------------------------*/ |
AnnaBridge | 189:f392fc9709a3 | 70 | /** @defgroup SMARTCARDEx_Exported_Functions SMARTCARD Extended Exported Functions |
AnnaBridge | 189:f392fc9709a3 | 71 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 72 | */ |
AnnaBridge | 189:f392fc9709a3 | 73 | |
AnnaBridge | 189:f392fc9709a3 | 74 | /** @defgroup SMARTCARDEx_Exported_Functions_Group1 Extended Peripheral Control functions |
AnnaBridge | 189:f392fc9709a3 | 75 | * @brief Extended control functions |
AnnaBridge | 189:f392fc9709a3 | 76 | * |
AnnaBridge | 189:f392fc9709a3 | 77 | @verbatim |
AnnaBridge | 189:f392fc9709a3 | 78 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 79 | ##### Peripheral Control functions ##### |
AnnaBridge | 189:f392fc9709a3 | 80 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 81 | [..] |
AnnaBridge | 189:f392fc9709a3 | 82 | This subsection provides a set of functions allowing to initialize the SMARTCARD. |
AnnaBridge | 189:f392fc9709a3 | 83 | (+) HAL_SMARTCARDEx_BlockLength_Config() API allows to configure the Block Length on the fly |
AnnaBridge | 189:f392fc9709a3 | 84 | (+) HAL_SMARTCARDEx_TimeOut_Config() API allows to configure the receiver timeout value on the fly |
AnnaBridge | 189:f392fc9709a3 | 85 | (+) HAL_SMARTCARDEx_EnableReceiverTimeOut() API enables the receiver timeout feature |
AnnaBridge | 189:f392fc9709a3 | 86 | (+) HAL_SMARTCARDEx_DisableReceiverTimeOut() API disables the receiver timeout feature |
AnnaBridge | 189:f392fc9709a3 | 87 | |
AnnaBridge | 189:f392fc9709a3 | 88 | @endverbatim |
AnnaBridge | 189:f392fc9709a3 | 89 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 90 | */ |
AnnaBridge | 189:f392fc9709a3 | 91 | |
AnnaBridge | 189:f392fc9709a3 | 92 | /** @brief Update on the fly the SMARTCARD block length in RTOR register. |
AnnaBridge | 189:f392fc9709a3 | 93 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 94 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 95 | * @param BlockLength SMARTCARD block length (8-bit long at most) |
AnnaBridge | 189:f392fc9709a3 | 96 | * @retval None |
AnnaBridge | 189:f392fc9709a3 | 97 | */ |
AnnaBridge | 189:f392fc9709a3 | 98 | void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength) |
AnnaBridge | 189:f392fc9709a3 | 99 | { |
AnnaBridge | 189:f392fc9709a3 | 100 | MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_BLEN, ((uint32_t)BlockLength << USART_RTOR_BLEN_Pos)); |
AnnaBridge | 189:f392fc9709a3 | 101 | } |
AnnaBridge | 189:f392fc9709a3 | 102 | |
AnnaBridge | 189:f392fc9709a3 | 103 | /** @brief Update on the fly the receiver timeout value in RTOR register. |
AnnaBridge | 189:f392fc9709a3 | 104 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 105 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 106 | * @param TimeOutValue receiver timeout value in number of baud blocks. The timeout |
AnnaBridge | 189:f392fc9709a3 | 107 | * value must be less or equal to 0x0FFFFFFFF. |
AnnaBridge | 189:f392fc9709a3 | 108 | * @retval None |
AnnaBridge | 189:f392fc9709a3 | 109 | */ |
AnnaBridge | 189:f392fc9709a3 | 110 | void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue) |
AnnaBridge | 189:f392fc9709a3 | 111 | { |
AnnaBridge | 189:f392fc9709a3 | 112 | assert_param(IS_SMARTCARD_TIMEOUT_VALUE(hsmartcard->Init.TimeOutValue)); |
AnnaBridge | 189:f392fc9709a3 | 113 | MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_RTO, TimeOutValue); |
AnnaBridge | 189:f392fc9709a3 | 114 | } |
AnnaBridge | 189:f392fc9709a3 | 115 | |
AnnaBridge | 189:f392fc9709a3 | 116 | /** @brief Enable the SMARTCARD receiver timeout feature. |
AnnaBridge | 189:f392fc9709a3 | 117 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 118 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 119 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 120 | */ |
AnnaBridge | 189:f392fc9709a3 | 121 | HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 122 | { |
AnnaBridge | 189:f392fc9709a3 | 123 | if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) |
AnnaBridge | 189:f392fc9709a3 | 124 | { |
AnnaBridge | 189:f392fc9709a3 | 125 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 126 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 127 | |
AnnaBridge | 189:f392fc9709a3 | 128 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 129 | |
AnnaBridge | 189:f392fc9709a3 | 130 | /* Set the USART RTOEN bit */ |
AnnaBridge | 189:f392fc9709a3 | 131 | SET_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); |
AnnaBridge | 189:f392fc9709a3 | 132 | |
AnnaBridge | 189:f392fc9709a3 | 133 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 134 | |
AnnaBridge | 189:f392fc9709a3 | 135 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 136 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 137 | |
AnnaBridge | 189:f392fc9709a3 | 138 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 139 | } |
AnnaBridge | 189:f392fc9709a3 | 140 | else |
AnnaBridge | 189:f392fc9709a3 | 141 | { |
AnnaBridge | 189:f392fc9709a3 | 142 | return HAL_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 143 | } |
AnnaBridge | 189:f392fc9709a3 | 144 | } |
AnnaBridge | 189:f392fc9709a3 | 145 | |
AnnaBridge | 189:f392fc9709a3 | 146 | /** @brief Disable the SMARTCARD receiver timeout feature. |
AnnaBridge | 189:f392fc9709a3 | 147 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 148 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 149 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 150 | */ |
AnnaBridge | 189:f392fc9709a3 | 151 | HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 152 | { |
AnnaBridge | 189:f392fc9709a3 | 153 | if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) |
AnnaBridge | 189:f392fc9709a3 | 154 | { |
AnnaBridge | 189:f392fc9709a3 | 155 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 156 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 157 | |
AnnaBridge | 189:f392fc9709a3 | 158 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 159 | |
AnnaBridge | 189:f392fc9709a3 | 160 | /* Clear the USART RTOEN bit */ |
AnnaBridge | 189:f392fc9709a3 | 161 | CLEAR_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); |
AnnaBridge | 189:f392fc9709a3 | 162 | |
AnnaBridge | 189:f392fc9709a3 | 163 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 164 | |
AnnaBridge | 189:f392fc9709a3 | 165 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 166 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 167 | |
AnnaBridge | 189:f392fc9709a3 | 168 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 169 | } |
AnnaBridge | 189:f392fc9709a3 | 170 | else |
AnnaBridge | 189:f392fc9709a3 | 171 | { |
AnnaBridge | 189:f392fc9709a3 | 172 | return HAL_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 173 | } |
AnnaBridge | 189:f392fc9709a3 | 174 | } |
AnnaBridge | 189:f392fc9709a3 | 175 | |
AnnaBridge | 189:f392fc9709a3 | 176 | /** |
AnnaBridge | 189:f392fc9709a3 | 177 | * @} |
AnnaBridge | 189:f392fc9709a3 | 178 | */ |
AnnaBridge | 189:f392fc9709a3 | 179 | |
AnnaBridge | 189:f392fc9709a3 | 180 | /** @defgroup SMARTCARDEx_Exported_Functions_Group2 Extended Peripheral IO operation functions |
AnnaBridge | 189:f392fc9709a3 | 181 | * @brief SMARTCARD Transmit and Receive functions |
AnnaBridge | 189:f392fc9709a3 | 182 | * |
AnnaBridge | 189:f392fc9709a3 | 183 | @verbatim |
AnnaBridge | 189:f392fc9709a3 | 184 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 185 | ##### IO operation functions ##### |
AnnaBridge | 189:f392fc9709a3 | 186 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 187 | [..] |
AnnaBridge | 189:f392fc9709a3 | 188 | This subsection provides a set of FIFO mode related callback functions. |
AnnaBridge | 189:f392fc9709a3 | 189 | |
AnnaBridge | 189:f392fc9709a3 | 190 | (#) TX/RX Fifos Callbacks: |
AnnaBridge | 189:f392fc9709a3 | 191 | (+) HAL_SMARTCARDEx_RxFifoFullCallback() |
AnnaBridge | 189:f392fc9709a3 | 192 | (+) HAL_SMARTCARDEx_TxFifoEmptyCallback() |
AnnaBridge | 189:f392fc9709a3 | 193 | |
AnnaBridge | 189:f392fc9709a3 | 194 | @endverbatim |
AnnaBridge | 189:f392fc9709a3 | 195 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 196 | */ |
AnnaBridge | 189:f392fc9709a3 | 197 | |
AnnaBridge | 189:f392fc9709a3 | 198 | /** |
AnnaBridge | 189:f392fc9709a3 | 199 | * @brief SMARTCARD RX Fifo full callback. |
AnnaBridge | 189:f392fc9709a3 | 200 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 201 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 202 | * @retval None |
AnnaBridge | 189:f392fc9709a3 | 203 | */ |
AnnaBridge | 189:f392fc9709a3 | 204 | __weak void HAL_SMARTCARDEx_RxFifoFullCallback(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 205 | { |
AnnaBridge | 189:f392fc9709a3 | 206 | /* Prevent unused argument(s) compilation warning */ |
AnnaBridge | 189:f392fc9709a3 | 207 | UNUSED(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 208 | |
AnnaBridge | 189:f392fc9709a3 | 209 | /* NOTE : This function should not be modified, when the callback is needed, |
AnnaBridge | 189:f392fc9709a3 | 210 | the HAL_SMARTCARDEx_RxFifoFullCallback can be implemented in the user file. |
AnnaBridge | 189:f392fc9709a3 | 211 | */ |
AnnaBridge | 189:f392fc9709a3 | 212 | } |
AnnaBridge | 189:f392fc9709a3 | 213 | |
AnnaBridge | 189:f392fc9709a3 | 214 | /** |
AnnaBridge | 189:f392fc9709a3 | 215 | * @brief SMARTCARD TX Fifo empty callback. |
AnnaBridge | 189:f392fc9709a3 | 216 | * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains |
AnnaBridge | 189:f392fc9709a3 | 217 | * the configuration information for the specified SMARTCARD module. |
AnnaBridge | 189:f392fc9709a3 | 218 | * @retval None |
AnnaBridge | 189:f392fc9709a3 | 219 | */ |
AnnaBridge | 189:f392fc9709a3 | 220 | __weak void HAL_SMARTCARDEx_TxFifoEmptyCallback(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 221 | { |
AnnaBridge | 189:f392fc9709a3 | 222 | /* Prevent unused argument(s) compilation warning */ |
AnnaBridge | 189:f392fc9709a3 | 223 | UNUSED(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 224 | |
AnnaBridge | 189:f392fc9709a3 | 225 | /* NOTE : This function should not be modified, when the callback is needed, |
AnnaBridge | 189:f392fc9709a3 | 226 | the HAL_SMARTCARDEx_TxFifoEmptyCallback can be implemented in the user file. |
AnnaBridge | 189:f392fc9709a3 | 227 | */ |
AnnaBridge | 189:f392fc9709a3 | 228 | } |
AnnaBridge | 189:f392fc9709a3 | 229 | |
AnnaBridge | 189:f392fc9709a3 | 230 | /** |
AnnaBridge | 189:f392fc9709a3 | 231 | * @} |
AnnaBridge | 189:f392fc9709a3 | 232 | */ |
AnnaBridge | 189:f392fc9709a3 | 233 | |
AnnaBridge | 189:f392fc9709a3 | 234 | /** @defgroup SMARTCARD_Exported_Functions_Group3 Extended Peripheral Peripheral Control functions |
AnnaBridge | 189:f392fc9709a3 | 235 | * @brief SMARTCARD control functions |
AnnaBridge | 189:f392fc9709a3 | 236 | * |
AnnaBridge | 189:f392fc9709a3 | 237 | @verbatim |
AnnaBridge | 189:f392fc9709a3 | 238 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 239 | ##### Peripheral Control functions ##### |
AnnaBridge | 189:f392fc9709a3 | 240 | =============================================================================== |
AnnaBridge | 189:f392fc9709a3 | 241 | [..] |
AnnaBridge | 189:f392fc9709a3 | 242 | This subsection provides a set of functions allowing to control the SMARTCARD. |
AnnaBridge | 189:f392fc9709a3 | 243 | (+) HAL_SMARTCARDEx_EnableFifoMode() API enables the FIFO mode |
AnnaBridge | 189:f392fc9709a3 | 244 | (+) HAL_SMARTCARDEx_DisableFifoMode() API disables the FIFO mode |
AnnaBridge | 189:f392fc9709a3 | 245 | (+) HAL_SMARTCARDEx_SetTxFifoThreshold() API sets the TX FIFO threshold |
AnnaBridge | 189:f392fc9709a3 | 246 | (+) HAL_SMARTCARDEx_SetRxFifoThreshold() API sets the RX FIFO threshold |
AnnaBridge | 189:f392fc9709a3 | 247 | @endverbatim |
AnnaBridge | 189:f392fc9709a3 | 248 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 249 | */ |
AnnaBridge | 189:f392fc9709a3 | 250 | |
AnnaBridge | 189:f392fc9709a3 | 251 | /** |
AnnaBridge | 189:f392fc9709a3 | 252 | * @brief Enable the FIFO mode. |
AnnaBridge | 189:f392fc9709a3 | 253 | * @param hsmartcard SMARTCARD handle. |
AnnaBridge | 189:f392fc9709a3 | 254 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 255 | */ |
AnnaBridge | 189:f392fc9709a3 | 256 | HAL_StatusTypeDef HAL_SMARTCARDEx_EnableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 257 | { |
AnnaBridge | 189:f392fc9709a3 | 258 | uint32_t tmpcr1; |
AnnaBridge | 189:f392fc9709a3 | 259 | |
AnnaBridge | 189:f392fc9709a3 | 260 | /* Check parameters */ |
AnnaBridge | 189:f392fc9709a3 | 261 | assert_param(IS_UART_FIFO_INSTANCE(hsmartcard->Instance)); |
AnnaBridge | 189:f392fc9709a3 | 262 | |
AnnaBridge | 189:f392fc9709a3 | 263 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 264 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 265 | |
AnnaBridge | 189:f392fc9709a3 | 266 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 267 | |
AnnaBridge | 189:f392fc9709a3 | 268 | /* Save actual SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 269 | tmpcr1 = READ_REG(hsmartcard->Instance->CR1); |
AnnaBridge | 189:f392fc9709a3 | 270 | |
AnnaBridge | 189:f392fc9709a3 | 271 | /* Disable SMARTCARD */ |
AnnaBridge | 189:f392fc9709a3 | 272 | __HAL_SMARTCARD_DISABLE(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 273 | |
AnnaBridge | 189:f392fc9709a3 | 274 | /* Enable FIFO mode */ |
AnnaBridge | 189:f392fc9709a3 | 275 | SET_BIT(tmpcr1, USART_CR1_FIFOEN); |
AnnaBridge | 189:f392fc9709a3 | 276 | hsmartcard->FifoMode = SMARTCARD_FIFOMODE_ENABLE; |
AnnaBridge | 189:f392fc9709a3 | 277 | |
AnnaBridge | 189:f392fc9709a3 | 278 | /* Restore SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 279 | WRITE_REG(hsmartcard->Instance->CR1, tmpcr1); |
AnnaBridge | 189:f392fc9709a3 | 280 | |
AnnaBridge | 189:f392fc9709a3 | 281 | /* Determine the number of data to process during RX/TX ISR execution */ |
AnnaBridge | 189:f392fc9709a3 | 282 | SMARTCARDEx_SetNbDataToProcess(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 283 | |
AnnaBridge | 189:f392fc9709a3 | 284 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 285 | |
AnnaBridge | 189:f392fc9709a3 | 286 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 287 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 288 | |
AnnaBridge | 189:f392fc9709a3 | 289 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 290 | } |
AnnaBridge | 189:f392fc9709a3 | 291 | |
AnnaBridge | 189:f392fc9709a3 | 292 | /** |
AnnaBridge | 189:f392fc9709a3 | 293 | * @brief Disable the FIFO mode. |
AnnaBridge | 189:f392fc9709a3 | 294 | * @param hsmartcard SMARTCARD handle. |
AnnaBridge | 189:f392fc9709a3 | 295 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 296 | */ |
AnnaBridge | 189:f392fc9709a3 | 297 | HAL_StatusTypeDef HAL_SMARTCARDEx_DisableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 298 | { |
AnnaBridge | 189:f392fc9709a3 | 299 | uint32_t tmpcr1; |
AnnaBridge | 189:f392fc9709a3 | 300 | |
AnnaBridge | 189:f392fc9709a3 | 301 | /* Check parameters */ |
AnnaBridge | 189:f392fc9709a3 | 302 | assert_param(IS_UART_FIFO_INSTANCE(hsmartcard->Instance)); |
AnnaBridge | 189:f392fc9709a3 | 303 | |
AnnaBridge | 189:f392fc9709a3 | 304 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 305 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 306 | |
AnnaBridge | 189:f392fc9709a3 | 307 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 308 | |
AnnaBridge | 189:f392fc9709a3 | 309 | /* Save actual SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 310 | tmpcr1 = READ_REG(hsmartcard->Instance->CR1); |
AnnaBridge | 189:f392fc9709a3 | 311 | |
AnnaBridge | 189:f392fc9709a3 | 312 | /* Disable SMARTCARD */ |
AnnaBridge | 189:f392fc9709a3 | 313 | __HAL_SMARTCARD_DISABLE(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 314 | |
AnnaBridge | 189:f392fc9709a3 | 315 | /* Enable FIFO mode */ |
AnnaBridge | 189:f392fc9709a3 | 316 | CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); |
AnnaBridge | 189:f392fc9709a3 | 317 | hsmartcard->FifoMode = SMARTCARD_FIFOMODE_DISABLE; |
AnnaBridge | 189:f392fc9709a3 | 318 | |
AnnaBridge | 189:f392fc9709a3 | 319 | /* Restore SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 320 | WRITE_REG(hsmartcard->Instance->CR1, tmpcr1); |
AnnaBridge | 189:f392fc9709a3 | 321 | |
AnnaBridge | 189:f392fc9709a3 | 322 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 323 | |
AnnaBridge | 189:f392fc9709a3 | 324 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 325 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 326 | |
AnnaBridge | 189:f392fc9709a3 | 327 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 328 | } |
AnnaBridge | 189:f392fc9709a3 | 329 | |
AnnaBridge | 189:f392fc9709a3 | 330 | /** |
AnnaBridge | 189:f392fc9709a3 | 331 | * @brief Set the TXFIFO threshold. |
AnnaBridge | 189:f392fc9709a3 | 332 | * @param hsmartcard SMARTCARD handle. |
AnnaBridge | 189:f392fc9709a3 | 333 | * @param Threshold TX FIFO threshold value |
AnnaBridge | 189:f392fc9709a3 | 334 | * This parameter can be one of the following values: |
AnnaBridge | 189:f392fc9709a3 | 335 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_1_8 |
AnnaBridge | 189:f392fc9709a3 | 336 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_1_4 |
AnnaBridge | 189:f392fc9709a3 | 337 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_1_2 |
AnnaBridge | 189:f392fc9709a3 | 338 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_3_4 |
AnnaBridge | 189:f392fc9709a3 | 339 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_7_8 |
AnnaBridge | 189:f392fc9709a3 | 340 | * @arg @ref SMARTCARD_TXFIFO_THRESHOLD_8_8 |
AnnaBridge | 189:f392fc9709a3 | 341 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 342 | */ |
AnnaBridge | 189:f392fc9709a3 | 343 | HAL_StatusTypeDef HAL_SMARTCARDEx_SetTxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold) |
AnnaBridge | 189:f392fc9709a3 | 344 | { |
AnnaBridge | 189:f392fc9709a3 | 345 | uint32_t tmpcr1; |
AnnaBridge | 189:f392fc9709a3 | 346 | |
AnnaBridge | 189:f392fc9709a3 | 347 | /* Check parameters */ |
AnnaBridge | 189:f392fc9709a3 | 348 | assert_param(IS_UART_FIFO_INSTANCE(hsmartcard->Instance)); |
AnnaBridge | 189:f392fc9709a3 | 349 | assert_param(IS_SMARTCARD_TXFIFO_THRESHOLD(Threshold)); |
AnnaBridge | 189:f392fc9709a3 | 350 | |
AnnaBridge | 189:f392fc9709a3 | 351 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 352 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 353 | |
AnnaBridge | 189:f392fc9709a3 | 354 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 355 | |
AnnaBridge | 189:f392fc9709a3 | 356 | /* Save actual SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 357 | tmpcr1 = READ_REG(hsmartcard->Instance->CR1); |
AnnaBridge | 189:f392fc9709a3 | 358 | |
AnnaBridge | 189:f392fc9709a3 | 359 | /* Disable SMARTCARD */ |
AnnaBridge | 189:f392fc9709a3 | 360 | __HAL_SMARTCARD_DISABLE(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 361 | |
AnnaBridge | 189:f392fc9709a3 | 362 | /* Update TX threshold configuration */ |
AnnaBridge | 189:f392fc9709a3 | 363 | MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_TXFTCFG, Threshold); |
AnnaBridge | 189:f392fc9709a3 | 364 | |
AnnaBridge | 189:f392fc9709a3 | 365 | /* Determine the number of data to process during RX/TX ISR execution */ |
AnnaBridge | 189:f392fc9709a3 | 366 | SMARTCARDEx_SetNbDataToProcess(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 367 | |
AnnaBridge | 189:f392fc9709a3 | 368 | /* Restore SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 369 | MODIFY_REG(hsmartcard->Instance->CR1, USART_CR1_UE, tmpcr1); |
AnnaBridge | 189:f392fc9709a3 | 370 | |
AnnaBridge | 189:f392fc9709a3 | 371 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 372 | |
AnnaBridge | 189:f392fc9709a3 | 373 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 374 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 375 | |
AnnaBridge | 189:f392fc9709a3 | 376 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 377 | } |
AnnaBridge | 189:f392fc9709a3 | 378 | |
AnnaBridge | 189:f392fc9709a3 | 379 | /** |
AnnaBridge | 189:f392fc9709a3 | 380 | * @brief Set the RXFIFO threshold. |
AnnaBridge | 189:f392fc9709a3 | 381 | * @param hsmartcard SMARTCARD handle. |
AnnaBridge | 189:f392fc9709a3 | 382 | * @param Threshold RX FIFO threshold value |
AnnaBridge | 189:f392fc9709a3 | 383 | * This parameter can be one of the following values: |
AnnaBridge | 189:f392fc9709a3 | 384 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_1_8 |
AnnaBridge | 189:f392fc9709a3 | 385 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_1_4 |
AnnaBridge | 189:f392fc9709a3 | 386 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_1_2 |
AnnaBridge | 189:f392fc9709a3 | 387 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_3_4 |
AnnaBridge | 189:f392fc9709a3 | 388 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_7_8 |
AnnaBridge | 189:f392fc9709a3 | 389 | * @arg @ref SMARTCARD_RXFIFO_THRESHOLD_8_8 |
AnnaBridge | 189:f392fc9709a3 | 390 | * @retval HAL status |
AnnaBridge | 189:f392fc9709a3 | 391 | */ |
AnnaBridge | 189:f392fc9709a3 | 392 | HAL_StatusTypeDef HAL_SMARTCARDEx_SetRxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold) |
AnnaBridge | 189:f392fc9709a3 | 393 | { |
AnnaBridge | 189:f392fc9709a3 | 394 | uint32_t tmpcr1; |
AnnaBridge | 189:f392fc9709a3 | 395 | |
AnnaBridge | 189:f392fc9709a3 | 396 | /* Check parameters */ |
AnnaBridge | 189:f392fc9709a3 | 397 | assert_param(IS_UART_FIFO_INSTANCE(hsmartcard->Instance)); |
AnnaBridge | 189:f392fc9709a3 | 398 | assert_param(IS_SMARTCARD_RXFIFO_THRESHOLD(Threshold)); |
AnnaBridge | 189:f392fc9709a3 | 399 | |
AnnaBridge | 189:f392fc9709a3 | 400 | /* Process Locked */ |
AnnaBridge | 189:f392fc9709a3 | 401 | __HAL_LOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 402 | |
AnnaBridge | 189:f392fc9709a3 | 403 | hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; |
AnnaBridge | 189:f392fc9709a3 | 404 | |
AnnaBridge | 189:f392fc9709a3 | 405 | /* Save actual SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 406 | tmpcr1 = READ_REG(hsmartcard->Instance->CR1); |
AnnaBridge | 189:f392fc9709a3 | 407 | |
AnnaBridge | 189:f392fc9709a3 | 408 | /* Disable SMARTCARD */ |
AnnaBridge | 189:f392fc9709a3 | 409 | __HAL_SMARTCARD_DISABLE(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 410 | |
AnnaBridge | 189:f392fc9709a3 | 411 | /* Update RX threshold configuration */ |
AnnaBridge | 189:f392fc9709a3 | 412 | MODIFY_REG(hsmartcard->Instance->CR3, USART_CR3_RXFTCFG, Threshold); |
AnnaBridge | 189:f392fc9709a3 | 413 | |
AnnaBridge | 189:f392fc9709a3 | 414 | /* Determine the number of data to process during RX/TX ISR execution */ |
AnnaBridge | 189:f392fc9709a3 | 415 | SMARTCARDEx_SetNbDataToProcess(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 416 | |
AnnaBridge | 189:f392fc9709a3 | 417 | /* Restore SMARTCARD configuration */ |
AnnaBridge | 189:f392fc9709a3 | 418 | MODIFY_REG(hsmartcard->Instance->CR1, USART_CR1_UE, tmpcr1); |
AnnaBridge | 189:f392fc9709a3 | 419 | |
AnnaBridge | 189:f392fc9709a3 | 420 | hsmartcard->gState = HAL_SMARTCARD_STATE_READY; |
AnnaBridge | 189:f392fc9709a3 | 421 | |
AnnaBridge | 189:f392fc9709a3 | 422 | /* Process Unlocked */ |
AnnaBridge | 189:f392fc9709a3 | 423 | __HAL_UNLOCK(hsmartcard); |
AnnaBridge | 189:f392fc9709a3 | 424 | |
AnnaBridge | 189:f392fc9709a3 | 425 | return HAL_OK; |
AnnaBridge | 189:f392fc9709a3 | 426 | } |
AnnaBridge | 189:f392fc9709a3 | 427 | |
AnnaBridge | 189:f392fc9709a3 | 428 | /** |
AnnaBridge | 189:f392fc9709a3 | 429 | * @} |
AnnaBridge | 189:f392fc9709a3 | 430 | */ |
AnnaBridge | 189:f392fc9709a3 | 431 | |
AnnaBridge | 189:f392fc9709a3 | 432 | /** |
AnnaBridge | 189:f392fc9709a3 | 433 | * @} |
AnnaBridge | 189:f392fc9709a3 | 434 | */ |
AnnaBridge | 189:f392fc9709a3 | 435 | |
AnnaBridge | 189:f392fc9709a3 | 436 | /** @defgroup SMARTCARDEx_Private_Functions SMARTCARD Extended private Functions |
AnnaBridge | 189:f392fc9709a3 | 437 | * @{ |
AnnaBridge | 189:f392fc9709a3 | 438 | */ |
AnnaBridge | 189:f392fc9709a3 | 439 | |
AnnaBridge | 189:f392fc9709a3 | 440 | /** |
AnnaBridge | 189:f392fc9709a3 | 441 | * @brief Calculate the number of data to process in RX/TX ISR. |
AnnaBridge | 189:f392fc9709a3 | 442 | * @note The RX FIFO depth and the TX FIFO depth is extracted from |
AnnaBridge | 189:f392fc9709a3 | 443 | * the USART configuration registers. |
AnnaBridge | 189:f392fc9709a3 | 444 | * @param hsmartcard SMARTCARD handle. |
AnnaBridge | 189:f392fc9709a3 | 445 | * @retval None |
AnnaBridge | 189:f392fc9709a3 | 446 | */ |
AnnaBridge | 189:f392fc9709a3 | 447 | static void SMARTCARDEx_SetNbDataToProcess(SMARTCARD_HandleTypeDef *hsmartcard) |
AnnaBridge | 189:f392fc9709a3 | 448 | { |
AnnaBridge | 189:f392fc9709a3 | 449 | uint8_t rx_fifo_depth; |
AnnaBridge | 189:f392fc9709a3 | 450 | uint8_t tx_fifo_depth; |
AnnaBridge | 189:f392fc9709a3 | 451 | uint8_t rx_fifo_threshold; |
AnnaBridge | 189:f392fc9709a3 | 452 | uint8_t tx_fifo_threshold; |
AnnaBridge | 189:f392fc9709a3 | 453 | /* 2 0U/1U added for MISRAC2012-Rule-18.1_b and MISRAC2012-Rule-18.1_d */ |
AnnaBridge | 189:f392fc9709a3 | 454 | uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; |
AnnaBridge | 189:f392fc9709a3 | 455 | uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; |
AnnaBridge | 189:f392fc9709a3 | 456 | |
AnnaBridge | 189:f392fc9709a3 | 457 | if (hsmartcard->FifoMode == SMARTCARD_FIFOMODE_DISABLE) |
AnnaBridge | 189:f392fc9709a3 | 458 | { |
AnnaBridge | 189:f392fc9709a3 | 459 | hsmartcard->NbTxDataToProcess = 1U; |
AnnaBridge | 189:f392fc9709a3 | 460 | hsmartcard->NbRxDataToProcess = 1U; |
AnnaBridge | 189:f392fc9709a3 | 461 | } |
AnnaBridge | 189:f392fc9709a3 | 462 | else |
AnnaBridge | 189:f392fc9709a3 | 463 | { |
AnnaBridge | 189:f392fc9709a3 | 464 | rx_fifo_depth = RX_FIFO_DEPTH; |
AnnaBridge | 189:f392fc9709a3 | 465 | tx_fifo_depth = TX_FIFO_DEPTH; |
AnnaBridge | 189:f392fc9709a3 | 466 | rx_fifo_threshold = (uint8_t)(READ_BIT(hsmartcard->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); |
AnnaBridge | 189:f392fc9709a3 | 467 | tx_fifo_threshold = (uint8_t)(READ_BIT(hsmartcard->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); |
AnnaBridge | 189:f392fc9709a3 | 468 | hsmartcard->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / (uint16_t)denominator[tx_fifo_threshold]; |
AnnaBridge | 189:f392fc9709a3 | 469 | hsmartcard->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / (uint16_t)denominator[rx_fifo_threshold]; |
AnnaBridge | 189:f392fc9709a3 | 470 | } |
AnnaBridge | 189:f392fc9709a3 | 471 | } |
AnnaBridge | 189:f392fc9709a3 | 472 | |
AnnaBridge | 189:f392fc9709a3 | 473 | /** |
AnnaBridge | 189:f392fc9709a3 | 474 | * @} |
AnnaBridge | 189:f392fc9709a3 | 475 | */ |
AnnaBridge | 189:f392fc9709a3 | 476 | |
AnnaBridge | 189:f392fc9709a3 | 477 | #endif /* HAL_SMARTCARD_MODULE_ENABLED */ |
AnnaBridge | 189:f392fc9709a3 | 478 | |
AnnaBridge | 189:f392fc9709a3 | 479 | /** |
AnnaBridge | 189:f392fc9709a3 | 480 | * @} |
AnnaBridge | 189:f392fc9709a3 | 481 | */ |
AnnaBridge | 189:f392fc9709a3 | 482 | |
AnnaBridge | 189:f392fc9709a3 | 483 | /** |
AnnaBridge | 189:f392fc9709a3 | 484 | * @} |
AnnaBridge | 189:f392fc9709a3 | 485 | */ |
AnnaBridge | 189:f392fc9709a3 | 486 | |
AnnaBridge | 189:f392fc9709a3 | 487 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |