1 /**
2   ******************************************************************************
3   * @file    stm32l4xx_hal_smartcard_ex.h
4   * @author  MCD Application Team
5   * @brief   Header file of SMARTCARD HAL Extended module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; COPYRIGHT(c) 2017 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 STM32L4xx_HAL_SMARTCARD_EX_H
38 #define STM32L4xx_HAL_SMARTCARD_EX_H
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 /* Includes ------------------------------------------------------------------*/
45 #include "stm32l4xx_hal_def.h"
46 
47 /** @addtogroup STM32L4xx_HAL_Driver
48   * @{
49   */
50 
51 /** @addtogroup SMARTCARDEx
52   * @{
53   */
54 
55 /* Exported types ------------------------------------------------------------*/
56 /* Exported constants --------------------------------------------------------*/
57 
58 /** @addtogroup SMARTCARDEx_Exported_Constants  SMARTCARD Extended Exported Constants
59   * @{
60   */
61 
62 /** @defgroup SMARTCARDEx_Transmission_Completion_Indication SMARTCARD Transmission Completion Indication
63   * @{
64   */
65 #if defined(USART_TCBGT_SUPPORT)
66 #define SMARTCARD_TCBGT      SMARTCARD_IT_TCBGT /*!< SMARTCARD transmission complete before guard time */
67 #endif /* USART_TCBGT_SUPPORT */
68 #define SMARTCARD_TC         SMARTCARD_IT_TC    /*!< SMARTCARD transmission complete (flag raised when guard time has elapsed) */
69 /**
70   * @}
71   */
72 
73 /** @defgroup SMARTCARDEx_Advanced_Features_Initialization_Type SMARTCARD advanced feature initialization type
74   * @{
75   */
76 #define SMARTCARD_ADVFEATURE_NO_INIT                 0x00000000U    /*!< No advanced feature initialization                  */
77 #define SMARTCARD_ADVFEATURE_TXINVERT_INIT           0x00000001U    /*!< TX pin active level inversion                       */
78 #define SMARTCARD_ADVFEATURE_RXINVERT_INIT           0x00000002U    /*!< RX pin active level inversion                       */
79 #define SMARTCARD_ADVFEATURE_DATAINVERT_INIT         0x00000004U    /*!< Binary data inversion                               */
80 #define SMARTCARD_ADVFEATURE_SWAP_INIT               0x00000008U    /*!< TX/RX pins swap                                     */
81 #define SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT   0x00000010U    /*!< RX overrun disable                                  */
82 #define SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT  0x00000020U    /*!< DMA disable on Reception Error                      */
83 #define SMARTCARD_ADVFEATURE_MSBFIRST_INIT           0x00000080U    /*!< Most significant bit sent/received first            */
84 #if defined(USART_TCBGT_SUPPORT)
85 #define SMARTCARD_ADVFEATURE_TXCOMPLETION            0x00000100U    /*!< TX completion indication before of after guard time */
86 #endif /* USART_TCBGT_SUPPORT */
87 /**
88   * @}
89   */
90 
91 #if defined(USART_CR1_FIFOEN)
92 /** @defgroup SMARTCARDEx_FIFO_mode SMARTCARDEx FIFO mode
93   * @brief    SMARTCARD FIFO mode
94   * @{
95   */
96 #define SMARTCARD_FIFOMODE_DISABLE        0x00000000U                   /*!< FIFO mode disable */
97 #define SMARTCARD_FIFOMODE_ENABLE         USART_CR1_FIFOEN              /*!< FIFO mode enable  */
98 /**
99   * @}
100   */
101 
102 /** @defgroup SMARTCARDEx_TXFIFO_threshold_level SMARTCARDEx TXFIFO threshold level
103   * @brief    SMARTCARD TXFIFO level
104   * @{
105   */
106 #define SMARTCARD_TXFIFO_THRESHOLD_1_8    0x00000000U                               /*!< TXFIFO reaches 1/8 of its depth */
107 #define SMARTCARD_TXFIFO_THRESHOLD_1_4   USART_CR3_TXFTCFG_0                        /*!< TXFIFO reaches 1/4 of its depth */
108 #define SMARTCARD_TXFIFO_THRESHOLD_1_2   USART_CR3_TXFTCFG_1                        /*!< TXFIFO reaches 1/2 of its depth */
109 #define SMARTCARD_TXFIFO_THRESHOLD_3_4   (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1)  /*!< TXFIFO reaches 3/4 of its depth */
110 #define SMARTCARD_TXFIFO_THRESHOLD_7_8   USART_CR3_TXFTCFG_2                        /*!< TXFIFO reaches 7/8 of its depth */
111 #define SMARTCARD_TXFIFO_THRESHOLD_8_8   (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0)  /*!< TXFIFO becomes empty            */
112 /**
113   * @}
114   */
115 
116 /** @defgroup SMARTCARDEx_RXFIFO_threshold_level SMARTCARDEx RXFIFO threshold level
117   * @brief    SMARTCARD RXFIFO level
118   * @{
119   */
120 #define SMARTCARD_RXFIFO_THRESHOLD_1_8   0x00000000U                                /*!< RXFIFO FIFO reaches 1/8 of its depth */
121 #define SMARTCARD_RXFIFO_THRESHOLD_1_4   USART_CR3_RXFTCFG_0                        /*!< RXFIFO FIFO reaches 1/4 of its depth */
122 #define SMARTCARD_RXFIFO_THRESHOLD_1_2   USART_CR3_RXFTCFG_1                        /*!< RXFIFO FIFO reaches 1/2 of its depth */
123 #define SMARTCARD_RXFIFO_THRESHOLD_3_4   (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1)  /*!< RXFIFO FIFO reaches 3/4 of its depth */
124 #define SMARTCARD_RXFIFO_THRESHOLD_7_8   USART_CR3_RXFTCFG_2                        /*!< RXFIFO FIFO reaches 7/8 of its depth */
125 #define SMARTCARD_RXFIFO_THRESHOLD_8_8   (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0)  /*!< RXFIFO FIFO becomes full             */
126 /**
127   * @}
128   */
129 #endif
130 
131 /** @defgroup SMARTCARDEx_Flags SMARTCARD Flags
132   *        Elements values convention: 0xXXXX
133   *           - 0xXXXX  : Flag mask in the ISR register
134   * @{
135   */
136 #if defined(USART_TCBGT_SUPPORT)
137 #define SMARTCARD_FLAG_TCBGT          USART_ISR_TCBGT         /*!< SMARTCARD transmission complete before guard time completion */
138 #endif /* USART_TCBGT_SUPPORT */
139 #define SMARTCARD_FLAG_REACK          USART_ISR_REACK         /*!< SMARTCARD receive enable acknowledge flag  */
140 #define SMARTCARD_FLAG_TEACK          USART_ISR_TEACK         /*!< SMARTCARD transmit enable acknowledge flag */
141 #define SMARTCARD_FLAG_BUSY           USART_ISR_BUSY          /*!< SMARTCARD busy flag                        */
142 #define SMARTCARD_FLAG_EOBF           USART_ISR_EOBF          /*!< SMARTCARD end of block flag                */
143 #define SMARTCARD_FLAG_RTOF           USART_ISR_RTOF          /*!< SMARTCARD receiver timeout flag            */
144 #if defined(USART_CR1_FIFOEN)
145 #define SMARTCARD_FLAG_TXE            USART_ISR_TXE_TXFNF     /*!< SMARTCARD transmit data register empty     */
146 #define SMARTCARD_FLAG_TXFNF          USART_ISR_TXE_TXFNF     /*!< SMARTCARD TXFIFO not full                  */
147 #else
148 #define SMARTCARD_FLAG_TXE            USART_ISR_TXE        /*!< SMARTCARD transmit data register empty     */
149 #endif
150 #define SMARTCARD_FLAG_TC             USART_ISR_TC            /*!< SMARTCARD transmission complete            */
151 #if defined(USART_CR1_FIFOEN)
152 #define SMARTCARD_FLAG_RXNE           USART_ISR_RXNE_RXFNE    /*!< SMARTCARD read data register not empty     */
153 #define SMARTCARD_FLAG_RXFNE          USART_ISR_RXNE_RXFNE    /*!< SMARTCARD RXFIFO not empty                 */
154 #else
155 #define SMARTCARD_FLAG_RXNE           USART_ISR_RXNE       /*!< SMARTCARD read data register not empty     */
156 #endif
157 #define SMARTCARD_FLAG_IDLE           USART_ISR_IDLE          /*!< SMARTCARD idle line detection              */
158 #define SMARTCARD_FLAG_ORE            USART_ISR_ORE           /*!< SMARTCARD overrun error                    */
159 #define SMARTCARD_FLAG_NE             USART_ISR_NE            /*!< SMARTCARD noise error                      */
160 #define SMARTCARD_FLAG_FE             USART_ISR_FE            /*!< SMARTCARD frame error                      */
161 #define SMARTCARD_FLAG_PE             USART_ISR_PE            /*!< SMARTCARD parity error                     */
162 #if defined(USART_CR1_FIFOEN)
163 #define SMARTCARD_FLAG_TXFE           USART_ISR_TXFE          /*!< SMARTCARD TXFIFO Empty flag                */
164 #define SMARTCARD_FLAG_RXFF           USART_ISR_RXFF          /*!< SMARTCARD RXFIFO Full flag                 */
165 #define SMARTCARD_FLAG_RXFT           USART_ISR_RXFT          /*!< SMARTCARD RXFIFO threshold flag            */
166 #define SMARTCARD_FLAG_TXFT           USART_ISR_TXFT          /*!< SMARTCARD TXFIFO threshold flag            */
167 #endif
168 /**
169   * @}
170   */
171 
172 /** @defgroup SMARTCARDEx_Interrupt_definition SMARTCARD Interrupts Definition
173   *        Elements values convention: 000ZZZZZ0XXYYYYYb
174   *           - YYYYY  : Interrupt source position in the XX register (5 bits)
175   *           - XX  : Interrupt source register (2 bits)
176   *                 - 01: CR1 register
177   *                 - 10: CR2 register
178   *                 - 11: CR3 register
179   *           - ZZZZZ  : Flag position in the ISR register(5 bits)
180   * @{
181   */
182 #define SMARTCARD_IT_PE                     0x0028U           /*!< SMARTCARD parity error interruption                 */
183 #define SMARTCARD_IT_TXE                    0x0727U           /*!< SMARTCARD transmit data register empty interruption */
184 #if defined(USART_CR1_FIFOEN)
185 #define SMARTCARD_IT_TXFNF                  0x0727U           /*!< SMARTCARD TX FIFO not full interruption             */
186 #endif
187 #define SMARTCARD_IT_TC                     0x0626U           /*!< SMARTCARD transmission complete interruption        */
188 #define SMARTCARD_IT_RXNE                   0x0525U           /*!< SMARTCARD read data register not empty interruption */
189 #if defined(USART_CR1_FIFOEN)
190 #define SMARTCARD_IT_RXFNE                  0x0525U           /*!< SMARTCARD RXFIFO not empty interruption             */
191 #endif
192 #define SMARTCARD_IT_IDLE                   0x0424U           /*!< SMARTCARD idle line detection interruption          */
193 
194 #define SMARTCARD_IT_ERR                    0x0060U           /*!< SMARTCARD error interruption         */
195 #define SMARTCARD_IT_ORE                    0x0300U           /*!< SMARTCARD overrun error interruption */
196 #define SMARTCARD_IT_NE                     0x0200U           /*!< SMARTCARD noise error interruption   */
197 #define SMARTCARD_IT_FE                     0x0100U           /*!< SMARTCARD frame error interruption   */
198 
199 #define SMARTCARD_IT_EOB                    0x0C3BU           /*!< SMARTCARD end of block interruption     */
200 #define SMARTCARD_IT_RTO                    0x0B3AU           /*!< SMARTCARD receiver timeout interruption */
201 #if defined(USART_TCBGT_SUPPORT)
202 #define SMARTCARD_IT_TCBGT                  0x1978U           /*!< SMARTCARD transmission complete before guard time completion interruption */
203 #endif /* USART_TCBGT_SUPPORT */
204 
205 #if defined(USART_CR1_FIFOEN)
206 #define SMARTCARD_IT_RXFF                    0x183FU          /*!< SMARTCARD RXFIFO full interruption                  */
207 #define SMARTCARD_IT_TXFE                    0x173EU          /*!< SMARTCARD TXFIFO empty interruption                 */
208 #define SMARTCARD_IT_RXFT                    0x1A7CU          /*!< SMARTCARD RXFIFO threshold reached interruption     */
209 #define SMARTCARD_IT_TXFT                    0x1B77U          /*!< SMARTCARD TXFIFO threshold reached interruption     */
210 #endif
211 /**
212   * @}
213   */
214 
215 /** @defgroup SMARTCARDEx_IT_CLEAR_Flags SMARTCARD Interruption Clear Flags
216   * @{
217   */
218 #define SMARTCARD_CLEAR_PEF                 USART_ICR_PECF    /*!< SMARTCARD parity error clear flag          */
219 #define SMARTCARD_CLEAR_FEF                 USART_ICR_FECF    /*!< SMARTCARD framing error clear flag         */
220 #define SMARTCARD_CLEAR_NEF                 USART_ICR_NECF    /*!< SMARTCARD noise error detected clear flag  */
221 #define SMARTCARD_CLEAR_OREF                USART_ICR_ORECF   /*!< SMARTCARD overrun error clear flag         */
222 #define SMARTCARD_CLEAR_IDLEF               USART_ICR_IDLECF  /*!< SMARTCARD idle line detected clear flag    */
223 #if defined(USART_CR1_FIFOEN)
224 #define SMARTCARD_CLEAR_TXFECF              USART_ICR_TXFECF  /*!< TXFIFO empty Clear Flag                    */
225 #endif
226 #define SMARTCARD_CLEAR_TCF                 USART_ICR_TCCF    /*!< SMARTCARD transmission complete clear flag */
227 #if defined(USART_TCBGT_SUPPORT)
228 #define SMARTCARD_CLEAR_TCBGTF              USART_ICR_TCBGTCF /*!< SMARTCARD transmission complete before guard time completion clear flag */
229 #endif /* USART_TCBGT_SUPPORT */
230 #define SMARTCARD_CLEAR_RTOF                USART_ICR_RTOCF   /*!< SMARTCARD receiver time out clear flag     */
231 #define SMARTCARD_CLEAR_EOBF                USART_ICR_EOBCF   /*!< SMARTCARD end of block clear flag          */
232 /**
233   * @}
234   */
235 
236 /**
237   * @}
238   */
239 /* Exported macros -----------------------------------------------------------*/
240 /* Private macros ------------------------------------------------------------*/
241 /** @defgroup SMARTCARDEx_Private_Macros SMARTCARD Extended Private Macros
242   * @{
243   */
244 
245 /** @brief  Set the Transmission Completion flag
246   * @param  __HANDLE__ specifies the SMARTCARD Handle.
247   * @note  If TCBGT (Transmission Complete Before Guard Time) flag is not available or if
248   *        AdvancedInit.TxCompletionIndication is not already filled, the latter is forced
249   *        to SMARTCARD_TC (transmission completion indication when guard time has elapsed).
250   * @retval None
251   */
252 #if defined(USART_TCBGT_SUPPORT)
253 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__)                                                \
254   do {                                                                                                       \
255     if (HAL_IS_BIT_CLR((__HANDLE__)->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXCOMPLETION))        \
256     {                                                                                                        \
257      (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC;                                       \
258     }                                                                                                        \
259     else                                                                                                     \
260     {                                                                                                        \
261       assert_param(IS_SMARTCARD_TRANSMISSION_COMPLETION((__HANDLE__)->AdvancedInit.TxCompletionIndication)); \
262     }                                                                                                        \
263   } while(0U)
264 #else
265 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__)         \
266   do {                                                                \
267     (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC; \
268   } while(0U)
269 #endif /* USART_TCBGT_SUPPORT */
270 
271 /** @brief  Return the transmission completion flag.
272   * @param  __HANDLE__ specifies the SMARTCARD Handle.
273   * @note  Based on AdvancedInit.TxCompletionIndication setting, return TC or TCBGT flag.
274   *        When TCBGT flag (Transmission Complete Before Guard Time) is not available, TC flag is
275   *        reported.
276   * @retval Transmission completion flag
277   */
278 #if defined(USART_TCBGT_SUPPORT)
279 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__)                                                         \
280   (((__HANDLE__)->AdvancedInit.TxCompletionIndication == SMARTCARD_TC) ? (SMARTCARD_FLAG_TC) :  (SMARTCARD_FLAG_TCBGT))
281 #else
282 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__)    (SMARTCARD_FLAG_TC)
283 #endif /* USART_TCBGT_SUPPORT */
284 
285 
286 /**
287   * @brief Ensure that SMARTCARD frame transmission completion used flag is valid.
288   * @param __TXCOMPLETE__ SMARTCARD frame transmission completion used flag.
289   * @retval SET (__TXCOMPLETE__ is valid) or RESET (__TXCOMPLETE__ is invalid)
290   */
291 #if defined(USART_TCBGT_SUPPORT)
292 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) (((__TXCOMPLETE__) == SMARTCARD_TCBGT) ||\
293                                                               ((__TXCOMPLETE__) == SMARTCARD_TC))
294 #else
295 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) ((__TXCOMPLETE__) == SMARTCARD_TC)
296 #endif /* USART_TCBGT_SUPPORT */
297 
298 /**
299   * @brief Ensure that SMARTCARD FIFO mode is valid.
300   * @param __STATE__ SMARTCARD FIFO mode.
301   * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)
302   */
303 #define IS_SMARTCARD_FIFOMODE_STATE(__STATE__) (((__STATE__) == SMARTCARD_FIFOMODE_DISABLE ) || \
304                                          ((__STATE__) == SMARTCARD_FIFOMODE_ENABLE))
305 
306 /**
307   * @brief Ensure that SMARTCARD TXFIFO threshold level is valid.
308   * @param __THRESHOLD__ SMARTCARD TXFIFO threshold level.
309   * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
310   */
311 #define IS_SMARTCARD_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_8) || \
312                                           ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_4)             || \
313                                           ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_2)             || \
314                                           ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_3_4)             || \
315                                           ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_7_8)             || \
316                                           ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_8_8))
317 
318 /**
319   * @brief Ensure that SMARTCARD RXFIFO threshold level is valid.
320   * @param __THRESHOLD__ SMARTCARD RXFIFO threshold level.
321   * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
322   */
323 #define IS_SMARTCARD_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_8) || \
324                                           ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_4)             || \
325                                           ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_2)             || \
326                                           ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_3_4)             || \
327                                           ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_7_8)             || \
328                                           ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_8_8))
329 
330 /**
331   * @}
332   */
333 
334 /* Exported functions --------------------------------------------------------*/
335 /** @addtogroup SMARTCARDEx_Exported_Functions
336   * @{
337   */
338 
339 /* Initialization and de-initialization functions  ****************************/
340 /* IO operation methods *******************************************************/
341 
342 /** @addtogroup SMARTCARDEx_Exported_Functions_Group1
343   * @{
344   */
345 
346 /* Peripheral Control functions ***********************************************/
347 void              HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength);
348 void              HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue);
349 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard);
350 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard);
351 
352 /**
353   * @}
354   */
355 
356 /* Exported functions --------------------------------------------------------*/
357 /** @addtogroup SMARTCARDEx_Exported_Functions_Group2
358   * @{
359   */
360 
361 /* IO operation functions *****************************************************/
362 #if defined(USART_CR1_FIFOEN)
363 void HAL_SMARTCARDEx_RxFifoFullCallback(SMARTCARD_HandleTypeDef *hsmartcard);
364 void HAL_SMARTCARDEx_TxFifoEmptyCallback(SMARTCARD_HandleTypeDef *hsmartcard);
365 #endif
366 
367 /**
368   * @}
369   */
370 
371 /** @addtogroup SMARTCARDEx_Exported_Functions_Group3
372   * @{
373   */
374 
375 /* Peripheral Control functions ***********************************************/
376 #if defined(USART_CR1_FIFOEN)
377 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard);
378 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableFifoMode(SMARTCARD_HandleTypeDef *hsmartcard);
379 HAL_StatusTypeDef HAL_SMARTCARDEx_SetTxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold);
380 HAL_StatusTypeDef HAL_SMARTCARDEx_SetRxFifoThreshold(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Threshold);
381 #endif
382 
383 /**
384   * @}
385   */
386 
387 /**
388   * @}
389   */
390 
391 
392 /* Private functions ---------------------------------------------------------*/
393 
394 /**
395   * @}
396   */
397 
398 /**
399   * @}
400   */
401 
402 #ifdef __cplusplus
403 }
404 #endif
405 
406 #endif /* STM32L4xx_HAL_SMARTCARD_EX_H */
407 
408 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
409