Files
STM32F4-Base/Drivers/BSP/UI/ui_page_wave_manual.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

126 lines
5.8 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 wave_manual (手动录波内容页)
* 模块功能:装置维护 → 手动录波 叶子(node 26,#P 受密码保护)的内容页——
* 复用 ui_page_action 共享确认链(一次确认 → 二次确认 → 执行回报):
* 执行只做一件事——经录波注入表投一次「手动触发」请求,受理即回报
* 「已请求录波」;采点、冻结、落盘全在 ring/store/落盘道,本页不
* 等待也不查询结果(录波从触发到成段最快也要一秒后,页面上做同步
* 等待等于把 uiTask 绘制定律「零 I/O」当场破掉);
* 只读进入(查看密码)整页拒执行并显式 LOCK——与强制复归同一条
* 「触发是操作不是查看」的权限判据(装置维护组的既有口径,本页不自造第二种);
* 本文件零 App include、零存储触点(分层方向由注入表守住)。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-29
* 修改记录:
* v1.0 2026-10-29 DTU 项目组 创建(故障录波道 UI 侧;触发入口形态 =
* docs/子系统设计/故障录波设计说明.md §8.3;
* 冷却/忽略的屏上反馈:拒收即 ERR,ring 侧
* 「冷却中丢弃并计数」不在页面上细分原因——
* 用户要的原因区分在回放页看段号)
*/
/* 头文件包含区 */
#include "ui_page_wave_manual.h"
#include "ui_content_page.h"
#include "ui_data.h"
#include "ui_page_action.h"
/* 私有宏定义区 */
/* (无——文案词全部是 Flash 字面量,见下面静态配置) */
/* 私有函数声明区(静态初始化器要引用下面函数的地址,故先声明) */
static bool wv_ok(void);
/* 静态变量定义区 */
/*
* 本页操作页实例(配置全为 Flash 字面量与函数地址;运行态两字节由组件写)。
* 字段顺序 = ui_page_action_t 声明序(ARMCC v5 = C99 要求指定顺序一致)。
* 观测行留空(label 与 cb 成对给 NULL,组件允许):录波段数要扫卷才能知道,
* 而组件 watch_cb 的契约是「绘制路径零 I/O 直调」——不为一个观测数破坏
* 绘制定律,段数的事交给回放页(它本来就要读段)。
*/
static ui_page_action_t s_act = {
"确认手动录波?", /* prompt:问句用字全在既有子集(确认/手动录波 均来自
菜单与强制复归页现词,'?' 为 ASCII) */
"已请求录波", /* done_text:回报「请求已受理」,不谎称「已存成段」——
受理到落盘之间还隔着冻结窗与卷写,页面无权代言 */
wv_ok, /* ok_cb */
1u, /* need_modify:只读进入一律拒执行(触发是操作) */
NULL, /* watch_label(观测行不给,理由见上方块注释) */
NULL, /* watch_cb */
0u, /* stage(运行态初值) */
0u /* err (运行态初值) */
};
/* 函数定义区 */
/*
* 函数功能:执行投递——向录波环形缓冲投一次手动触发请求
* 入口参数:无
* 返回值:true = 已受理(组件转成功回报);false = 拒收(组件显示 ERR) bool
* 限定条件:由 ui_page_action_key 在第二次 ENTER 时调用(uiTask 上下文)
* 函数说明:ring 的 request 本身是「任意上下文可调的一次性请求」,非阻塞、
* 不等待采点;注入未绑(装配缺件)同样返非零 → 屏上显 ERR,
* 比「按了像成功其实什么都没发生」诚实(强制复归页同款纪律)。
* 不补操作记录:录波不是五类审计记录之一(触发证据在段文件头里,
* 落盘道已带 trig_src/t0/frame_seq),页面上再投一条 = 两处两个真源。
*/
static bool wv_ok(void) {
return (ui_data_wave_manual_req() == 0) ? true : false;
}
/*
* 函数功能:开页复位确认链(框架 init_cb)
* 入口参数:无
* 返回值:无
* 限定条件:框架开页链内调用
* 函数说明:复位由组件做(stage/err 是它的运行态),本页不重复清一遍
*/
static void pg_init(void) {
ui_page_action_init(&s_act);
}
/*
* 函数功能:自绘(框架 draw_cb;四行居中全由组件画)
* 入口参数:a_layer / a_clip - 契约见 ui_content_page.h
* 返回值:无
* 限定条件:框架绘制链末尾调用
*/
static void pg_draw(lv_layer_t *a_layer, const lv_area_t *a_clip) {
ui_page_action_draw(&s_act, a_layer, a_clip);
}
/*
* 函数功能:按键转发(框架 key_cb)
* 入口参数:a_key - LVGL 键值 lv_key_t
* 返回值:true = 本页已消费;false = 交回框架 bool
* 限定条件:框架按键链内
* 函数说明:确认链的判定全在组件里(含只读拒执行),本页只如实透传返回值
*/
static bool pg_key(lv_key_t a_key) {
return (ui_page_action_key(&s_act, a_key) != 0u);
}
/*
* 页面描述符(外部链接:生成物 ui_page_registry.c 按菜单树 #page=wave_manual 绑定引用)
* 操作页形态(强制复归页同款):无浅 V、无页脚、无行列表;
* edit_capable=1 是「能不能改」的那半,另半(本次进入授予的权限)由
* ui_content_page_is_editable() 给;key_intercept=0:LEFT 不拦截,关页 = 取消
*/
const content_page_def_t ui_page_wave_manual_desc = {
.id = "wave_manual",
.title = "手动录波",
.hide_deco = 1u,
.hide_footer = 1u,
.selectable = 0u,
.key_intercept = 0u,
.edit_capable = 1u,
.init_cb = pg_init,
.draw_cb = pg_draw,
.key_cb = pg_key,
};