File syn_uart.h¶
File List > drivers > syn_uart.h
Go to the documentation of this file
#ifndef SYN_UART_H
#define SYN_UART_H
#include "../common/syn_defs.h"
#include "../port/syn_port_uart.h"
#include "../util/syn_ringbuf.h"
#ifdef __cplusplus
extern "C" {
#endif
/* ── Configuration defaults (override in syn_config.h) ───────────────── */
#ifndef SYN_UART_TX_BUF_SIZE
#define SYN_UART_TX_BUF_SIZE 128
#endif
#ifndef SYN_UART_RX_BUF_SIZE
#define SYN_UART_RX_BUF_SIZE 128
#endif
#ifndef SYN_UART_MAX_INSTANCES
#define SYN_UART_MAX_INSTANCES 2
#endif
/* ── UART handle ────────────────────────────────────────────────────────── */
typedef struct {
SYN_UARTInstance instance;
SYN_RingBuf tx_rb;
SYN_RingBuf rx_rb;
uint8_t tx_buf[SYN_UART_TX_BUF_SIZE];
uint8_t rx_buf[SYN_UART_RX_BUF_SIZE];
bool initialized;
} SYN_UART;
/* ── API ────────────────────────────────────────────────────────────────── */
SYN_Status syn_uart_init(SYN_UART *uart, SYN_UARTInstance instance, uint32_t baudrate);
SYN_Status syn_uart_deinit(SYN_UART *uart);
SYN_Status syn_uart_write_str(const SYN_UART *uart, const char *str, uint32_t timeout_ms);
SYN_Status syn_uart_write(const SYN_UART *uart, const uint8_t *data, size_t len,
uint32_t timeout_ms);
size_t syn_uart_read(SYN_UART *uart, uint8_t *data, size_t max_len);
bool syn_uart_rx_isr_feed(SYN_UART *uart, uint8_t byte);
#ifdef __cplusplus
}
#endif
#endif /* SYN_UART_H */