/**
 * UART 链路事件驱动收发
 * uart_driver_install + UART_DATA 事件立即读空，降低 FIFO 溢出风险。
 */
#ifndef LINK_DMA_UART_H
#define LINK_DMA_UART_H

#include "esp_err.h"
#include "driver/uart.h"
#include <stddef.h>
#include <stdint.h>

typedef void (*link_dma_uart_rx_cb_t)(const uint8_t *data, size_t len, void *ctx);

esp_err_t link_dma_uart_start(uart_port_t port, int baud_rate, int tx_gpio, int rx_gpio,
                              link_dma_uart_rx_cb_t rx_cb, void *rx_ctx);

void link_dma_uart_stop(void);

/** 阻塞直到本批 DMA 发送完成；timeout_ms<0 表示一直等 */
int link_dma_uart_send(const uint8_t *data, size_t len, int timeout_ms);

bool link_dma_uart_is_running(void);

#endif /* LINK_DMA_UART_H */
