Files
stc32g128k/Docs/50_module-breakdown/mod-app.md

26 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模块拆分 - 应用执行层 (Docs/50_module-breakdown/mod-app.md)
本模块描述手环的 App 调度管理器AppManager、活跃前台应用生命周期钩子OnStart, onRun, onClose, onEvent以及各功能模块的页面渲染与状态机调度设计。
## 1. 模块职责说明
* **职责范围**
1. **应用生命周期调度 (AppManager)**:维护当前活跃应用的实例指针 `active_app`。当触发切换时,调用旧 App 的 `onClose()` 并调用新 App 的 `OnStart()`,初始化相应的视窗 GRAM。
2. **待机时钟应用 (ClockApp)**:手环默认待机状态。中央以 `32x64px` 超大点阵渲染当前时分,右上角渲染 `16x32px` 电量百分比及充电指示 `+`10秒无操作时触发睡眠调度。
3. **主菜单应用 (MenuApp)**:单屏单条目显示交互。每次仅在中央渲染选中项的 `48x48px` 大图标,下方以大字渲染菜单名称,支持 ▲/▼ 键高亮切换,确认键进入对应子页面。
4. **配对与微调应用 (PairApp)**:对码捕捉到未配对 24 位射频码时拉起。自动匹配识别传感器类型图标,提供 `32x64px` 超大微调序号选框(可通过 ▲/▼ 键在 `[01]`~`[99]` 之间滚动微调),确认后存入持久化 Flash。
5. **传感器报警应用 (AlarmApp)**:被后台监测唤醒拉起。识别触发的对码槽位,屏幕闪烁红色粗边框,中央渲染该类传感器的 `48x48px` 警报大图标与防区前缀,调度对应的专属马达振动波形与 LED 警示颜色。
6. **主动求救应用 (SOSApp)**:在待机时短按/长按 SOS 物理按键Pin 27 / `P2.6`)拉起。屏幕高亮显示 `SOS EMIS`;调度发射模块以 2 秒为周期循环向外界发射 `0x08` (SOS) 无线电数据;触发最高优先级的持续马达震动及红色幻彩灯交替爆闪。
---
## 2. 接口与函数说明
* `void AppManager_Init(void)`:注册所有 WristbandApp 页面实例并设置默认活跃 App 指针为 ClockApp。
* `void StartApp(u8 app_id)`:执行应用切换动作。安全切出旧前台应用并唤醒载入新应用。
* `void CloseApp(void)`:退出当前活跃 App 实例,默认回退至待机时钟 ClockApp。
* `void UI_ShowClockPage(SystemState state, u8 hour, u8 min)`ClockApp 的专有刷屏绘制函数。
* `void UI_ShowMenuPage(u8 selected_item)`MenuApp 的专有菜单绘制函数。
* `void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix)`PairApp 对码序号微调与保存绘制函数。
* `void UI_ShowAlarmPage(u8 type, char *name_prefix, u8 suffix_num)`AlarmApp 入侵警报粗红框与大图标绘制函数。