Files
STM32F4-Base/Drivers/BSP/UI/ui_page_calib.c
T
wandering1 ae09c5737a docs: 删任务规划两份已完成文档,数据可信内容迁入算法层/硬件平台/登记簿
任务规划目录从 5 个文件收敛到 3 个:只留导航(README)、待办(登记簿)、
暂缓专项(暂缓-RS485)。

删除的两个文件都不再有现行读者:
- UI补齐.md 执行清单 2026-10-28 清空、上板判据 2026-11-06 台架轮已复核;
  叶数口径迁 docs/UI设计/菜单页面设计.md §3.9,三条内容页硬规矩迁
  docs/UI设计/内容页架构.md §7.1,两条未闭环待办迁登记簿 §7/§8。
- 数据可信.md 不是完成记录,而是被约 130 处代码头注释引用的设计约束,
  因此按内容分三处落位后删除,不整篇丢弃。

数据可信内容的新归属(旧节号 → 新家):
- §2/§4 设计口径 → docs/算法/采集与算法层设计说明.md 新增 §13(13 小节),
  §7 前置决策表 → §13.12 已定案的前置决策。
- §3 台阶与波次退出判据 → docs/硬件平台/ADC通道映射说明.md 新增 §9。
- §5 任务卡 → docs/任务规划/登记簿.md §7(拆成变比确认 / 两点标定两行)。

引用改写 34 文件 77 处路径引用 + 14 文件 24 处昵称引用 + 双重节号 35 处,
覆盖代码头注释、测试、生成器与文档;归档区历史路径改纯文本提及。
四个 SVG 生成器文案同步并重跑,产物随脚本同批提交。

同批处理两件事:
- 9 个 UTF-16 LE 证据文件转 UTF-8。end-of-file-fixer 按字节判末尾换行,
  UTF-16 的换行是 0A 00、末字节 00,钩子会追加裸 0x0a 使文件变奇数长度,
  8 个已实际损坏。转码后逐文件比对 HEAD 原文验证正文零丢失。
- 修回 App/cfg/cfg_file.c 被剥掉的 UTF-8 BOM(补 3 字节,未整文件重写)。

验证:/keil-build 0 错误 0 警告(Code=255160);check_doc_links --all
--sections-strict 221 篇全通过、无法判定 0;pre-commit 全量全 Passed。
2026-11-09 16:13:57 +08:00

