avr-classes
Classes | Public Member Functions | Static Public Member Functions | List of all members
Usart Class Referenceabstract

#include <usart.h>

Inheritance diagram for Usart:
Usart0

Classes

struct  Config
 
class  InterruptHandler
 

Public Member Functions

virtual void enable (bool state)=0
 
virtual void configure (const Config &config)=0
 
virtual void setData (uint8_t data)=0
 
virtual uint8_t getData (void)=0
 
virtual bool isReadable (void)=0
 
virtual bool isWritable (void)=0
 
virtual void setInterruptHandler (InterruptHandler *handler)=0
 
virtual void enableDataRegisterEmptyInterrupt (bool state)=0
 
virtual void enableRxCompleteInterrupt (bool state)=0
 

Static Public Member Functions

template<uint32_t CPUFREQUENCY>
static bool autoFill (Config &config, uint32_t desiredBaudRate, const char *mode, uint32_t *actualBaudRate=nullptr)
 

Detailed Description

Interface for devices that implement an USART. The interface also contains a callback data type for using interrupts, but this is not required.

Member Function Documentation

◆ autoFill()

template<uint32_t CPUFREQUENCY>
static bool Usart::autoFill ( Config config,
uint32_t  desiredBaudRate,
const char *  mode,
uint32_t *  actualBaudRate = nullptr 
)
inlinestatic

Automatically fills a configuration structure for USART operation.

Parameters
configConfiguration structure to fill.
desiredBaudRateDesired baud rate, e.g. 9600.
modeMode string consisting of 3 characters: number of data bits, parity (odd/even/none, case insensitive) and number of stop bits. Example: "8n1".
actualBaudRateOptional pointer to buffer to receive the baud rate that was actually configured.
Returns
True if configuration structure was filled successfully, false otherwise.
Note
Template parameter CPUFREQUENCY must contain the CPU frequency in Hertz.
Using compile-time constants for baud rate reduces code size dramatically.

◆ configure()

virtual void Usart::configure ( const Config config)
pure virtual

Configures the USART device.

Parameters
configConfiguration for USART device.

Implemented in Usart0.

◆ enable()

virtual void Usart::enable ( bool  state)
pure virtual

Enables or disables the USART on hardware level.

Parameters
stateDesired state of USART, true means enabled, false means disabled.

Implemented in Usart0.

◆ enableDataRegisterEmptyInterrupt()

virtual void Usart::enableDataRegisterEmptyInterrupt ( bool  state)
pure virtual

Enables or disabled the Data Register Empty interrupt.

Parameters
stateTrue to enable interrupt, false to disable.

Implemented in Usart0.

◆ enableRxCompleteInterrupt()

virtual void Usart::enableRxCompleteInterrupt ( bool  state)
pure virtual

Enables or disabled the RX Complete interrupt.

Parameters
stateTrue to enable interrupt, false to disable.

Implemented in Usart0.

◆ getData()

virtual uint8_t Usart::getData ( void  )
pure virtual

Gets the content of the data register.

Note
This might be old or undefined data! Check with isReadable() first.
Returns
Content of data register.

Implemented in Usart0.

◆ isReadable()

virtual bool Usart::isReadable ( void  )
pure virtual

Checks if data is available for reading.

Returns
True if data can be read, false otherwise.

Implemented in Usart0.

◆ isWritable()

virtual bool Usart::isWritable ( void  )
pure virtual

Checks if data register is ready for writing the next data byte.

Returns
True if data can be written, false otherwise.

Implemented in Usart0.

◆ setData()

virtual void Usart::setData ( uint8_t  data)
pure virtual

Writes a data byte into the data register.

Parameters
dataData byte to write.

Implemented in Usart0.

◆ setInterruptHandler()

virtual void Usart::setInterruptHandler ( InterruptHandler handler)
pure virtual

Sets callback for interrupts.

Parameters
handlerPointer to class implementing the interrupt handler interface.

Implemented in Usart0.