架构
esp_brookesia::system::super::System 继承 esp_brookesia::system::core::System,在 core 的基础上提供 Super 风格系统壳。
初始化
super::System::init() 最终调用 init(Config{}),init(Config config) 会:
将
config.core_config.system_type设置为BROOKESIA_SYSTEM_SUPER_SYSTEM_TYPE。检查调用方是否通过
config.core_config.gui_backend提供 GUI backend。调用
core::System::init()。
Super 不直接依赖具体 GUI backend,产品工程负责选择 backend(例如 LVGL backend)并传入 core_config.gui_backend。
system type
Super 使用 BROOKESIA_SYSTEM_SUPER_SYSTEM_TYPE,当前值为 "super"。on_init() 中也会再次调用 set_system_type("super"),保证 service 查询得到 Super 类型。
扩展点
Super 覆盖的 core 扩展点:
函数 |
Super 行为 |
|---|---|
|
设置 system type,安装内置 shell app |
|
启动 Shell app;core 按 Shell manifest 启动 background/content/overlay flows |
|
标记 stopping,停止 Shell 管理的 UI |
|
清理 shell app id |
|
记录 launcher app 可用日志 |
|
记录 foreground app 日志,并根据 active app 切换 Shell background / app background |
|
普通 app 停止后恢复 shell |
源码模块
system_super 的实现按职责拆分:
文件 |
职责 |
|---|---|
|
|
|
core 扩展点和 Shell app 安装/恢复 |
|
|
|
Shell page 恢复和 active app 关闭 |
|
|
|
内部路径、action 和动画常量 |
|
内部 |
内置组成
Super 当前内置三个 GUI 部分:
Shell app:一个 Native
IApp,manifest id 为brookesia.system.super.shell,承载 Home、App Launcher、Notifications 三个 content page。background:Shell 主 document 内的桌面背景 screen,由
backgroundflow 挂到SystemBottom。overlay:Shell 主 document 内的系统覆盖 screen,由
overlayflow 挂到AppTop + Stack + z_order 101,负责 top status bar、gesture indicator 和 app modal 等系统浮层。