Classes | |
struct | uart_ |
struct | uart_config |
Typedefs | |
typedef enum uart_mode_ | uart_mode_t |
typedef uint8_t | uart_options_t |
typedef struct uart_ | uart_t |
typedef void(* | uart_callback_t) (uart_t *uart, uint32_t status) |
callback invoked directly from ISR More... | |
typedef void(* | uart_notify_callback_t) (uart_t *uart, uart_notify_code_t code) |
Port notification callback function type. More... | |
Enumerations | |
enum | uart_mode_ { UART_FULL, UART_RX_ONLY, UART_TX_ONLY } |
values for mode argument of uart_init More... | |
enum | uart_option_bits_t { UART_OPT_TXWAIT, UART_OPT_CALLBACK_RAW } |
bit values for options argument of uart_init More... | |
enum | uart_notify_code_t { UART_NOTIFY_AFTER_OPEN, UART_NOTIFY_BEFORE_CLOSE, UART_NOTIFY_AFTER_WRITE, UART_NOTIFY_BEFORE_READ, UART_NOTIFY_WAIT_TX } |
Indicates notification, parameters refer to uart_notify_info_t structure. More... | |
Functions | |
bool | uart_set_notify (unsigned uart_nr, uart_notify_callback_t callback) |
Set the notification callback function. More... | |
uart_t * | uart_init (uint8_t uart_nr, uint32_t baudrate, uint32_t config, uart_mode_t mode, uint8_t tx_pin, size_t rx_size, size_t tx_size=0) |
uart_t * | uart_init_ex (const uart_config &cfg) |
void | uart_uninit (uart_t *uart) |
int | uart_get_nr (uart_t *uart) |
uart_t * | uart_get_uart (uint8_t uart_nr) |
Get the uart structure for the given number. More... | |
void | uart_set_callback (uart_t *uart, uart_callback_t callback, void *param) |
Set callback handler for serial port. More... | |
void * | uart_get_callback_param (uart_t *uart) |
Get the callback parameter specified by uart_set_callback() More... | |
static void | uart_set_options (uart_t *uart, uart_options_t options) |
Set option flags. More... | |
uint8_t | uart_get_status (uart_t *uart) |
Get error flags and clear them. More... | |
static uart_options_t | uart_get_options (uart_t *uart) |
void | uart_swap (uart_t *uart, int tx_pin) |
void | uart_set_tx (uart_t *uart, int tx_pin) |
void | uart_set_pins (uart_t *uart, int tx, int rx) |
bool | uart_tx_enabled (uart_t *uart) |
bool | uart_rx_enabled (uart_t *uart) |
uint32_t | uart_set_baudrate_reg (int uart_nr, uint32_t baud_rate) |
set UART baud rate, given the UART number More... | |
uint32_t | uart_set_baudrate (uart_t *uart, uint32_t baud_rate) |
set UART baud rate More... | |
uint32_t | uart_get_baudrate (uart_t *uart) |
get the actual baud rate in use More... | |
size_t | uart_resize_rx_buffer (uart_t *uart, size_t new_size) |
size_t | uart_rx_buffer_size (uart_t *uart) |
size_t | uart_resize_tx_buffer (uart_t *uart, size_t new_size) |
size_t | uart_tx_buffer_size (uart_t *uart) |
size_t | uart_write (uart_t *uart, const void *buffer, size_t size) |
write a block of data More... | |
static size_t | uart_write_char (uart_t *uart, char c) |
queue a single character for output More... | |
size_t | uart_read (uart_t *uart, void *buffer, size_t size) |
read a block of data More... | |
static int | uart_read_char (uart_t *uart) |
read a received character More... | |
int | uart_peek_char (uart_t *uart) |
see what the next character in the rx buffer is More... | |
int | uart_peek_last_char (uart_t *uart) |
fetch last character read out of FIFO More... | |
int | uart_rx_find (uart_t *uart, char c) |
size_t | uart_rx_available (uart_t *uart) |
determine available data which can be read More... | |
size_t | uart_tx_free (uart_t *uart) |
return free space in transmit buffer More... | |
void | uart_wait_tx_empty (uart_t *uart) |
void | uart_set_break (uart_t *uart, bool state) |
Set or clear a break condition on the TX line. More... | |
void | uart_flush (uart_t *uart, uart_mode_t mode=UART_FULL) |
discard any buffered data and reset hardware FIFOs More... | |
void | uart_set_debug (int uart_nr) |
int | uart_get_debug () |
void | uart_start_isr (uart_t *uart) |
enable interrupts for a UART More... | |
void | uart_stop_isr (uart_t *uart) |
disable interrupts for a UART More... | |
void | uart_detach (int uart_nr) |
detach a UART interrupt service routine More... | |
void | uart_detach_all () |
detach all UART interrupt service routines More... | |
uint8_t | uart_disable_interrupts () |
disable interrupts and return current interrupt state More... | |
void | uart_restore_interrupts () |
re-enable interrupts after calling uart_disable_interrupts() More... | |
Detailed Description
Macro Definition Documentation
◆ UART0
#define UART0 0 |
◆ UART1
#define UART1 1 |
◆ UART2
#define UART2 2 |
Virtualised UART0.
◆ UART_5E1
#define UART_5E1 ( UART_NB_BIT_5 | UART_PARITY_EVEN | UART_NB_STOP_BIT_1 ) |
◆ UART_5E2
#define UART_5E2 ( UART_NB_BIT_5 | UART_PARITY_EVEN | UART_NB_STOP_BIT_2 ) |
◆ UART_5N1
#define UART_5N1 ( UART_NB_BIT_5 | UART_PARITY_NONE | UART_NB_STOP_BIT_1 ) |
◆ UART_5N2
#define UART_5N2 ( UART_NB_BIT_5 | UART_PARITY_NONE | UART_NB_STOP_BIT_2 ) |
◆ UART_5O1
#define UART_5O1 ( UART_NB_BIT_5 | UART_PARITY_ODD | UART_NB_STOP_BIT_1 ) |
◆ UART_5O2
#define UART_5O2 ( UART_NB_BIT_5 | UART_PARITY_ODD | UART_NB_STOP_BIT_2 ) |
◆ UART_6E1
#define UART_6E1 ( UART_NB_BIT_6 | UART_PARITY_EVEN | UART_NB_STOP_BIT_1 ) |
◆ UART_6E2
#define UART_6E2 ( UART_NB_BIT_6 | UART_PARITY_EVEN | UART_NB_STOP_BIT_2 ) |
◆ UART_6N1
#define UART_6N1 ( UART_NB_BIT_6 | UART_PARITY_NONE | UART_NB_STOP_BIT_1 ) |
◆ UART_6N2
#define UART_6N2 ( UART_NB_BIT_6 | UART_PARITY_NONE | UART_NB_STOP_BIT_2 ) |
◆ UART_6O1
#define UART_6O1 ( UART_NB_BIT_6 | UART_PARITY_ODD | UART_NB_STOP_BIT_1 ) |
◆ UART_6O2
#define UART_6O2 ( UART_NB_BIT_6 | UART_PARITY_ODD | UART_NB_STOP_BIT_2 ) |
◆ UART_7E1
#define UART_7E1 ( UART_NB_BIT_7 | UART_PARITY_EVEN | UART_NB_STOP_BIT_1 ) |
◆ UART_7E2
#define UART_7E2 ( UART_NB_BIT_7 | UART_PARITY_EVEN | UART_NB_STOP_BIT_2 ) |
◆ UART_7N1
#define UART_7N1 ( UART_NB_BIT_7 | UART_PARITY_NONE | UART_NB_STOP_BIT_1 ) |
◆ UART_7N2
#define UART_7N2 ( UART_NB_BIT_7 | UART_PARITY_NONE | UART_NB_STOP_BIT_2 ) |
◆ UART_7O1
#define UART_7O1 ( UART_NB_BIT_7 | UART_PARITY_ODD | UART_NB_STOP_BIT_1 ) |
◆ UART_7O2
#define UART_7O2 ( UART_NB_BIT_7 | UART_PARITY_ODD | UART_NB_STOP_BIT_2 ) |
◆ UART_8E1
#define UART_8E1 ( UART_NB_BIT_8 | UART_PARITY_EVEN | UART_NB_STOP_BIT_1 ) |
◆ UART_8E2
#define UART_8E2 ( UART_NB_BIT_8 | UART_PARITY_EVEN | UART_NB_STOP_BIT_2 ) |
◆ UART_8N1
#define UART_8N1 ( UART_NB_BIT_8 | UART_PARITY_NONE | UART_NB_STOP_BIT_1 ) |
◆ UART_8N2
#define UART_8N2 ( UART_NB_BIT_8 | UART_PARITY_NONE | UART_NB_STOP_BIT_2 ) |
◆ UART_8O1
#define UART_8O1 ( UART_NB_BIT_8 | UART_PARITY_ODD | UART_NB_STOP_BIT_1 ) |
◆ UART_8O2
#define UART_8O2 ( UART_NB_BIT_8 | UART_PARITY_ODD | UART_NB_STOP_BIT_2 ) |
◆ UART_COUNT
#define UART_COUNT 3 |
Number of UARTs on the system, virtual or otherwise.
◆ UART_NB_BIT_5
#define UART_NB_BIT_5 0B00000000 |
◆ UART_NB_BIT_6
#define UART_NB_BIT_6 0B00000100 |
◆ UART_NB_BIT_7
#define UART_NB_BIT_7 0B00001000 |
◆ UART_NB_BIT_8
#define UART_NB_BIT_8 0B00001100 |
◆ UART_NB_BIT_MASK
#define UART_NB_BIT_MASK 0B00001100 |
◆ UART_NB_STOP_BIT_0
#define UART_NB_STOP_BIT_0 0B00000000 |
◆ UART_NB_STOP_BIT_1
#define UART_NB_STOP_BIT_1 0B00010000 |
◆ UART_NB_STOP_BIT_15
#define UART_NB_STOP_BIT_15 0B00100000 |
◆ UART_NB_STOP_BIT_2
#define UART_NB_STOP_BIT_2 0B00110000 |
◆ UART_NB_STOP_BIT_MASK
#define UART_NB_STOP_BIT_MASK 0B00110000 |
◆ UART_NO
#define UART_NO -1 |
No UART specified.
◆ UART_PARITY_EVEN
#define UART_PARITY_EVEN 0B00000010 |
◆ UART_PARITY_MASK
#define UART_PARITY_MASK 0B00000011 |
◆ UART_PARITY_NONE
#define UART_PARITY_NONE 0B00000000 |
◆ UART_PARITY_ODD
#define UART_PARITY_ODD 0B00000011 |
◆ UART_PHYSICAL_COUNT
#define UART_PHYSICAL_COUNT 2 |
Number of physical UARTs on the system.
◆ UART_RX_FIFO_SIZE
#define UART_RX_FIFO_SIZE 0x80 |
◆ UART_TX_FIFO_SIZE
#define UART_TX_FIFO_SIZE 0x80 |
Typedef Documentation
◆ uart_callback_t
typedef void(* uart_callback_t) (uart_t *uart, uint32_t status) |
callback invoked directly from ISR
- Parameters
-
arg the UART object status UART USIS STATUS flag bits indicating cause of interrupt
- Note
- Values can be: UIFE: TX FIFO Empty UIFF: RX FIFO Full UITO: RX FIFO Timeout UIBD: Break Detected
Errors can be detected via uart_get_status().
◆ uart_mode_t
typedef enum uart_mode_ uart_mode_t |
◆ uart_notify_callback_t
typedef void(* uart_notify_callback_t) (uart_t *uart, uart_notify_code_t code) |
Port notification callback function type.
- Parameters
-
info
- Return values
-
bool true if callback handled operation, false to default to normal operation
◆ uart_options_t
typedef uint8_t uart_options_t |
◆ uart_t
Enumeration Type Documentation
◆ uart_mode_
enum uart_mode_ |
◆ uart_notify_code_t
enum uart_notify_code_t |
Indicates notification, parameters refer to uart_notify_info_t structure.
◆ uart_option_bits_t
enum uart_option_bits_t |
bit values for options
argument of uart_init
- Note
- use _BV(opt) to specify values
Enumerator | |
---|---|
UART_OPT_TXWAIT | If buffers are full then uart_write() will wait for free space. |
UART_OPT_CALLBACK_RAW | ISR invokes user callback function with no pre-processing. |
Function Documentation
◆ uart_detach()
void uart_detach | ( | int | uart_nr | ) |
detach a UART interrupt service routine
- Parameters
-
uart_nr
◆ uart_detach_all()
void uart_detach_all | ( | ) |
detach all UART interrupt service routines
- Note
- call at startup to put all UARTs into a known state
◆ uart_disable_interrupts()
uint8_t uart_disable_interrupts | ( | ) |
disable interrupts and return current interrupt state
- Return values
-
state non-zero if any UART interrupts were active
◆ uart_flush()
void uart_flush | ( | uart_t * | uart, |
uart_mode_t | mode = UART_FULL |
||
) |
discard any buffered data and reset hardware FIFOs
- Parameters
-
uart mode Whether to flush TX, RX or both (the default)
- Note
- this function does not wait for any transmissions to complete
◆ uart_get_baudrate()
uint32_t uart_get_baudrate | ( | uart_t * | uart | ) |
get the actual baud rate in use
- Parameters
-
uart
- Return values
-
uint32_t the baud rate, 0 on failure
◆ uart_get_callback_param()
void* uart_get_callback_param | ( | uart_t * | uart | ) |
Get the callback parameter specified by uart_set_callback()
- Parameters
-
uart
- Return values
-
void* the callback parameter
◆ uart_get_debug()
int uart_get_debug | ( | ) |
◆ uart_get_nr()
◆ uart_get_options()
|
inlinestatic |
◆ uart_get_status()
uint8_t uart_get_status | ( | uart_t * | uart | ) |
Get error flags and clear them.
- Parameters
-
uart
- Return values
-
Status error bits:
- Note
- To detect errors during a transaction, call at the start to clear the flags, then check the value at the end. Only these values are cleared/returned: UIBD: Break Detected UIOF: RX FIFO OverFlow UIFR: Frame Error UIPE: Parity Error
◆ uart_get_uart()
uart_t* uart_get_uart | ( | uint8_t | uart_nr | ) |
Get the uart structure for the given number.
- Parameters
-
uart_nr
- Return values
-
uart_t* Returns nullptr if uart isn't initialised
◆ uart_init()
uart_t* uart_init | ( | uint8_t | uart_nr, |
uint32_t | baudrate, | ||
uint32_t | config, | ||
uart_mode_t | mode, | ||
uint8_t | tx_pin, | ||
size_t | rx_size, | ||
size_t | tx_size = 0 |
||
) |
◆ uart_init_ex()
uart_t* uart_init_ex | ( | const uart_config & | cfg | ) |
◆ uart_peek_char()
see what the next character in the rx buffer is
- Parameters
-
uart
- Return values
-
int returns -1 if buffer is empty or not allocated
- Note
- if buffer isn't allocated data may be in the hardware FIFO, which must be read out using uart_read()
◆ uart_peek_last_char()
fetch last character read out of FIFO
- Parameters
-
uart
- Return values
-
int the character, or -1 if rx buffer is empty or unallocated
- Note
- this is only useful if an rx buffer has been allocated of sufficient size to contain a message. This function then indicates the terminating character.
◆ uart_read()
size_t uart_read | ( | uart_t * | uart, |
void * | buffer, | ||
size_t | size | ||
) |
read a block of data
- Parameters
-
uart buffer where to write the data size requested quantity of bytes to read
- Return values
-
size_t number of bytes read
◆ uart_read_char()
read a received character
- Parameters
-
uart
- Return values
-
the character, -1 on failure
◆ uart_resize_rx_buffer()
size_t uart_resize_rx_buffer | ( | uart_t * | uart, |
size_t | new_size | ||
) |
◆ uart_resize_tx_buffer()
size_t uart_resize_tx_buffer | ( | uart_t * | uart, |
size_t | new_size | ||
) |
◆ uart_restore_interrupts()
void uart_restore_interrupts | ( | ) |
re-enable interrupts after calling uart_disable_interrupts()
◆ uart_rx_available()
size_t uart_rx_available | ( | uart_t * | uart | ) |
determine available data which can be read
- Parameters
-
uart
- Return values
-
size_t
- Note
- this obtains a count of data both in the memory buffer and hardware FIFO
◆ uart_rx_buffer_size()
size_t uart_rx_buffer_size | ( | uart_t * | uart | ) |
◆ uart_rx_enabled()
◆ uart_rx_find()
◆ uart_set_baudrate()
uint32_t uart_set_baudrate | ( | uart_t * | uart, |
uint32_t | baud_rate | ||
) |
set UART baud rate
- Parameters
-
uart baud_rate requested baud rate
- Return values
-
uint32_t actual baudrate used, 0 on failure
◆ uart_set_baudrate_reg()
uint32_t uart_set_baudrate_reg | ( | int | uart_nr, |
uint32_t | baud_rate | ||
) |
set UART baud rate, given the UART number
- Parameters
-
uart_nr baud_rate requested baud rate
- Return values
-
uint32_t actual baudrate used, 0 on failure
◆ uart_set_break()
Set or clear a break condition on the TX line.
- Parameters
-
uart state
◆ uart_set_callback()
void uart_set_callback | ( | uart_t * | uart, |
uart_callback_t | callback, | ||
void * | param | ||
) |
Set callback handler for serial port.
- Parameters
-
uart callback specify nullptr to disable callbacks param user parameter passed to callback
◆ uart_set_debug()
void uart_set_debug | ( | int | uart_nr | ) |
◆ uart_set_notify()
bool uart_set_notify | ( | unsigned | uart_nr, |
uart_notify_callback_t | callback | ||
) |
Set the notification callback function.
- Parameters
-
uart_nr Which uart to register notifications for callback
- Return values
-
bool true on success
◆ uart_set_options()
|
inlinestatic |
Set option flags.
- Parameters
-
uart options The option(s) to set
◆ uart_set_pins()
◆ uart_set_tx()
◆ uart_start_isr()
void uart_start_isr | ( | uart_t * | uart | ) |
enable interrupts for a UART
- Parameters
-
uart
◆ uart_stop_isr()
void uart_stop_isr | ( | uart_t * | uart | ) |
disable interrupts for a UART
- Parameters
-
uart
◆ uart_swap()
◆ uart_tx_buffer_size()
size_t uart_tx_buffer_size | ( | uart_t * | uart | ) |
◆ uart_tx_enabled()
◆ uart_tx_free()
size_t uart_tx_free | ( | uart_t * | uart | ) |
return free space in transmit buffer
◆ uart_uninit()
void uart_uninit | ( | uart_t * | uart | ) |
◆ uart_wait_tx_empty()
void uart_wait_tx_empty | ( | uart_t * | uart | ) |
- Deprecated:
- don't use this - causes extended delays - use callback notification
◆ uart_write()
size_t uart_write | ( | uart_t * | uart, |
const void * | buffer, | ||
size_t | size | ||
) |
write a block of data
- Parameters
-
uart buffer size
- Return values
-
size_t number of bytes buffered for transmission
◆ uart_write_char()
|
inlinestatic |
queue a single character for output
- Parameters
-
uart c
- Return values
-
size_t 1 if character was written, 0 on failure