Components/arch_driver/src/include/driver/uart.h File Reference
#include <c_types.h>
#include <esp_attr.h>
#include <sming_attr.h>
Include dependency graph for Components/arch_driver/src/include/driver/uart.h:

Go to the source code of this file.

Classes

union  smg_uart_config_format_t
 Structure for easier decomposing of format value. More...
 
struct  smg_uart_t
 
struct  smg_uart_config_t
 
struct  smg_uart_intr_config_t
 UART interrupt configuration parameters for smg_uart_intr_config function. More...
 

Macros

#define UART_NO   -1
 No UART specified. More...
 
#define UART_PIN_DEFAULT   (255)
 Use default pin assignments. More...
 
#define UART_PIN_NO_CHANGE   (-1)
 Use default pin assignments. More...
 
#define UART_RX_FIFO_SIZE   0x80
 
#define UART_TX_FIFO_SIZE   0x80
 

Typedefs

using uart_options_t = uint8_t
 
typedef void(* smg_uart_callback_t) (smg_uart_t *uart, uint32_t status)
 callback invoked directly from ISR More...
 
using smg_uart_notify_callback_t = void(*)(smg_uart_t *uart, smg_uart_notify_code_t code)
 Port notification callback function type. More...
 

Enumerations

enum  smg_uart_bits_t { UART_NB_BIT_5 = 0 , UART_NB_BIT_6 = 1 , UART_NB_BIT_7 = 2 , UART_NB_BIT_8 = 3 }
 Number of UART data bits. More...
 
enum  smg_uart_parity_t { UART_PARITY_NONE = 0 , UART_PARITY_EVEN = 2 , UART_PARITY_ODD = 3 }
 UART parity setting. More...
 
enum  smg_uart_stop_bits_t { UART_NB_STOP_BIT_0 = 0 , UART_NB_STOP_BIT_1 = 1 , UART_NB_STOP_BIT_15 = 2 , UART_NB_STOP_BIT_2 = 3 }
 Number of UART stop bits. More...
 
enum  smg_uart_format_settings_t {
  UART_PARITY_MASK = 0B00000011 , UART_PARITY_SHIFT = 0 , UART_NB_BIT_MASK = 0B00001100 , UART_NB_BIT_SHIFT = 2 ,
  UART_NB_STOP_BIT_MASK = 0B00110000 , UART_NB_STOP_BIT_SHIFT = 4
}
 
enum  smg_uart_format_t {
  UART_5N1 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_1, UART_PARITY_NONE) , UART_6N1 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_1, UART_PARITY_NONE) , UART_7N1 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_1, UART_PARITY_NONE) , UART_8N1 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_1, UART_PARITY_NONE) ,
  UART_5N2 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_2, UART_PARITY_NONE) , UART_6N2 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_2, UART_PARITY_NONE) , UART_7N2 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_2, UART_PARITY_NONE) , UART_8N2 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_2, UART_PARITY_NONE) ,
  UART_5E1 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_1, UART_PARITY_EVEN) , UART_6E1 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_1, UART_PARITY_EVEN) , UART_7E1 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_1, UART_PARITY_EVEN) , UART_8E1 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_1, UART_PARITY_EVEN) ,
  UART_5E2 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_2, UART_PARITY_EVEN) , UART_6E2 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_2, UART_PARITY_EVEN) , UART_7E2 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_2, UART_PARITY_EVEN) , UART_8E2 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_2, UART_PARITY_EVEN) ,
  UART_5O1 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_1, UART_PARITY_ODD) , UART_6O1 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_1, UART_PARITY_ODD) , UART_7O1 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_1, UART_PARITY_ODD) , UART_8O1 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_1, UART_PARITY_ODD) ,
  UART_5O2 = SMG_UART_FORMAT(UART_NB_BIT_5, UART_NB_STOP_BIT_2, UART_PARITY_ODD) , UART_6O2 = SMG_UART_FORMAT(UART_NB_BIT_6, UART_NB_STOP_BIT_2, UART_PARITY_ODD) , UART_7O2 = SMG_UART_FORMAT(UART_NB_BIT_7, UART_NB_STOP_BIT_2, UART_PARITY_ODD) , UART_8O2 = SMG_UART_FORMAT(UART_NB_BIT_8, UART_NB_STOP_BIT_2, UART_PARITY_ODD)
}
 Options for config argument of uart_init. More...
 
enum  smg_uart_status_t {
  UART_STATUS_TX_DONE = BIT(14) , UART_STATUS_RXFIFO_TOUT = BIT(8) , UART_STATUS_BRK_DET = BIT(7) , UART_STATUS_CTS_CHG = BIT(6) ,
  UART_STATUS_DSR_CHG = BIT(5) , UART_STATUS_RXFIFO_OVF = BIT(4) , UART_STATUS_FRM_ERR = BIT(3) , UART_STATUS_PARITY_ERR = BIT(2) ,
  UART_STATUS_TXFIFO_EMPTY = BIT(1) , UART_STATUS_RXFIFO_FULL = BIT(0)
}
 
enum  smg_uart_mode_t { UART_FULL , UART_RX_ONLY , UART_TX_ONLY }
 values for mode argument of uart_init More...
 
