lpuart_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
19 #ifndef LPUART_DRIVER_H__
20 #define LPUART_DRIVER_H__
21 
22 #include <stddef.h>
23 #include "device_registers.h"
24 #include "status.h"
25 #include "interrupt_manager.h"
26 #include "osif.h"
27 #if FEATURE_LPUART_HAS_DMA_ENABLE
28 #include "edma_driver.h"
29 #endif
30 #include "callbacks.h"
31 
38 /*******************************************************************************
39  * Definitions
40  ******************************************************************************/
41 
46 typedef enum
47 {
51 
56 typedef enum
57 {
62 
67 typedef enum
68 {
73 
78 typedef enum
79 {
83 
92 typedef struct
93 {
94  const uint8_t * txBuff;
95  uint8_t * rxBuff;
96  volatile uint32_t txSize;
97  volatile uint32_t rxSize;
98  volatile bool isTxBusy;
99  volatile bool isRxBusy;
100  volatile bool isTxBlocking;
101  volatile bool isRxBlocking;
116 #if FEATURE_LPUART_HAS_DMA_ENABLE
117  uint8_t rxDMAChannel;
118  uint8_t txDMAChannel;
119 #endif
120  semaphore_t rxComplete;
121  semaphore_t txComplete;
125 
130 typedef struct
131 {
132  uint32_t baudRate;
140  uint8_t rxDMAChannel;
142  uint8_t txDMAChannel;
145 
146 /*******************************************************************************
147  * API
148  ******************************************************************************/
149 
150 #if defined(__cplusplus)
151 extern "C" {
152 #endif
153 
171 status_t LPUART_DRV_Init(uint32_t instance, lpuart_state_t * lpuartStatePtr,
172  const lpuart_user_config_t * lpuartUserConfig);
173 
181 status_t LPUART_DRV_Deinit(uint32_t instance);
182 
196  uart_callback_t function,
197  void * callbackParam);
198 
212  uart_callback_t function,
213  void * callbackParam);
214 
229 status_t LPUART_DRV_SendDataBlocking(uint32_t instance,
230  const uint8_t * txBuff,
231  uint32_t txSize,
232  uint32_t timeout);
233 
242 void LPUART_DRV_SendDataPolling(uint32_t instance, const uint8_t *txBuff, uint32_t txSize);
243 
258 status_t LPUART_DRV_SendData(uint32_t instance,
259  const uint8_t * txBuff,
260  uint32_t txSize);
261 
280 status_t LPUART_DRV_GetTransmitStatus(uint32_t instance, uint32_t * bytesRemaining);
281 
288 status_t LPUART_DRV_AbortSendingData(uint32_t instance);
289 
304 status_t LPUART_DRV_ReceiveDataBlocking(uint32_t instance,
305  uint8_t * rxBuff,
306  uint32_t rxSize,
307  uint32_t timeout);
308 
318 status_t LPUART_DRV_ReceiveDataPolling(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize);
319 
334 status_t LPUART_DRV_ReceiveData(uint32_t instance,
335  uint8_t * rxBuff,
336  uint32_t rxSize);
337 
357 status_t LPUART_DRV_GetReceiveStatus(uint32_t instance, uint32_t * bytesRemaining);
358 
366 status_t LPUART_DRV_AbortReceivingData(uint32_t instance);
367 
380 status_t LPUART_DRV_SetBaudRate(uint32_t instance, uint32_t desiredBaudRate);
381 
390 void LPUART_DRV_GetBaudRate(uint32_t instance, uint32_t * configuredBaudRate);
391 
403 status_t LPUART_DRV_SetTxBuffer(uint32_t instance,
404  const uint8_t * txBuff,
405  uint32_t txSize);
406 
418 status_t LPUART_DRV_SetRxBuffer(uint32_t instance,
419  uint8_t * rxBuff,
420  uint32_t rxSize);
421 
424 #if defined(__cplusplus)
425 }
426 #endif
427 
430 #endif /* LPUART_DRIVER_H__ */
431 /******************************************************************************/
432 /* EOF */
433 /******************************************************************************/
status_t LPUART_DRV_AbortSendingData(uint32_t instance)
Terminates a non-blocking transmission early.
status_t LPUART_DRV_SendDataBlocking(uint32_t instance, const uint8_t *txBuff, uint32_t txSize, uint32_t timeout)
Sends data out through the LPUART module using a blocking method.
uart_callback_t LPUART_DRV_InstallTxCallback(uint32_t instance, uart_callback_t function, void *callbackParam)
Installs callback function for the LPUART transmit.
void LPUART_DRV_SendDataPolling(uint32_t instance, const uint8_t *txBuff, uint32_t txSize)
Send out multiple bytes of data using polling method.
status_t LPUART_DRV_Deinit(uint32_t instance)
Shuts down the LPUART by disabling interrupts and transmitter/receiver.
status_t LPUART_DRV_SendData(uint32_t instance, const uint8_t *txBuff, uint32_t txSize)
Sends data out through the LPUART module using a non-blocking method. This enables an a-sync method f...
volatile bool isRxBlocking
void * txCallbackParam
status_t LPUART_DRV_AbortReceivingData(uint32_t instance)
Terminates a non-blocking receive early.
uint8_t txDMAChannel
uart_callback_t rxCallback
status_t LPUART_DRV_ReceiveDataPolling(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize)
Receive multiple bytes of data using polling method.
volatile bool isRxBusy
Definition: lpuart_driver.h:99
semaphore_t rxComplete
void * rxCallbackParam
lpuart_bit_count_per_char_t bitCountPerChar
lpuart_transfer_type_t transferType
lpuart_parity_mode_t parityMode
status_t LPUART_DRV_ReceiveData(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize)
Gets data from the LPUART module by using a non-blocking method. This enables an a-sync method for re...
lpuart_transfer_type_t
Type of LPUART transfer (based on interrupts or DMA).
Definition: lpuart_driver.h:46
lpuart_parity_mode_t
LPUART parity mode.
Definition: lpuart_driver.h:67
uart_callback_t LPUART_DRV_InstallRxCallback(uint32_t instance, uart_callback_t function, void *callbackParam)
Installs callback function for the LPUART receive.
semaphore_t txComplete
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
uint8_t * rxBuff
Definition: lpuart_driver.h:95
uint8_t rxDMAChannel
status_t LPUART_DRV_SetBaudRate(uint32_t instance, uint32_t desiredBaudRate)
Configures the LPUART baud rate.
const uint8_t * txBuff
Definition: lpuart_driver.h:94
status_t LPUART_DRV_Init(uint32_t instance, lpuart_state_t *lpuartStatePtr, const lpuart_user_config_t *lpuartUserConfig)
Initializes an LPUART operation instance.
status_t LPUART_DRV_SetTxBuffer(uint32_t instance, const uint8_t *txBuff, uint32_t txSize)
Sets the internal driver reference to the tx buffer.
uart_callback_t txCallback
volatile status_t transmitStatus
status_t LPUART_DRV_ReceiveDataBlocking(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize, uint32_t timeout)
Gets data from the LPUART module by using a blocking method. Blocking means that the function does no...
volatile uint32_t txSize
Definition: lpuart_driver.h:96
volatile bool isTxBlocking
lpuart_bit_count_per_char_t
LPUART number of bits in a character.
Definition: lpuart_driver.h:56
LPUART configuration structure.
void(* uart_callback_t)(void *driverState, uart_event_t event, void *userData)
Callback for all peripherals which support UART features.
Definition: callbacks.h:103
volatile uint32_t rxSize
Definition: lpuart_driver.h:97
lpuart_stop_bit_count_t
LPUART number of stop bits.
Definition: lpuart_driver.h:78
void LPUART_DRV_GetBaudRate(uint32_t instance, uint32_t *configuredBaudRate)
Returns the LPUART baud rate.
status_t LPUART_DRV_GetTransmitStatus(uint32_t instance, uint32_t *bytesRemaining)
Returns whether the previous transmit is complete.
lpuart_transfer_type_t transferType
lpuart_bit_count_per_char_t bitCountPerChar
volatile status_t receiveStatus
Runtime state of the LPUART driver.
Definition: lpuart_driver.h:92
status_t LPUART_DRV_GetReceiveStatus(uint32_t instance, uint32_t *bytesRemaining)
Returns whether the previous receive is complete.
volatile bool isTxBusy
Definition: lpuart_driver.h:98
status_t LPUART_DRV_SetRxBuffer(uint32_t instance, uint8_t *rxBuff, uint32_t rxSize)
Sets the internal driver reference to the rx buffer.
lpuart_stop_bit_count_t stopBitCount