/*
 * UART 通信驱动
 * 用于 Release 模式下接管「APP_DEBUG_UART_NUM」对应 UART 作为普通通信串口
 * 注意：启用此功能后，ESP_LOG/printf 将不可用
 */

#ifndef UART_COMM_H
#define UART_COMM_H

#include "esp_err.h"
#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/* UART 配置参数 */
#define UART_COMM_DEFAULT_BAUDRATE  115200
#define UART_COMM_BUFFER_SIZE       1024
#define UART_COMM_QUEUE_SIZE        8

/* 初始化 UART 作为普通通信串口
 * 仅在 APP_UART_MODE_DEBUG=y 时有效
 * 返回 ESP_OK 成功，其他错误码失败
 */
esp_err_t uart_comm_init(int baudrate);

/* 反初始化，恢复默认状态 */
void uart_comm_deinit(void);

/* 发送数据 */
int uart_comm_send(const uint8_t *data, size_t len);
int uart_comm_send_string(const char *str);

/* 接收数据（非阻塞） */
int uart_comm_receive(uint8_t *buf, size_t buf_size, uint32_t timeout_ms);

/* 检查是否已初始化 */
int uart_comm_is_initialized(void);

/* 清空接收缓冲区 */
void uart_comm_flush(void);

#ifdef __cplusplus
}
#endif

#endif /* UART_COMM_H */
