libDaisy
Hardware Library for Daisy
daisy::UartHandler Class Reference

Detailed Description

Uart Peripheral

Author
shensley
Date
March 2020

#include <uart.h>

Classes

struct  Config
 

Public Types

enum class  Result { OK , ERR }
 
enum class  DmaDirection { RX , TX }
 
typedef void(* StartCallbackFunctionPtr) (void *context)
 
typedef void(* EndCallbackFunctionPtr) (void *context, Result result)
 

Public Member Functions

 UartHandler ()
 
 UartHandler (const UartHandler &other)=default
 
UartHandleroperator= (const UartHandler &other)=default
 
Result Init (const Config &config)
 
const ConfigGetConfig () const
 
Result BlockingTransmit (uint8_t *buff, size_t size, uint32_t timeout=100)
 
Result BlockingReceive (uint8_t *buffer, uint16_t size, uint32_t timeout=100)
 
Result DmaTransmit (uint8_t *buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void *callback_context)
 
Result DmaReceive (uint8_t *buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void *callback_context)
 
int CheckError ()
 
Result DmaReceiveFifo ()
 
Result FlushFifo ()
 
uint8_t PopFifo ()
 
size_t ReadableFifo ()
 
int PollReceive (uint8_t *buff, size_t size, uint32_t timeout)
 
Result PollTx (uint8_t *buff, size_t size)
 
Result StartRx ()
 
bool RxActive ()
 
Result FlushRx ()
 
uint8_t PopRx ()
 
size_t Readable ()
 

Member Typedef Documentation

◆ EndCallbackFunctionPtr

typedef void(* daisy::UartHandler::EndCallbackFunctionPtr) (void *context, Result result)

A callback to be executed after a dma transfer is completed.

◆ StartCallbackFunctionPtr

typedef void(* daisy::UartHandler::StartCallbackFunctionPtr) (void *context)

A callback to be executed right before a dma transfer is started.

Member Enumeration Documentation

◆ DmaDirection

Enumerator
RX 

&

TX 

&

◆ Result

enum class daisy::UartHandler::Result
strong

Return values for Uart functions.

Enumerator
OK 

&

ERR 

&

Constructor & Destructor Documentation

◆ UartHandler() [1/2]

daisy::UartHandler::UartHandler ( )
inline

◆ UartHandler() [2/2]

daisy::UartHandler::UartHandler ( const UartHandler other)
default

Member Function Documentation

◆ BlockingReceive()

Result daisy::UartHandler::BlockingReceive ( uint8_t *  buffer,
uint16_t  size,
uint32_t  timeout = 100 
)

Polling Receive

Parameters
bufferinput buffer
sizebuffer size
timeoutHow long to timeout for in milliseconds
Returns
Whether the receive was successful or not

◆ BlockingTransmit()

Result daisy::UartHandler::BlockingTransmit ( uint8_t *  buff,
size_t  size,
uint32_t  timeout = 100 
)

Blocking transmit

Parameters
buffinput buffer
sizebuffer size
timeouthow long in milliseconds the function will wait before returning without successful communication

◆ CheckError()

int daisy::UartHandler::CheckError ( )
Returns
the result of HAL_UART_GetError() to the user.

◆ DmaReceive()

Result daisy::UartHandler::DmaReceive ( uint8_t *  buff,
size_t  size,
UartHandler::StartCallbackFunctionPtr  start_callback,
UartHandler::EndCallbackFunctionPtr  end_callback,
void *  callback_context 
)

DMA-based receive

Parameters
*buffinput buffer
sizebuffer size
start_callbackA callback to execute when the transfer starts, or NULL. The callback is called from an interrupt, so keep it fast.
end_callbackA callback to execute when the transfer finishes, or NULL. The callback is called from an interrupt, so keep it fast.
callback_contextA pointer that will be passed back to you in the callbacks.
Returns
Whether the receive was successful or not

◆ DmaReceiveFifo()

Result daisy::UartHandler::DmaReceiveFifo ( )

Start the DMA Receive with a double buffered FIFO

Returns
OK or ERR

◆ DmaTransmit()

Result daisy::UartHandler::DmaTransmit ( uint8_t *  buff,
size_t  size,
UartHandler::StartCallbackFunctionPtr  start_callback,
UartHandler::EndCallbackFunctionPtr  end_callback,
void *  callback_context 
)

DMA-based transmit

Parameters
*buffinput buffer
sizebuffer size
start_callbackA callback to execute when the transfer starts, or NULL. The callback is called from an interrupt, so keep it fast.
end_callbackA callback to execute when the transfer finishes, or NULL. The callback is called from an interrupt, so keep it fast.
callback_contextA pointer that will be passed back to you in the callbacks.
Returns
Whether the transmit was successful or not

◆ FlushFifo()

Result daisy::UartHandler::FlushFifo ( )

Flush all of the data from the fifo

Returns
OK or ERR

◆ FlushRx()

Result daisy::UartHandler::FlushRx ( )

Will be deprecated soon! Wrapper for FlushFifo

◆ GetConfig()

const Config & daisy::UartHandler::GetConfig ( ) const

Returns the current config.

◆ Init()

Result daisy::UartHandler::Init ( const Config config)

Initializes the UART Peripheral

◆ operator=()

UartHandler & daisy::UartHandler::operator= ( const UartHandler other)
default

◆ PollReceive()

int daisy::UartHandler::PollReceive ( uint8_t *  buff,
size_t  size,
uint32_t  timeout 
)

Will be deprecated soon! Wrapper for BlockingTransmit

◆ PollTx()

Result daisy::UartHandler::PollTx ( uint8_t *  buff,
size_t  size 
)

Will be deprecated soon! Wrapper for BlockingTransmit

◆ PopFifo()

uint8_t daisy::UartHandler::PopFifo ( )

Get the top item off of the FIFO

Returns
Top item from the FIFO

◆ PopRx()

uint8_t daisy::UartHandler::PopRx ( )

Will be deprecated soon! Wrapper PopFifo

◆ Readable()

size_t daisy::UartHandler::Readable ( )

Will be deprecated soon! Wrapper for ReadableFifo

◆ ReadableFifo()

size_t daisy::UartHandler::ReadableFifo ( )

How much data is in the FIFO

Returns
number of elements ready to pop from FIFO

◆ RxActive()

bool daisy::UartHandler::RxActive ( )
inline

Will be deprecated soon!

Returns
true. New DMA will always restart itself.

◆ StartRx()

Result daisy::UartHandler::StartRx ( )

Will be deprecated soon! Wrapper for DmaReceiveFifo


The documentation for this class was generated from the following file: