1、按键驱动重构:从GPIO中断改为iot_button组件,支持BOOT/KEY2的单击/双击/长按6种事件; 2、新增按键导航管理器(key_nav):9种上下文状态机,统一分发按键事件到对应界面业务逻辑; 3、BLE模块改造:广播默认关闭由按键触发,新增设备间图片传输(GATT Client),支持扫描配对→MTU协商→分包发送; 4、新增6个UI界面:配对(Peiwang)、更新(Update)、发送等待(ImageShar)、接收等待(ImageReception)、发送中(Sharing)、接收中(Receiving); 5、新增电池指示器组件(battery_ui):支持多界面真实电量显示,3秒渐隐效果; 6、Home界面重构:移除手势事件,改为airhub背景图+电池指示器; 7、Img界面重构:移除触摸事件,新增删除二次确认边框机制; 8、禁用ScreenSet/ScreenChar界面(保留文件),禁用触摸初始化(保留代码可恢复); 9、sleep_mgr简化:移除ScreenSet亮度UI依赖,按键唤醒由key_nav统一处理; 10、新增9张图片资源(airhub背景、配对、传输状态、电池图标等); Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
// 设备间蓝牙图片传输模块
|
||
// 发送方:GATT Client 扫描→连接→分包写入图片
|
||
// 接收方:复用现有 GATT Server,通过模式标识区分 APP/设备来源
|
||
#pragma once
|
||
|
||
#include <stdbool.h>
|
||
#include <stdint.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);
|
||
|
||
// 发送方:开始扫描并发送当前图片
|
||
// 调用后进入扫描→连接→传输流程,UI由key_nav管理
|
||
void ble_transfer_start_send(void);
|
||
|
||
// 接收方:开始广播等待其他设备连接
|
||
// 复用现有GATT Server,设置接收模式标识
|
||
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);
|
||
|
||
// === 以下函数由 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);
|