UI 内容页框架加实时页自动刷新机制(交流量页启用,300ms)
- ui_content_page:描述符尾部追加 auto_ms/auto_seq 可选字段(缺省=0/NULL= 旧行为逐位不变);页打开期间框架持一只 lv_timer,仅当发布序号变过才整页 失效(零空转失效),关页即销;新 API ui_content_page_auto_poll - ui_page_ac.c:.auto_ms=300(≥200ms 发布节拍、避 400=2×200 锁相、300= 15×20ms LVGL 整刷周期;最坏屏上滞后 500ms;完整取值账目在代码注释) - simulator:rt 帧装配收口 sim_fill_rt_frame(n=0 冻结帧保 74 张黄金逐字节 一致,n≥1 确定性斜坡);新增 --rtlive 两态自检 + 窗口模式 200ms 节拍发布; check_content_pages.py 增 [rtlive] 零按键 A≠B 落屏断言 - docs/UI设计:供给说明新增 §5.5 自动刷新口径;内容页架构 §3.1/§四/§九 同步 (并修正 s_open 判定旧描述) - 台账:Keil 构建后按固定顺序回填(Code=256,588 / RW_IRAM1 +8B / UI +8B) 验证:模拟器 0错0警;菜单 8 状态 + 内容页 74 张 + rtlive(A≠B 30 字节)PASS (lead 独立复跑 RC=0);Keil 0错0警;mem-budget --gate / mem-numbers --scan 绿。
This commit is contained in:
@@ -30,6 +30,11 @@
|
||||
* ui_page_registry.c(菜单树 #page= 注记为唯一真源),
|
||||
* 逻辑层手写 menu_content_page_for() 随之删除;
|
||||
* 描述符新增 id 字段(ASCII 页名,供日志/诊断定位是哪一页)
|
||||
* 2026-11-13 DTU 项目组 实时页自动刷新:描述符新增 auto_ms/auto_seq 两字段,
|
||||
* 新 API ui_content_page_auto_poll——框架在页面打开期间持
|
||||
* 一只轮询定时器,发布序号变过才整页失效,数据没变零重绘;
|
||||
* 页面模块不再各自造定时器(周期账见 ui_page_ac.c 的
|
||||
* AC_AUTO_MS 注与 UI_数据供给设计说明.md §5.4)
|
||||
*/
|
||||
#ifndef UI_CONTENT_PAGE_H
|
||||
#define UI_CONTENT_PAGE_H
|
||||
@@ -80,6 +85,15 @@ typedef struct {
|
||||
uint16_t (*count_cb)(void); /* 动态行数(记录页) */
|
||||
void (*draw_cb)(lv_layer_t *layer, const lv_area_t *clip); /* 表单/操作页:自定义内容 */
|
||||
bool (*key_cb)(lv_key_t key); /* 页面自有键;true = 页已处理 */
|
||||
/* —— 自动失效轮询(全可选;auto_ms=0 = 只在按键重绘,未订阅页行为逐位不变)——
|
||||
* auto_ms>0:本页打开期间框架持一只 lv_timer(周期 auto_ms ms,uiTask 上下文随
|
||||
* lv_timer_handler 走),每拍取发布序号(auto_seq(),NULL = ui_data_rt_seq()
|
||||
* 即通道一),序号与上一拍不同才整页失效——取数门控仍是页面 refresh 里的
|
||||
* seq 判断(UI_数据供给设计说明.md §5.4 的页面私有缓存约定原样有效)。
|
||||
* 关页即销定时器;页面模块禁止自造定时器。周期取值账见 ui_page_ac.c 的
|
||||
* AC_AUTO_MS 注释(发布者 rt 每 200ms 一帧,见同文 §5.2)。 */
|
||||
uint16_t auto_ms; /* 轮询周期(ms);0 = 不启用自动刷新 */
|
||||
uint32_t (*auto_seq)(void); /* 新鲜度序号源;NULL = ui_data_rt_seq() */
|
||||
} content_page_def_t;
|
||||
|
||||
/*
|
||||
@@ -154,4 +168,16 @@ bool ui_content_page_is_editable(void);
|
||||
*/
|
||||
uint16_t ui_content_page_selected_row(void);
|
||||
|
||||
/*
|
||||
* 函数功能:自动刷新轮询一拍(生产由框架定时器回调调用;无头模拟器 --rtlive 自检
|
||||
* 没有定时器节拍、直调本函数顶替——两个入口共用同一份判定,规则不会两套)
|
||||
* 入口参数:无
|
||||
* 返回值:无
|
||||
* 限定条件:uiTask 上下文(lv_timer_handler 内或其等价串行点)
|
||||
* 函数说明:1. 无页打开 / 本页 auto_ms=0:空操作;
|
||||
* 2. 序号与上一拍相同:不失效——数据没变的一次整屏重绘是纯支出(屏带宽/功耗);
|
||||
* 3. 序号变了:记下新基准并整页失效,真正取数仍走页面 refresh 的 seq 门控
|
||||
*/
|
||||
void ui_content_page_auto_poll(void);
|
||||
|
||||
#endif /* UI_CONTENT_PAGE_H */
|
||||
|
||||
Reference in New Issue
Block a user