Files
STM32F4-Base/Drivers/BSP/UI/ui_standby.h
T
wandering1 5bab248dee UI 待机显示页接入 UA/UB/UC/IA/IB/IC 六路实时值(v1.1)
- ui_standby.c:v1 占位(6 行恒 0.00A)→ ui_data 通道一按 seq 门控取帧,
  yc 语义下标 {0,1,2,4,5,6}(跳 UN/IN);无首帧/坏质显 --;定点格式化复用
  ui_w_editor_fmt_scaled;单位随 eng(引脚档不挂),口径逐字对齐 ui_page_ac.c
- ui_standby.h:头注与修改记录同步
- 文档 §5.2 按新口径改写;§1 R2 改为新需求口径(不再引 mockup);§9 对应
  开放问题销项删行;版本 v1.4

验证:模拟器 0 错 0 警 + 菜单行/内容页/编码规范门禁 PASS + Keil 0 错 0 警;
--standby 截图双分支实证(UA/IA 显值、UB/UC/IB/IC 显 --)。
2026-11-13 13:11:42 +08:00

70 lines
2.6 KiB
C
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.
/*
* 模块名称: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 */