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>
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
// 按键导航管理器
|
||
// 根据当前界面上下文分发BOOT/KEY2的单击/双击/长按事件
|
||
// 所有回调通过xTaskCreate派发到独立任务,避免阻塞esp_timer
|
||
|
||
#pragma once
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "esp_err.h"
|
||
|
||
// 导航上下文枚举
|
||
typedef enum {
|
||
NAV_CTX_HOME, // Home界面
|
||
NAV_CTX_IMG, // Img浏览
|
||
NAV_CTX_IMG_DELETE, // Img删除确认(第一步)
|
||
NAV_CTX_IMG_DELETE_CONFIRM,// Img删除二次确认(第二步)
|
||
NAV_CTX_PEIWANG, // APP配对界面
|
||
NAV_CTX_UPDATE, // 更新界面
|
||
NAV_CTX_IMAGE_SHAR, // 发送方等待配对
|
||
NAV_CTX_IMAGE_RECEPTION, // 接收方等待配对
|
||
NAV_CTX_SHARING, // 发送方传输中
|
||
NAV_CTX_RECEIVING, // 接收方接收中
|
||
} nav_context_t;
|
||
|
||
// 初始化按键导航(注册所有按键回调)
|
||
void key_nav_init(void);
|
||
|
||
// 切换导航上下文
|
||
void key_nav_set_context(nav_context_t ctx);
|
||
|
||
// 获取当前导航上下文
|
||
nav_context_t key_nav_get_context(void);
|
||
|
||
// === 按键事件处理函数(供外部回调调用) ===
|
||
void key_nav_boot_click(void);
|
||
void key_nav_boot_double_click(void);
|
||
void key_nav_boot_long_press(void);
|
||
void key_nav_key2_click(void);
|
||
void key_nav_key2_double_click(void);
|
||
void key_nav_key2_long_press(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|