f5902bcc21
两篇规划期文档改成对当前系统的描述,档名统一去掉"设计说明"的"说明"。 运行与自检记录: - 旧档重写为现状版(10 节:概览 / 记录布局 / 写入路径 / 读取与呈现 / 事件分类 / 控制台日志 / 双端差异 / 内存 / 异常恢复 / 自测要点), 删掉需求表、调研摘要、模块清单动作列、实施步骤与开放问题。 - 按代码纠正:七类记录齐备(原文只写了两类)、自检描述串换成实际 落盘的 28 条、待机阈值以 ui_tokens.h 为准、记录页已走 ui_w_records 共享组件、容量满只删该文件而非整卷清空。 - 待机屏移出本篇:它不属于日志,归 UI 侧;内容页架构补"待机屏 (覆盖层)"一节,产品需求 FR-LOG-3 拆成单纯的上电/重启分类, 待机显示归口已有的 FR-UI-3。 ADC 采样节拍: - §4.5 从 45 行压到 24 行,只留规则 / 违反的代价 / 为什么 / 兜底与 档案指针;九路置换实测表、A/B 对照、探针计数等取证归 ADC_Trap_Records.md 的 TRAP-ADC-01(那里已有完整档案)。 - adc1_gap 字段去掉"2026-10-21 起、此前固件为次数"的修订记录式括号。 - app_main.c 的注释改为指向 TRAP-ADC-01 取证、§4.5 设计口径。 引用同步:两个旧档名全仓替换(含代码注释、角色档、归档 id 表), 旧名残留 0;对 ADC 篇的 § 引用逐条复核落在真实章节上。 验证:48 个提交期钩子全通过,check_doc_links --sections-strict 通过。
70 lines
2.6 KiB
C
70 lines
2.6 KiB
C
/*
|
||
* 模块名称:UI Standby (待机显示页)
|
||
* 模块功能:长时间无按键操作时自动切入的默认界面(UA/UB/UC/IA/IB/IC 六路实时值 + 分隔线 + 底部时钟);
|
||
* 数值经 ui_data 通道一实时帧 yc[](口径同 ui_page_ac.c);
|
||
* 屏幕覆盖层模式——进入保存前屏与焦点、ENTER(确认键)还原,其余键忽略;
|
||
* 空闲检测 = lv_timer(1s 周期),活动通知由菜单/内容页键事件挂钩
|
||
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
|
||
* 作者:王建锋
|
||
* 创建日期:2026-09-14
|
||
* 修改记录:
|
||
* v1.0 2026-09-14 王建锋 创建初始版本(设计见 docs/子系统设计/运行与自检记录设计.md §5.2)
|
||
* v1.1 2026-11-13 DTU 项目组 6 路电流占位 → UA/UB/UC/IA/IB/IC 实时值(口径同 ui_page_ac.c)
|
||
*/
|
||
|
||
#ifndef UI_STANDBY_H
|
||
#define UI_STANDBY_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include <stdint.h>
|
||
#include <stddef.h>
|
||
#include <stdbool.h>
|
||
|
||
/*
|
||
* 时间字符串提供回调(平台差异:MCU = sys_clock_get_str,模拟器 = 宿主 time())
|
||
*/
|
||
typedef void (*ui_standby_time_cb)(char *buf, size_t len);
|
||
|
||
/*
|
||
* 函数功能:初始化待机模块(建常驻屏/容器 + 空闲检测定时器)
|
||
* 入口参数:idle_timeout_ms - 无操作超时阈值(ms;0 = 拒绝初始化) uint32_t
|
||
* time_cb - 底部时钟字符串提供回调(不可为 NULL) ui_standby_time_cb
|
||
* 返回值:0 - 成功;-1 - 失败(已初始化/参数无效/LVGL 池耗尽) int
|
||
* 限定条件:ui_menu_init() 已完成(默认输入组存在);lv_tick_inc/lv_timer_handler 已被驱动
|
||
*/
|
||
int ui_standby_init(uint32_t idle_timeout_ms, ui_standby_time_cb time_cb);
|
||
|
||
/*
|
||
* 函数功能:通知用户活动(重置空闲计时)
|
||
* 入口参数:无
|
||
* 返回值:无
|
||
* 限定条件:ui_standby_init() 已成功;任意任务上下文(仅写一个时间戳)
|
||
* 函数说明:菜单/内容页每收到一个键调用一次;待机屏上的按键同样经此重置
|
||
*/
|
||
void ui_standby_notify_activity(void);
|
||
|
||
/*
|
||
* 函数功能:查询是否处于待机屏
|
||
* 入口参数:无
|
||
* 返回值:true - 待机中;false - 否
|
||
* 限定条件:无
|
||
*/
|
||
bool ui_standby_is_active(void);
|
||
|
||
/*
|
||
* 函数功能:强制进入待机屏(测试钩子,绕过空闲计时)
|
||
* 入口参数:无
|
||
* 返回值:无
|
||
* 限定条件:ui_standby_init() 已成功;UI 任务上下文(模拟器无头回归用)
|
||
*/
|
||
void ui_standby_force_enter(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* UI_STANDBY_H */
|