1. 固定 RTC 数字人链路使用 ai_chat_ui_eaf,双模式开启后不再回退 LVGL/GIF 旧 RTC UI。 2. 保留电子吧唧 LVGL/SquareLine UI,只在电子吧唧运行模式启动 LVGL,避免与 EAF 抢同一 LCD flush。 3. 拆分 dzbj_hw_display_init 与 dzbj_display_init,AI/配网只初始化 LCD Touch 硬件,电子吧唧再启动 LVGL UI。 4. 配网模式使用 EAF 最小显示栈显示中文提示,请使用APP 蓝牙配网,不加载数字人资源和动画。 5. 开启 CONFIG_BAJI_BADGE_MODE,形成 RTC 数字人对话与电子吧唧图片显示双模式固件。 6. 电子吧唧图片扫描跳过 Background_360x360.jpg,避免 RTC 数字人背景进入吧唧图片列表。 7. BLE 图传在 BLE 5.0 关闭时跳过 2M PHY API,保持 legacy 1M PHY 兼容配网和图传。 8. sdkconfig.defaults 同步 BLE 内存优化,限制连接数和缓存,保留 GATT 与扫描能力。 9. 移除 ota.cc 编译和 app_update 直接依赖,双模式固件不创建 OTA 检查任务。 10. Ota 接口改为禁用 stub,保留接口兼容但不执行升级和版本检查。 11. Board 上报 JSON 的 OTA label 改为 disabled,避免依赖 OTA 运行分区。 12. partitions.csv 改为 factory 单 app 分区,扩大 app 到 0x900000,并扩大 storage 到 0x6F0000。 13. application 去除 OTA 任务句柄和服务器时间依赖,减少运行时资源占用。 14. system_info 去除 esp_ota_ops 依赖,配合无 OTA 分区配置。 15. 同步最新烧录运行日志,记录本轮双模式与配网测试结果。
60 lines
1.7 KiB
C
60 lines
1.7 KiB
C
#include "sdkconfig.h"
|
||
#include "dzbj_init.h"
|
||
#include "dzbj_gpio.h"
|
||
#include "lcd.h"
|
||
#include "pages_pwm.h"
|
||
#ifdef CONFIG_BAJI_BADGE_MODE
|
||
#include "ui/ui.h"
|
||
#endif
|
||
#include "freertos/FreeRTOS.h"
|
||
#include "freertos/task.h"
|
||
#include "esp_log.h"
|
||
|
||
#define TAG "DZBJ"
|
||
|
||
// 仅 LCD/Touch 硬件初始化,不启动 LVGL。
|
||
// 双模式固件中 CONFIG_BAJI_BADGE_MODE 只是"支持电子吧唧"的编译开关,
|
||
// 不能用它判断当前运行模式;AI/EAF/配网路径必须避免初始化 LVGL。
|
||
void dzbj_hw_display_init(i2c_master_bus_handle_t i2c_bus) {
|
||
ESP_LOGI(TAG, "开始初始化显示硬件...");
|
||
|
||
// 1. LCD 硬件初始化(QSPI ST77916)—— 共享
|
||
lcd_init();
|
||
ESP_LOGI(TAG, "LCD 硬件初始化完成");
|
||
|
||
#if DZBJ_ENABLE_TOUCH
|
||
// 2. 传入 I2C 总线句柄(与音频编解码器共享)
|
||
lcd_set_i2c_bus(i2c_bus);
|
||
|
||
// 3. 触摸控制器初始化(CST816S)
|
||
touch_init();
|
||
#else
|
||
(void)i2c_bus;
|
||
ESP_LOGI(TAG, "屏幕触摸已禁用 (DZBJ_ENABLE_TOUCH=0)");
|
||
#endif
|
||
|
||
ESP_LOGI(TAG, "硬件初始化完成,跳过 LVGL,等待上层显示管线接管");
|
||
}
|
||
|
||
#ifdef CONFIG_BAJI_BADGE_MODE
|
||
// 完整初始化(硬件+LVGL + SquareLine UI + 背光)—— 仅吧唧模式
|
||
void dzbj_display_init(i2c_master_bus_handle_t i2c_bus) {
|
||
dzbj_hw_display_init(i2c_bus);
|
||
|
||
// 电子吧唧模式才启动 LVGL + SquareLine UI。
|
||
lvgl_lcd_init();
|
||
ESP_LOGI(TAG, "LVGL 初始化完成");
|
||
|
||
// SquareLine UI 初始化
|
||
ui_init();
|
||
ESP_LOGI(TAG, "UI 初始化完成");
|
||
|
||
// 等待首帧渲染完成
|
||
vTaskDelay(pdMS_TO_TICKS(100));
|
||
|
||
// 点亮背光
|
||
pwm_init();
|
||
ESP_LOGI(TAG, "背光已点亮,dzbj 显示模块初始化完成");
|
||
}
|
||
#endif // CONFIG_BAJI_BADGE_MODE
|