1、按键驱动重构:dzbj_button改为iot_button组件,支持BOOT/KEY2单击/双击/长按,回调通过xTaskCreate派发避免阻塞esp_timer; 2、新增按键导航管理器(key_nav):9种上下文状态机,统一分发按键事件到对应界面; 3、BLE改造:广播默认关闭由按键触发启停,新增设备间GATT Client图片传输(扫描→连接→MTU协商→分包发送),WRITE_EVT区分APP/设备传图跳转不同界面; 4、新增模式切换按键抑制:NVS标志+2秒时间窗,防止AI↔吧唧切换时幽灵按键触发配网或白屏; 5、AI模式BOOT单击回调添加抑制检查,吧唧模式key_nav_boot_click同步添加; 6、新增6个UI界面:配对(Peiwang)、更新(Update)、发送等待/接收等待/发送中/接收中; 7、新增电池指示器组件(battery_ui):多界面真实电量显示+3秒渐隐; 8、Home/Img界面重构:移除触摸手势事件,改为airhub背景+按键导航; 9、禁用触摸(DZBJ_ENABLE_TOUCH=0),保留代码可恢复; 10、sleep_mgr简化:按键唤醒由key_nav统一处理; Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
// 设备间蓝牙图片传输模块
|
||
// 发送方:GATT Client 扫描→连接→分包写入图片
|
||
// 接收方:复用现有 GATT Server,通过模式标识区分 APP/设备来源
|
||
|
||
#pragma once
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include <stdbool.h>
|
||
|
||
// 传输状态
|
||
typedef enum {
|
||
BLE_XFER_IDLE, // 空闲
|
||
BLE_XFER_SCANNING, // 发送方扫描中
|
||
BLE_XFER_CONNECTING, // 发送方连接中
|
||
BLE_XFER_SENDING, // 发送方传输中
|
||
BLE_XFER_RECEIVING, // 接收方接收中(由GATT Server端检测)
|
||
BLE_XFER_DONE, // 传输完成
|
||
BLE_XFER_FAILED, // 传输失败
|
||
} ble_xfer_state_t;
|
||
|
||
// 初始化传输模块(注册GATT Client回调)
|
||
void ble_transfer_init(void);
|
||
|
||
// 发送方:开始扫描并发送当前图片
|
||
void ble_transfer_start_send(void);
|
||
|
||
// 接收方:开始广播等待其他设备连接
|
||
void ble_transfer_start_receive(void);
|
||
|
||
// 取消当前传输
|
||
void ble_transfer_cancel(void);
|
||
|
||
// 获取当前传输状态
|
||
ble_xfer_state_t ble_transfer_get_state(void);
|
||
|
||
// 查询是否处于设备间传输的接收模式(供GATT Server写入回调判断)
|
||
bool ble_transfer_is_receiving(void);
|
||
|
||
// === 以下函数由 dzbj_ble.c 的 GAP/GATTS 回调转发调用 ===
|
||
|
||
// 处理扫描结果(由 esp_gap_cb 转发)
|
||
void ble_transfer_handle_scan_result(void *param);
|
||
|
||
// 处理扫描停止(由 esp_gap_cb 转发)
|
||
void ble_transfer_handle_scan_stop(void);
|
||
|
||
// 图片接收完成通知(由 GATTS 写入完成时调用)
|
||
void ble_transfer_on_receive_complete(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|