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.1 KiB
C
47 lines
1.1 KiB
C
#pragma once
|
||
|
||
#include <stdbool.h>
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/**
|
||
* @brief 设备运行模式枚举
|
||
*/
|
||
typedef enum {
|
||
DEVICE_MODE_AI = 0, // AI对话模式(WiFi + RTC)
|
||
DEVICE_MODE_BADGE = 1, // 电子吧唧模式(BLE + 图片)
|
||
} device_mode_t;
|
||
|
||
/**
|
||
* @brief 从 NVS 读取当前设备模式
|
||
* @return 当前模式,默认 DEVICE_MODE_AI
|
||
*/
|
||
device_mode_t device_mode_get(void);
|
||
|
||
/**
|
||
* @brief 设置设备模式并重启
|
||
* @param mode 目标模式
|
||
* 写入 NVS 后延迟 500ms 调用 esp_restart()
|
||
*/
|
||
void device_mode_set(device_mode_t mode);
|
||
|
||
/**
|
||
* @brief 快捷判断是否为电子吧唧模式
|
||
* @return true 吧唧模式, false AI模式
|
||
*/
|
||
bool device_mode_is_badge(void);
|
||
|
||
/**
|
||
* @brief 检查是否处于模式切换后的按键抑制期
|
||
* 模式切换触发esp_restart后,BOOT按键释放会产生幽灵单击事件。
|
||
* 此函数在重启后2秒内返回true,用于各按键回调中跳过业务逻辑。
|
||
* 首次调用时自动读取并清除NVS中的切换标志。
|
||
*/
|
||
bool device_mode_in_switch_suppress(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|