xref: /btstack/port/stm32-l451-miromico-sx1280/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_swpmi.h (revision 2fd737d36a1de5d778cacc671d4b4d8c4f3fed82)
1 /**
2   ******************************************************************************
3   * @file    stm32l4xx_hal_swpmi.h
4   * @author  MCD Application Team
5   * @brief   Header file of SWPMI HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
10   * All rights reserved.</center></h2>
11   *
12   * This software component is licensed by ST under BSD 3-Clause license,
13   * the "License"; You may not use this file except in compliance with the
14   * License. You may obtain a copy of the License at:
15   *                        opensource.org/licenses/BSD-3-Clause
16   *
17   ******************************************************************************
18   */
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_SWPMI_H
22 #define STM32L4xx_HAL_SWPMI_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
31 /** @addtogroup STM32L4xx_HAL_Driver
32   * @{
33   */
34 
35 #if defined(SWPMI1)
36 
37 /** @addtogroup SWPMI
38   * @{
39   */
40 
41 /* Exported types ------------------------------------------------------------*/
42 /** @defgroup SWPMI_Exported_Types SWPMI Exported Types
43   * @{
44   */
45 
46 /**
47   * @brief SWPMI Init Structure definition
48   */
49 typedef struct
50 {
51   uint32_t VoltageClass;             /*!< Specifies the SWP Voltage Class.
52                                           This parameter can be a value of @ref SWPMI_Voltage_Class */
53 
54   uint32_t BitRate;                  /*!< Specifies the SWPMI Bitrate.
55                                           This parameter must be a number between 0 and 63U.
56                                           The Bitrate is computed using the following formula:
57                                           SWPMI_freq = SWPMI_clk / (((BitRate) + 1)  * 4)
58                                           */
59 
60   uint32_t TxBufferingMode;          /*!< Specifies the transmission buffering mode.
61                                           This parameter can be a value of @ref SWPMI_Tx_Buffering_Mode */
62 
63   uint32_t RxBufferingMode;          /*!< Specifies the reception buffering mode.
64                                           This parameter can be a value of @ref SWPMI_Rx_Buffering_Mode */
65 
66 }SWPMI_InitTypeDef;
67 
68 
69 /**
70   * @brief HAL SWPMI State structures definition
71   */
72 typedef enum
73 {
74   HAL_SWPMI_STATE_RESET             = 0x00,    /*!< Peripheral Reset state                             */
75   HAL_SWPMI_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use           */
76   HAL_SWPMI_STATE_BUSY              = 0x02,    /*!< an internal process is ongoing                     */
77   HAL_SWPMI_STATE_BUSY_TX           = 0x12,    /*!< Data Transmission process is ongoing               */
78   HAL_SWPMI_STATE_BUSY_RX           = 0x22,    /*!< Data Reception process is ongoing                  */
79   HAL_SWPMI_STATE_BUSY_TX_RX        = 0x32,    /*!< Data Transmission and Reception process is ongoing */
80   HAL_SWPMI_STATE_TIMEOUT           = 0x03,    /*!< Timeout state                                      */
81   HAL_SWPMI_STATE_ERROR             = 0x04     /*!< Error                                              */
82 }HAL_SWPMI_StateTypeDef;
83 
84 /**
85   * @brief  SWPMI handle Structure definition
86   */
87 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
88 typedef struct __SWPMI_HandleTypeDef
89 #else
90 typedef struct
91 #endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */
92 {
93   SWPMI_TypeDef                  *Instance;     /*!< SWPMI registers base address         */
94 
95   SWPMI_InitTypeDef              Init;          /*!< SWPMI communication parameters       */
96 
97   uint32_t                       *pTxBuffPtr;   /*!< Pointer to SWPMI Tx transfer Buffer  */
98 
99   uint32_t                       TxXferSize;    /*!< SWPMI Tx Transfer size               */
100 
101   uint32_t                       TxXferCount;   /*!< SWPMI Tx Transfer Counter            */
102 
103   uint32_t                       *pRxBuffPtr;   /*!< Pointer to SWPMI Rx transfer Buffer  */
104 
105   uint32_t                       RxXferSize;    /*!< SWPMI Rx Transfer size               */
106 
107   uint32_t                       RxXferCount;   /*!< SWPMI Rx Transfer Counter            */
108 
109   DMA_HandleTypeDef              *hdmatx;       /*!< SWPMI Tx DMA Handle parameters       */
110 
111   DMA_HandleTypeDef              *hdmarx;       /*!< SWPMI Rx DMA Handle parameters       */
112 
113   HAL_LockTypeDef                Lock;          /*!< SWPMI object                         */
114 
115   __IO HAL_SWPMI_StateTypeDef    State;         /*!< SWPMI communication state            */
116 
117   __IO uint32_t                  ErrorCode;     /*!< SWPMI Error code                     */
118 
119 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
120   void (*RxCpltCallback)     (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI receive complete callback */
121   void (*RxHalfCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI receive half complete callback */
122   void (*TxCpltCallback)     (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI transmit complete callback */
123   void (*TxHalfCpltCallback) (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI transmit half complete callback */
124   void (*ErrorCallback)      (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI error callback */
125   void (*MspInitCallback)    (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI MSP init callback */
126   void (*MspDeInitCallback)  (struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI MSP de-init callback */
127 #endif
128 
129 }SWPMI_HandleTypeDef;
130 
131 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
132 /**
133   * @brief  SWPMI callback ID enumeration definition
134   */
135 typedef enum
136 {
137   HAL_SWPMI_RX_COMPLETE_CB_ID     = 0x00U, /*!< SWPMI receive complete callback ID */
138   HAL_SWPMI_RX_HALFCOMPLETE_CB_ID = 0x01U, /*!< SWPMI receive half complete callback ID */
139   HAL_SWPMI_TX_COMPLETE_CB_ID     = 0x02U, /*!< SWPMI transmit complete callback ID */
140   HAL_SWPMI_TX_HALFCOMPLETE_CB_ID = 0x03U, /*!< SWPMI transmit half complete callback ID */
141   HAL_SWPMI_ERROR_CB_ID           = 0x04U, /*!< SWPMI error callback ID */
142   HAL_SWPMI_MSPINIT_CB_ID         = 0x05U, /*!< SWPMI MSP init callback ID */
143   HAL_SWPMI_MSPDEINIT_CB_ID       = 0x06U  /*!< SWPMI MSP de-init callback ID */
144 }HAL_SWPMI_CallbackIDTypeDef;
145 
146 /**
147   * @brief  SWPMI callback pointer definition
148   */
149 typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi);
150 #endif
151 
152 /**
153   * @}
154   */
155 
156 /* Exported constants --------------------------------------------------------*/
157 /** @defgroup SWPMI_Exported_Constants SWPMI Exported Constants
158   * @{
159   */
160 
161 /**
162   * @defgroup SWPMI_Error_Code SWPMI Error Code Bitmap
163   * @{
164   */
165 #define HAL_SWPMI_ERROR_NONE                  ((uint32_t)0x00000000) /*!< No error              */
166 #define HAL_SWPMI_ERROR_CRC                   ((uint32_t)0x00000004) /*!< frame error           */
167 #define HAL_SWPMI_ERROR_OVR                   ((uint32_t)0x00000008) /*!< Overrun error         */
168 #define HAL_SWPMI_ERROR_UDR                   ((uint32_t)0x0000000C) /*!< Underrun error        */
169 #define HAL_SWPMI_ERROR_DMA                   ((uint32_t)0x00000010) /*!< DMA transfer error    */
170 #define HAL_SWPMI_ERROR_TIMEOUT               ((uint32_t)0x00000020) /*!< Transfer timeout      */
171 #define HAL_SWPMI_ERROR_TXBEF_TIMEOUT         ((uint32_t)0x00000040) /*!< End Tx buffer timeout */
172 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
173 #define HAL_SWPMI_ERROR_INVALID_CALLBACK      ((uint32_t)0x00000100) /*!< Invalid callback error */
174 #endif
175 /**
176   * @}
177   */
178 
179 /** @defgroup SWPMI_Voltage_Class SWPMI Voltage Class
180   * @{
181   */
182 #define SWPMI_VOLTAGE_CLASS_C                ((uint32_t)0x00000000)
183 #define SWPMI_VOLTAGE_CLASS_B                SWPMI_OR_CLASS
184 /**
185   * @}
186   */
187 
188 /** @defgroup SWPMI_Tx_Buffering_Mode SWPMI Tx Buffering Mode
189   * @{
190   */
191 #define SWPMI_TX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
192 #define SWPMI_TX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
193 #define SWPMI_TX_MULTI_SOFTWAREBUFFER        SWPMI_CR_TXMODE
194 /**
195   * @}
196   */
197 
198 /** @defgroup SWPMI_Rx_Buffering_Mode SWPMI Rx Buffering Mode
199   * @{
200   */
201 #define SWPMI_RX_NO_SOFTWAREBUFFER           ((uint32_t)0x00000000)
202 #define SWPMI_RX_SINGLE_SOFTWAREBUFFER       ((uint32_t)0x00000000)
203 #define SWPMI_RX_MULTI_SOFTWAREBUFFER        SWPMI_CR_RXMODE
204 /**
205   * @}
206   */
207 
208 /** @defgroup SWPMI_Flags SWPMI Status Flags
209   *        Elements values convention: 0xXXXXXXXX
210   *           - 0xXXXXXXXX  : Flag mask in the ISR register
211   * @{
212   */
213 #define SWPMI_FLAG_RXBFF                 SWPMI_ISR_RXBFF
214 #define SWPMI_FLAG_TXBEF                 SWPMI_ISR_TXBEF
215 #define SWPMI_FLAG_RXBERF                SWPMI_ISR_RXBERF
216 #define SWPMI_FLAG_RXOVRF                SWPMI_ISR_RXOVRF
217 #define SWPMI_FLAG_TXUNRF                SWPMI_ISR_TXUNRF
218 #define SWPMI_FLAG_RXNE                  SWPMI_ISR_RXNE
219 #define SWPMI_FLAG_TXE                   SWPMI_ISR_TXE
220 #define SWPMI_FLAG_TCF                   SWPMI_ISR_TCF
221 #define SWPMI_FLAG_SRF                   SWPMI_ISR_SRF
222 #define SWPMI_FLAG_SUSP                  SWPMI_ISR_SUSP
223 #define SWPMI_FLAG_DEACTF                SWPMI_ISR_DEACTF
224 /**
225   * @}
226   */
227 
228 /** @defgroup SWPMI_Interrupt_definition SWPMI Interrupts Definition
229   *        Elements values convention: 0xXXXX
230   *           - 0xXXXX  : Flag mask in the IER register
231   * @{
232   */
233 #define SWPMI_IT_SRIE                    SWPMI_IER_SRIE
234 #define SWPMI_IT_TCIE                    SWPMI_IER_TCIE
235 #define SWPMI_IT_TIE                     SWPMI_IER_TIE
236 #define SWPMI_IT_RIE                     SWPMI_IER_RIE
237 #define SWPMI_IT_TXUNRIE                 SWPMI_IER_TXUNRIE
238 #define SWPMI_IT_RXOVRIE                 SWPMI_IER_RXOVRIE
239 #define SWPMI_IT_RXBERIE                 SWPMI_IER_RXBERIE
240 #define SWPMI_IT_TXBEIE                  SWPMI_IER_TXBEIE
241 #define SWPMI_IT_RXBFIE                  SWPMI_IER_RXBFIE
242 /**
243   * @}
244   */
245 
246 /**
247   * @}
248   */
249 
250 /* Exported macros -----------------------------------------------------------*/
251 /** @defgroup SWPMI_Exported_Macros SWPMI Exported Macros
252   * @{
253   */
254 
255 /** @brief Reset SWPMI handle state.
256   * @param  __HANDLE__ specifies the SWPMI Handle.
257   * @retval None
258   */
259 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
260 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{                                            \
261                                                      (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \
262                                                      (__HANDLE__)->MspInitCallback = NULL;        \
263                                                      (__HANDLE__)->MspDeInitCallback = NULL;      \
264                                                    } while(0)
265 #else
266 #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SWPMI_STATE_RESET)
267 #endif
268 
269 /**
270   * @brief  Enable the SWPMI peripheral.
271   * @param  __HANDLE__ SWPMI handle
272   * @retval None
273   */
274 #define __HAL_SWPMI_ENABLE(__HANDLE__)   SET_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
275 
276 /**
277   * @brief  Disable the SWPMI peripheral.
278   * @param  __HANDLE__ SWPMI handle
279   * @retval None
280   */
281 #define __HAL_SWPMI_DISABLE(__HANDLE__)  CLEAR_BIT((__HANDLE__)->Instance->CR, SWPMI_CR_SWPACT)
282 
283 /** @brief  Check whether the specified SWPMI flag is set or not.
284   * @param  __HANDLE__ specifies the SWPMI Handle.
285   * @param  __FLAG__ specifies the flag to check.
286   *        This parameter can be one of the following values:
287   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
288   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
289   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
290   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
291   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
292   *            @arg SWPMI_FLAG_RXNE  Receive data register not empty.
293   *            @arg SWPMI_FLAG_TXE  Transmit data register empty.
294   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
295   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
296   *            @arg SWPMI_FLAG_SUSP  SUSPEND flag.
297   *            @arg SWPMI_FLAG_DEACTF  DEACTIVATED flag.
298   * @retval The new state of __FLAG__ (TRUE or FALSE).
299   */
300 #define __HAL_SWPMI_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->ISR, (__FLAG__)) == (__FLAG__))
301 
302 /** @brief  Clear the specified SWPMI ISR flag.
303   * @param  __HANDLE__ specifies the SWPMI Handle.
304   * @param  __FLAG__ specifies the flag to clear.
305   *        This parameter can be one of the following values:
306   *            @arg SWPMI_FLAG_RXBFF  Receive buffer full flag.
307   *            @arg SWPMI_FLAG_TXBEF  Transmit buffer empty flag.
308   *            @arg SWPMI_FLAG_RXBERF  Receive CRC error flag.
309   *            @arg SWPMI_FLAG_RXOVRF  Receive overrun error flag.
310   *            @arg SWPMI_FLAG_TXUNRF  Transmit underrun error flag.
311   *            @arg SWPMI_FLAG_TCF  Transfer complete flag.
312   *            @arg SWPMI_FLAG_SRF  Slave resume flag.
313   * @retval None
314   */
315 #define __HAL_SWPMI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->ICR, (__FLAG__))
316 
317 /** @brief  Enable the specified SWPMI interrupt.
318   * @param  __HANDLE__ specifies the SWPMI Handle.
319   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to enable.
320   *          This parameter can be one of the following values:
321   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
322   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
323   *            @arg SWPMI_IT_TIE   Transmit interrupt.
324   *            @arg SWPMI_IT_RIE   Receive interrupt.
325   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
326   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
327   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
328   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
329   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
330   * @retval None
331   */
332 #define __HAL_SWPMI_ENABLE_IT(__HANDLE__, __INTERRUPT__)   SET_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
333 
334 /** @brief  Disable the specified SWPMI interrupt.
335   * @param  __HANDLE__ specifies the SWPMI Handle.
336   * @param  __INTERRUPT__ specifies the SWPMI interrupt source to disable.
337   *          This parameter can be one of the following values:
338   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
339   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
340   *            @arg SWPMI_IT_TIE   Transmit interrupt.
341   *            @arg SWPMI_IT_RIE   Receive interrupt.
342   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
343   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
344   *            @arg SWPMI_IT_RXBEIE  Receive CRC error interrupt.
345   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
346   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
347   * @retval None
348   */
349 #define __HAL_SWPMI_DISABLE_IT(__HANDLE__, __INTERRUPT__)  CLEAR_BIT((__HANDLE__)->Instance->IER, (__INTERRUPT__))
350 
351 /** @brief  Check whether the specified SWPMI interrupt has occurred or not.
352   * @param  __HANDLE__ specifies the SWPMI Handle.
353   * @param  __IT__ specifies the SWPMI interrupt to check.
354   *          This parameter can be one of the following values:
355   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
356   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
357   *            @arg SWPMI_IT_TIE   Transmit interrupt.
358   *            @arg SWPMI_IT_RIE   Receive interrupt.
359   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
360   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
361   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
362   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
363   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
364   * @retval The new state of __IT__ (TRUE or FALSE).
365   */
366 #define __HAL_SWPMI_GET_IT(__HANDLE__, __IT__)  (READ_BIT((__HANDLE__)->Instance->ISR,(__IT__)) == (__IT__))
367 
368 /** @brief  Check whether the specified SWPMI interrupt source is enabled or not.
369   * @param  __HANDLE__ specifies the SWPMI Handle.
370   * @param  __IT__ specifies the SWPMI interrupt source to check.
371   *          This parameter can be one of the following values:
372   *            @arg SWPMI_IT_SRIE  Slave resume interrupt.
373   *            @arg SWPMI_IT_TCIE  Transmit complete interrupt.
374   *            @arg SWPMI_IT_TIE   Transmit interrupt.
375   *            @arg SWPMI_IT_RIE   Receive interrupt.
376   *            @arg SWPMI_IT_TXUNRIE  Transmit underrun error interrupt.
377   *            @arg SWPMI_IT_RXOVRIE  Receive overrun error interrupt.
378   *            @arg SWPMI_IT_RXBERIE  Receive CRC error interrupt.
379   *            @arg SWPMI_IT_TXBEIE   Transmit buffer empty interrupt.
380   *            @arg SWPMI_IT_RXBFIE   Receive buffer full interrupt.
381   * @retval The new state of __IT__ (TRUE or FALSE).
382   */
383 #define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__)) == (__IT__)) ? SET : RESET)
384 
385 /**
386   * @}
387   */
388 
389 /* Exported functions --------------------------------------------------------*/
390 /** @defgroup SWPMI_Exported_Functions SWPMI Exported Functions
391   * @{
392   */
393 /* Initialization/de-initialization functions  ********************************/
394 HAL_StatusTypeDef HAL_SWPMI_Init(SWPMI_HandleTypeDef *hswpmi);
395 HAL_StatusTypeDef HAL_SWPMI_DeInit(SWPMI_HandleTypeDef *hswpmi);
396 void              HAL_SWPMI_MspInit(SWPMI_HandleTypeDef *hswpmi);
397 void              HAL_SWPMI_MspDeInit(SWPMI_HandleTypeDef *hswpmi);
398 
399 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
400 /* SWPMI callbacks register/unregister functions ********************************/
401 HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
402                                              HAL_SWPMI_CallbackIDTypeDef CallbackID,
403                                              pSWPMI_CallbackTypeDef      pCallback);
404 HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef        *hswpmi,
405                                                HAL_SWPMI_CallbackIDTypeDef CallbackID);
406 #endif
407 
408 /* IO operation functions *****************************************************/
409 HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
410 HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout);
411 HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
412 HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
413 HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
414 HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size);
415 HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi);
416 HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi);
417 HAL_StatusTypeDef HAL_SWPMI_DisableLoopback(SWPMI_HandleTypeDef *hswpmi);
418 void              HAL_SWPMI_IRQHandler(SWPMI_HandleTypeDef *hswpmi);
419 void              HAL_SWPMI_TxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
420 void              HAL_SWPMI_TxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
421 void              HAL_SWPMI_RxCpltCallback(SWPMI_HandleTypeDef *hswpmi);
422 void              HAL_SWPMI_RxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi);
423 void              HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi);
424 
425 /* Peripheral Control and State functions  ************************************/
426 HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(SWPMI_HandleTypeDef *hswpmi);
427 uint32_t               HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi);
428 
429 /**
430   * @}
431   */
432 
433 /* Private types -------------------------------------------------------------*/
434 /** @defgroup SWPMI_Private_Types SWPMI Private Types
435   * @{
436   */
437 
438 /**
439   * @}
440   */
441 
442 /* Private variables ---------------------------------------------------------*/
443 /** @defgroup SWPMI_Private_Variables SWPMI Private Variables
444   * @{
445   */
446 
447 /**
448   * @}
449   */
450 
451 /* Private constants ---------------------------------------------------------*/
452 /** @defgroup SWPMI_Private_Constants SWPMI Private Constants
453   * @{
454   */
455 
456 /**
457   * @}
458   */
459 
460 /* Private macros ------------------------------------------------------------*/
461 /** @defgroup SWPMI_Private_Macros SWPMI Private Macros
462   * @{
463   */
464 
465 
466 #define IS_SWPMI_VOLTAGE_CLASS(__CLASS__)    (((__CLASS__) == SWPMI_VOLTAGE_CLASS_C) || \
467                                               ((__CLASS__) == SWPMI_VOLTAGE_CLASS_B))
468 
469 #define IS_SWPMI_BITRATE_VALUE(__VALUE__)    (((__VALUE__) <= 63U))
470 
471 
472 #define IS_SWPMI_TX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_TX_NO_SOFTWAREBUFFER) || \
473                                               ((__MODE__) == SWPMI_TX_MULTI_SOFTWAREBUFFER))
474 
475 
476 #define IS_SWPMI_RX_BUFFERING_MODE(__MODE__) (((__MODE__) == SWPMI_RX_NO_SOFTWAREBUFFER) || \
477                                               ((__MODE__) == SWPMI_RX_MULTI_SOFTWAREBUFFER))
478 
479 /**
480   * @}
481   */
482 
483 /**
484   * @}
485   */
486 
487 #endif /* SWPMI1 */
488 
489 /**
490   * @}
491   */
492 
493 #ifdef __cplusplus
494 }
495 #endif
496 
497 #endif /* STM32L4xx_HAL_SWPMI_H */
498 
499 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
500