diff --git a/docs/任务规划/README.md b/docs/任务规划/README.md index 4aa134ae..b59e27d0 100644 --- a/docs/任务规划/README.md +++ b/docs/任务规划/README.md @@ -66,7 +66,7 @@ | **6** | 保护元件与采集增强 | 等待标准源或硬件改版 | 保护先解除未标定闭锁;三相同时刻类功能等 V0.2 硬件 | | **7** | 验证窗口事项 | 逢条件顺带 | CI runner、PC peer、CH340、负向故障注入条件到位时执行 | | **8** | 独立模块与暂缓项 | 当前不排 | 开入开出、104 文件传输单独立项(SNTP 已单独立项并于 2026-11-04 落地 #73,:8888 随 #78 退役);RS-485 与内存优化按各自重启条件 | -| **独立** | **故障录波(1 kHz · 8 路原始码值 · 单通道回放)** | **代码面已交付;2026-10-31 远程半轮过六项、2026-11-02 回放页枚举缺陷已修复闭环,余注量对表与人到场项** | 用户裁定 2026-10-29 **录波先行**:数据面最小闭环 → 手动与保护启动触发 → 回放页。三块的**代码侧判据已收口**(主机单测 113 / 170 / 110 全 rc=0、双端编译 0 错误 0 警告、板端编码器与 PC 侧解码器字节级互验、手动录波与录波回放两叶已绑页、内容页黄金参考扩至 66 张);**2026-10-31 远程半轮已过六项**(真 FAT 落盘、触发→落盘全部落在 2 s 封存超时窗内、冷却恢复、轮转、PC 侧坏段拒收、冻结窗内 104 并发);同轮发现的缺陷「回放页段表枚举恒空」**已于 2026-11-02 远程修复并板级闭环**(根因 = 读侧 `wave_store_seg_path()` 返回值判错,顺带修键处理缺失效;回放页真段/切段/切道已实测,登记簿条目已销项,证据见设计说明 §10「回放页枚举恒空缺陷修复记录」);**没跑的是注量对表那半轮**(注 1 V / 50 Hz、与 `meas:` 行和 104 浮点遥测对表、回放页放坏段与空态画面)加 P 触发 / bench T 源,全部结果与清单见 `docs/子系统设计/故障录波设计说明.md` §10「板级远程半轮记录」。**板级判据、留痕名清单与执行顺序图的属主 = docs/子系统设计/故障录波设计说明.md §9 与 §10**(原卡片登记簿 2026-10-30 随销项并入后删除);**与 UI 道互斥**(菜单树与中文字库是整文件生成物,同刻只允许一条道写)——本波按此串行执行:UI 道在数据面与接线冻结之后才动生成物 | +| **独立** | **故障录波(1 kHz · 8 路原始码值 · 单通道回放)** | **代码面已交付;2026-10-31 远程半轮过六项、2026-11-02 回放页枚举缺陷已修复闭环、2026-11-04 注量对表闭环(#40 §8 交流轮)、2026-11-06 第二幕尾步坏段/空态画面台架远程轮拍毕——回放页三态板级判据全部实证;余 P 触发(需标定解锁决定)、bench T 源与卷占用、`task_prof` 耗时峰值等到场/裁定项** | 用户裁定 2026-10-29 **录波先行**:数据面最小闭环 → 手动与保护启动触发 → 回放页。三块的**代码侧判据已收口**(主机单测 113 / 170 / 110 全 rc=0、双端编译 0 错误 0 警告、板端编码器与 PC 侧解码器字节级互验、手动录波与录波回放两叶已绑页、内容页黄金参考扩至 66 张);**2026-10-31 远程半轮已过六项**(真 FAT 落盘、触发→落盘全部落在 2 s 封存超时窗内、冷却恢复、轮转、PC 侧坏段拒收、冻结窗内 104 并发);同轮发现的缺陷「回放页段表枚举恒空」**已于 2026-11-02 远程修复并板级闭环**(根因 = 读侧 `wave_store_seg_path()` 返回值判错,顺带修键处理缺失效;回放页真段/切段/切道已实测,登记簿条目已销项,证据见设计说明 §10「回放页枚举恒空缺陷修复记录」);**注量对表半轮已于 2026-11-04 由 #40 §8 交流轮闭环**(幅值 / 相位 / 削顶三项实测,`meas:` 行与板上读数逐项核对,104 浮点遥测按用户裁定不作对照证据;`docs/测试说明/测试数据/boot_log_data/20261104_ac_*`);**回放页放坏段与空态画面已于 2026-11-06 台架远程轮拍毕闭环**(同号翻位覆盖→「该段不可读」零波形元素绝不平线;全删→「无录波段」+ 串口 `open fail fr=4` 互证;证据 `docs/测试说明/测试数据/wave_shot_20261106/`,记录见设计说明 §10「回放页坏段/空态画面闭环记录」);**没跑的只剩** P 触发对时刻(先要标定解锁决定)/ bench T 源与卷占用(需 bench 构建)/ `task_prof` 读路径耗时峰值,全部结果与清单见 `docs/子系统设计/故障录波设计说明.md` §10「板级远程半轮记录」。**板级判据、留痕名清单与执行顺序图的属主 = docs/子系统设计/故障录波设计说明.md §9 与 §10**(原卡片登记簿 2026-10-30 随销项并入后删除);**与 UI 道互斥**(菜单树与中文字库是整文件生成物,同刻只允许一条道写)——本波按此串行执行:UI 道在数据面与接线冻结之后才动生成物 | ### 2.1 关键依赖 diff --git a/docs/子系统设计/故障录波设计说明.md b/docs/子系统设计/故障录波设计说明.md index bbf3f494..0ac0bc3f 100644 --- a/docs/子系统设计/故障录波设计说明.md +++ b/docs/子系统设计/故障录波设计说明.md @@ -324,7 +324,7 @@ flowchart TD | 跨工具链分叉(实证,写进来是为了下一个模块别重踩) | 两份录波 .c 只 include 自身头(链上只有 stdint.h)时,ARMCC 报 22 条 identifier "NULL" is undefined;而主机 MSVC / gcc 会传递性把 stddef.h 拉进来,**主机单测完全照不出这个分叉** → 新增模块需要用 NULL 就自己 include stddef.h(与 `App/algo/sample_ring.c` 同口径,别塞公共头) | | 板级 | 信号发生器注 1 V / 50 Hz → 手动一段 → FTP 拉回 → PC 脚本量出周波数、幅值、极性与注入一致;再把 PC 重算的基波有效值与板上 `meas:` 对表。**判据只量四样:周波数、幅值、极性、钉轨路数——不比绝对相位**(理由见 §4.2「段内点序」:触发瞬间在工频周期内任意落点,段字节里没有绝对时间参考;真要比相位必须让发生器给同步触发,本波不做)。**钉轨对表的合格判据 = 头位图 ⊇ 实测钉轨路数,且差异必须能由注入条件解释**——因为 `clip_mask` 是按来源派生的链路可信性标记(§6.2 偏移 24 行),不是本段实测值:只加直流或小幅注入时那五路本就不该钉轨,硬取等式会假红。**同段另起一条强观察项**:V0.1 下这五路若在做**交流注入**时反而没钉轨,先怀疑接线或该路根本没被驱动——这是告警面,不是失败面(等式仍作为默认尺子留在 PC 侧 `shape --strict` 里,因为它有这个信号价值;要放行差异用那条判据的解释权,不靠改尺子)。**§5.2 第四条的板级观察项(代码与单测面已有、板级未测)**:bench 连续自抓期间人为把卷占住 2 s 以上(例如同一段跑 FTP 大文件读),看串口 `wave:` 行的 `err` 是否加一、是否只出现**一条** `[ERR] … seg drop: ring abandoned` 留痕(不是每拍刷屏)、且段号不推进(下一段仍写同号文件) | | 板级·触发来路(2026-10-30 并入原卡「手动触发与保护启动接线」板级段) | 真机面板按一次「手动录波」出一段;造一次过流,段号与该时刻 `/log/start.log` 事件对齐;冷却期内二次触发只加 `ovf` 不重录(**同时看 `armed` 与那一刻 start.log 的时刻,不要只盯 `ovf` 数字**——容差见 §9);冻结窗口内 104 上送与保护判据不受影响(这条是「丢录波样本不丢采集」的验收) | -| 板级·回放页(2026-10-30 并入原卡「现场单通道回放页」板级段) | 真机上放一段真波(不是模拟器合成节拍);远端看图能拍到该页做留证(只作留证,不是波形通路,§8.4);**空态与 CRC 失败态绝不允许画成一条直线**——用坏段在真机复现一次。**2026-10-31 远程半轮进展见下「板级远程半轮记录」小节**:PC 侧坏段拒收已过;回放页坏段/空态画面的测试面**已于 2026-11-02 枚举缺陷修复后打开**(真机已验证真段显示 + 切段切道,见下「回放页枚举恒空缺陷修复记录」小节),坏段/空态两画面本身仍是到场轮要拍的项 | +| 板级·回放页(2026-10-30 并入原卡「现场单通道回放页」板级段) | 真机上放一段真波(不是模拟器合成节拍);远端看图能拍到该页做留证(只作留证,不是波形通路,§8.4);**空态与 CRC 失败态绝不允许画成一条直线**——用坏段在真机复现一次。**2026-10-31 远程半轮进展见下「板级远程半轮记录」小节**:PC 侧坏段拒收已过;回放页坏段/空态画面的测试面**已于 2026-11-02 枚举缺陷修复后打开**(真机已验证真段显示 + 切段切道,见下「回放页枚举恒空缺陷修复记录」小节),坏段/空态两画面本身**已于 2026-11-06 台架远程轮拍毕闭环——见下「回放页坏段/空态画面闭环记录」小节,本行判据全部板级实证完毕** | | UI | `ui-verify` 五步;回放页入 `ui-golden` 黄金参考(**参考图一旦入库只能改代码对齐,禁止刷参考掩盖**);新叶走 `gen_menu.py` 重生成 + 字库链 | | 构建 | `/keil-build` 要求 0 错误 0 警告;新 .c 双端注册走 `new-source-file`(`MDK-ARM/STM32F407-Demo.uvprojx` 与 `simulator/CMakeLists.txt` 两处显式列表) | | 台账 | R6 三处同步 + `scripts/ram_baseline.py --update` + `mem-numbers` 与 `mem-budget` 钩子 | @@ -383,7 +383,8 @@ try 锁纪律)照常读出并显示 ⇒ try 锁读径正常;`manual_req` 作 **本半轮没跑的(人到场轮清单)**:注量对表(周波数 / 幅值 / 极性 / 钉轨路数)、`meas:` 浮点数值对表、两个待台架核数值(封存超时窗 §4.2 兜底行与冷却时长 `App/algo/wave_ring.h`)、P 触发与 start.log 对齐(还得先解标定闭锁)、 bench T 源与卷占用 2 s 的 `ring abandoned` 观察(需 bench 构建)、~~回放页坏段画面与空态画面 -(等枚举缺陷修复后才有测试面)~~ **(2026-11-02 枚举缺陷修复后测试面已开,见下小节)**、 +(等枚举缺陷修复后才有测试面)~~ **(2026-11-02 枚举缺陷修复后测试面已开,见下小节;2026-11-06 +台架远程轮两画面已拍毕闭环,见「回放页坏段/空态画面闭环记录」小节)**、 `task_prof` 读路径耗时峰值。**执行动作侧**(到场的人做什么、 说哪句话、会看到什么)→ `docs/测试说明/专项验证/故障录波板级到场轮执行手册.md`。 @@ -440,6 +441,42 @@ bench 锁全程持有;三次烧录(埋点 / 诊断加强 / 根因修复) (Before/After、切段、切道共四帧 + 串口实录,见该目录 README)。 **至此回放页「真段 / 坏段 / 空态」三态全部有了测试面**,第二幕尾步的坏段画面判据可跑。 +### 回放页坏段/空态画面闭环记录(2026-11-06,台架远程轮,#68 第二幕尾步) + +bench 锁全程持有(任务 `remote-shoot-68-274d2d56da74`,17:03:38 起、收工 `--bench-pass` 释放), +无人到场;固件 `Nov 6 2026 00:17:43 suite=NONE`(#53 台架轮复核构建,回放页读侧代码自 11-02 +修复后零改动,本轮**不涉代码**)。执行手册 §4 步 7 原文流,三态画面 + 恢复态共四帧入档 +`docs/测试说明/测试数据/wave_shot_20261106/`(README 含判据对照、串口锚点、复现口令与 +sha256 全清单;7003 `LCDMEM` 原帧 4× 渲染,与上小节同法): + +| 画面 | 实拍结果 | 判据 | +|---|---|---| +| 覆盖前 `UA SEG6 M` | 阶梯正弦 + 0 线 + 触发光标,Pk≈1423 mV | 对照基准(真段正常放波) | +| **坏段同号覆盖后** | **仅标题 + 「该段不可读」,零波形元素、零顶行底行字段** | **绝不许画直线 = 过**(画面逐比特 = `WP_ST_BAD` 显式文案路径) | +| **空态(`/WAVE` 全删后开页)** | **仅标题 + 「无录波段」**,同刻串口 `[ERR][UI_TASK] ui wave head idx=8 open fail fr=4` | 显式说「没有」= 过;再按 `r` 再探盘画面逐字节不变 | +| 九件原件恢复后 | 网格 + 波形区回归,帧与到场首帧逐字节相同 | 收工板况 = 到场板况 | + +坏段制造 = `RETR WAVE06.BIN → byte[130]^=0x01 → STOR 同号覆盖`(页开着覆盖、`r` 走满一圈 +再入该段触发读侧判废——`ui_task_wave_load_head()` 头 CRC+长度等式+数据区流式 CRC 全量验, +`App/task/ui_task.c`);PC 侧同件 `wave_read dump` 同判 `REJECT: data CRC16 mismatch: +stored 0xF991 calc 0xB111 …nothing drawn`(rc=1),画面与解码器两份独立实现互证。 +收工处置走手册 §7 二选一的**「不留常设负样本」**分支:板上坏段与本环投放的 `WAVE09.BIN` +均已删除,`/WAVE` 恰为到场九件原件、逐件 RETR+sha256 复验一致;坏样本点名留档在证据目录 +`samples/WAVE06_bitflip_reject.BIN`(原件 `samples/WAVE06_original.BIN` 一并留档,两件只差 +第 131 字节一比特)。 + +两条现场发现(都记账不修码):**F1** 开机后 `STOR` 的新文件(坏版、有效版都试过)**不进 +回放页段表**——表只在 `manual_req` 或「当前段消失」时重扫(11-02 v1.6 钉表纪律),页开关不 +触发重扫;首攻 `WAVE09` 因此静默出局,改列内既有段同号覆盖一次即中(FTP 手工投放段要让回放 +页看见需顶掉当前段或触发一次手动录波——纪律性事实,供后续轮引用)。**F2** 数据 CRC 判废在 +串口**静默**、靠画面自证(留痕只给 `open fail fr=` 一类),与 11-02 修复记录的留痕设计一致。 +另记台架环境事实:到场时板网链路已断(会议室网口),人插回网线后远程轮才得以执行—— +`[ERR][I104] i104: bind port 2404 FAIL` 在该构建每次上电复现,属 #53 跟踪面,本轮不新开。 + +**至此第二幕(注量对表 + 坏段/空态画面)全幕闭环**:注量三项 2026-11-04 由 #40 §8 交流轮 +跑完(幅值 / 相位 / 削顶,104 浮点遥测按用户裁定不作对照证据),尾步两画面 2026-11-06 拍毕; +手册第二幕状态与 `docs/任务规划/README.md` §2.0「独立」行已同步销项。 + --- ## 11. 与 `docs/任务规划/数据可信.md` 的口径变更(三处) diff --git a/docs/测试说明/专项验证/故障录波板级到场轮执行手册.md b/docs/测试说明/专项验证/故障录波板级到场轮执行手册.md index cb471a7c..9b7423ff 100644 --- a/docs/测试说明/专项验证/故障录波板级到场轮执行手册.md +++ b/docs/测试说明/专项验证/故障录波板级到场轮执行手册.md @@ -1,7 +1,7 @@ # 故障录波板级到场轮执行手册(人要做的事,一步一行) > **这份手册解决什么**:录波的判据里剩下的那半轮——需要**有人的手和信号发生器**的验证——把它拆成"你做什么、说哪句话、会看到什么"。 -> **它不是判据属主**:判据、留痕名清单、执行顺序图全在 `docs/子系统设计/故障录波设计说明.md` §9 与 §10;本文只写**执行动作**。已完成部分(2026-10-31 远程半轮六项 PASS + 2026-11-02 缺陷「回放页段表枚举恒空」修复闭环)见 §10「板级远程半轮记录」与 §10「回放页枚举恒空缺陷修复记录」。 +> **它不是判据属主**:判据、留痕名清单、执行顺序图全在 `docs/子系统设计/故障录波设计说明.md` §9 与 §10;本文只写**执行动作**。已完成部分(2026-10-31 远程半轮六项 PASS + 2026-11-02 缺陷「回放页段表枚举恒空」修复闭环 + 2026-11-04 第二幕注量对表闭环(#40 交流轮)+ 2026-11-06 坏段/空态两画面台架远程轮拍毕)见 §10「板级远程半轮记录」与 §10「回放页枚举恒空缺陷修复记录」「回放页坏段/空态画面闭环记录」。 > **一句话预算**:你到场约 1.5~2 小时;其中真正动手的只有**接三次线、按不超过六次键、拍两个决定**——其余全部由会话里的 agent 跑脚本。 --- @@ -11,7 +11,7 @@ | 幕 | 名字 | 要你在场? | 你动手的部分 | agent 跑的部分 | 对应判据 | |---|---|---|---|---|---| | 第一幕 | 枚举埋点与修复上板 | **已完成(2026-11-02,远程)** | 无 | 改码加埋点 → 构建 → 烧录回读 → 远程开回放页 → 读 FR 码定性 → 修复重烧 | `docs/子系统设计/故障录波设计说明.md` §10「回放页枚举恒空缺陷修复记录」 | -| 第二幕 | 注量对表 | **要到场**(只有接线需要手) | 接 UA 发生器线 1 次、拔 1 次;面板按 2 次键(或让 agent 远程注键) | 记心跳基准 → FTP 拉段 → `wave_read` 量四样 → `meas:`/104 YC 对表 → 削顶注大一遍 → 坏段上板看回放页绝不平线 | `docs/子系统设计/故障录波设计说明.md` §10「板级」行 +「板级·回放页」行后半 | +| 第二幕 | 注量对表 | **已闭环(2026-11-06)**——注量对表 2026-11-04 由 #40 交流轮跑完;坏段/空态画面 2026-11-06 台架远程轮拍毕,本幕现场无需重做 | ~~接 UA 发生器线 1 次、拔 1 次;面板按 2 次键(或让 agent 远程注键)~~ 已由远程轮与 #40 消化 | 记心跳基准 → FTP 拉段 → `wave_read` 量四样 → `meas:`/104 YC 对表 → 削顶注大一遍 → 坏段上板看回放页绝不平线 | `docs/子系统设计/故障录波设计说明.md` §10「板级」行 +「板级·回放页」行后半 +「回放页坏段/空态画面闭环记录」 | | 第三幕 | P 触发对时刻 | **要到场**,还含**两个由你拍板的决定** | IA 两点标定各接一次线 + 过流加大到 UI 见数值过 2 A | 读码算 k/b → 写配置生效 → 验证解锁 → 触发后对 start.log 时刻/段号/src=P | `docs/子系统设计/故障录波设计说明.md` §10「板级·触发来路」行 | | 第四幕 | bench 自抓与卷占用 | **可远程**(烧录同上;占卷用 FTP 造) | 无 | 烧 bench 构建 → 造占卷 ≥2 s → 看 `err`+1、**一条** `ring abandoned`、同号重写 → 还原产品构建 | `docs/子系统设计/故障录波设计说明.md` §10 板级行的 `ring abandoned` 观察项 | @@ -80,7 +80,14 @@ flowchart LR |---|---|---|---|---|---|---|---| | UA 1.000 V 50.000 Hz | 待填 | WAVE__ | __ Hz | __ V | 正/反 | __ 路 | 过/不过 | | 削顶注大 | 待填 | WAVE__ | __ Hz | __ V | 正/反 | __ 路 | 过/不过 | -| 坏段(回放页画面) | — | 同号覆盖 | — | — | — | — | 不平线=过 | +| 坏段(回放页画面) | — | WAVE06 同号覆盖(`RETR→byte[130]^=0x01→STOR`) | — | — | — | — | **过**(2026-11-06 台架远程轮实测:「该段不可读」零波形元素,绝非直线) | + +> 2026-11-06 收工状态(台架远程轮,bench 锁全程持有,无人到场):第 3 行坏段拒收画面与配套的 +> 「无录波段」空态画面真机抓屏已入档 `docs/测试说明/测试数据/wave_shot_20261106/`(README 含 +> 判据对照、串口锚点与复现口令);第 1、2 行的注量实测数值归 2026-11-04 #40 §8 交流轮 +> (`docs/测试说明/测试数据/boot_log_data/20261104_ac_*`,实测结论见 `docs/硬件平台/ADC通道映射说明.md` §8.2), +> 104 浮点遥测按该轮用户裁定不作对照证据。**本幕至此全幕闭环**;坏段样本收工不留板 +> (手册 §7 二选一取「删除」,样本点名留档见证据目录 `samples/` 与设计说明 §10 闭环记录小节)。 --- diff --git a/docs/测试说明/测试数据/wave_shot_20261106/README.md b/docs/测试说明/测试数据/wave_shot_20261106/README.md new file mode 100644 index 00000000..0331d6e9 --- /dev/null +++ b/docs/测试说明/测试数据/wave_shot_20261106/README.md @@ -0,0 +1,74 @@ +# 回放页坏段/空态画面闭环证据(2026-11-06,台架远程轮) + +本目录是 `docs/子系统设计/故障录波设计说明.md` §10「回放页坏段/空态画面闭环记录」的图源留档, +执行 `docs/测试说明/专项验证/故障录波板级到场轮执行手册.md` 第二幕 §4 步 7 与其空态收尾: +**真机回放页上把「坏段拒收」与「无录波段」两种画面拍下来存证,判据 = 绝不许画成一条直线**。 + +台架远程操作、bench 锁全程持有(`remote-shoot-68-274d2d56da74`,17:03:38 起);固件身份 +`Nov 6 2026 00:17:43 suite=NONE`(#53 台架轮复核构建,回放页代码自 2026-11-02 修复后未再改动); +所有画面帧由 `scripts/board_ui_nav.py` 的 7003 链路取 `LCDMEM` 原帧(160×160 1bpp 3200 B, +本目录 PNG 按 **4×** 放大渲染,与 wave_enum_20261102 同法),同一次上电、同一块板。 + +## 三态画面(判据对照) + +| 文件 | 画面 | 说明 | +|---|---|---| +| `good_wave06_sec6_ua.png` | `UA SEG6 M` 阶梯正弦 + 0 线 + 触发光标,Pk≈1423 mV | **覆盖前**:WAVE06 原件在盘、回放页正常放波(对照基准) | +| `bad_segment_reject_wave06.png` | 仅「录波回放」标题 + 「该段不可读」 | **覆盖后同号翻位坏段的拒收态**:零波形元素、零顶行/底行字段——绝不许画直线,判据过 | +| `empty_state_no_segments.png` | 仅「录波回放」标题 + 「无录波段」 | **真·空态**:FTP 把 `/WAVE` 十件全删后开页;串口同刻 `[ERR][UI_TASK] ui wave head idx=8 open fail fr=4`(FR_NO_FILE=卷上真没有) | +| `empty_state_recheck.png` | 同上 | 空态下按 `r`(再探盘)画面逐字节不变(两 `_raw3200.bin` sha 相同) | +| `after_restore_page_normal.png` | 网格 + 0 线 + 光标恢复绘制 | 九件原件逐件 RETR+sha256 复验后重开页,正常态回归;页面回落到 RAM 记忆的 SEC5 段,故该帧与 `arrival_open_waveplay.png` **逐字节相同**——收工画面 = 到场画面,正是想要的巧合 | +| `arrival_open_waveplay.png` | `UA SEC5 M` 平线 + PK1744mV | 到场首帧(开页落数值最大段前身的 SEC5;平线是该段真实数据,非缺陷) | + +各 PNG 附同屏 `_raw3200.bin` 原始帧,供逐比特复核。 + +## 坏段制造口径(手册 §4 步 7 原文流) + +`RETR WAVE06.BIN → byte[130] ^= 0x01(数据区内翻一位)→ STOR 同号覆盖`。页开着覆盖、 +`r` 走满一圈(周期 9)再入该段即触发读侧判废:`ui_task_wave_load_head()` 头 CRC+长度等式+ +数据区流式 CRC 全量验(`App/task/ui_task.c`),任一不符即 `UI_WAVE_BAD` → 页面显式文案。 +样本在 `samples/`:`WAVE06_original.BIN`(sha256 `9f88ee34…`,与覆盖后板上现行字节复验一致) +与 `WAVE06_bitflip_reject.BIN`(sha256 `a9e097bf…`),两件只差第 131 字节一比特。 + +PC 侧同件判据实录见 `pc_side_dump.txt`:`test/host/wave_read.py dump` 对坏件打印 +`REJECT: … data CRC16 mismatch: stored 0xF991 calc 0xB111 over 5120 bytes at offset 128 -- +segment rejected, nothing drawn`(rc=1),对原件双 CRC OK(rc=0)——板上画面与 PC 解码器 +**同一判据、两份独立实现**互证。 + +## 串口与时间线 + +`serial_excerpt.txt` 为 serial-assistant 日志摘录(原样、剔除 `seg=0` 心跳行),关键锚点: + +- 18:11:18 开页 → 18:11:38 `[FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK`(坏版覆盖)→ + 18:11:39 RETR 复验 sha=坏 → **18:12:02 抓屏拒收态** → 18:12:01 `UPLOAD '/WAVE/WAVE06.BIN' OK`(原字节恢复); +- 18:14:42–47 `DELE WAVE00…09.BIN` ×10 → 18:14:55/58 三次 `open fail fr=4`(段表记忆 idx=8、 + 盘上已无文件 → FR_NO_FILE,正是留痕本意)→ **18:14:59 抓屏空态** → + 18:15:04–13 `STOR` 九件恢复(每件后随 RETR 复验 sha256); +- 两窗之间全程 `wave:` 心跳 `err=0 ovf=0`,无一轮 [ERR] 越界(空态那次 fr=4 是留痕本意,见修复记录小节)。 + +自动化事件日志(含每步帧名/ink/位差判定):`shoot_phase2c.py` / `shoot_phase3b.py` 产物在会话 +`ci-artifacts/shoot/phase2c.json`、`phase3b.json`(一次性产物,随会话留存不入台账;本目录即台账面)。 + +## 两条现场发现 + +- **F1(已知缓存纪律的实面)**:开机后 `STOR` 新文件(先攻用 `WAVE09.BIN`,坏版与有效版都试过) + **不进回放页段表**——表只在 `manual_req` 或「当前段消失」时重扫(`ui_task_wave_scan` 钉表纪律, + 2026-11-02 v1.6),页开关不触发重扫。故本幕尾步按手册原文改用**列内既有段同号覆盖**,一次即中。 + 这不是缺陷(写侧轮转覆盖走 find-失败重扫路,天然收敛),但 FTP 手工投放段要让回放页看见, + 需同号顶掉当前段或触发一次手动录波——记此免得后人重踩。 +- **F2(拒收留痕口径确认)**:数据 CRC 判废在串口**静默**(留痕只给「表上有、开档失败」的 + `open fail fr=` 一类,判废靠画面自证)——与 2026-11-02 修复记录的留痕设计一致,本轮实测无违和。 + +## 收工处置(手册 §7 二选一) + +**不留常设负样本**:坏段样本已从板上删除(`WAVE09.BIN` 为本轮投放件、一并删除),`/WAVE` 恢复 +到场时的九件原件且逐件 sha256 复验一致(清单见 `manifest_sha256.json` 与 §10 记录);`samples/` +两件即「删除」分支的点名留档。固件仍为在场构建、UI 停 STANDBY、bench 锁收工释放。 + +## 复现口令(台架同环境) + +1. `& .venv\Scripts\python.exe scripts\board_ui_nav.py --where --i-hold-bench-lock`(身份互证) +2. FTP `admin` 登录 → `CWD /WAVE` → `RETR WAVE06.BIN` → 翻 `byte[130]` → `STOR WAVE06.BIN`(页开着覆盖) +3. `& .venv\Scripts\python.exe test\host\wave_read.py dump <坏件>`(应 REJECT rc=1) +4. 7003 开回放页(记录查询列第 10 行)→ `r` 走满一圈回踩该段 → `LCDMEM` 取帧(本目录坏段帧生成法) +5. `DELE` 全部段 → 关开页 → 取空态帧 → `STOR` 九件原件恢复(逐件 RETR+sha 复验) diff --git a/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal.png b/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal.png new file mode 100644 index 00000000..90cd344d Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal_raw3200.bin new file mode 100644 index 00000000..ddec55e7 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/after_restore_page_normal_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay.png b/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay.png new file mode 100644 index 00000000..90cd344d Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay_raw3200.bin new file mode 100644 index 00000000..ddec55e7 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/arrival_open_waveplay_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06.png b/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06.png new file mode 100644 index 00000000..72cc7b1d Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06_raw3200.bin new file mode 100644 index 00000000..8e072389 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/bad_segment_reject_wave06_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments.png b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments.png new file mode 100644 index 00000000..6bcfacba Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments_raw3200.bin new file mode 100644 index 00000000..f467cae3 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_no_segments_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck.png b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck.png new file mode 100644 index 00000000..6bcfacba Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck_raw3200.bin new file mode 100644 index 00000000..f467cae3 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/empty_state_recheck_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua.png b/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua.png new file mode 100644 index 00000000..5fd9f536 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua.png differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua_raw3200.bin b/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua_raw3200.bin new file mode 100644 index 00000000..088f507c Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/good_wave06_sec6_ua_raw3200.bin differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/manifest_sha256.json b/docs/测试说明/测试数据/wave_shot_20261106/manifest_sha256.json new file mode 100644 index 00000000..7d776c02 --- /dev/null +++ b/docs/测试说明/测试数据/wave_shot_20261106/manifest_sha256.json @@ -0,0 +1,20 @@ +{ + "README.md": "bbffa3ed7ea5c1fb25d7d63f1ea5b10c37e8fd8ff7bffefe71605e649c503ad8", + "after_restore_page_normal.png": "d0fd54629f7b597a24247ee4d5707d80528da87bf68d9016cbf0199ec6c43cb8", + "after_restore_page_normal_raw3200.bin": "4deecb9373f766e3263e4b890bd7882798b91374aec43b7fc6e96dba3f353704", + "arrival_open_waveplay.png": "d0fd54629f7b597a24247ee4d5707d80528da87bf68d9016cbf0199ec6c43cb8", + "arrival_open_waveplay_raw3200.bin": "4deecb9373f766e3263e4b890bd7882798b91374aec43b7fc6e96dba3f353704", + "bad_segment_reject_wave06.png": "a013fdf6dbab1068a7b72b8239ac573c70cea5e8de8df9214ddc5cf153586b83", + "bad_segment_reject_wave06_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889", + "empty_state_no_segments.png": "ecb6151668b0d5ef0578576dd449d9d9a7f41031fd7c9f035a98de7132853d1b", + "empty_state_no_segments_raw3200.bin": "a76c41cfd7f38cecf1092777371869a0a28a4c0ca09eb6963e17afc94d713f66", + "empty_state_recheck.png": "ecb6151668b0d5ef0578576dd449d9d9a7f41031fd7c9f035a98de7132853d1b", + "empty_state_recheck_raw3200.bin": "a76c41cfd7f38cecf1092777371869a0a28a4c0ca09eb6963e17afc94d713f66", + "good_wave06_sec6_ua.png": "db205b08fb77ac51350b802b3541dd310de1eb7ec9529d9867f64794c1aa7d6b", + "good_wave06_sec6_ua_raw3200.bin": "d6a3ac65e04d5e62007d1f13b84be38982f0b217a4e4730037a54c1864854261", + "pc_side_dump.txt": "44890852d5560073359f6e7adad03fb8c7e06e24605dfe5b1c18d4fbf8985ae6", + "serial_excerpt.txt": "f4cf0ba2eada42917abc6d2347b2e3bde041a1ff4034b48d751f5d4f6f5a66a3", + "samples/WAVE06_bitflip_reject.BIN": "a9e097bfaa0e3df8542c637c29f120d1dee347956cf0013478448861f13c40ae", + "samples/WAVE06_original.BIN": "9f88ee3490c40867299e624a2eb2323ec33bb9ca5957737d2018b9e60205a6cc", + "samples/WAVE09_seed_bitflip_reject.BIN": "b4016966c6feed92b8a7f42ce42c109dbb8a608b9531f9bad35595c22d3d6471" +} \ No newline at end of file diff --git a/docs/测试说明/测试数据/wave_shot_20261106/pc_side_dump.txt b/docs/测试说明/测试数据/wave_shot_20261106/pc_side_dump.txt new file mode 100644 index 00000000..1ab4fb1d --- /dev/null +++ b/docs/测试说明/测试数据/wave_shot_20261106/pc_side_dump.txt @@ -0,0 +1,44 @@ +### dump WAVE06_original.BIN(覆盖前原件,板上现行字节) → rc=0 + +``` +FILE : WAVE06_original.BIN (5250 bytes) +magic : 57 52 01 ('WR' + version byte 1) +ver : 1 +fs_hz : 1000 +pts_per_cycle : 20 +ch_count : 8 +pts_per_ch : 320 (320 ms at 1000 Hz) +pre_pts : 160 +trig_src : 1 (MANUAL) +trig_elm : 0 +t0_ms : 1246139 (ms since power-on) +wall : 1793609165 (epoch s) +eng : 0 (pin-domain) +flags_seq : 0x00 VALID bits: (none) +clip_mask : 0x00E6 [UB UC IB IC IN] +frame_seq : 1245891 +CRC16(hdr) : 0x0C3B OK covers [0,126), low byte first +CRC16(data) : 0xF991 OK covers 5120 bytes, low byte first +-- channel table (8 entries x 12 B) -- +IDX SEM NAME SRC BITS AVAIL K_Q16 B_CODES LSB_uV FLAG + 0 0 UA TPAFE5160 16 0x00 10000000 0 152.587891 . + 1 1 UB STM32-ADC1 12 0x02 52800000 0 805.664062 CLIPPED + 2 2 UC STM32-ADC1 12 0x02 52800000 0 805.664062 CLIPPED + 3 3 UN TPAFE5160 16 0x00 10000000 0 152.587891 . + 4 4 IA TPAFE5160 16 0x00 10000000 0 152.587891 . + 5 5 IB STM32-ADC1 12 0x02 52800000 0 805.664062 CLIPPED + 6 6 IC STM32-ADC1 12 0x02 52800000 0 805.664062 CLIPPED + 7 7 IN STM32-ADC1 12 0x02 52800000 0 805.664062 CLIPPED +``` + +### dump WAVE06_bitflip_reject.BIN(byte[130]^=0x01 同号覆盖件) → rc=1 + +``` +REJECT: WAVE06_bitflip_reject.BIN: data CRC16 mismatch: stored 0xF991 calc 0xB111 over 5120 bytes at offset 128 -- segment rejected, nothing drawn +``` + +### dump WAVE09_seed_bitflip_reject.BIN(第二幕首攻样本:20261104 真段种子翻位,未进枚举见 README 发现 F1) → rc=1 + +``` +REJECT: WAVE09_seed_bitflip_reject.BIN: data CRC16 mismatch: stored 0xF8AA calc 0xB02A over 5120 bytes at offset 128 -- segment rejected, nothing drawn +``` diff --git a/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_bitflip_reject.BIN b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_bitflip_reject.BIN new file mode 100644 index 00000000..568667b2 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_bitflip_reject.BIN differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_original.BIN b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_original.BIN new file mode 100644 index 00000000..ae7561b4 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE06_original.BIN differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE09_seed_bitflip_reject.BIN b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE09_seed_bitflip_reject.BIN new file mode 100644 index 00000000..441f5414 Binary files /dev/null and b/docs/测试说明/测试数据/wave_shot_20261106/samples/WAVE09_seed_bitflip_reject.BIN differ diff --git a/docs/测试说明/测试数据/wave_shot_20261106/serial_excerpt.txt b/docs/测试说明/测试数据/wave_shot_20261106/serial_excerpt.txt new file mode 100644 index 00000000..5cc34dca --- /dev/null +++ b/docs/测试说明/测试数据/wave_shot_20261106/serial_excerpt.txt @@ -0,0 +1,180 @@ +串口实录摘录(serial-assistant 日志原样,剔除 seg=0 心跳行)——2026-11-06 第二幕尾步两窗: +窗一 17:52:3x–17:54:5x:WAVE09 新文件首攻(坏版 STOR + 关开页,见 README 发现 F1) +窗二 18:10:0x–18:16:0x:同号覆盖主链(18:11:38 坏版 STOR→18:12:01 原字节恢复)+ 全删空态(18:14:4x DELE×10 → 18:14:55 open fail fr=4 → 18:15:0x-14 STOR 恢复×9 RETR sha 验) + +[RX] 2026-11-06T17:52:35.660+08:00 [2026-11-06 17:52:34] [FTP] connection received from 192.168.31.161:60945... +[RX] 2026-11-06T17:52:35.670+08:00 [2026-11-06 17:52:34] [FTP] CMD USER admin +[RX] 2026-11-06T17:52:35.670+08:00 [2026-11-06 17:52:34] [FTP] CMD PASS admin +[RX] 2026-11-06T17:52:35.670+08:00 [2026-11-06 17:52:34] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T17:52:35.680+08:00 [2026-11-06 17:52:34] [FTP] CMD TYPE A +[RX] 2026-11-06T17:52:35.691+08:00 [2026-11-06 17:52:34] [FTP] CMD PASV +[RX] 2026-11-06T17:52:35.742+08:00 [2026-11-06 17:52:34] [FTP] CMD NLST +[RX] 2026-11-06T17:52:35.918+08:00 [2026-11-06 17:52:34] [FTP] CMD TYPE I +[RX] 2026-11-06T17:52:35.918+08:00 [2026-11-06 17:52:34] [FTP] CMD PASV +[RX] 2026-11-06T17:52:35.969+08:00 [2026-11-06 17:52:34] [FTP] CMD STOR WAVE09.BIN +[RX] 2026-11-06T17:52:36.052+08:00 [2026-11-06 17:52:34] [FTP] UPLOAD '/WAVE/WAVE09.BIN' 5250 bytes OK +[RX] 2026-11-06T17:52:36.661+08:00 [2026-11-06 17:52:35] [FTP] CMD TYPE A +[RX] 2026-11-06T17:52:36.661+08:00 [2026-11-06 17:52:35] [FTP] CMD PASV +[RX] 2026-11-06T17:52:36.724+08:00 [2026-11-06 17:52:35] [FTP] CMD NLST +[RX] 2026-11-06T17:52:36.910+08:00 [2026-11-06 17:52:35] [FTP] CMD TYPE I +[RX] 2026-11-06T17:52:36.910+08:00 [2026-11-06 17:52:35] [FTP] CMD PASV +[RX] 2026-11-06T17:52:36.962+08:00 [2026-11-06 17:52:35] [FTP] CMD RETR WAVE09.BIN +[RX] 2026-11-06T17:52:37.128+08:00 [2026-11-06 17:52:36] [FTP] DOWNLOAD '/WAVE/WAVE09.BIN' OK +[RX] 2026-11-06T17:52:37.128+08:00 [2026-11-06 17:52:36] [FTP] CMD QUIT +[RX] 2026-11-06T17:52:37.149+08:00 [2026-11-06 17:52:36] [FTP] waiting for connection... +[RX] 2026-11-06T17:52:39.623+08:00 [2026-11-06 17:52:38][UI_CONTENT_PAGE] page close: id=wave_play +[RX] 2026-11-06T17:52:43.461+08:00 [2026-11-06 17:52:42][UI_CONTENT_PAGE] page open: id=wave_play rows=0 +[RX] 2026-11-06T18:10:04.225+08:00 [2026-11-06 18:10:03] [FTP] connection received from 192.168.31.161:54991... +[RX] 2026-11-06T18:10:04.225+08:00 [2026-11-06 18:10:03] [FTP] CMD USER admin +[RX] 2026-11-06T18:10:04.246+08:00 [2026-11-06 18:10:03] [FTP] CMD PASS admin +[RX] 2026-11-06T18:10:04.257+08:00 [2026-11-06 18:10:03] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T18:10:04.278+08:00 [2026-11-06 18:10:03] [FTP] CMD TYPE I +[RX] 2026-11-06T18:10:04.289+08:00 [2026-11-06 18:10:03] [FTP] CMD PASV +[RX] 2026-11-06T18:10:04.424+08:00 [2026-11-06 18:10:03] [FTP] CMD STOR WAVE06.BIN +[RX] 2026-11-06T18:10:04.487+08:00 [2026-11-06 18:10:03] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK +[RX] 2026-11-06T18:10:05.098+08:00 [2026-11-06 18:10:03] [FTP] CMD TYPE I +[RX] 2026-11-06T18:10:05.098+08:00 [2026-11-06 18:10:04] [FTP] CMD PASV +[RX] 2026-11-06T18:10:05.171+08:00 [2026-11-06 18:10:04] [FTP] CMD RETR WAVE06.BIN +[RX] 2026-11-06T18:10:05.346+08:00 [2026-11-06 18:10:04] [FTP] DOWNLOAD '/WAVE/WAVE06.BIN' OK +[RX] 2026-11-06T18:10:05.357+08:00 [2026-11-06 18:10:04] [FTP] CMD QUIT +[RX] 2026-11-06T18:10:05.367+08:00 [2026-11-06 18:10:04] [FTP] waiting for connection... +[RX] 2026-11-06T18:11:20.089+08:00 [2026-11-06 18:11:18][UI_CONTENT_PAGE] page open: id=wave_play rows=0 +[RX] 2026-11-06T18:11:38.915+08:00 [2026-11-06 18:11:37] [FTP] connection received from 192.168.31.161:54867... +[RX] 2026-11-06T18:11:38.936+08:00 [2026-11-06 18:11:37] [FTP] CMD USER admin +[RX] 2026-11-06T18:11:38.946+08:00 [2026-11-06 18:11:37] [FTP] CMD PASS admin +[RX] 2026-11-06T18:11:38.967+08:00 [2026-11-06 18:11:37] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T18:11:38.967+08:00 [2026-11-06 18:11:37] [FTP] CMD TYPE I +[RX] 2026-11-06T18:11:38.998+08:00 [2026-11-06 18:11:37] [FTP] CMD PASV +[RX] 2026-11-06T18:11:39.122+08:00 [2026-11-06 18:11:38] [FTP] CMD STOR WAVE06.BIN +[RX] 2026-11-06T18:11:39.216+08:00 [2026-11-06 18:11:38] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK +[RX] 2026-11-06T18:11:39.837+08:00 [2026-11-06 18:11:38] [FTP] CMD TYPE I +[RX] 2026-11-06T18:11:39.837+08:00 [2026-11-06 18:11:38] [FTP] CMD PASV +[RX] 2026-11-06T18:11:39.879+08:00 [2026-11-06 18:11:38] [FTP] CMD RETR WAVE06.BIN +[RX] 2026-11-06T18:11:40.013+08:00 [2026-11-06 18:11:38] [FTP] DOWNLOAD '/WAVE/WAVE06.BIN' OK +[RX] 2026-11-06T18:11:40.013+08:00 [2026-11-06 18:11:38] [FTP] CMD QUIT +[RX] 2026-11-06T18:11:40.023+08:00 [2026-11-06 18:11:38] [FTP] waiting for connection... +[RX] 2026-11-06T18:12:02.780+08:00 [2026-11-06 18:12:01] [FTP] connection received from 192.168.31.161:53103... +[RX] 2026-11-06T18:12:02.802+08:00 [2026-11-06 18:12:01] [FTP] CMD USER admin +[RX] 2026-11-06T18:12:02.812+08:00 [2026-11-06 18:12:01] [FTP] CMD PASS admin +[RX] 2026-11-06T18:12:02.895+08:00 [2026-11-06 18:12:01] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T18:12:02.895+08:00 [2026-11-06 18:12:01] [FTP] CMD TYPE I +[RX] 2026-11-06T18:12:02.895+08:00 [2026-11-06 18:12:01] [FTP] CMD PASV +[RX] 2026-11-06T18:12:02.957+08:00 [2026-11-06 18:12:01] [FTP] CMD STOR WAVE06.BIN +[RX] 2026-11-06T18:12:03.030+08:00 [2026-11-06 18:12:01] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK +[RX] 2026-11-06T18:12:03.633+08:00 [2026-11-06 18:12:02] [FTP] CMD TYPE I +[RX] 2026-11-06T18:12:03.643+08:00 [2026-11-06 18:12:02] [FTP] CMD PASV +[RX] 2026-11-06T18:12:03.705+08:00 [2026-11-06 18:12:02] [FTP] CMD RETR WAVE06.BIN +[RX] 2026-11-06T18:12:03.839+08:00 [2026-11-06 18:12:02] [FTP] DOWNLOAD '/WAVE/WAVE06.BIN' OK +[RX] 2026-11-06T18:12:03.839+08:00 [2026-11-06 18:12:02] [FTP] CMD QUIT +[RX] 2026-11-06T18:12:03.860+08:00 [2026-11-06 18:12:02] [FTP] waiting for connection... +[RX] 2026-11-06T18:14:44.047+08:00 [2026-11-06 18:14:42] [FTP] connection received from 192.168.31.161:58594... +[RX] 2026-11-06T18:14:44.057+08:00 [2026-11-06 18:14:42] [FTP] CMD USER admin +[RX] 2026-11-06T18:14:44.057+08:00 [2026-11-06 18:14:42] [FTP] CMD PASS admin +[RX] 2026-11-06T18:14:44.067+08:00 [2026-11-06 18:14:42] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T18:14:44.067+08:00 [2026-11-06 18:14:42] [FTP] CMD TYPE A +[RX] 2026-11-06T18:14:44.078+08:00 [2026-11-06 18:14:42] [FTP] CMD PASV +[RX] 2026-11-06T18:14:44.151+08:00 [2026-11-06 18:14:43] [FTP] CMD LIST +[RX] 2026-11-06T18:14:44.285+08:00 [2026-11-06 18:14:43] [FTP] CMD DELE WAVE00.BIN +[RX] 2026-11-06T18:14:44.627+08:00 [2026-11-06 18:14:43] [FTP] CMD DELE WAVE01.BIN +[RX] 2026-11-06T18:14:44.969+08:00 [2026-11-06 18:14:43] [FTP] CMD DELE WAVE02.BIN +[RX] 2026-11-06T18:14:45.312+08:00 [2026-11-06 18:14:44] [FTP] CMD DELE WAVE03.BIN +[RX] 2026-11-06T18:14:45.644+08:00 [2026-11-06 18:14:44] [FTP] CMD DELE WAVE04.BIN +[RX] 2026-11-06T18:14:45.997+08:00 [2026-11-06 18:14:44] [FTP] CMD DELE WAVE05.BIN +[RX] 2026-11-06T18:14:46.340+08:00 [2026-11-06 18:14:45] [FTP] CMD DELE WAVE06.BIN +[RX] 2026-11-06T18:14:46.672+08:00 [2026-11-06 18:14:45] [FTP] CMD DELE WAVE07.BIN +[RX] 2026-11-06T18:14:47.016+08:00 [2026-11-06 18:14:45] [FTP] CMD DELE WAVE08.BIN +[RX] 2026-11-06T18:14:47.358+08:00 [2026-11-06 18:14:46] [FTP] CMD DELE WAVE09.BIN +[RX] 2026-11-06T18:14:48.292+08:00 [2026-11-06 18:14:47] [FTP] CMD TYPE A +[RX] 2026-11-06T18:14:48.292+08:00 [2026-11-06 18:14:47] [FTP] CMD PASV +[RX] 2026-11-06T18:14:48.364+08:00 [2026-11-06 18:14:47] [FTP] CMD LIST +[RX] 2026-11-06T18:14:48.560+08:00 [2026-11-06 18:14:47] [FTP] CMD QUIT +[RX] 2026-11-06T18:14:48.602+08:00 [2026-11-06 18:14:47] [FTP] waiting for connection... +[RX] 2026-11-06T18:14:52.299+08:00 [2026-11-06 18:14:51][UI_CONTENT_PAGE] page close: id=wave_play +[RX] 2026-11-06T18:14:56.144+08:00 [2026-11-06 18:14:55][UI_CONTENT_PAGE] page open: id=wave_play rows=0 +[RX] 2026-11-06T18:14:56.155+08:00 [2026-11-06 18:14:55][ERR][UI_TASK] ui wave head idx=8 open fail fr=4 +[RX] 2026-11-06T18:14:59.703+08:00 [2026-11-06 18:14:58][ERR][UI_TASK] ui wave head idx=8 open fail fr=4 +[RX] 2026-11-06T18:14:59.724+08:00 [2026-11-06 18:14:58][ERR][UI_TASK] ui wave head idx=8 open fail fr=4 +[RX] 2026-11-06T18:15:02.069+08:00 [2026-11-06 18:15:00][UI_CONTENT_PAGE] page close: id=wave_play +[RX] 2026-11-06T18:15:05.361+08:00 [2026-11-06 18:15:04] [FTP] connection received from 192.168.31.161:60925... +[RX] 2026-11-06T18:15:05.372+08:00 [2026-11-06 18:15:04] [FTP] CMD USER admin +[RX] 2026-11-06T18:15:05.372+08:00 [2026-11-06 18:15:04] [FTP] CMD PASS admin +[RX] 2026-11-06T18:15:05.382+08:00 [2026-11-06 18:15:04] [FTP] CMD CWD /WAVE +[RX] 2026-11-06T18:15:05.382+08:00 [2026-11-06 18:15:04] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:05.393+08:00 [2026-11-06 18:15:04] [FTP] CMD PASV +[RX] 2026-11-06T18:15:05.466+08:00 [2026-11-06 18:15:04] [FTP] CMD STOR WAVE00.BIN +[RX] 2026-11-06T18:15:05.529+08:00 [2026-11-06 18:15:04] [FTP] UPLOAD '/WAVE/WAVE00.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:06.130+08:00 [2026-11-06 18:15:05] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:06.140+08:00 [2026-11-06 18:15:05] [FTP] CMD PASV +[RX] 2026-11-06T18:15:06.203+08:00 [2026-11-06 18:15:05] [FTP] CMD RETR WAVE00.BIN +[RX] 2026-11-06T18:15:06.367+08:00 [2026-11-06 18:15:05] [FTP] DOWNLOAD '/WAVE/WAVE00.BIN' OK +[RX] 2026-11-06T18:15:06.367+08:00 [2026-11-06 18:15:05] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:06.377+08:00 [2026-11-06 18:15:05] [FTP] CMD PASV +[RX] 2026-11-06T18:15:06.449+08:00 [2026-11-06 18:15:05] [FTP] CMD STOR WAVE01.BIN +[RX] 2026-11-06T18:15:06.522+08:00 [2026-11-06 18:15:05] [FTP] UPLOAD '/WAVE/WAVE01.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:07.135+08:00 [2026-11-06 18:15:06] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:07.135+08:00 [2026-11-06 18:15:06] [FTP] CMD PASV +[RX] 2026-11-06T18:15:07.197+08:00 [2026-11-06 18:15:06] [FTP] CMD RETR WAVE01.BIN +[RX] 2026-11-06T18:15:07.363+08:00 [2026-11-06 18:15:06] [FTP] DOWNLOAD '/WAVE/WAVE01.BIN' OK +[RX] 2026-11-06T18:15:07.363+08:00 [2026-11-06 18:15:06] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:07.373+08:00 [2026-11-06 18:15:06] [FTP] CMD PASV +[RX] 2026-11-06T18:15:07.445+08:00 [2026-11-06 18:15:06] [FTP] CMD STOR WAVE02.BIN +[RX] 2026-11-06T18:15:07.519+08:00 [2026-11-06 18:15:06] [FTP] UPLOAD '/WAVE/WAVE02.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:08.141+08:00 [2026-11-06 18:15:07] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:08.152+08:00 [2026-11-06 18:15:07] [FTP] CMD PASV +[RX] 2026-11-06T18:15:08.193+08:00 [2026-11-06 18:15:07] [FTP] CMD RETR WAVE02.BIN +[RX] 2026-11-06T18:15:08.370+08:00 [2026-11-06 18:15:07] [FTP] DOWNLOAD '/WAVE/WAVE02.BIN' OK +[RX] 2026-11-06T18:15:08.381+08:00 [2026-11-06 18:15:07] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:08.381+08:00 [2026-11-06 18:15:07] [FTP] CMD PASV +[RX] 2026-11-06T18:15:08.454+08:00 [2026-11-06 18:15:07] [FTP] CMD STOR WAVE03.BIN +[RX] 2026-11-06T18:15:08.538+08:00 [2026-11-06 18:15:07] [FTP] UPLOAD '/WAVE/WAVE03.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:09.139+08:00 [2026-11-06 18:15:08] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:09.150+08:00 [2026-11-06 18:15:08] [FTP] CMD PASV +[RX] 2026-11-06T18:15:09.191+08:00 [2026-11-06 18:15:08] [FTP] CMD RETR WAVE03.BIN +[RX] 2026-11-06T18:15:09.366+08:00 [2026-11-06 18:15:08] [FTP] DOWNLOAD '/WAVE/WAVE03.BIN' OK +[RX] 2026-11-06T18:15:09.366+08:00 [2026-11-06 18:15:08] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:09.377+08:00 [2026-11-06 18:15:08] [FTP] CMD PASV +[RX] 2026-11-06T18:15:09.461+08:00 [2026-11-06 18:15:08] [FTP] CMD STOR WAVE04.BIN +[RX] 2026-11-06T18:15:09.512+08:00 [2026-11-06 18:15:08] [FTP] UPLOAD '/WAVE/WAVE04.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:10.117+08:00 [2026-11-06 18:15:09] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:10.127+08:00 [2026-11-06 18:15:09] [FTP] CMD PASV +[RX] 2026-11-06T18:15:10.191+08:00 [2026-11-06 18:15:09] [FTP] CMD RETR WAVE04.BIN +[RX] 2026-11-06T18:15:10.367+08:00 [2026-11-06 18:15:09] [FTP] DOWNLOAD '/WAVE/WAVE04.BIN' OK +[RX] 2026-11-06T18:15:10.367+08:00 [2026-11-06 18:15:09] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:10.378+08:00 [2026-11-06 18:15:09] [FTP] CMD PASV +[RX] 2026-11-06T18:15:10.450+08:00 [2026-11-06 18:15:09] [FTP] CMD STOR WAVE05.BIN +[RX] 2026-11-06T18:15:10.513+08:00 [2026-11-06 18:15:09] [FTP] UPLOAD '/WAVE/WAVE05.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:11.117+08:00 [2026-11-06 18:15:10] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:11.127+08:00 [2026-11-06 18:15:10] [FTP] CMD PASV +[RX] 2026-11-06T18:15:11.190+08:00 [2026-11-06 18:15:10] [FTP] CMD RETR WAVE05.BIN +[RX] 2026-11-06T18:15:11.366+08:00 [2026-11-06 18:15:10] [FTP] DOWNLOAD '/WAVE/WAVE05.BIN' OK +[RX] 2026-11-06T18:15:11.366+08:00 [2026-11-06 18:15:10] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:11.377+08:00 [2026-11-06 18:15:10] [FTP] CMD PASV +[RX] 2026-11-06T18:15:11.555+08:00 [2026-11-06 18:15:10] [FTP] CMD STOR WAVE06.BIN +[RX] 2026-11-06T18:15:11.576+08:00 [2026-11-06 18:15:10] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:12.180+08:00 [2026-11-06 18:15:11] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:12.191+08:00 [2026-11-06 18:15:11] [FTP] CMD PASV +[RX] 2026-11-06T18:15:12.253+08:00 [2026-11-06 18:15:11] [FTP] CMD RETR WAVE06.BIN +[RX] 2026-11-06T18:15:12.398+08:00 [2026-11-06 18:15:11] [FTP] DOWNLOAD '/WAVE/WAVE06.BIN' OK +[RX] 2026-11-06T18:15:12.398+08:00 [2026-11-06 18:15:11] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:12.408+08:00 [2026-11-06 18:15:11] [FTP] CMD PASV +[RX] 2026-11-06T18:15:12.470+08:00 [2026-11-06 18:15:11] [FTP] CMD STOR WAVE07.BIN +[RX] 2026-11-06T18:15:12.554+08:00 [2026-11-06 18:15:11] [FTP] UPLOAD '/WAVE/WAVE07.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:13.156+08:00 [2026-11-06 18:15:12] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:13.156+08:00 [2026-11-06 18:15:12] [FTP] CMD PASV +[RX] 2026-11-06T18:15:13.207+08:00 [2026-11-06 18:15:12] [FTP] CMD RETR WAVE07.BIN +[RX] 2026-11-06T18:15:13.363+08:00 [2026-11-06 18:15:12] [FTP] DOWNLOAD '/WAVE/WAVE07.BIN' OK +[RX] 2026-11-06T18:15:13.363+08:00 [2026-11-06 18:15:12] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:13.374+08:00 [2026-11-06 18:15:12] [FTP] CMD PASV +[RX] 2026-11-06T18:15:13.447+08:00 [2026-11-06 18:15:12] [FTP] CMD STOR WAVE08.BIN +[RX] 2026-11-06T18:15:13.519+08:00 [2026-11-06 18:15:12] [FTP] UPLOAD '/WAVE/WAVE08.BIN' 5250 bytes OK +[RX] 2026-11-06T18:15:14.145+08:00 [2026-11-06 18:15:13] [FTP] CMD TYPE I +[RX] 2026-11-06T18:15:14.145+08:00 [2026-11-06 18:15:13] [FTP] CMD PASV +[RX] 2026-11-06T18:15:14.186+08:00 [2026-11-06 18:15:13] [FTP] CMD RETR WAVE08.BIN +[RX] 2026-11-06T18:15:14.363+08:00 [2026-11-06 18:15:13] [FTP] DOWNLOAD '/WAVE/WAVE08.BIN' OK +[RX] 2026-11-06T18:15:14.363+08:00 [2026-11-06 18:15:13] [FTP] CMD TYPE A +[RX] 2026-11-06T18:15:14.374+08:00 [2026-11-06 18:15:13] [FTP] CMD PASV +[RX] 2026-11-06T18:15:14.436+08:00 [2026-11-06 18:15:13] [FTP] CMD LIST +[RX] 2026-11-06T18:15:14.561+08:00 [2026-11-06 18:15:13] [FTP] CMD QUIT +[RX] 2026-11-06T18:15:14.571+08:00 [2026-11-06 18:15:13] [FTP] waiting for connection... +[RX] 2026-11-06T18:15:18.286+08:00 [2026-11-06 18:15:17][UI_CONTENT_PAGE] page open: id=wave_play rows=0 +[RX] 2026-11-06T18:15:21.817+08:00 [2026-11-06 18:15:20][UI_CONTENT_PAGE] page close: id=wave_play