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>
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
// Home界面 - 显示airhub背景图
|
||
// 按键导航:BOOT单击→Img,KEY2单击→配对,KEY2双击→接收,KEY2长按→分享
|
||
|
||
#include "../ui.h"
|
||
#include "../battery_ui.h"
|
||
|
||
lv_obj_t *ui_ScreenHome = NULL;
|
||
static lv_obj_t *ui_ImgHome = NULL;
|
||
|
||
// 界面加载事件:进入Home时触发电池指示器短暂显示
|
||
static void ui_event_ScreenHome(lv_event_t *e) {
|
||
if (lv_event_get_code(e) == LV_EVENT_SCREEN_LOADED) {
|
||
battery_ui_show_briefly();
|
||
}
|
||
}
|
||
|
||
void ui_ScreenHome_screen_init(void) {
|
||
ui_ScreenHome = lv_obj_create(NULL);
|
||
lv_obj_clear_flag(ui_ScreenHome, LV_OBJ_FLAG_SCROLLABLE);
|
||
lv_obj_set_style_bg_color(ui_ScreenHome, lv_color_hex(0x000000), LV_PART_MAIN);
|
||
lv_obj_set_style_bg_opa(ui_ScreenHome, 255, LV_PART_MAIN);
|
||
|
||
// airhub背景图(360x360全屏)
|
||
ui_ImgHome = lv_img_create(ui_ScreenHome);
|
||
lv_img_set_src(ui_ImgHome, &ui_img_airhub_png);
|
||
lv_obj_set_align(ui_ImgHome, LV_ALIGN_CENTER);
|
||
lv_obj_clear_flag(ui_ImgHome, LV_OBJ_FLAG_SCROLLABLE);
|
||
|
||
// 电池指示器(初始隐藏,SCREEN_LOADED时显示后渐隐)
|
||
battery_ui_add_to_screen(ui_ScreenHome, 100);
|
||
lv_obj_add_event_cb(ui_ScreenHome, ui_event_ScreenHome, LV_EVENT_ALL, NULL);
|
||
}
|
||
|
||
void ui_ScreenHome_screen_destroy(void) {
|
||
if (ui_ScreenHome) lv_obj_del(ui_ScreenHome);
|
||
ui_ScreenHome = NULL;
|
||
ui_ImgHome = NULL;
|
||
}
|