Skip to content

Class daisy::UartHandler

ClassList > daisy > UartHandler

More...

  • #include <uart.h>

Classes

Type Name
struct Config

Public Types

Type Name
typedef void(* CircularRxCallbackFunctionPtr
enum DmaDirection
typedef void(* EndCallbackFunctionPtr
enum Result
typedef void(* StartCallbackFunctionPtr

Public Functions

Type Name
Result BlockingReceive (uint8_t * buffer, uint16_t size, uint32_t timeout=100)
Result BlockingTransmit (uint8_t * buff, size_t size, uint32_t timeout=100)
int CheckError ()
Result DmaListenStart (uint8_t * buff, size_t size, CircularRxCallbackFunctionPtr cb, void * callback_context)
Result DmaListenStop ()
Result DmaReceive (uint8_t * buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void * callback_context)
Result DmaTransmit (uint8_t * buff, size_t size, UartHandler::StartCallbackFunctionPtr start_callback, UartHandler::EndCallbackFunctionPtr end_callback, void * callback_context)
const Config & GetConfig () const
Result Init (const Config & config)
bool IsListening () const
int PollReceive (uint8_t * buff, size_t size, uint32_t timeout)
Result PollTx (uint8_t * buff, size_t size)
UartHandler ()
UartHandler (const UartHandler & other) = default
UartHandler & operator= (const UartHandler & other) = default

Detailed Description

Uart Peripheral

Author:

shensley

Date:

March 2020

Public Types Documentation

typedef CircularRxCallbackFunctionPtr

typedef void(* daisy::UartHandler::CircularRxCallbackFunctionPtr) (uint8_t *data, size_t size, void *context, Result result);

A callback to be executed when using circular/listening mode includes a callback context, as well as the data to be handled This fires either after half of the size of the user-defined buffer has been transferred from peripheral to memory, or after an IDLE frame is detected.

Parameters:

  • data byte-buffer to fill with data
  • size size of the "data" byte buffer
  • context user-defined context variable to pass state to the callback
  • result state of the UART Handler result, should be OK if things are OK.

enum DmaDirection

enum daisy::UartHandler::DmaDirection {
    RX,
    TX
};

typedef EndCallbackFunctionPtr

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

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


enum Result

enum daisy::UartHandler::Result {
    OK,
    ERR
};

Return values for Uart functions.


typedef StartCallbackFunctionPtr

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

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


Public Functions Documentation

function BlockingReceive

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

Polling Receive

Parameters:

  • buffer input buffer
  • size buffer size
  • timeout How long to timeout for in milliseconds

Returns:

Whether the receive was successful or not


function BlockingTransmit

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

Blocking transmit

Parameters:

  • buff input buffer
  • size buffer size
  • timeout how long in milliseconds the function will wait before returning without successful communication

function CheckError

int daisy::UartHandler::CheckError () 

Returns:

the result of HAL_UART_GetError() to the user.


function DmaListenStart

Result daisy::UartHandler::DmaListenStart (
    uint8_t * buff,
    size_t size,
    CircularRxCallbackFunctionPtr cb,
    void * callback_context
) 

Starts the DMA Reception in "Listen" mode. In this mode the DMA is configured for circular behavior, and the IDLE interrupt is enabled.

At TC, HT, and IDLE interrupts data must be processed.

Size must be set so that at maximum bandwidth, the software has time to process N bytes before the next circular IRQ is fired

Parameters:

  • buff buffer of data accessible by DMA.
  • size size of buffer
  • cb callback that happens containing new bytes to process in software
  • callback_context pointer to user-defined data accessible from callback

function DmaListenStop

Result daisy::UartHandler::DmaListenStop () 

Stops the DMA Reception during listen mode


function 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:

  • *buff input buffer
  • size buffer size
  • start_callback A callback to execute when the transfer starts, or NULL. The callback is called from an interrupt, so keep it fast.
  • end_callback A callback to execute when the transfer finishes, or NULL. The callback is called from an interrupt, so keep it fast.
  • callback_context A pointer that will be passed back to you in the callbacks.

Returns:

Whether the receive was successful or not


function 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:

  • *buff input buffer
  • size buffer size
  • start_callback A callback to execute when the transfer starts, or NULL. The callback is called from an interrupt, so keep it fast.
  • end_callback A callback to execute when the transfer finishes, or NULL. The callback is called from an interrupt, so keep it fast.
  • callback_context A pointer that will be passed back to you in the callbacks.

Returns:

Whether the transmit was successful or not


function GetConfig

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

Returns the current config.


function Init

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

Initializes the UART Peripheral


function IsListening

bool daisy::UartHandler::IsListening () const

Returns whether listen the DmaListen mode is active or not


function PollReceive

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

Will be deprecated soon! Wrapper for BlockingTransmit


function PollTx

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

Will be deprecated soon! Wrapper for BlockingTransmit


function UartHandler [½]

inline daisy::UartHandler::UartHandler () 

function UartHandler [2/2]

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

function operator=

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


The documentation for this class was generated from the following file external-docs/libDaisy/src/per/uart.h