/** * @file fc41d_ble.h * @brief FC41D 蓝牙调试:配置宏 + 对外接口(仅 BLE_DEBUG_EN=1 有效) * * 分层: * - 本头文件:编译配置、DIP 选路、comm_link 后端 API * - fc41d_ble.c:AT 命令、模组电源、BLE 状态机、QBLETRANMODE 透传收发(内部 static) */ #ifndef FC41D_BLE_H #define FC41D_BLE_H #include #include "publicdata/public_define.h" #if BLE_DEBUG_EN #include "usart.h" /* ---------- 硬件 / 串口 ---------- */ #ifndef FC41D_USART_ID #define FC41D_USART_ID E_USART_7 /* UART7 PE1/PE0,接 FC41D */ #endif #ifndef FC41D_UART_HW_NUM #define FC41D_UART_HW_NUM 7U /* UART7 PE1/PE0 */ #endif #ifndef FC41D_RST_PULSE_MS #define FC41D_RST_PULSE_MS 200U /* 复位脉冲高电平保持时间 */ #endif #ifndef FC41D_POWER_ON_DELAY_MS #define FC41D_POWER_ON_DELAY_MS 5000U /* 复位释放后等待模组启动 */ #endif #ifndef FC41D_UART_BAUD #define FC41D_UART_BAUD 115200U /* UART7 固定波特率,不再做双波特率探测 */ #endif #ifndef FC41D_AT_CMD_WAIT_MS #define FC41D_AT_CMD_WAIT_MS 1500U /* 常规 AT 阻塞等待 */ #endif #ifndef FC41D_GATT_AT_WAIT_MS #define FC41D_GATT_AT_WAIT_MS 1200U /* QBLEGATTSNTFY 阻塞等待 */ #endif #ifndef FC41D_AT_INIT_WAIT_MS #define FC41D_AT_INIT_WAIT_MS 8000U /* QBLEINIT 栈初始化较慢,单独加长 */ #endif #ifndef FC41D_STAT_POLL_MS #define FC41D_STAT_POLL_MS 10000U /* 等待连接时 QBLESTAT 兜底查询间隔 */ #endif #ifndef FC41D_CONNECT_WAIT_MS #define FC41D_CONNECT_WAIT_MS (120000U) /* 等待手机连接最长时间 */ #endif /* ---------- BLE GATT / 广播名(Quectel 手册 §4.2.1 外设示例) ---------- */ #ifndef FC41D_BLE_NAME #define FC41D_BLE_NAME "CCU621_Debug" #endif #ifndef FC41D_SRV_UUID #define FC41D_SRV_UUID "fff1" #endif #ifndef FC41D_CHAR_WRITE_UUID #define FC41D_CHAR_WRITE_UUID "fff2" /* 手机 → 设备 Write */ #endif #ifndef FC41D_CHAR_NOTIFY_UUID #define FC41D_CHAR_NOTIFY_UUID "fff3" /* 设备 → 手机 Notify */ #endif /** QBLETRANMODE 优先尝试的 UUID(部分固件需 fff2 而非 fff3) */ #ifndef FC41D_TRAN_UUID #define FC41D_TRAN_UUID FC41D_CHAR_WRITE_UUID #endif /** 1=连接后 AT+QBLETRANMODE 透传(手册);0=GATT 非透传 +QBLERECV */ #ifndef FC41D_BLE_USE_TRANSPARENT #define FC41D_BLE_USE_TRANSPARENT 1 #endif #ifndef BLE_DEBUG_PRINT #define BLE_DEBUG_PRINT 1 #endif #if BLE_DEBUG_PRINT #include #define BT_PRINT(fmt, ...) printf("[BT] " fmt, ##__VA_ARGS__) #else #define BT_PRINT(fmt, ...) do {} while (0) #endif /* ---------- DIP1 拨码选路(副板 sub_comm 上报) ---------- */ /** @brief 等待副板 DI 帧就绪,便于读取 DIP1 */ int ble_link_wait_dip_ready(uint32_t timeout_ms); /** @brief DIP1=1 时为蓝牙调试上位机模式 */ uint8_t ble_link_is_bt_mode(void); /* ---------- comm_link 后端(与 tcp_server 共用 JSON 协议) ---------- */ int comm_link_ble_start(void); void comm_link_ble_stop(void); void comm_link_ble_process(void); int comm_link_ble_is_client_connected(void); void comm_link_ble_close_client(void); int comm_link_ble_receive_data(uint8_t *buffer, uint32_t buffer_size); int comm_link_ble_rx_upgrade_begin(void); int comm_link_ble_rx_upgrade_end(void); void comm_link_ble_rx_flush_pending(void); int comm_link_ble_diag_trace(void); int comm_link_ble_send_data(const uint8_t *data, uint32_t len); int comm_link_ble_get_peer_info(char *buf, uint32_t buf_size); #endif /* BLE_DEBUG_EN */ #endif /* FC41D_BLE_H */