Initial commit: CCU621_M firmware project with BLE debug link support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-08 17:28:36 +08:00
commit 9ceb218f80
1597 changed files with 724159 additions and 0 deletions
+124
View File
@@ -0,0 +1,124 @@
/**
* @file fc41d_ble.h
* @brief FC41D 蓝牙调试:配置宏 + 对外接口(仅 BLE_DEBUG_EN=1 有效)
*
* 分层:
* - 本头文件:编译配置、DIP 选路、comm_link 后端 API
* - fc41d_ble.cAT 命令、模组电源、BLE 状态机、QBLETRANMODE 透传收发(内部 static
*/
#ifndef FC41D_BLE_H
#define FC41D_BLE_H
#include <stdint.h>
#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 <stdio.h>
#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 */