119 lines
4.9 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 Page calib (遥测系数内容页)
* 模块功能:三遥设置 → 遥测系数 叶子(#P 受密码保护)的内容页——8 行数值表,
* 每页 8 行自动分页;本文件零 App include:行表现状(值/粗守域/量纲/
* 小数位)逐行来自 ui_data.h 通道五注入表,写与落盘确认全经
* ui_w_ytview 视图模型(状态机/反显/徽标在那一侧,两页共用一份)——
* 本文件只是标准骨架几何令牌接进框架的薄跳板,改一次口径两页一致
* 两态一页:123 修改权限 → 可编辑(编辑器 + 保存行 = 落盘确认);000 查看权限
* → 只读(attach 内不绑 commit → 无保存行、key_cb 整页交回框架,
* 行为与"没有 key_cb"逐字等价,整定四页同一条分派纪律)
* 徽标说明:只读/可编辑两态都画"未标定"(cal_blocked 经注入表现读)——徽标说的
* 是数据可信度,与本次权限无关;它**不**禁任何编辑(与定值 LOCK 分工:
* LOCK 才写不进去,未标定只是"改了也不会动作",ui_w_setlist.h 三词三源)
* 适用平台:STM32F407ZGTx / PC 模拟器(共用源码)
* 作者:DTU 项目组
* 创建日期:2026-10-27
* 修改记录:
* v1.0 2026-10-27 DTU 项目组 创建(道F task-7;通用判据 = docs/UI设计/
* 内容页架构.md §7.1;本页另须「改死区能改变 104 上送门限 /
* 改 k 后页面值按比例变化 / 只走既有落盘链不加第二真源」)
*/
/* 头文件包含区 */
#include "ui_page_calib.h"
#include "ui_tokens.h"
#include "ui_w_setlist.h"
#include "ui_w_ytview.h"
/* 静态变量定义区 */
/* 本页定值表实例(组件状态独占一份,勿跨页共用——ui_w_setlist 实例化约定) */
static ui_w_setlist_t s_sl;
/* 函数定义区 */
/*
* 函数功能:开页绑视图(行表现状逐行现取 + 两态分派都在视图模型内;接 init_cb)
* 入口参数:无
* 返回值:无
* 限定条件:框架开页链内(本次进入权限已装载,时序依据见 ui_page_view_param.c
* 同位置注释:框架先装权限再调 init_cb)
*/
static void pg_init(void) {
ui_w_ytview_attach_cal(&s_sl);
}
/*
* 函数功能:总行数(数据行现给 + 可编辑态才有保存行;接 count_cb)
* 入口参数:无
* 返回值:总行数 uint16_t
* 限定条件:框架绘制/翻页链内
*/
static uint16_t pg_count(void) {
return ui_w_setlist_count(&s_sl);
}
/*
* 函数功能:逐行取数(接 refresh;行现状在视图模型里现取,本层无缓存)
* 入口参数:a_row / a_name / a_value - 契约见 ui_content_page.h
* 返回值:无
* 限定条件:框架绘制链内
*/
static void pg_refresh(uint16_t a_row, char *a_name, char *a_value) {
ui_w_setlist_refresh(&s_sl, a_row, a_name, a_value);
}
/*
* 函数功能:自绘层(编辑光标反显 + 写被拒行反显 + 未标定徽标)
* 入口参数:a_layer / a_clip - 契约见 ui_content_page.h
* 返回值:无
* 限定条件:框架绘制链内,内置区块画完之后
*/
static void pg_draw(lv_layer_t *a_layer, const lv_area_t *a_clip) {
ui_w_setlist_draw(&s_sl, a_layer, a_clip);
ui_w_ytview_draw_cal_badge(a_layer, a_clip);
}
/*
* 函数功能:按键转发(接 key_cb)
* 入口参数:a_key - LVGL 键值 lv_key_t
* 返回值:true - 本页已消费;false - 交回框架(↑↓ 移选、← 关页)
* 限定条件:描述符 edit_capable=1 + key_intercept=1(编辑中 ←→ 是移数字光标,
* 必须先给页面,否则框架把 ← 当关页——整定四页同款实证)
* 函数说明:第一条门 = 只读进入(未绑 commit)整页交回框架,与"本页没有
* key_cb"逐字等价(黄金参考只读态为证);其余分发规则全在组件
*/
static bool pg_key(lv_key_t a_key) {
if (s_sl.commit == NULL) {
return false;
}
return (ui_w_setlist_key(&s_sl, a_key) != 0u);
}
/*
* 页面描述符(外部链接:生成物 ui_page_registry.c 按菜单树 #page=calib 绑定引用)
* 列表页骨架 + 可编辑 + ← 拦截;band_h 必须 >0(选中行黑字白底反显,同四整定页);
* row_count 给静态上限(8 数据行 + 保存行),行数运行时以注入表现报为准
*/
const content_page_def_t ui_page_calib_desc = {
.id = "calib",
.title = "遥测系数",
.selectable = 1u,
.edit_capable = 1u,
.key_intercept = 1u,
.top_y = UI_LIST_TOP,
.pitch = UI_ROW_PITCH,
.band_h = UI_ROW_BAND_H,
.text_dy = 0,
.left_x = UI_LIST_LEFT_X,
.right_x = UI_LIST_RIGHT_X,
.rows_per_page = UI_LIST_ROWS,
.row_count = 9u,
.init_cb = pg_init,
.count_cb = pg_count,
.refresh = pg_refresh,
.draw_cb = pg_draw,
.key_cb = pg_key,
};