enum  smg_uart_option_bits_t { UART_OPT_TXWAIT , UART_OPT_CALLBACK_RAW }
 bit values for options argument of uart_init More...
 
enum  smg_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

static constexpr uint8_t SMG_UART_FORMAT (smg_uart_bits_t databits, smg_uart_stop_bits_t stopbits, smg_uart_parity_t parity)
 
bool smg_uart_set_notify (unsigned uart_nr, smg_uart_notify_callback_t callback)
 Set the notification callback function. More...
 
smg_uart_tsmg_uart_init (uint8_t uart_nr, uint32_t baudrate, smg_uart_format_t format, smg_uart_mode_t mode, uint8_t tx_pin, size_t rx_size, size_t tx_size=0)
 
smg_uart_tsmg_uart_init_ex (const smg_uart_config_t &cfg)
 
void smg_uart_uninit (smg_uart_t *uart)
 
void smg_uart_set_format (smg_uart_t *uart, smg_uart_format_t format)
 Set the UART data format. More...
 
bool smg_uart_intr_config (smg_uart_t *uart, const smg_uart_intr_config_t *config)
 Configure interrupt thresholds. More...
 
int smg_uart_get_nr (smg_uart_t *uart)
 
smg_uart_tsmg_uart_get_uart (uint8_t uart_nr)
 Get the uart structure for the given number. More...
 
void smg_uart_set_callback (smg_uart_t *uart, smg_uart_callback_t callback, void *param)
 Set callback handler for serial port. More...
 
void * smg_uart_get_callback_param (smg_uart_t *uart)
 Get the callback parameter specified by uart_set_callback() More...
 
static void smg_uart_set_options (smg_uart_t *uart, uart_options_t options)
 Set option flags. More...
 
uint8_t smg_uart_get_status (smg_uart_t *uart)
 Get error flags and clear them. More...
 
static uart_options_t smg_uart_get_options (smg_uart_t *uart)
 
void smg_uart_swap (smg_uart_t *uart, int tx_pin)
 
bool smg_uart_set_tx (smg_uart_t *uart, int tx_pin)
 
bool smg_uart_set_pins (smg_uart_t *uart, int tx_pin, int rx_pin)
 
bool smg_uart_tx_enabled (smg_uart_t *uart)
 
bool smg_uart_rx_enabled (smg_uart_t *uart)
 
uint32_t smg_uart_set_baudrate_reg (int uart_nr, uint32_t baud_rate)
 set UART baud rate, given the UART number More...
 
uint32_t smg_uart_set_baudrate (smg_uart_t *uart, uint32_t baud_rate)
 set UART baud rate More...
 
uint32_t smg_uart_get_baudrate (smg_uart_t *uart)
 get the actual baud rate in use More...
 
size_t smg_uart_resize_rx_buffer (smg_uart_t *uart, size_t new_size)
 
size_t smg_uart_rx_buffer_size (smg_uart_t *uart)
 
size_t smg_uart_resize_tx_buffer (smg_uart_t *uart, size_t new_size)
 
size_t smg_uart_tx_buffer_size (smg_uart_t *uart)
 
size_t smg_uart_write (smg_uart_t *uart, const void *buffer, size_t size)
 write a block of data More...
 
static size_t smg_uart_write_char (smg_uart_t *uart, char c)
 queue a single character for output More...
 
size_t smg_uart_read (smg_uart_t *uart, void *buffer, size_t size)
 read a block of data More...
 
static int smg_uart_read_char (smg_uart_t *uart)
 read a received character More...
 
int smg_uart_peek_char (smg_uart_t *uart)
 see what the next character in the rx buffer is More...
 
int smg_uart_peek_last_char (smg_uart_t *uart)
 fetch last character read out of FIFO More...
 
int smg_uart_rx_find (smg_uart_t *uart, char c)
 
size_t smg_uart_rx_available (smg_uart_t *uart)
 determine available data which can be read More...
 
size_t smg_uart_tx_free (smg_uart_t *uart)
 return free space in transmit buffer More...
 
void smg_uart_wait_tx_empty (smg_uart_t *uart)
 
void smg_uart_set_break (smg_uart_t *uart, bool state)
 Set or clear a break condition on the TX line. More...
 
void smg_uart_flush (smg_uart_t *uart, smg_uart_mode_t mode=UART_FULL)
 discard any buffered data and reset hardware FIFOs More...
 
void smg_uart_set_debug (int uart_nr)
 
int smg_uart_get_debug ()
 
void smg_uart_start_isr (smg_uart_t *uart)
 enable interrupts for a UART More...
 
void smg_uart_stop_isr (smg_uart_t *uart)
 disable interrupts for a UART More...
 
void smg_uart_detach (int uart_nr)
 detach a UART interrupt service routine More...
 
void smg_uart_detach_all ()
 detach all UART interrupt service routines More...
 
uint8_t smg_uart_disable_interrupts ()
 disable interrupts and return current interrupt state More...
 
void smg_uart_restore_interrupts ()
 re-enable interrupts after calling uart_disable_interrupts() More...
 
bool smg_uart_realloc_buffer (SerialBuffer *&buffer, size_t new_size)
 

Function Documentation

◆ smg_uart_realloc_buffer()

bool smg_uart_realloc_buffer ( SerialBuffer *&  buffer,
size_t  new_size 
)