Files

125 lines
3.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @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 */