Loading...
Searching...
No Matches
L4::Uart_apb Class Reference

Driver for the Advanced Peripheral Bus (APB) UART from the Cortex-M System Design Kit (CMSDK). More...

`#include <uart_apb.h>`

Inheritance diagram for L4::Uart_apb:
Collaboration diagram for L4::Uart_apb:

## Public Member Functions

| Uart_apb (unsigned freq)
| freq == 0 means unknown and don't change baud rate
bool | startup (Io_register_block const *) override
| Start the UART driver.
void | shutdown () override
| Terminate the UART driver.
bool | change_mode (Transfer_mode m, Baud_rate r) override
| Set certain parameters of the UART.
int | write (char const *s, unsigned long count, bool blocking=true) const override
| Transmit a number of characters.
bool | enable_rx_irq (bool enable) override
| Enable the receive IRQ.
int | char_avail () const override
| Check if there is at least one character available for reading from the UART.
int | get_char (bool blocking=true) const override
| Read a character from the UART.
Public Member Functions inherited from L4::Uart
Transfer_mode | mode () const
| Return the transfer mode.
Baud_rate | rate () const
| Return the baud rate.
virtual void | irq_ack ()
| Acknowledge a received interrupt.

## Additional Inherited Members

Protected Member Functions inherited from L4::Uart
template<typename Uart_driver, bool Timeout_guard = true>
int | generic_write (char const *s, unsigned long count, bool blocking=true) const
| Internal function transmitting each character one-after-another and finally waiting that the transmission did actually finish.

## Detailed Description

Driver for the Advanced Peripheral Bus (APB) UART from the Cortex-M System Design Kit (CMSDK).

Definition at line 17 of file uart_apb.h.

## Member Function Documentation

## change_mode()

bool L4::Uart_apb::change_mode | ( | Transfer_mode | m,
|  | Baud_rate | r )

overridevirtual

Set certain parameters of the UART.

Parameters

  m | UART mode. Depends on the hardware.
  r | Baud rate.

Return values

  true | Mode setting succeeded (or was not performed at all).
  false | Mode setting failed for some reason.

Note
  Some drivers don't perform any mode setting at all and just return true.

Implements L4::Uart.

## char_avail()

int L4::Uart_apb::char_avail | ( |  | ) | const

overridevirtual

Check if there is at least one character available for reading from the UART.

Returns
  0 if there is no character available for reading, !=0 otherwise.

Implements L4::Uart.

## enable_rx_irq()

bool L4::Uart_apb::enable_rx_irq | ( | bool |  | ) |

overridevirtual

Enable the receive IRQ.

Return values

  true | The RX IRQ was successfully enabled / disabled.
  false | The RX IRQ couldn't be enabled / disabled. The driver does not support this operation.

Reimplemented from L4::Uart.

## get_char()

int L4::Uart_apb::get_char | ( | bool | blocking = true | ) | const

overridevirtual

Read a character from the UART.

Parameters

  blocking | If true, wait until a character is available for reading. Otherwise do not wait and just return -1 if no character is available.

Returns
  The actual character read from the UART.

Implements L4::Uart.

## shutdown()

void L4::Uart_apb::shutdown | ( |  | ) |

overridevirtual

Terminate the UART driver.

This includes disabling of interrupts.

Implements L4::Uart.

## startup()

bool L4::Uart_apb::startup | ( | Io_register_block const * | regs | ) |

overridevirtual

Start the UART driver.

Parameters

  regs | IO register block of the UART.

Return values

  true | Startup succeeded.
  false | Startup failed.

Implements L4::Uart.

## write()

int L4::Uart_apb::write | ( | char const * | s,
|  | unsigned long | count,
|  | bool | blocking = true ) const

overridevirtual

Transmit a number of characters.

Parameters

  s | Buffer containing the characters.
  count | Number of characters to transmit.
  blocking | If true, wait until there is space in the transmit buffer and also wait until every character was successful transmitted. Otherwise do not wait.

Returns
  The number of successfully written characters.

Implements L4::Uart.

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

- pkg/drivers-frst/uart/include/uart_apb.h