18 Commits

Author SHA1 Message Date
super_agent_bot 5ef08563ed docs(wave): #93 修复板级验收轮证据与设计面回填(PR #94 第二提交)
CI / 静态门禁 (pre-commit) (push) Failing after 46s
CI / 主机侧单测 (MSVC) (push) Failing after 42s
- 证据目录 docs/测试说明/测试数据/wave_fix_20261107/:Before(旧固件烧录前实测
  oldN_P0..P3)/ After(新固件 19:10:36 构建,F1 五条 + F2 五条全过)逐帧 raw3200+PNG、
  serial 摘录与 sha 台账、boot_new2/3 启动报告、restore_verify(100 件逐字节还原 OK)、
  samples 三件与 README(含复现口令与 i104 环境条件如实记录)。
- 设计说明 §10 修复记录:板级验收结果行回填 + 台架环境新事实(拼接盘态口径相抵记账)+
  两条 i104 观察项(软复位首绑必失败 / 重试成功静默)建议各自开票。
- 手册 §4 步 7 判废行判读表 + 开页作废纪律、§8 [ERR] 停幕例外的坏段轮点名放行;
  ui_task.c 注释指向改 §4 步 7 与 §8(纯注释,Code=254960 复建一致)。
- 任务规划 README 独立行:#93 修复与板级验收里程碑。
2026-11-07 23:26:43 +08:00
super_agent_bot 36e309576f fix(wave): 回放页开页作废钉表重扫 + 判废串口逐次留痕(#93 F1/F2)
CI / 静态门禁 (pre-commit) (push) Failing after 5m49s
CI / 主机侧单测 (MSVC) (push) Successful in 48s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 3m37s
CI / 主机侧单测 (MSVC) (pull_request) Successful in 29s
F1 开机后 FTP 新 STOR 段不进回放页钉住段表(#68 轮现场发现):
注入表新增第七件 wave_enter 作废钩子(纯内存零 I/O),页面
pg_init(方案 A)与空态左右键再探(方案 B)各调一次;重扫仍懒
在首帧绘制,开页链零 I/O 不破;页内普通按键不作废,2026-11-02
钉表防抖纪律零改动。manual_req 同族同纪律:段表与段头缓存一起
作废,同号覆盖不拿旧尺子量新段。

F2 数据 CRC 判废串口静默(同轮发现):ui_task_wave_load_head()
五类 BAD 出口(头解析/长度等式/窗读/尾读/CRC 不符)收敛为一条
`ui wave head idx=%u reject=%u stored=0x%04X calc=0x%04X`;
reject=5 带 stored/calc 值对,与 PC 侧 wave_read REJECT 行同名
同值互证;reject 1..4 两字段 0 占位。ERROR 级、不判重(判废是
低频人工动作,逐次留痕),裁定与判读表随第二笔提交入手册 §3。

验证:keil 0 err 0 warn(ER_IROM1 285940 B,+224 B,内存两份
台账 --write 同步随本笔入库);ui-golden 菜单 8 态 + 内容页 74
张全过、录波回放三态像素零刷(模拟器假桩 no-op 即行为不变);
宿主 ui_data 295 / ui_sink 17 / wave_ring 113 / wave_store 170 /
wave_trig 110 全绿。板级五项验收进行中,设计说明 §10 / 手册
§3-§4 修订与台账销项随第二笔。
2026-11-07 19:16:21 +08:00
wandering1 06baf7a531 Merge pull request 'docs(hw): ④ 段变比定死入通道映射——电压族 606.06:1、电流族 29.4118 A/V,eng 保持 0(#41)' (#92) from write-ratio-41-fba44d301c82 into master
Reviewed-on: #92
2026-11-06 19:41:56 +08:00
wandering1 8a24c7ac85 Merge branch 'master' into write-ratio-41-fba44d301c82 2026-11-06 19:41:42 +08:00
wandering1 2ed715f6d5 Merge pull request 'docs(故障录波): 第二幕尾步坏段/空态画面板级闭环入档(#68)' (#91) from remote-shoot-68-274d2d56da74 into master
Reviewed-on: #91
2026-11-06 19:40:06 +08:00
super_agent_bot 2e4c167bfb docs(hw): ④ 段变比定死入通道映射——电压族 606.06:1、电流族 29.4118 A/V,eng 保持 0
用户在 Issue #41 现场报子板参数:PT 2mA/2mA、输入侧 200 kΩ、输出侧 330 Ω;
CT 5A/2.5mA、输出侧负担 68 Ω。先复核算术后入库:

- 200000 ÷ 330 = 606.060606… V/V ✓;5 ÷ (2.5mA × 68Ω) = 5 ÷ 0.17 =
  29.41176470… A/V(= 匝比 2000 ÷ 68)✓,两数与报参口径一致,未发现算误。
- 电流族"变比"实为带单位的 A/V(I端子 ÷ UAINn),与 V/V 不可混写,文档分注。

改动全在 docs/硬件平台/ADC通道映射说明.md(#41 口径:本卡不动代码、
ROM、登记簿):

- §7.1 链路分段表 ④ 行由"仍待实测确认"改"定死(参数算定)",给出两族数值;
  引文与可评审结论 1/3/4 同步收口。
- 新增 §7.2 登记:算式与额定点(400 V→0.66 V、5 A→0.17 V)、②×③×④ 端到端
  标称系数表(92.48 / 488.28 mV/码、4.488 / 23.70 mA/码)、复核口径——铭牌
  参数非本板实测,数值确认归两点标定;`eng` 判定:④ 到手满足第一条件,
  电气 8 路 ADC_CAL_F_VALID 未置位,eng 保持 0,两点标定转为可开工。
- 移交两点标定卡的两道存储题:电压族端子域标称 k 越 int32 Q16 µV/码上限
  32767,且合法带基准读 ROM 出厂表(引脚域)——写入端子域系数前存储单位
  与出厂表须一并换血。

验证:check_doc_links.py --all 与 no-mojibake 实跑通过;docs-only,
/keil-build 不适用。
2026-11-06 19:10:21 +08:00
super_agent_bot c40fd24c1a docs(故障录波): 第二幕尾步坏段/空态画面板级闭环入档(#68)
同号翻位覆盖列内段 WAVE06 → 回放页显式「该段不可读」(零波形元素,
判据「绝不许画直线」过);全删段 → 「无录波段」空态 + 串口
open fail fr=4 互证。证据目录 wave_shot_20261106:三态 PNG 与原始
帧、坏样本与原件、PC 侧 wave_read REJECT 实录、串口摘录、sha256
清单。收工:板上九件原件逐件 sha 复验恢复、坏样本不留板(§7 二
选一取删除),UI 停 STANDBY。发现 F1(STOR 新文件不进钉表,需同
号顶当前段或手动录波触发重扫)与 F2(数据 CRC 判废串口静默、画
面自证)记 §10。同步销项:手册第二幕状态与现场记录表第 3 行、
设计说明 §10「回放页坏段/空态画面闭环记录」、任务规划 README
§2.0 独立行。本轮不改代码。关联 #68 #38。
2026-11-06 18:35:40 +08:00
wandering1 c2a946f993 Merge pull request 'docs(ui): Issue #53 台架轮复核销项——六页真机判据上板复核完成(RESTARTED 标不可验)' (#90) from bench-verify-ui-pages-f9c1662bf18b into master
Reviewed-on: #90
2026-11-06 09:37:18 +08:00
super_agent_bot 3da3936ffe chore(sync): 空合并提交触发 PR #90 可合并性复测(master@8772420 已在 e1476e1 中合入,内容零变化) 2026-11-06 08:41:40 +08:00
wandering1 e1476e12c1 Merge branch 'master' into bench-verify-ui-pages-f9c1662bf18b 2026-11-06 08:21:23 +08:00
wandering1 87724205c9 Merge pull request 'docs: #39 收尾——子项 A 收口审计 + 子项 B 台架重验证据写入模块文档' (#89) from queue-issue-39-d318f32c6528 into master
Reviewed-on: http://100.123.83.113:3001/wandering1/STM32F4-Base/pulls/89
2026-11-06 08:18:27 +08:00
super_agent_bot 416e92f109 docs(ui): Issue #53 台架轮复核销项——六页真机判据上板复核完成(RESTARTED 标不可验)
CI / 静态门禁 (pre-commit) (push) Failing after 3m10s
CI / 主机侧单测 (MSVC) (push) Failing after 44s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 47s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 44s
台架轮(2026-11-06,实机 192.168.31.100 生产固件,boot 187–193,
ST-LINK + RemoDispBus 7003 按键注入/抓帧 + FTP 取证,全程持 bench 锁):

- 判据1 真记录翻页与保持:oper 73 条 19 页 / yk 34 条 9 页 / start 2 条
  1 页实机翻页连续,页数与盘上条数交叉吻合;跨 188–193 六次重启
  (IWDG/NRST/系统复位,RAM 每次全清)YK/START/WDEV md5 逐字节不变,
  RUN/SOE/OPER/SELFTEST 纯追加、旧记录区零改写。
- 判据2 清除记录后对应页归零:oper 73→0、start 2→0、yk 34→0(页显
  「无记录」+ NAND 对应文件消失);告警行空类清除幂等;RUN/SOE/
  SELFTEST 清除前后逐字节一致(逐行独立清除证实);OPER 由后续写入
  自动重建且恰含三条清类留痕、清 oper 自身不留痕(留痕契约证实)。
- 判据3 上电一次 boot_count +1:187→193 六连号无跳变,电池域 SRAM
  保持+回写正常;本机无市电开关,以系统复位代理完整上电(覆盖
  SRAM 存储语义),真·拔电 POR 计数差额留人工一眼补验。
- 判据4 拔 RTC 电池落 RESTARTED:台架不可验(用户裁定 2026-11-05),
  销项不挂账;seq_state 四态判定归主机单测 test/host/boot_stats/ 覆盖。
- 判据5 IWDG 复位落「独立看门狗」:SWD 热插拔现场收窄看门狗窗口
  (PR=0/RLR=2,窗口 ≈0.37ms ≪ 100ms 喂狗节拍)触发真实计数器溢出
  → rst_cause=独立看门狗;咬后 wd_platform_start 自愈回 PR=4/RLR=1249。
  调试停机(DBGMCU_APB1_FZ 实读 0)与 NRST 硬脉冲两条不咬路径的
  归因已记台架台账(Issue #53 评论)。
- 判据6 主站接入一次 conn_up +1:75s 静默窗(前后帧逐字节相同)后
  单次 STARTDT 连接恰好 +1,发送帧数 +1、接收字节 +6B 交叉印证。

销项:六页文件头「台架待补」段改为「台架复核已完成」(模拟器口径
保留);模拟器差距清单 §2.3 开机账本行更新复核口径;登记簿 §7
「UI 六页真机判据」行删除(工单授权),交叉引用同步(任务规划
README、产品需求 FR-SOE-3)。清除动作是判据 2 本体,清前全量
NAND 记录已备份(PC 侧),留证于 Issue #53 台架轮评论。

门禁:check_doc_links --all 213 文档过;主机侧单测 48 runner
4257 断言全过;ARMCC 全量构建 0 Error 0 Warning
(Code=254820 RO=30896 RW=2072 ZI=150104);ui-golden 菜单 8 状态
+ 内容页 74 张黄金参考一致(本机按部署文档第 3 步补装 SDL2 SDK)。
附带:内存数字两文档随 .map 同步——RAM 台账受管区 3 行 +
RAM 使用分析快照 3 行(mem-budget / mem-numbers 门禁随本票
Drivers/BSP staged 触发的 HEAD 既有漂移修正:#73/#79 合入后未跑
--write;285,716 B 与体积凭证一致,全部 PASS/参考,无红线变动)。
体积凭证指纹陈旧同为 HEAD 既有(488f6fb 起),本票纯注释/文档
不动体积面,不越权刷新。
2026-11-06 03:49:18 +08:00
super_agent_bot 685e3b58f5 docs: #39 收尾——子项 A 收口审计 + 子项 B 台架重验证据写入模块文档
CI / 静态门禁 (pre-commit) (push) Failing after 7m23s
CI / 主机侧单测 (MSVC) (push) Successful in 31s
- docs/网络/网络自愈架构设计.md:新增 2026-11-06 台架重验条目(子项 B 完成判据达成)
- docs/子系统设计/看门狗设计说明.md:新增 2026-11-06 变更记录(uiTask ≥800ms 饿死签名新负载下不复现)
- docs/任务规划/README.md §2.0:第 2 行 net 层跨上下文收口 → ✅ 2026-11-06 闭环
- docs/任务规划/登记簿.md §6:第 1 项销项并重新编号

Closes #39
2026-11-06 02:11:24 +08:00
wandering1 829c2580bb Merge pull request 'build(mdk): Keil 可逆排除 126 个零产出 LVGL 编译单元,全量重建 21.5→18.3 s(-14.6%,#46)' (#87) from execute-issue-46-214251580469 into master
CI / 静态门禁 (pre-commit) (push) Failing after 4m36s
CI / 主机侧单测 (MSVC) (push) Successful in 32s
Reviewed-on: http://100.123.83.113:3001/wandering1/STM32F4-Base/pulls/87
2026-11-06 01:04:31 +08:00
wandering1 0f2aec8850 Merge pull request 'docs(storage): #45 复核结论——卷锁无第二写者,全序列卷锁项关闭(销项)' (#86) from execute-issue-45-262ec492e96a into master
Reviewed-on: #86
2026-11-06 00:05:47 +08:00
super_agent_bot 488f6fbf21 build(mdk): Keil 可逆排除 126 个零产出 LVGL 编译单元,全量重建 21.5→18.3 s(-14.6%,#46)
CI / 静态门禁 (pre-commit) (push) Failing after 44s
CI / 主机侧单测 (MSVC) (push) Failing after 44s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 45s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 45s
按 #46 判据「有实测收益才保留改动」执行,证据(同机同基线 c487ce42,UV4 -r 墙钟):

- 基线 4 次全量重建均值 21.46 s → 排除态 4 次均值 18.33 s,-3.13 s(-14.6%);
  增量最坏对照(touch lvgl.h 后 -b)9.66 s/83 单元 → 8.06 s/45 单元(-16.6%)。
- 影像等价:Program Size 四项全同(Code=254820 RO=30896 RW=2072 ZI=150104);
  .hex 286,084 字节两两比对仅差 0x08007C6B–6F 的 fw 时间戳横幅(基线之间同差);
  .map 符号表逐行比对,基线独有 126 行恰为被排除单元的 ABSOLUTE 文件记录。
- 零产出认定:3 次基线 .map 的 Image component sizes 中 Code/RO/RW/ZI 全 0,
  名单一致(121 空 TU + 6 仅调试记录)。Cross Reference Table 不动点收敛得可安全
  排除集:lv_circle_buf.c 因被保留的 lv_iter.o 静态引用而保留(armlink 先解析
  后死删,127 全排实测 L6218E×9);净排除 126 个。
- 形态:仅加每文件 <FileOption><IncludeInBuild>0</IncludeInBuild>,不删条目,
  GUI 可逐项恢复,revert 单笔整体回滚;FilePath 集合不变(registration-check 过)。
- 本机构建对工程文件零抖动;最终一次全量构建(18.20 s,0E0W)跑在提交字节上。
- sim/CMake 不涉及;LVGL 源码零改动。台架回归不需要:镜像与已验收基线逐字节
  等价(除时间戳)。

Issue: http://100.123.83.113:3001/wandering1/STM32F4-Base/issues/46
2026-11-06 00:03:33 +08:00
super_agent_bot 84f46b5660 docs(storage): #45 复核结论——卷锁无第二写者,全序列卷锁项关闭(销项)
登记簿 §2「可选全序列卷锁」按其判据(无第二写者则关闭)销项:
master c487ce4 枚举全部生产卷访问点——写者 syslog/soe/cfg/prot_set、
录波段、lftpd,读者 UI 两径,空闲 sync——全部持卷锁或走屏障;
启动期卷写由 STORAGE_READY 屏障门控(default_task.c bring-up)。
「存储侧喂狗饥饿」2026-10-02 后无新台架证据:F2/F3(10-25)、
录波枚举(11-02)、PR #82 补验 soak(11-05)均无该签名;dhara
try_recover 自旋有界(8 次 restart 定案 TOO_BAD)且 FTL 入口
nand_ftl_wd_feed() 直接喂 IWDG,观察行留存并更新现状字段。

覆盖面审计沉淀进 存储架构说明 §10.5;登记簿 §6 第 3 项销项、
uvprojx 观察行升 3;项目架构总览 fs/ 行旧「三条路径」口径更正。

评估过程与逐条证据:Gitea issue #45。
2026-11-05 23:51:23 +08:00
wandering1 c487ce4225 Merge pull request 'fix(cfg): 热重载读侧三点一致性校验——掐断打回出厂与保存吞段(#73)' (#82) from fix-config-reload-03ecc431fc5e into master
CI / 静态门禁 (pre-commit) (push) Failing after 5m15s
CI / 主机侧单测 (MSVC) (push) Failing after 45s
Reviewed-on: #82
2026-11-05 18:26:56 +08:00
79 changed files with 3233 additions and 73 deletions
+85 -8
View File
@@ -419,9 +419,12 @@ static const ui_soe_reader_t s_soe_reader = { ui_task_soe_count, ui_task_soe_get
* 解码 40 点 + 逐点 code_to_milli 峰值扫描 40 次(int64 乘除,
* 微秒级)——不是全段 8×320 扫描,回放页一屏只碰一个通道一窗;
* - 纯内存不碰卷的路径(评审据此看最坏的落点):manual_req 只投一个
* 请求字节;已缓存段的上下切道、左右切段的段号表环游;空态与坏态
* 直接返回。所以最坏只落在「第一次进回放页 / 第一次切到未缓存段」
* 这类一次性动作上,同段内连续按键不重复付 ②。
* 请求字节;wave_enter 只翻两个作废旗标(#93 F1,不取锁不开盘);
* 已缓存段的上下切道、左右切段的段号表环游;空态与坏态直接返回。
* 所以最坏落在「进回放页(#93 F1 起每次开页都先作废、首帧付一次 ①,
* 总额仍封死在首帧那一帧)/ 第一次切到未缓存段」这类一次性动作上,
* 同段内连续按键不重复付 ②;空态再探盘的按键付 ①(方案 B 自带的
* 语义——盘真 0 段时每次再探重扫正是该付的,成本有界在空态按键数)。
* 没有实测数,上面是与落盘道同一把尺的**推算**:落盘道的告警线是
* 50 ms / 21 次写,读路径无簇分配、不写 FAT 元数据,只会更便宜,故按
* 同量级不高于它估——一次渲染最坏一窗 ≈ 段表 + 一段全验 + 一窗,仍远
@@ -433,7 +436,8 @@ static const ui_soe_reader_t s_soe_reader = { ui_task_soe_count, ui_task_soe_get
*/
static uint8_t s_wave_idx[WAVE_ST_SEG_MAX]; /* 盘上现存段号升序表 */
static uint8_t s_wave_cnt; /* 表内条数 */
static uint8_t s_wave_scanned; /* 表是否有效(manual_req 后作废) */
static uint8_t s_wave_scanned; /* 表是否有效(manual_req /
* wave_enter 后作废,#93 F1) */
static uint8_t s_wave_cached_idx; /* 段头缓存属于哪一段 */
static uint8_t s_wave_cache_ok; /* 该段已验完整(头+数据 CRC) */
static wave_seg_meta_t s_wave_meta; /* 已验段的头(172B,唯一驻留) */
@@ -567,6 +571,18 @@ static uint8_t ui_task_wave_find(uint8_t a_idx, uint8_t *a_pos) {
return 0u;
}
/*
* 判废原因码(#93 F2:ui_task_wave_load_head 五类 BAD 出口收敛成一条
* 串口留痕,reject= 字段取值即本组宏)。值域是判读表与 PC 侧互证的
* 接口的一部分:只增不改义。1 收「拿不到一个解析得动的头」的一切
* (头窗读败 = 无从解析,与 head_parse 拒收、段长字段自相矛盾同族)。
*/
#define UI_WAVE_REJ_HEAD 1u /* 头窗读败 / head_parse 拒收 / seg_size 自相矛盾 */
#define UI_WAVE_REJ_LEN 2u /* 长度等式不符(文件尺寸 != 头算出的整段尺寸) */
#define UI_WAVE_REJ_WIN 3u /* 数据区流式读窗失败 */
#define UI_WAVE_REJ_TAIL 4u /* 尾 2B(存储 CRC)读失败 */
#define UI_WAVE_REJ_CRC 5u /* 数据 CRC 不符(留痕带 stored/calc,可与 PC 侧 wave_read REJECT 行对值互证) */
/*
* 函数功能:读段并做完整性判定(头 CRC 由 head_parse 判,数据 CRC 流式判),
* 成功则把段头留在 s_wave_meta 供 seg_win 免重读
@@ -581,7 +597,10 @@ static uint8_t ui_task_wave_find(uint8_t a_idx, uint8_t *a_pos) {
* 成本的代价换「CRC 不符必须拒收」永远现算,不做跨键存的位图
* 函数说明:缓存命中(同段且已验)直接返 OK——左右切段回到上一段、上下切
* 通道都靠它把重复的 5250B 全扫压成一次;文件读中途消失(被别的
* 写者轮转掉)按 NONE 处理,页面下轮自然重扫
* 写者轮转掉)按 NONE 处理,页面下轮自然重扫;五类判废(reject=
* 原因码见上方 UI_WAVE_REJ_* 组)在本函数收尾统一收敛成一条
* DBG_ERROR——只有串口在手的远程轮也要有判废可查面(#93 F2,
* 电平与不判重两条裁定记录在设计说明 §10 的 2026-11-07 节)
*/
static int ui_task_wave_load_head(uint8_t a_idx) {
static FIL f; /* static:FIL = 528B,理由同 soe_store_read */
@@ -591,6 +610,11 @@ static int ui_task_wave_load_head(uint8_t a_idx) {
FRESULT ofr; /* 开档 FR 码:开档失败留痕用 */
UINT br = 0u;
int rc;
uint8_t reject = 0u; /* 判废原因码 UI_WAVE_REJ_*(#93 F2 留痕;
* 0 = 没走到任何判废点。BAD 时必非 0) */
uint16_t crc_stored = 0u; /* 仅 reject=UI_WAVE_REJ_CRC 时有值:与 PC 侧
* wave_read REJECT 行互证的 stored/calc 对 */
uint16_t crc_calc = 0u;
if ((s_wave_cache_ok != 0u) && (s_wave_cached_idx == a_idx)) {
return UI_WAVE_OK;
@@ -641,6 +665,7 @@ static int ui_task_wave_load_head(uint8_t a_idx) {
fr = f_read(&f, s_wave_buf, n, &br);
if ((fr != FR_OK) || (br != n)) {
rc = UI_WAVE_BAD;
reject = UI_WAVE_REJ_WIN;
break;
}
crc = wave_store_crc_update(crc, s_wave_buf, n);
@@ -649,14 +674,27 @@ static int ui_task_wave_load_head(uint8_t a_idx) {
/* 第四步:读回存储值比对(低字节在前) */
if ((rc == UI_WAVE_BAD) && (f_lseek(&f, size - 2u) == FR_OK) &&
(f_read(&f, tail, 2u, &br) == FR_OK) && (br == 2u)) {
if (crc == (uint16_t)(tail[0] | ((uint16_t)tail[1] << 8))) {
uint16_t stored = (uint16_t)(tail[0] | ((uint16_t)tail[1] << 8));
if (crc == stored) {
rc = UI_WAVE_OK;
} else if (reject == 0u) {
/* 窗读全程跑完还对不上才是真判废(stored/calc 对值得留
* 给 wave_read 互证);窗已判废(REJ_WIN)时 crc 是半截
* 值,既不覆原因也不留这对比值——免得互证对上一个假数 */
reject = UI_WAVE_REJ_CRC;
crc_calc = crc;
crc_stored = stored;
}
} else if (reject == 0u) {
reject = UI_WAVE_REJ_TAIL; /* 尾 2B 定位/读失败 */
}
} else if (total == 0u) {
rc = UI_WAVE_BAD; /* seg_size 返 0 = 头字段自相矛盾,判废 */
reject = UI_WAVE_REJ_HEAD;
} else {
rc = UI_WAVE_BAD; /* 长度与头部字段不符,判废 */
reject = UI_WAVE_REJ_LEN;
}
(void)f_close(&f);
}
@@ -671,6 +709,21 @@ static int ui_task_wave_load_head(uint8_t a_idx) {
* 没有任何视觉面——必须留痕(10-31 半轮栽就栽在这类静默面上) */
DBG_ERROR("ui wave head idx=%u open fail fr=%d", (unsigned)a_idx,
(int)ofr);
} else if (rc == UI_WAVE_BAD) {
/* #93 F2:五类判废出口(头/长度等式/窗/尾/CRC)收敛成这一条
* 留痕——有画面在手判废有画面自证,只有串口在手的远程无人轮
* 判废不留痕就是事后黑箱。BAD 不写 cache_ok = 每次进坏段都
* 付一次完整校验,留痕与按键、画面一一对应,刻意**不判重**
* ——判废是低频人工动作,逐次留痕正是取证要的东西(电平
* ERROR + 不判重两条裁定见设计说明 §10 的 2026-11-07 节)。
* reject= 原因码表与「reject!=5 时两个 CRC 字段恒 0x0000」
* 判读口径见手册 §4 步 7 与 §8;reject=5 的 stored/calc 与 PC 侧
* wave_read 的 REJECT 行同名同值、可对值互证。[ERR] 会命中
* /serial-boot-test 的 Forbidden 清单 → 坏段轮里按「预期内」
* 点名放行(同手册),正常盘上本行一条都不会出现 */
DBG_ERROR("ui wave head idx=%u reject=%u stored=0x%04X calc=0x%04X",
(unsigned)a_idx, (unsigned)reject,
(unsigned)crc_stored, (unsigned)crc_calc);
}
}
return rc;
@@ -698,6 +751,29 @@ static int ui_task_wave_manual_req(void) {
return r;
}
/*
* 函数功能:回放页开页 / 空态再探盘的作废钩子——作废段表与段头缓存
* (#93 F1 方案 A/B;与 manual_req 受理支同一条作废纪律,字段
* 契约见 ui_data.h wave_enter 注)
* 入口参数:无
* 返回值:无
* 限定条件:uiTask(页面框架 init_cb / key_cb 链都跑在本任务上;作废的
* 是本任务私有缓存,无锁无竞态);纯内存零 I/O,开页链不破
* 函数说明:只翻旗标不重扫——重扫仍懒在 ui_task_wave_table() 首次取数。
* manual_req 的作废盖「本机自己新落段」,本件盖「别的写者
* (FTP STOR)在上次开页之后投放的新段」:11-02 把钉表防抖立
* 成纪律时把这两种情形一起钉死了,开页因此看不见新段(#93 F1
* 发现面)。页内普通按键**不调本件** = 防抖纪律原样保留;空
* 态左右键调(方案 B)只在盘真 0 段时逐次重探——「新段可能已
* 落」这条注释里写了一直没机制兑现的语义从此有兑现。残留纪律
* (手册 §4 / 设计说明 §10 留痕):**页开着时**投放的段要再开
* 一次页才可见,页开着追新段本波不做
*/
static void ui_task_wave_enter(void) {
s_wave_scanned = 0u;
s_wave_cache_ok = 0u;
}
/*
* 函数功能:取盘上「数值最大段号」(回放页开屏落点)
* 入口参数:a_idx - 出参段号
@@ -903,9 +979,10 @@ static int ui_task_wave_seg_win(uint8_t a_idx, uint8_t a_ch,
return rc;
}
/* 录波通道函数表(六件齐全;ui_data_wave_bind 拒绝残表,缺件就是装配错) */
/* 录波通道函数表(七件齐全;ui_data_wave_bind 拒绝残表,缺件就是装配错) */
static const ui_data_wave_ops_t s_wave_ops = {
ui_task_wave_manual_req,
ui_task_wave_enter,
ui_task_wave_seg_first,
ui_task_wave_seg_prev,
ui_task_wave_seg_next,
@@ -1014,7 +1091,7 @@ void ui_task_func(void *argument) {
DBG_ERROR("UI maint bind: FAIL");
}
/* 录波通道注入(故障录波道 UI 侧,2026-10-29):手动录波触发页与回放页
* 的唯一数据入口,同样先于 ui_menu_init。未注入窗口里六件按「无录波段」
* 的唯一数据入口,同样先于 ui_menu_init。未注入窗口里七件按「无录波段」
* 空态渲染(不画线、不崩);残表 = 装配错,启动日志必须可见 */
if (ui_data_wave_bind(&s_wave_ops) != 0) {
DBG_ERROR("UI wave bind: FAIL");
+11 -3
View File
@@ -1090,14 +1090,14 @@ uint8_t ui_data_comm_pending(void) {
/* ── 通道六:故障录波(wave)注入与包装 ─────────────────────────────────────
* 包装层零判据:未注入统一按「无录波段」态返(页面显式空态文案,绝不
* 画平线——设计 §8.1 空态行);六件的参数校验只到指针级,语义判定
* 画平线——设计 §8.1 空态行);七件的参数校验只到指针级,语义判定
* (卷忙/段损坏)全在执行侧,与通道四/五同一条分层纪律。
*/
static const ui_data_wave_ops_t *s_wave = NULL;
/*
* 函数功能:注入录波执行侧函数表(启动期一次)
* 入口参数:ops - 六件齐;NULL = 撤销注入
* 入口参数:ops - 七件齐;NULL = 撤销注入
* 返回值:0 - 已注入/已撤销;-1 - 残表(存量不动,理由逐字同 comm bind) int
* 限定条件:uiTask 启动期,先于 ui_menu_init()
*/
@@ -1106,7 +1106,8 @@ int ui_data_wave_bind(const ui_data_wave_ops_t *a_ops) {
s_wave = NULL;
return 0;
}
if ((a_ops->manual_req == NULL) || (a_ops->seg_first == NULL) ||
if ((a_ops->manual_req == NULL) || (a_ops->wave_enter == NULL) ||
(a_ops->seg_first == NULL) ||
(a_ops->seg_prev == NULL) || (a_ops->seg_next == NULL) ||
(a_ops->seg_head == NULL) || (a_ops->seg_win == NULL)) {
return -1;
@@ -1123,6 +1124,13 @@ int ui_data_wave_manual_req(void) {
return s_wave->manual_req();
}
/* 函数功能:开页 / 空态再探盘的作废钩子(未注入 = 什么都不做,零副作用) void */
void ui_data_wave_enter(void) {
if (s_wave != NULL) {
s_wave->wave_enter();
}
}
/* 函数功能:录波通道三态查询的统一未注入兜底(返 NONE 显空态,不崩) int */
static int wp_wave_none(void) {
return UI_WAVE_NONE;
+17 -4
View File
@@ -947,14 +947,20 @@ uint8_t ui_data_comm_pending(void);
#define UI_WAVE_BAD 2
/*
* 录波执行侧注入表(六件齐全;ui_data_wave_bind 拒绝残表)
* 返回值约定:除 manual_req 外,各件返回 UI_WAVE_OK / NONE / BAD 三态;
* seg_win 的出参仅在返 UI_WAVE_OK 时可读(通道五同一条出参契约)。
* 录波执行侧注入表(七件齐全;ui_data_wave_bind 拒绝残表)
* 返回值约定:除 manual_req 与 wave_enter(两件是动作位,不产三态)外,
* 各件返回 UI_WAVE_OK / NONE / BAD 三态;seg_win 的出参仅在返
* UI_WAVE_OK 时可读(通道五同一条出参契约)。
*/
typedef struct {
/* 投一次手动录波请求。返回值:0 - 已受理;非零 - 拒收(含未落段通道
* 不可用),页面据此走确认链的 ERR 支 */
int (*manual_req)(void);
/* 回放页开页 / 空态再探盘时作废段表与段头缓存(#93 F1 方案 A/B 的
* 作废钩子;纯内存零 I/O——重扫仍懒在首次取数,开页链零 I/O 不破;
* 页内按键不调它(空态再探除外),11-02 钉表防抖纪律原样保留)。
* 返回值:无 */
void (*wave_enter)(void);
/* 取盘上数值最大的段号(回放页开屏落点;左右键从此起环游)。
* 回绕后本序不保证时间最新,页顶段号即自证;时间序要靠段头
* frame_seq/t0,代价是 100 次开文件,本波不做(lead 裁定 2026-10-29) */
@@ -980,7 +986,7 @@ typedef struct {
/*
* 函数功能:注入录波执行侧函数表(启动期一次;形状对齐 ui_data_comm_bind)
* 入口参数:ops - 函数表(六件都不得为 NULL);NULL = 撤销注入(宿主测试用)
* 入口参数:ops - 函数表(七件都不得为 NULL);NULL = 撤销注入(宿主测试用)
* 返回值:0 - 已注入/已撤销;-1 - 残表(存量不动) int
* 限定条件:uiTask 启动期、先于 ui_menu_init()
*/
@@ -992,6 +998,13 @@ int ui_data_wave_bind(const ui_data_wave_ops_t *a_ops);
*/
int ui_data_wave_manual_req(void);
/*
* 函数功能:回放页开页 / 空态再探盘时作废段表与段头缓存(#93 F1 方案
* A/B 的作废钩子;纯内存零 I/O,重扫懒在首帧取数)
* 返回值:无(未注入 = 什么都不做,页面取数行为不变) void
*/
void ui_data_wave_enter(void);
/*
* 函数功能:取数值最大段号(排序口径见 ui_data.c 同名胶水注释:回绕后本序
* 不保证时间最新,页顶段号即自证;真时间序要逐段读 frame_seq/t0,
+5 -3
View File
@@ -9,9 +9,11 @@
* 写入点 = App/task/protect_task.c 的 s_log_active_edge();
* "记录类型 = 日志 ID 本身"(一类记录一个文件,记录体内没有类型字段位,
* Lead 裁定 2026-10-26)——本页只读 accid.log 一个文件,不做跨文件混排。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真 NAND 上真实记录的翻页读取、
* 掉电后记录保持、清除记录后本页归零这三件事都要上板复核;模拟器侧该文件
* 没有写入方,像素黄金只能验空态"无记录"。
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 188–193,证据贴 Issue #53 评论):
* 本页真机实读为空态"无记录"且属实况(事故写入方在保护未标定闭锁内,台架期间
* 零触发,NAND 无 accid.log);空类清除幂等经同页其余行实机复核,翻页与保持
* 逻辑经同构记录页(操作 / 遥控 / 启动)真记录复核。模拟器侧该文件仍无写入方,
* 像素黄金维持空态"无记录"口径。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
+5 -3
View File
@@ -9,9 +9,11 @@
* 写入点 = App/task/protect_task.c 的 s_log_active_edge();
* "记录类型 = 日志 ID 本身"(一类记录一个文件,记录体内没有类型字段位,
* Lead 裁定 2026-10-26)——本页只读 alarm.log 一个文件,不做跨文件混排。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真 NAND 上真实记录的翻页读取、
* 掉电后记录保持、清除记录后本页归零这三件事都要上板复核;模拟器侧该文件
* 没有写入方,像素黄金只能验空态"无记录"。
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 188–193,证据贴 Issue #53 评论):
* 本页真机实读为空态"无记录"且属实况(告警写入方在保护未标定闭锁内,台架期间
* 零触发,NAND 无 alarm.log);清除页本行两段式空类清除已实机复核幂等;翻页与
* 保持逻辑经同构记录页(操作 / 遥控 / 启动)真记录复核。模拟器侧该文件仍无
* 写入方,像素黄金维持空态"无记录"口径。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
+5 -3
View File
@@ -9,9 +9,11 @@
* 写入点 = App/task/default_task.c(定值保存)、App/protocol/iec104/iec104_pts.c(复归与整定写入)、App/task/iec104_serv.c 与 App/sync/time_sntp.c(对时)、App/log/sys_log_mcu.c(清除记录留痕,OPER 自身除外);
* "记录类型 = 日志 ID 本身"(一类记录一个文件,记录体内没有类型字段位,
* Lead 裁定 2026-10-26)——本页只读 oper.log 一个文件,不做跨文件混排。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真 NAND 上真实记录的翻页读取、
* 掉电后记录保持、清除记录后本页归零这三件事都要上板复核;模拟器侧该文件
* 没有写入方,像素黄金只能验空态"无记录"。
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 188–193,证据贴 Issue #53 评论):
* 真 NAND 真实记录的翻页读取、复位(RAM 全清)后从 NAND 原样重读、清除记录后
* 本页归零(73 条 → 无记录、OPER.LOG 从盘上消失)三件事均已上板复核;真·拔
* 市电本机不可控,保持性以 RAM 全清 + 全链重启代理(POR 计数差额人工一眼可补)。
* 模拟器侧该文件仍无写入方,像素黄金维持空态"无记录"口径。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
+7 -4
View File
@@ -17,10 +17,13 @@
* **不做跨开机累计**(用户裁定 2026-10-27)
* 几何余量(2026-10-28 黄金目检):「自电池周期」5 字 x12px 从 x=101 起、右缘 161,**余量 0**——
* 值列再加字或换字号必切边;要扩文案必须先减字或改标签列宽度,别直接加字。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真机上电一次看 boot_count +1、
* 拔电换电池后 seq_state 落 RESTARTED、IWDG 复位后 rst_cause 落 IWDG、
* 主站连一次看 conn_up +1 —— 模拟器无 boot_stats(依赖 SD2506 I2C 与 RCC_CSR)
* 与 104 协议栈,黄金参考拍的是固定假数据
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 187–193,证据贴 Issue #53 评论):
* 上电一次 boot_count +1 真机复核——链条 187→193 六连击无跳号,SRAM 保持 +
* 写回正常(本机无市电开关,用 ST-LINK 系统复位代理完整上电,电池域存储语义
* 全覆盖);IWDG 复位后 rst_cause 落「独立看门狗」经 SWD 缩窗真溢出复核;
* 主站接入一次 conn_up +1 经静默窗 +1 精确归因复核;拔 RTC 电池落 RESTARTED
* 一项台架不可验(用户裁定 2026-11-05,销项不挂账)。模拟器无 boot_stats
* (依赖 SD2506 I2C 与 RCC_CSR)与 104 协议栈,黄金参考拍的是固定假数据
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
+5 -3
View File
@@ -9,9 +9,11 @@
* 写入点 = App/task/protect_task.c 的 s_log_active_edge();
* "记录类型 = 日志 ID 本身"(一类记录一个文件,记录体内没有类型字段位,
* Lead 裁定 2026-10-26)——本页只读 start.log 一个文件,不做跨文件混排。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真 NAND 上真实记录的翻页读取、
* 掉电后记录保持、清除记录后本页归零这三件事都要上板复核;模拟器侧该文件
* 没有写入方,像素黄金只能验空态"无记录"。
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 188–193,证据贴 Issue #53 评论):
* 真 NAND 真实记录的翻页读取、复位(RAM 全清)后从 NAND 原样重读、清除记录后
* 本页归零(2 条 → 无记录、START.LOG 从盘上消失)三件事均已上板复核;真·拔
* 市电本机不可控,保持性以 RAM 全清 + 全链重启代理(POR 计数差额人工一眼可补)。
* 模拟器侧该文件仍无写入方,像素黄金维持空态"无记录"口径。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
+15 -3
View File
@@ -12,7 +12,10 @@
* 空态显式文案「无录波段」/「该段不可读」——画成一条直线等于
* 伪造证据(§8.1 空态行,此判据优先于「页面上总得画点东西」)。
* 键位:上下切通道、左右切段(key_intercept=1 才能把 LEFT 从
* 「关页」手里要来);ESC 关页。
* 「关页」手里要来);ESC 关页。页的**缓存作废面**:本文件不持
* 任何缓存,开页(pg_init)与空态再探盘(pg_key IDLE 支)各调
* 一次注入表的 wave_enter 作废钩子(#93 F1 方案 A/B,纯内存
* 零 I/O)——开页后盘上新落盘 / 新投放的段即随重扫进表。
* 取数纪律:本文件零 App include——段号/段头/窗口码值/峰值 mV 全部经
* ui_data.h 录波注入表进来(波形算式与定点换算在执行侧,页面
* 连 b_codes 都不碰,收到的码值已并偏移);首帧绘制才懒取数
@@ -33,6 +36,10 @@
* 本页 key_cb 返回 true(接管键),框架不再替本页失效重绘,状态变了
* 屏上却纹丝不动——该病在枚举修复前整页恒空、从未有键可切,故随
* 2026-11-02 回放页修复首次上板才暴露(真机实证见 PR #67)。
* v1.2 2026-11-07 DTU 项目组 #93 F1:开页(pg_init)与空态左右键
* 再探(pg_key IDLE 支)各调注入表新增的 wave_enter 作废钩子——
* 开机后新落盘/新投放的段重开页即见、空态再探不再被钉表短路;
* 本页像素形态与键位语义不变(黄金参考不刷),重扫仍懒在首帧。
*/
/* 头文件包含区 */
@@ -320,14 +327,18 @@ static const char *wp_eng_word(uint8_t a_eng) {
}
/*
* 函数功能:开页复位(框架 init_cb)——通道回到 UA、数据回到未取态
* 函数功能:开页复位(框架 init_cb)——通道回到 UA、数据回到未取态,
* 并调执行侧作废钩子丢掉钉住的段表/段头缓存(#93 F1 方案 A:
* 开机后新落盘的段开合一次页即进表;作废是纯内存动作,首帧
* 懒取数链原样,开页链零 I/O 不破)
* 入口参数:无
* 返回值:无
* 限定条件:框架开页链内;只清状态零 I/O(懒取数在首帧绘制)
* 限定条件:框架开页链内;只清状态与翻作废旗标、零 I/O(懒取数在首帧绘制)
*/
static void pg_init(void) {
s_state = WP_ST_IDLE;
s_ch = 0u;
ui_data_wave_enter();
}
/*
@@ -406,6 +417,7 @@ static bool pg_key(lv_key_t a_key) {
case LV_KEY_LEFT:
case LV_KEY_RIGHT:
if (s_state == WP_ST_IDLE) {
ui_data_wave_enter(); /* #93 F1 方案 B:先作废钉表,再探才探得出新段 */
wp_ensure(); /* 空态下按左右 = 再探一次盘(新段可能已落) */
ui_content_page_invalidate();
return true;
+5 -3
View File
@@ -9,9 +9,11 @@
* 写入点 = App/protocol/iec104/iec104_pts.c 的遥控段;
* "记录类型 = 日志 ID 本身"(一类记录一个文件,记录体内没有类型字段位,
* Lead 裁定 2026-10-26)——本页只读 yk.log 一个文件,不做跨文件混排。
* 台架待补(不在本批,已登记 docs/任务规划/登记簿.md):真 NAND 上真实记录的翻页读取、
* 掉电后记录保持、清除记录后本页归零这三件事都要上板复核;模拟器侧该文件
* 没有写入方,像素黄金只能验空态"无记录"。
* 台架复核已完成(2026-11-06,Issue #53 台架轮、实机 boot 188–193,证据贴 Issue #53 评论):
* 真 NAND 真实记录的翻页读取、复位(RAM 全清)后从 NAND 原样重读、清除记录后
* 本页归零(34 条 → 无记录、YK.LOG 从盘上消失)三件事均已上板复核;真·拔
* 市电本机不可控,保持性以 RAM 全清 + 全链重启代理(POR 计数差额人工一眼可补)。
* 模拟器侧该文件仍无写入方,像素黄金维持空态"无记录"口径。
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:DTU 项目组
* 创建日期:2026-10-28
File diff suppressed because it is too large Load Diff
@@ -613,7 +613,7 @@ flowchart LR
- 判据:动作路径零 NAND I/O(protectTask 静态链 872 B 改前后不变);104 时标 = 事件上送时刻,
与落盘记录(事件发生时刻)差 ≤ 一拍 + 排空延迟(≤50 ms)。
**FR-SOE-3 记录体系(✅ 软件面已落地;真机判据待台架)**
**FR-SOE-3 记录体系(✅ 软件面已落地;真机判据已台架复核 2026-11-06)**
- 现状:七类文本记录(运行 / 自检 / 事故 / 告警 / 启动 / 操作 / 遥控)+ 二进制 SOE 已落地,
「记录类型 = 日志 ID 本身」(一类记录一个文件,记录体内无类型字段位);UI 六页已绑
(记录 5 页 + 运行报告,2026-10-28)。运行报告的四个数取自 boot_stats(SD2506 用户 SRAM
@@ -621,8 +621,10 @@ flowchart LR
(口径 docs/UI设计/UI_数据供给设计说明.md §4.4)。
- 判据:五类记录各有写入点、可翻最近 20 条、空记录明确显示"无记录"、共用 reader——**软件面已满足**
(空态与四个范围标签由 74 张像素黄金钉住;模拟器侧这些文件没有写入方,只拍到空态)。
真记录翻页、掉电后保持、清除记录后归零、boot_count 自增与四态判定**待台架复核**
(docs/任务规划/登记簿.md §7)。
真记录翻页、掉电后保持(复位代理口径)、清除记录后归零、boot_count 自增、rst_cause=IWDG、
conn_up +1 **已于 2026-11-06 Issue #53 台架轮实机复核通过**;四态判定中「拔 RTC 电池落
RESTARTED」经用户裁定(2026-11-05)台架不可验销项(证据与口径见 Issue #53 与
docs/测试说明/专项验证/模拟器差距清单.md §2.3)。
### 5.15 IEC 60870-5-104 上行(FR-IEC104)✅
+5 -4
View File
@@ -41,8 +41,9 @@
**UI 补齐执行清单已于 2026-10-28 清空**:记录 5 页(事故 / 操作 / 保护告警 / 保护启动 / 遥控)与
运行报告页同日落地并绑页,内容页黄金参考 53 → 60 张(runreport 分 2 页,第 2 页单独拍一张;判据 = simulator/tests/ref/ 入库 shot_*.bin 实数,张数 = 页面个数 + 分页多拍的那一张;**该集合 2026-10-29 已扩至 66 张**,多出的是录波回放页 6 态)。
上板判据(真记录翻页、掉电保持、清除后归零、boot_count 自增、RESTARTED、rst_cause=IWDG、conn_up +1)
已登记登记簿 §7「UI 六页真机判据」,六页文件头各留「台架待补」段;模拟器差距见
docs/测试说明/专项验证/模拟器差距清单.md §2.3「开机账本 boot_stats」一行。
**已于 2026-11-06 Issue #53 台架轮复核完成并销项**(除「拔 RTC 电池落 RESTARTED」经用户裁定 2026-11-05
台架不可验,销项不挂账);六页文件头「台架待补」段已改「台架复核已完成」,登记簿 §7 对应行已删;
模拟器差距见 docs/测试说明/专项验证/模拟器差距清单.md §2.3「开机账本 boot_stats」一行。
**执行纪律:单道串行。** 菜单树与页面注册表是生成物,字库也是整文件生成物;
不要同时开多条 UI 页面分支。上板验证可累积成一批,但保存、重启、主站读回等判据不能删除。
@@ -58,14 +59,14 @@ docs/测试说明/专项验证/模拟器差距清单.md §2.3「开机账本 boo
| 顺序 | 工作 | 当前状态 | 开始或切换条件 |
|---|---|---|---|
| **1** | **UI 补齐** | **清单已清空(2026-10-28)** | 记录 5 页与运行报告页已落地并绑页;余下 5 叶属 §5「当前不做」,重开条件见 docs/任务规划/UI补齐.md §5;上板判据见 docs/任务规划/登记簿.md §7 |
| **2** | **net 层跨上下文收口** | **下一顺位(未开工)** | UI 清单已清空,切换条件已满足;**开工需用户点头**——换主线是产品决策,不由本批顺带做掉 |
| **2** | **net 层跨上下文收口** | **✅ 2026-11-06 闭环** | 子项 A(裸指针收口为状态查询 API):审计确认收口已完成(`net_listener` 单一登记入口 `net_listener_request` + 单一执行者 `net_listener_tick`、`s_relisten_req` 0 处模块外直接读写;UI 读侧快照 API `ui_data_info`/唯一填充者 `ui_data_feed`);子项 B(突发分片让路):台架重验确认新负载剖面(SNTP 请求/退避 + FTP + 104 + 7003)下 **uiTask ≥800 ms 饿死签名不复现**(`task stall` 0 条、复位 0、NAND `wdev.log` 当日零新增 STALL、7003 最差 759 ms <800 ms 线)——证据见 `网络自愈架构设计.md` 与 `看门狗设计说明.md` 变更记录 2026-11-06 条目 |
| **3** | 其余结构与可靠性评估 | 排队 | net 收口后;逐项见 `登记簿.md`,观察项不为了“清清单”而强做 |
| **4** | 数据可信(采集数据可信度) | 动态波形验证 **✅ 2026-11-04 闭环(六轮)**;变比确认与两点标定等外部资源 | 信号发生器动态波形验证(不依赖外部资源,✅ 2026-11-04)→ 端子/子板变比确认 → 标准源两点标定;**排序调整(2026-10-29):动态验证让位给故障录波数据面**,段文件落地后判据升级为 PC 独立重算对表(docs/子系统设计/故障录波设计说明.md §11)(已知电压注入已于 2026-10-27 台架闭环并销项);外部资源到位可插入优先处理 |
| **5** | 标准源送检与第三方 104 主站验收 | 等待标定完成 | 两点标定完成且保护 VALID 已置位;送检窗口前 2 日冻结特性 |
| **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 第二幕尾步坏段/空态画面台架远程轮拍毕——回放页三态板级判据全部实证、2026-11-07 #93 两条现场发现修复后台架验收 F1/F2 全过(PR #94);余 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「回放页坏段/空态画面闭环记录」);**#93 回放页两条现场发现(开页后新段不进表 / CRC 判废串口静默)已于 2026-11-07 按推荐方案修复并台架远程验收 F1 五条 F2 五条全过**(F1 = `wave_enter` 钩子开页作废钉表 + 空态键重探,A+B 同批;F2 = 五类判废汇成单条 `ui wave head idx= reject= stored= calc=` ERROR 级不去重留痕,reject=5 与 PC `wave_read` 同值互证;PR #94,证据 `docs/测试说明/测试数据/wave_fix_20261107/`,记录见设计说明 §10 修复记录);**没跑的只剩** P 触发对时刻(先要标定解锁决定)/ bench T 源与卷占用(需 bench 构建)/ `task_prof` 读路径耗时峰值,全部结果与清单见 `docs/子系统设计/故障录波设计说明.md` §10「板级远程半轮记录」。**板级判据、留痕名清单与执行顺序图的属主 = docs/子系统设计/故障录波设计说明.md §9 与 §10**(原卡片登记簿 2026-10-30 随销项并入后删除);**与 UI 道互斥**(菜单树与中文字库是整文件生成物,同刻只允许一条道写)——本波按此串行执行:UI 道在数据面与接线冻结之后才动生成物 |
### 2.1 关键依赖
+5 -7
View File
@@ -20,8 +20,7 @@
| # | 事项 | 发现 | 证据与现状 | 出处 |
|---|---|---|---|---|
| dhara 重试自旋残留 | **dhara 重试自旋残留**——`try_recover()` 的 `DHARA_MAX_RETRIES`(8) 自旋在坏块密集时仍可能长时间占用 defaultTask(喂狗点) | 2026-10-02 | 低优先:现有 `vol_lock` + 喂狗节奏缓解;若台架再出"存储侧喂狗饥饿"再排期 | `Lib/dhara/map.c` |
| 可选全序列卷锁 | **可选全序列卷锁**——现卷锁仅覆盖 `syslog` / `cfg` / `lftpd` 三条路径(`vol_lock_wait(0)` try 语义),其它潜在访问点(如 UI 读日志)未纳入。⚠ 原本挂在本题下的「dhara 失败类快照(C4)」待还项**已于 2026-11-04 由问题 #79 还清**(`nand_ftl_fault_get/clear` + 探针按类分流,见 `../架构设计/STM32F4-Base存储架构说明.md` §10.4 已闭环段)——本题现只剩**卷锁覆盖面**本身,不再被 C4 阻塞 | 2026-10-02;C4 拆分 2026-11-04 | 待评估:先确认是否真有第二写者;无则关闭本项 | `App/fs/vol_lock.{c,h}` |
| dhara 重试自旋残留 | **dhara 重试自旋残留**——`try_recover()` 的 `DHARA_MAX_RETRIES`(8) 自旋在坏块密集时仍可能长时间占用 defaultTask(喂狗点) | 2026-10-02;2026-11-05 复核未复发 | 低优先:现有 `vol_lock` + 喂狗节奏缓解,自旋另有 FTL 入口直接喂狗兜底(`../架构设计/STM32F4-Base存储架构说明.md` §10.5);若台架再出"存储侧喂狗饥饿"再排期 | `Lib/dhara/map.c` |
## 3. 硬件(V0.1 缺陷 → V0.2 改版项)
@@ -51,10 +50,10 @@
| 顺序 | 条目 | 要做什么 | 完成或关闭判据 |
|---|---|---|---|
| 1 | **net 层跨上下文收口** | 同批处理两件事:裸指针收口为状态查询 API;对时 reconcile/relisten 突发导致 uiTask 800 ms 以上连续缺席,评估优先级矩阵与突发分片让路 | 同类台架负载下不再出现目标饿死签名;网络与 UI 回归通过;证据写入网络与看门狗模块文档 |
| 2 | **网络性能资源建议簇** | 分别评估 PASV 重复建监听、PHY 强制 100M 无回退、`NET_MAX_SOCKETS` 与单连接语义不一致;DE 项随 RS-485,不在本项做。机理见 `../网络/Net层阻塞模型架构设计.md` 与 `Drivers/BSP/NET/README.md` | 每项形成“修改并验证”或“有理由不做”的结论;不为了清清单做无收益重构 |
| 3 | **dhara 重试自旋与卷锁评估** | 先确认是否仍出现存储侧喂狗饥饿、是否确有第二写者,再决定是否修改 | 有新证据才排修改;无第二写者则关闭全序列卷锁项 |
| 4 | **uvprojx 空 TU 观察** | 201 个 LVGL `.c` 中 127 个在 `.map` 零产出,但当前增量构建仅 4~5 秒;有全量构建耗时痛点时先补计时基线,再用 Keil 原生 `<IncludeInBuild>0</IncludeInBuild>` 可逆排除 | 有实测收益才保留改动;否则继续观察 |
| 1 | **网络性能资源建议簇** | 分别评估 PASV 重复建监听、PHY 强制 100M 无回退、`NET_MAX_SOCKETS` 与单连接语义不一致;DE 项随 RS-485,不在本项做。机理见 `../网络/Net层阻塞模型架构设计.md` 与 `Drivers/BSP/NET/README.md` | 每项形成“修改并验证”或“有理由不做”的结论;不为了清清单做无收益重构 |
| 2 | **uvprojx 空 TU 观察** | 201 个 LVGL `.c` 中 127 个在 `.map` 零产出,但当前增量构建仅 4~5 秒;有全量构建耗时痛点时先补计时基线,再用 Keil 原生 `<IncludeInBuild>0</IncludeInBuild>` 可逆排除 | 有实测收益才保留改动;否则继续观察 |
> 原第 1 项「net 层跨上下文收口」已于 2026-11-06 闭环并销项(子项 A 审计确认收口完成、子项 B 台架重验确认新负载下 uiTask ≥800 ms 饿死签名不复现;证据见 `../网络/网络自愈架构设计.md` 与 `../子系统设计/看门狗设计说明.md` 变更记录 2026-11-06 条目)。原「dhara 重试自旋与卷锁评估」项随 #45 复核(卷锁无第二写者)关闭销项。
> RS-485 白名单随 `暂缓-RS485.md` 整簇处理,不列为 UI 后的独立编码任务。
> 并行写域、工作树与合并纪律统一见 `docs/环境与部署/并行任务工作树方案.md`。
@@ -68,7 +67,6 @@
| **队列往返基线待重验** | 台架 + PC peer | 下次 Phase 13 窗口重锁基线 | 本文件 §1 |
| **网络负向场景台架验证** | 拔线、SPI 故障注入、远显压力条件 | PHY 拔线、芯片级 `net_init` 失败、短写压测 | 本文件 §1 |
| **CI 远端闭环未验证** | runner 与第二台机器 | 验证远端两 job 闭环和不同工具路径 | 本文件 §4 |
| **UI 六页真机判据(记录 5 页 + 运行报告)** | 台架:NAND 里有真实事件记录、SD2506 电池域可控、104 主站可连 | 上板复核六件事:真记录翻页与掉电后保持、清除记录后对应页归零、上电一次看 `boot_count` +1、拔 RTC 电池后 `seq_state` 落 RESTARTED、IWDG 复位后 `rst_cause` 落 IWDG、主站连一次看 `conn_up` +1(模拟器侧这些记录文件无写入方、无 `boot_stats`、无 104 协议栈,黄金只拍得到空态「无记录」与固定假数据的显示口径) | 六个页面模块文件头「台架待补」段 + `../测试说明/专项验证/模拟器差距清单.md` §2.3 开机账本一行 |
| **SNTP 校时真机判据** | 台架:板与 PC SNTP 服务器(192.168.31.161 / .13)同网段可达 | `[sntp]` 使能 + 配服务器后上板复核:`[SNTP] step offset=` 步进日志、钟面与时间源一致(本地 UTC+8 口径)、`poll_min` 周期到点重对、拔线后指数退避与主备轮换、恢复后回到周期 | `../子系统设计/系统墙钟时间维护说明.md` §16 |
**送检顺序不可倒过来**:产品构建当前要求 UA/UN/IA 的标定 VALID 全部置位才走保护判据。
@@ -47,10 +47,10 @@ dhara 失败类 +84;RO 另 +208,全是该失败类名表)→ `ER_IROM1`
<!-- MEM_SNAPSHOT:BEGIN generated by scripts/check_mem_numbers.py -->
| 区域 | 用量 | 容量 | 占比 |
|---|---|---|---|
| ER_IROM1 | 283,512 B (276.87 KB) | 1,048,576 B (1024 KB) | 27.0% |
| RW_IRAM1 | 94,736 B (92.52 KB) | 131,072 B (128 KB) | 72.3% |
| ER_IROM1 | 285,940 B (279.24 KB) | 1,048,576 B (1024 KB) | 27.3% |
| RW_IRAM1 | 94,752 B (92.53 KB) | 131,072 B (128 KB) | 72.3% |
| RW_CCM | 57,376 B (56.03 KB) | 65,280 B (64 KB) | 87.9% |
| **Flash (ROM 合计)** | **285,584 B (278.9 KB)** | 1,048,576 B (1024 KB) | **27.2%** |
| **Flash (ROM 合计)** | **288,012 B (281.3 KB)** | 1,048,576 B (1024 KB) | **27.5%** |
<!-- MEM_SNAPSHOT:END -->
各区的容量与常量来源:
+3 -3
View File
@@ -15,15 +15,15 @@
<!-- MEM_BUDGET:BEGIN generated by scripts/ram_baseline.py -->
| 区域 | 用量 | 容量 | 占比 | 门禁(≤92%) |
|---|---|---|---|---|
| ER_IROM1 (Flash) | 283,512 B | 1,048,576 B | 27.0% | 参考 |
| ER_IROM1 (Flash) | 285,940 B | 1,048,576 B | 27.3% | 参考 |
| RW_CCM | 57,376 B | 65,280 B | 87.9% | PASS |
| UNINIT_CCM | 48 B | 256 B | 18.8% | 参考 |
| RW_IRAM1 | 94,736 B | 131,072 B | 72.3% | PASS |
| RW_IRAM1 | 94,752 B | 131,072 B | 72.3% | PASS |
| 子系统(静态 RW+ZI;除 RTOS 堆在 CCM 外均在 SRAM1) | 现值 | 配额 | 状态 |
|---|---|---|---|
| 网络 | 13,958 B | 12 KB | ⚠ 超 1.6 KB |
| 存储 | 7,072 B | 12 KB | OK |
| 存储 | 7,092 B | 12 KB | OK |
| UI | 36,475 B | 16 KB | ⚠ 超 19.6 KB |
| RTOS 堆 | 57,376 B | 56 KB | 堆=配额 |
| 应用 | 26,433 B | 8 KB | ⚠ 超 17.8 KB |
@@ -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,89 @@ 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「独立」行已同步销项。
### 回放页开页作废重扫与判废留痕修复记录(2026-11-07,#93 → PR #94)
上面的 F1/F2 由 #93 钉成工单后经用户裁定「按推荐方案实施」(A+B 同批 + F2 留痕,级别
裁定 = ERROR + 手册补判读行,不扩 serial-boot-test 豁免面)。代码面:
- **F1**:`ui_data_wave_ops_t` 扩第七件 `void (*wave_enter)(void)`(与 `manual_req` 同族动作位、
不产三态;`ui_data_wave_bind` NULL 链同步拒残表);`ui_task_wave_enter()` = 清 `s_wave_scanned`
+ 清 `s_wave_cache_ok`(与 `manual_req` 同纪律——同名文件被顶掉后旧段头不能拿旧尺子量新段);
`ui_page_wave_play.c` 的 `pg_init` 与 IDLE 态按键(方案 B,兑现「新段可能已落」的再探承诺)
各调一次;`simulator/main.c` 空壳桩保七件同形状。**重扫仍懒在首帧,开页链零 I/O 不破**,
页内 `UD/LR` 不新增重扫(11-02 钉表防抖原样)。**残余纪律(#93 §A+B 尾段口径)**:
开页是唯一作废时机——**页开着投放的新段要再开一次页才可见**;空态按键即投即见。
- **F2**:`ui_task_wave_load_head()` 五类 BAD 出口收敛为原因码 `UI_WAVE_REJ_{HEAD,LEN,WIN,
TAIL,CRC}=1..5`(宏值域按「接口只增不改」纪律钉死),判废时单点
`DBG_ERROR("ui wave head idx=%u reject=%u stored=0x%04X calc=0x%04X")` **逐次一条不去重**
(频控天然 = 每次进入坏段一行,与按键、画面一一对应;判废是低频人工动作,逐次留痕正是
取证要的)。第 5 类附 stored/calc 两组值、与 PC 侧 `test/host/wave_read.py` 的 REJECT 行
**同名同值互证**,其余四类该两字段打 `0x0000` 占位。级别 ERROR 与同函数 `open fail` 同面;
`/serial-boot-test` 的 `[ERR]` Forbidden 会命中**故意投坏段的轮次**——判读行已补进手册
§4 与 §8(坏段轮 reject 行 = 预期内,其余 `[ERR]` 照旧停幕)。画面零改动:判废态仍
「该段不可读」逐比特不变(ui-golden `wave_play_bad` 零刷新实证)。
主机面:ui-golden 全绿(内容页 74 张 + 菜单行 + 水位;三态帧零刷新);主机套件 ui_data 295 /
ui_sink 17 / wave_ring 113 / wave_store 170 / wave_trig 110 全过;Keil 0 错误 0 警告
(ER_IROM1 285,716→285,940 B:判废留痕单调用点含格式串常量共 +224 B,与 #93「每调用点约
90 B」的账同量级)。
台架环境新事实(本轮到场盘点,与修复无关但记档):`/WAVE` 长期台架会话下每个段文件被
跨开机**追加**成 2~27 段拼接(写者 `FA_OPEN_APPEND` + 长度等式只验本次写入量,
`default_task.c` 落盘道;11-06 的 STOR 全删全建掩盖了生长面)——拼接件对回放页单段读侧
(`size == total`)逐件判长度废,1866 段逐段过 `wave_read` 校验**全部合法**(零损坏,纯口径
相抵)。该面是否收口(写者截断 vs 读侧多段感知)是新的产品决定,本轮只如实记账,不并票。
板级验收(2026-11-07 台架远程轮,烧录经口头「烧」确认;证据
`docs/测试说明/测试数据/wave_fix_20261107/`):**F1 五条 / F2 五条全过**——F1-1 页关投放
重开即见新段(光标落数值最大段);F1-2 空态键重探「即投即见」,空态帧与 11-06 归档逐比特
一致;F1-3 页内连踩 ×12 零新增扫描锚点(防抖纪律未破);F1-4 手动录波回归(ACK
`src=M`、FTP 侧 +5250 落盘,作废路径由主机 295 项套件回归);F1-5 同号覆盖切出切入即见新
字节(单槽段头缓存切换中自然重读)。F2:坏段三进三行 `reject=5` 不去重且
`stored=0xC204 calc=0x8A84` 与 PC `wave_read` REJECT 行同值互证、画面与 11-06 拒收帧逐比特
一致;`reject=1/2` 面 CRC 字段 `0x0000` 占位;收工还原到场拼接盘态重开页,画面同旧固件、
串口多出行判废留痕 = 修复前后直接对照面。F2-3 启动门禁:零录波类 `[ERR]`;唯一 `[ERR]`
为既有环境条件 `[I104] bind port 2404 FAIL, retry in loop`(修复前后同板逐字相同,
STARTDT con 实测服务存活),随轮记两条独立观察项待开票:① CH395 软复位后首绑必失败、
② i104 重试成功路径静默无日志致 `listening` 标记永缺。详见证据目录 README 的
Before/After 表与串口原文。
---
## 11. 与 `docs/任务规划/数据可信.md` 的口径变更(三处)
@@ -713,3 +713,4 @@ enter/exit 段还能读出"此刻仍在段内已多久"——**永久阻塞的
| 2026-10-12 | **iec104Task / protectTask 纳入监视(IEC 104 上行/保护任务):必需掩码 `0x77`→`0xF7`→`0x1F7`** | 两行合并记录(IEC 104 上行 落地时漏补本文,保护任务 一并纠偏):**IEC 104 上行** 新增 `TASK_WD_IEC104 = 7`(iec104Task 100 ms 服务循环喂位,NET_READY 屏障等待按 100 ms 分片喂位),产品 `0x77`→`0xF7`、HW 层 `0x75`→`0xF5`;**保护任务** 新增 `TASK_WD_PROTECT = 8`(protectTask 20 ms 判据节拍喂位,见 `docs/算法/继电保护功能复现规划.md` §7),产品 `0xF7`→`0x1F7`、HW 层 `0xF5`→`0x1F5`。两任务均**不依赖存储/网络之外的屏障**(protectTask 无任何屏障)→ 任何构建都置位;均不做 NAND I/O → 不登记 FTL 心跳路由。主机侧单测 `beat_all()` 与 `tc_003`/`tc_005`/`tc_011` 掩码断言同步至 `0x1F7`,39 断言全绿。⚠ 注意 `0x1F7` 不含 bit3(testTask 任何构建不入掩码,口径不变) |
| 2026-10-25 | **停喂判定按位分账(v1.5,大窗判读 F2)**:stall/停喂唯一判据从「复合连续缺席窗数」改为「**任一必需位的连续缺席窗数**」——同一任务连续 8 窗(800 ms)没跑过才申报停摆并停喂;多任务交替缺席(本窗缺 A、下窗缺 B)各自清零、且缺席窗在容忍线下**照常喂狗**(旧实现自第一个缺席窗起就不喂,800ms 只是申报点)。动因 = 2026-10-25 台架大窗:54 个探针重建窗里 9 条 stall 行中 16:24/16:28 两起为复合误升级(mg=877/918,无任何单位到 800ms 单串),16:39 为真 UI 单串(~1.2 s,受害者面修复另立 F3 票);`MISS start` 降级为复合边沿**诊断行**(不再代表停喂,判读口径 §6.1/§11.1 同步);真停摆到复位的总时长最坏 +约 0.7 s(§2.2 链注)。§0/§2.2/§3.2/§5.3/§6.1/§11.1/§11.6 同步;主机单测 `test/host/watchdog/watchdog_test.c` 断言按新判据改写 + 新增 **TC-WATCHDOG-017**(20 窗交替缺席:零 stall、20 窗持续喂)/ **TC-WATCHDOG-018**(同位 8/9/10 连击必报停 + 停喂;恢复窗喂、账本重启,第二段亚容忍串不误报),47 断言全绿 |
| 2026-10-26 | **卷锁 try 失败纳入 ④「只计数」口径 + 修一处会骗人的契约(道G task-17)** | §4.3 场景表新增一行:卷锁 try 失败(defaultTask / uiTask 从不等锁,取不到就跳过本轮)既不需要分片也不需要心跳,缺的是**可观测**。落地形态:`App/fs/vol_lock.c` 记 5 态计数(`acquired` / `try_timeout` / `blk_timeout` / `failopen`,共 16 B 静态、一次自增),`vol_lock_get_stats()` **不取锁**、不关中断、任意上下文可调、NULL 无害。为什么不许在 try 失败处补一条日志:能把事写下来的通道(`/log/wdev.log`、`run.log`)自己也要取这把锁,而卷锁**非递归**,被卷忙挡住时既写不出东西还会自取死锁——所以留痕只能由 syslog 唯一写者按差值 latch 补投(另立 task-40 接在 `syslog_drain()` 的 `s_quiet_drop` 差值块之后)。同时修契约:`App/fs/vol_lock.h` 原写「0 - 超时未获取」、`vol_lock.c` 原 :38 把 fail-open 归给 0,而代码(:46)与 `TC-VOLLOCK-008` 都是**返 1**;现在两处都按代码写实并显式警告「返 1 也可能是零互斥」,`failopen` 计数就是它的证据。**观测时刻刻意不在锁层**:记时刻要读 tick,等于给 defaultTask 取锁链添 callee 与本帧(本档 §11 一贯按字节省的就是这条链),改由消费方观测并自盖 `obs_first_ms` / `obs_last_ms`——那是**被观测到的时刻**,不等于发生时刻,命名与文案都不许写成"首次发生"。机器证据:`test/host/vol_lock` 新增 TC-VOLLOCK-015~019(45 断言全绿:T2/T3 互不冒领、fail-open 计数可累加、读取不消耗证据);另把「喂狗点取锁一律 timeout=0」从注释纪律升级成会 FAIL 的断言——4 套假件加 `s_last_wait_to`,断言落在 TC-SYSLOG-010/012、TC-SOESTORE-016/018、TC-CFGFST-003/016/032/033、TC-LFTPIO-034,并做过红-绿反证(把 `sys_log_mcu.c:318` 的 `0u` 改 `50u` → 135/137 双红;把 `lftpd_io.c:48` 的 `100u` 改 `0u` → 32/33 红;随后按原串改回、SHA-256 逐字节相同) |
| 2026-11-06 | **台架重验(#39 子项 B):新负载剖面下 uiTask ≥800 ms 饿死签名不复现** | 新负载剖面一整轮 30 min(00:34–01:04):SNTP 请求/退避(poll_min=1,无可达服务器)+ 持续 FTP 512KB + 周期 104 GI/COV + 7003 拉帧 10Hz。结果:看门狗 `task stall` **0 条**、复位 **0 次**、NAND `/log/wdev.log` **当日零新增 STALL**(独立佐证,最新一条为 2026-11-05 11:24:39);**880** 次瞬时节拍抖动(UI/FTP/IEC104 位)全部 <800 ms 自恢复、均与网络 relisten 瞬间同刻——阈值下抖动,非饿死;7003 最差单轮 **759.1 ms**(<800 ms 线)、18000/18000 零 CRC 零超时;FTP 188/188 全过;104 协议负载正常(16/18 检查项,COV 触发 FAIL = 台架浮空模拟输入已知限制、无 B10 源)。结论:8888 reconcile/relisten 突发源退役(#78,2026-11-04)+ 异步 `net_drop_conn` 收口后,新负载下 **uiTask ≥800 ms 饿死签名无触发源**——子项 B 完成判据(台架负载下不再出现目标饿死签名)本轮达成。网络侧记录见 `网络自愈架构设计.md` 变更记录 2026-11-06 条目 |
@@ -728,3 +728,44 @@ LPN 与原始码的位置**就地分类并打印(`ftl_err_name()` 给可读名
`[CFG] load: file missing, factory template generated`,0 条 flush FAIL。
⚠ 动作 A 语义 = 卷内容全失(旧卷随 map clear 作废),本次台架卷为可弃数据。
### 10.5 卷锁覆盖面审计与 dhara 重试自旋复核(2026-11-05,问题 #45 评估结论)
**结论先行:卷锁之外没有第二写者,登记簿「可选全序列卷锁」项就此关闭;
「存储侧喂狗饥饿」无 2026-10-02 之后的新证据,dhara 重试自旋保留为长期观察。**
判据 = 对 master `c487ce4` 的调用点枚举(判据:`App/` 与 `Drivers/BSP/` 下全部带
`FA_WRITE` 的 `f_open` 与 `f_unlink`/`f_rename`/`f_mkdir`/`f_opendir` 调用点)
+ 2026-11-05 之前的全部台架留档。评估过程与逐条证据见 Gitea 问题 #45。
**覆盖面清单(生产构建的全部卷访问序列):**
| 访问道 | 任务上下文 | 串行化纪律 |
|---|---|---|
| `/log` 七本 + `wdev.log`(追加写 / 清除 / `f_mkdir /log`) | defaultTask | `vol_lock_wait(0)` try,锁跨 open…close 完整序列(`App/log/sys_log_mcu.c`) |
| `/log/soe.log` | defaultTask | 同上(`App/log/soe_store.c`) |
| `/config.ini` 原子写 tmp+rename / unlink;`/prot_set.bin` 同后端 | defaultTask | 同上,store 后端四函数全覆盖(`App/cfg/cfg_file_store_mcu.c` v1.3;`App/cfg/prot_set_store.c` 走 `cfg_store_read`/`cfg_store_write_atomic`,无独立盘触点) |
| `/wave` 录波段(mkdir / 追加写 ≤21×`f_write` / unlink) | defaultTask | 同上,锁跨完整序列(`App/task/default_task.c` 录波段) |
| FTP RETR/STOR/LIST/DELE/MKD | ftpTask | 100 ms 分片阻塞 + 每片 `lftpd_task_wd_beat()`,锁跨 open…close / opendir…closedir 全程(`Drivers/BSP/NET/lftpd/lftpd_io.c`) |
| 回放页段表/段窗读、UI 记录页读 | uiTask | try(0) 锁跨完整序列(`App/task/ui_task.c`、`App/log/sys_log_mcu.c` 读径) |
| 空闲 flush 兜底(`CTRL_SYNC`) | defaultTask | try(0) 闸门,卷忙跳过(§5.5;`App/fs/vol_idle_sync.c`) |
| `f_mount`/`f_mkfs`/`/fschk.tmp` 探针/`nand_ftl_format` | defaultTask 启动段 | **就绪屏障门控**:`STORAGE_READY` 在 `storage_bring_up()` 末尾才置位,netTask/ftpTask/uiTask 的卷入口全部等屏障(`App/task/default_task.c` 卷锁创建处注释),启动期卷写无并发使用者 |
LVGL 的 FatFs 驱动桥(`Lib/lvgl/src/libs/fsdrv/lv_fs_fatfs.c`)`LV_USE_FS_FATFS`
默认关闭、本仓未接线,不是卷使用者;`test/board/` 的存储测试任务仅存在于互斥测试
构建(`test-suite-switch` 门禁),不在产品镜像。**登记簿原口径「卷锁仅覆盖
syslog/cfg/lftpd 三条路径」是 2026-10-02 建档快照,已被本表取代**——SOE、录波段写、
`/prot_set.bin`、UI 读径与空闲 sync 随后都进了同一把锁。
**dhara 重试自旋**:`try_recover()` 的自旋有界——`DHARA_MAX_RETRIES`(8) 次 restart
后以 `DHARA_E_TOO_BAD` 定案(`Lib/dhara/map.c:270-306`),journal 层六处重试环同为
有界;且 NAND 长操作在驱动入口与 `gd5f_wait_busy` 每 100 ms 经 `nand_ftl_wd_feed()`
**直接喂 IWDG**(`Drivers/BSP/GD5F2GQ5UE/gd5f2gq5ue.c`)——自旋即便落在
defaultTask(喂狗点)内也不饿狗,残留形态收敛为「有界时长的存储服务延迟」。
真 NAND 卡死 = 持续喂狗、设备存活但存储冻结,属已声明边界
(`../子系统设计/看门狗设计说明.md` §9 R4;要改成"NAND 死也复位"需给
`nand_ftl_wd_feed()` 加上限,非本单判据)。**复发复核**:「存储侧喂狗饥饿」唯一
实证 = 2026-10-02 台架轮(并发 FTL 写 → journal 竞争,另有同日 IWDG 超时被配成
复位默认值的 P0 修复,见 `../子系统设计/看门狗设计说明.md` 变更记录),此后
2026-10-25 F2/F3 探针轮、2026-11-02 录波枚举台架轮(卷锁 try 超时 0 次)、
2026-11-05 PR #82 补验 soak(STOR 密集)均无该签名。重开判据不变:**台架再出
存储侧喂狗饥饿才排期**;观察行留登记簿 §2。
+1 -1
View File
@@ -320,7 +320,7 @@ STM32F4-Base/
│ │ console_log(UART5 控制台单写者)、soe_rec(64B SOE 纯编解码)+ soe_store(投递/落盘胶水)
│ ├── cfg/ 配置引擎:cfg_file(静态态单任务收敛于 defaultTask)、store(MCU=FreeRTOS 堆)、
│ │ prot_set_store(/prot_set.bin 原子写,保护定值持久化)
│ ├── fs/ 卷锁 vol_lock(syslog / cfg / lftpd 三条路径 try 语义)、vol_idle_sync
│ ├── fs/ 卷锁 vol_lock(全卷访问点串行化:写者/读者 try、lftpd 分片阻塞)、vol_idle_sync
│ ├── sync/ time_sync(timeSyncTask 载体)、time_sntp(SNTP 校时客户端,UDP)
│ └── util/ sys_clock(墙钟)、task_watchdog(IWDG 判定状态机)、boot_stats、sha256、task_prof
├── Drivers/BSP/ 纯手工驱动/服务(不受 CubeMX 保护)
@@ -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` 观察项 |
@@ -72,6 +72,13 @@ flowchart LR
5. **换点再来一遍**:发生器升到能钉住 UB/UC/IB/IC/IN 任一路的量级(削顶的老口径见 `docs/测试说明/专项验证/ADC前端注入验证流程.md` §8.5 削顶卡;片内 ADC 五路单极性、负半周钉 0 的机理在 `docs/硬件平台/ADC通道映射说明.md`)——**这一遍你只拧幅值键**,录波触发重复第 3~4 步,钉轨对表应见 ≥1 路实测钉轨且能由注入解释。
6. **[agent]** `meas:` 与 104 浮点遥测对表:参考主站 `test/host/iec104_master.py` 读 YC 浮点,和 `meas:` 行、和你注入的 1.000 V 三方对齐——**你只需报万用表读数**。
7. **坏段画面(这一幕的收尾,要第一幕修好)**:[agent] 造一份位翻转坏段上板(`RETR→翻一位→STOR 回同号`)→ 开回放页翻到该段——**判据:绝不许画成一条直线**,该显拒收态;agent 抓屏给你目检。
- **2026-11-07 起(#93/#94)串口同步留痕**:每一次进入判废段,串口出一条
`[ERR][UI_TASK] ui wave head idx=<段号> reject=<1..5> stored=0x%04X calc=0x%04X`——
原因码 1 头解析 / 2 长度等式 / 3 窗读 / 4 尾读 / **5 数据 CRC 不符**(第 5 类附两组 CRC,
可与 PC 侧 `test/host/wave_read.py dump` 的 REJECT 行同名同值互证;1~4 类两字段打 `0x0000`)。
坏段轮这些 `[ERR]` 行 = **预期内**,不算停幕(见 §8);恢复原字节后再进该段应零 reject 行、放波正常。
- **开页作废纪律(#93 F1)**:回放页**每次开页**重扫段表(页开着投放的新段要**再开一次页**才见;
空态按 `LR` 即投即见)。页内 `UD/LR` 连按不产生重扫,也不新增 `ui wave scan` 锚点。
8. **到你拔线**。
**现场记录表**(agent 会打印这张表逐行填,你核对签字即可):
@@ -80,7 +87,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 闭环记录小节)。
---
@@ -125,7 +139,7 @@ flowchart LR
- **页面看着"不动"**:九成是远程注键的帧流滞后(ACK 与推流同一条 TCP)——让 agent 按 `scripts/board_ui_nav.py` 文件头的三条纪律排空重取,不是板子死了。
- **FTP 报 425**:两条 LIST 之间隔 0.5 s 再发(lftpd 单连接语义,老坑)。
- **串口见任何 `[ERR]` 开头行或装置自己复位了**:**停止当前幕**,原样贴给 agent——`[ERR]` 是门禁级信号,别重试掩盖现场。
- **串口见任何 `[ERR]` 开头行或装置自己复位了**:**停止当前幕**,原样贴给 agent——`[ERR]` 是门禁级信号,别重试掩盖现场。**唯一例外(2026-11-07 #93/#94 起)**:故意投坏段的轮次里 `[ERR][UI_TASK] ui wave head idx=… reject=…` 判废留痕行 = 预期内、逐段逐次一条,不触发停幕(判读表见 §4 步 7;除此之外任何 `[ERR]` 照旧停幕)。
## 9. 时间与顺序建议
@@ -67,7 +67,7 @@
| **CH395F 芯片** | 无(Winsock 代其 BSD API) | SPI 寄存器/命令/中断、PHY 协商、真实以太网帧 | 寄存器时序、命令回复、中断风暴、PHY 100M 全双工强制 | 板端 CH395F 套件(52 断言点)+ `/serial-boot-test` |
| **GD5F NAND** | 无 | SPI NAND:BBT 扫描、ECC、坏块管理、dhara FTL | 坏块/ECC/写入失败等路径完全不可测 | 板端 GD5F 套件(76 断言点)+ `/serial-boot-test` |
| **SD2506 RTC** | 无 | I2C RTC:时间读写、闹钟、温度、电池电压 | 时间源相关(`sys_clock_init` 降级路径)在模拟器上不可触发 | 板端 RTC 套件(18 断言点)+ `sys_clock` 主机侧纯逻辑单测(已覆盖算术面) |
| **开机账本 boot_stats(上电次数 / 复位原因快照)** | **不编译** `App/util/boot_stats.c`(依赖 SD2506 用户 SRAM 与 `RCC_CSR`);UI「运行报告」页的四个数在模拟器上是 `simulator/main.c` 的**固定假数据**(`boot_count=7`、`seq_state=延续`、`rst_cause=上电复位`、104 四枚 3 / 128 / 0 / 4096、`uptime_s=0`) |`boot_stats_init()` 读 SRAM → 自增 → 写回 → 快照驻留;四个 104 观测计数由 iec104Task 真实累加(跨重连不清零、断电归零) | 「自增有没有真落 SRAM」「电池域掉电后是否落 RESTARTED」「写失败是否只少计不重复」「104 计数是否跨重连累计」四类事在模拟器上**结构上不可见**;黄金参考只拍得到显示口径(范围标签在不在屏上、值有没有串行、`boot_ready=0` 是否显 `--` 而不是 0) | 主机单测 `test/host/boot_stats/`(SRAM 状态机与四态判定)+ 真机 `/serial-boot-test`:上电一次看 `boot_count` +1、拔电池后落 RESTARTED、IWDG 复位后 `rst_cause=IWDG`、主站连一次看 `conn_up` +1 |
| **开机账本 boot_stats(上电次数 / 复位原因快照)** | **不编译** `App/util/boot_stats.c`(依赖 SD2506 用户 SRAM 与 `RCC_CSR`);UI「运行报告」页的四个数在模拟器上是 `simulator/main.c` 的**固定假数据**(`boot_count=7`、`seq_state=延续`、`rst_cause=上电复位`、104 四枚 3 / 128 / 0 / 4096、`uptime_s=0`) |`boot_stats_init()` 读 SRAM → 自增 → 写回 → 快照驻留;四个 104 观测计数由 iec104Task 真实累加(跨重连不清零、断电归零) | 「自增有没有真落 SRAM」「电池域掉电后是否落 RESTARTED」「写失败是否只少计不重复」「104 计数是否跨重连累计」四类事在模拟器上**结构上不可见**;黄金参考只拍得到显示口径(范围标签在不在屏上、值有没有串行、`boot_ready=0` 是否显 `--` 而不是 0) | 主机单测 `test/host/boot_stats/`(SRAM 状态机与四态判定)+ 真机 `/serial-boot-test`:上电一次看 `boot_count` +1、IWDG 复位后 `rst_cause=IWDG`、主站连一次看 `conn_up` +1 —— **三件均已于 2026-11-06 Issue #53 台架轮实机复核通过**(boot 187→193 六连号无跳变、SRAM 保持+回写正常,真 IWDG 溢出经 SWD 缩窗触发,conn_up 静默窗精确 +1;「完整上电」用系统复位代理,本机无市电开关,POR 计数差额留人工一眼补验);「拔电池后落 RESTARTED」经用户裁定(2026-11-05)**台架不可验、销项不挂账**(电池域掉电需物理拔 RTC 电池,seq_state 四态判定由主机单测覆盖) |
| **TPAFE5160 ADC** | 无 | SPI ADC + BUSY EXTI 中断 | 中断驱动采集链路 | 待功能实现(上游 ADC 采集链路) |
| **RS-485 半双工** | 无 | UART4 + DE 方向控制,DWT 微秒延时 | DE 收发切换时序(特有陷阱) | 待功能实现(上游 RS-485 采集链路) |
| **启动段硬件初始化** | 只跑纯软件部分 | I2C/SPI 外设初始化、BBT 扫描耗时、FatFS 挂载 | 启动段死机(无看门狗保护窗口)**只能在真机复现** | 真机开机日志判读(`项目启动顺序管理.md` §6 已落地) |
@@ -0,0 +1,73 @@
# 回放页开页作废重扫 + 判废留痕修复验收轮(2026-11-07,#93 → PR #94)
台架远程轮(无人到场,bench 锁全程持有,烧录经口头「烧」确认)。修复 = 设计说明 §10
「回放页开页作废重扫与判废留痕修复记录」;验收判据 = #93 正文 F1 五条 / F2 五条。
帧均为 7003 `LCDMEM` 原帧(160×160 1bpp 3200 B,`.bin`),`_raw3200.bin` 为其归档命名,
PNG 为 4× 放大目检件(非判据)。
## 到场盘面事实(与修复无关,如实记档)
- `/WAVE` 100 件 `WAVE00…99.BIN`,尺寸为 5250 B 的 **2~27 倍拼接**(共 1866 段,逐段过
`test/host/wave_read.py` 校验**全部合法、零损坏**)——写者 `FA_OPEN_APPEND` 跨开机累积
属既有设计,回放页单段读侧(`size == total`)按口径逐件判「长度废」:全板无可放段。
全量原件 RETR 备份 + sha256 台账在轮末**逐字节还原**(见「收工」节)。
- 串口唯一枚举 CH340 = **COM4**(仓库 `.serialtest/config.json` 钉 COM3 已过时,本仓文件
未动,用 `$env:DSH_SERIAL_CONFIG` 覆盖);板端 FTP `admin/admin`。
- 到场固件 = 修复前构建(当日 01:00 已在跑,串口捕获窗口起点晚于该启动,构建戳不可证;
Before 侧各帧均取自烧录前时段、期间无新启动。新固件戳见下)。
## Before(旧固件,烧录前时段实测)
| 帧 | 场景 | 串口 |
|---|---|---|
| `oldN_P0_first_open_face_raw3200.bin` | 开页即「该段不可读」(拼接件长度废的自然样本) | **零行**(F2 静默设计面) |
| `oldN_P1_stale_table_after_dele_raw3200.bin` | 页开过一次(钉表 100 名)→ 页关 → `DELE WAVE99` → 重开页 | `open fail fr=4`(钉住表列着已删名——F1 镜像面) |
| `oldN_P2_crc_reject_silent_raw3200.bin` | `STOR WAVE06.BIN`=翻位坏版(byte[130]^=1,与 11-06 同款)→ 开页走位踩入 | **零行**(CRC 判废黑盒面,#93 现象原文复现) |
(sha 与逐帧判读见 `manifest_sha256.json`;`serial_excerpt_before.txt` / `serial_excerpt_after.txt`
为 serial-assistant 原文摘录,仅剔除 `wave:`/`ADC` 心跳行。)
## After(新固件 `fw build: Nov 7 2026 19:10:36`,run_boot_test 内置烧录 + 回读 `No difference found`)
| 帧 | 判据 | 串口锚点 |
|---|---|---|
| `newN_F11_reopen_seg99_max_raw3200.bin` | F1-1:页关时 FTP `STOR WAVE99.BIN`(单段合法件)→ 重开页 → 光标直接落数值最大段 99 并出波形(sha 与旧固件同段好段帧 `oldN_P3` 一致,渲染零漂移) | `UPLOAD` 留痕(`serial_excerpt_f1.txt`),判废零行 |
| `newN_F12_empty_state` + `newN_F12_idlekey_seg6` | F1-2:空盘开页 = 「无录波段」(空态帧 sha `a76c41cf…` 与 11-06 归档空态帧**逐比特一致**)→ 页开着 `STOR WAVE06` → 单次左键即出 SEG6 波形(「空态按键付①」兑现即投即见) | 同左 |
| `newN_F13_after_spam` | F1-3:有段页内连踩 UD/LR ×12,帧稳定,该窗口 `ui wave scan` 锚点新增 **0**(`serial_stats.json` `f13_spam_scans=0`;钉表防抖纪律零改动) | 窗口内零扫描/判废行 |
| `newN_F15_seg6` → `newN_F15_seg99_alt` | F1-5:页关同号覆盖 `WAVE99.BIN`←另一合法段 → 页内踩 6 再踩回 99,切入即见**新字节**(新波形帧 sha `12bd96f8…` ≠ 旧内容 `36a3271a…`;单槽段头缓存在切换中自然作废重读) | 无判废行(两件皆合法) |
| `newN_F14_manual_page/confirm/done` | F1-4 手动录波回归:修改密码页 →「确认手动录波?」→「已请求录波」;`manual_req` 作废路径与七件绑定由主机 ui_data 套件 295 项回归 | 23:03:22 `wave: seg=1 armed=0 src=M`(本次捕获 ACK);FTP 侧 `WAVE00.BIN` 141750→**147000**(+5250 落盘),轮末还原 |
| `newN_A_reject5_enter1/2/3` | F2-1+F2-4:三次开页进入坏段(`WAVE06_bitflip`),三帧均 sha `17291a00…` = 与 11-06 归档「该段不可读」帧**逐比特一致**(画面零改动)| 三行**不去重**:23:09:31/38/44 `ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84`,与 PC 侧 `wave_read.py dump` 同一坏段 REJECT 行逐值互证 |
| `newN_B_restored_normal6` | F2-2:换回合法件重开 = 正常波形(sha `c538a051…`) | 该开页窗口无新判废行 |
| `newN_C_reject1_head99` | 头废面(`WAVE99_headflip`)画面同为 `17291a00…` | `idx=99 reject=1 stored=0x0000 calc=0x0000`(非 CRC 类两字段占位纪律) |
| `newN_D_final_ok99` | 坏段轮收尾正常段回放 | 无判废行 |
| `newN_Z_final_open_100appended` | 收工还原到场拼接盘态后重开页:画面与 Before 侧 `oldN_P0` 逐比特一致(同一「该段不可读」自然面) | **这次有一行** `idx=99 reject=2 stored=0x0000 calc=0x0000`(旧固件同景零行 = F2 修复前后直接对照面) |
F2-3(无坏段常规板况启动门禁):`boot_new2/` 与 `boot_new3/` 两份启动报告——required 锚点除
`i104: listening on 2404` 外全过(App init / Network Init / net init OK / protect / 栈 /
`fw build` 本戳),**零新增** `UI_TASK`/录波类 `[ERR]`、零 `open fail`;唯一 `[ERR]` 为
`[ERR][I104] i104: bind port 2404 FAIL, retry in loop`——修复前固件当晚(22:49:22,本改动
烧入之前的启动,同串口历史)与本 PR 两次启动(22:56、23:19)逐字相同,runner 判 FAIL 属
既有环境条件而非本 PR 回归。定性:CH395 软复位残留 socket 致首绑失败、重试循环成功但
**静默**(成功路径无日志,门禁标记永缺),STARTDT act→con(`68-04-0B-00-00-00`)实测 2404
服务存活,NET 面 `sock auto-relisten ok` 佐证自愈在跑;「零新增 [ERR]」按同板同电路
修复前后对比成立。两条独立观察项(①软复位首绑必失败的环境账;②重试成功不打日志)已记入
设计说明修复记录,建议各自开票、不并票、不在本 PR 修。`serial_excerpt_before.txt` /
`serial_excerpt_after.txt` 为 serial-assistant 原文摘录(剔除心跳行),逐行时间戳可复查。
## 收工
- `/WAVE` 还原到场拼接原件 100 件逐件 sha256 复验一致(`restore_verify.txt`)。
- 盘上不留本环投放的任何测试件;`samples/` 三件 = 本环用到的 5250 测试件
(`WAVE06_bitflip.BIN` / `WAVE99_headflip.BIN` / `WAVE99_altseg.BIN`,sha 见 manifest)。
- 两锁释放、UI 回主菜单、串口 daemon 端口释放。
## 复现口令(本仓 worktree 根,需 bench 锁)
```
# 身份互证 + 开页取帧
& .venv\Scripts\python.exe scripts\board_ui_nav.py --where --i-hold-bench-lock
# 测试件(5250 B 单段):任一合法段文件翻 byte[130](数据 CRC 废)或翻 byte[8](头废)
# FTP admin/admin → CWD /WAVE → STOR → 7003 开回放页 → 串口见
# [ERR][UI_TASK] ui wave head idx=<n> reject=<1|5> stored=0x…. calc=0x….
# PC 互证:& .venv\Scripts\python.exe test\host\wave_read.py dump <同款测试件>
```
@@ -0,0 +1,184 @@
22:42:16 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
22:42:17 frame oldN_P0_first_open_face sha=17291a0068f2d4ab099f stable=True
22:42:20 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
22:42:20 DELE WAVE99.BIN (archive: backup_pre_round, appended 141750B original)
22:42:23 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
22:42:24 frame oldN_P1_stale_table_after_dele sha=a76c41cfd7f38cecf109 stable=True
22:42:27 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
22:42:28 STOR WAVE99.BIN <- WAVE99.BIN
22:42:29 WAVE99 restored byte-exact: True
22:42:29 == old_natural dele99 done
22:44:12 closed -> {'ver': 1, 'kind': 'STANDBY', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
22:44:12 STOR WAVE06.BIN <- WAVE06_bitflip.BIN
22:44:17 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
22:44:21 nav_to_seg(6) moved 93 l-steps from 99
22:44:22 frame oldN_P2_crc_reject_silent sha=17291a0068f2d4ab099f stable=True
22:44:25 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
22:44:25 STOR WAVE06.BIN <- WAVE06.BIN
22:44:26 WAVE06 appended original restored byte-exact: True
22:44:26 == old_natural crc06 done
22:49:10 STOR WAVE99.BIN <- WAVE99.BIN
22:49:15 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
22:49:16 frame oldN_P3_good_seg99 sha=36a3271a78dafe6afc0c stable=True
22:49:19 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
22:49:19 STOR WAVE99.BIN <- WAVE99.BIN
23:02:51 boot status: {'ver': 1, 'kind': 'STANDBY', 'depth': 0, 'path': [0], 'sel': [0], 'page': None}
23:03:14 after go_page: {'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 23], 'sel': [4, 2], 'page': 'wave_manual'}
23:03:15 frame newN_F14_manual_page sha=bdf7e5d1427b74c5b566 stable=True
23:03:18 frame newN_F14_manual_confirm sha=ee14db44f2437dea6cc7 stable=True
23:03:18 after first e: {'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 23], 'sel': [4, 2], 'page': 'wave_manual'}
23:03:22 frame newN_F14_manual_done sha=0d677bf478c579391a1a stable=True
23:03:22 after second e: {'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 23], 'sel': [4, 2], 'page': 'wave_manual'}
23:03:22 waiting 14 s for ring->defaultTask capture + ACK
23:08:35 F1-2: DELE all 100 (arrived originals archived)
23:09:02 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:03 frame newN_F12_empty_state sha=a76c41cfd7f38cecf109 stable=True
23:09:03 STOR WAVE06.BIN <- WAVE06.BIN
23:09:07 frame newN_F12_idlekey_seg6 sha=c538a051b6bdcca7e871 stable=True
23:09:10 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:10 STOR WAVE99.BIN <- WAVE99.BIN
23:09:14 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:15 frame newN_F11_reopen_seg99_max sha=36a3271a78dafe6afc0c stable=True
23:09:15 STOR WAVE99.BIN <- WAVE99_altseg.BIN
23:09:19 frame newN_F15_seg6 sha=c538a051b6bdcca7e871 stable=True
23:09:22 frame newN_F15_seg99_alt sha=12bd96f8f7405446c3f7 stable=True
23:09:26 frame newN_F13_after_spam sha=bfacdb1d922f4e7277d1 stable=True
23:09:29 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:29 == battery2 n-f1 done
23:09:29 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:29 STOR WAVE06.BIN <- WAVE06_bitflip.BIN
23:09:33 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:34 frame newN_A_reject5_enter1 sha=17291a0068f2d4ab099f stable=True
23:09:34 F2-1 pixel identity vs 11-06 archived bad frame: True
23:09:37 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:39 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:41 frame newN_A_reject5_enter2 sha=17291a0068f2d4ab099f stable=True
23:09:43 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:46 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:47 frame newN_A_reject5_enter3 sha=17291a0068f2d4ab099f stable=True
23:09:50 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:50 STOR WAVE06.BIN <- WAVE06.BIN
23:09:54 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:09:55 frame newN_B_restored_normal6 sha=c538a051b6bdcca7e871 stable=True
23:09:57 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:09:58 STOR WAVE99.BIN <- WAVE99_headflip.BIN
23:10:01 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:10:02 frame newN_C_reject1_head99 sha=17291a0068f2d4ab099f stable=True
23:10:05 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:10:05 STOR WAVE99.BIN <- WAVE99.BIN
23:10:08 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:10:10 frame newN_D_final_ok99 sha=36a3271a78dafe6afc0c stable=True
23:10:12 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
23:10:12 == battery2 n-f2 done
23:10:13 == battery2 n-manual done
23:10:36 == battery2 n-manual done
23:10:38 STOR WAVE00.BIN <- WAVE00.BIN
23:10:39 STOR WAVE01.BIN <- WAVE01.BIN
23:10:40 STOR WAVE02.BIN <- WAVE02.BIN
23:10:42 STOR WAVE03.BIN <- WAVE03.BIN
23:10:43 STOR WAVE04.BIN <- WAVE04.BIN
23:10:44 STOR WAVE05.BIN <- WAVE05.BIN
23:10:45 STOR WAVE06.BIN <- WAVE06.BIN
23:10:46 STOR WAVE07.BIN <- WAVE07.BIN
23:10:47 STOR WAVE08.BIN <- WAVE08.BIN
23:10:49 STOR WAVE09.BIN <- WAVE09.BIN
23:10:50 STOR WAVE10.BIN <- WAVE10.BIN
23:10:51 STOR WAVE11.BIN <- WAVE11.BIN
23:10:52 STOR WAVE12.BIN <- WAVE12.BIN
23:10:53 STOR WAVE13.BIN <- WAVE13.BIN
23:10:54 STOR WAVE14.BIN <- WAVE14.BIN
23:10:55 STOR WAVE15.BIN <- WAVE15.BIN
23:10:56 STOR WAVE16.BIN <- WAVE16.BIN
23:10:58 STOR WAVE17.BIN <- WAVE17.BIN
23:10:59 STOR WAVE18.BIN <- WAVE18.BIN
23:11:00 STOR WAVE19.BIN <- WAVE19.BIN
23:11:01 STOR WAVE20.BIN <- WAVE20.BIN
23:11:02 STOR WAVE21.BIN <- WAVE21.BIN
23:11:03 STOR WAVE22.BIN <- WAVE22.BIN
23:11:04 STOR WAVE23.BIN <- WAVE23.BIN
23:11:05 STOR WAVE24.BIN <- WAVE24.BIN
23:11:06 STOR WAVE25.BIN <- WAVE25.BIN
23:11:07 STOR WAVE26.BIN <- WAVE26.BIN
23:11:09 STOR WAVE27.BIN <- WAVE27.BIN
23:11:09 STOR WAVE28.BIN <- WAVE28.BIN
23:11:10 STOR WAVE29.BIN <- WAVE29.BIN
23:11:11 STOR WAVE30.BIN <- WAVE30.BIN
23:11:13 STOR WAVE31.BIN <- WAVE31.BIN
23:11:14 STOR WAVE32.BIN <- WAVE32.BIN
23:11:15 STOR WAVE33.BIN <- WAVE33.BIN
23:11:16 STOR WAVE34.BIN <- WAVE34.BIN
23:11:17 STOR WAVE35.BIN <- WAVE35.BIN
23:11:17 STOR WAVE36.BIN <- WAVE36.BIN
23:11:18 STOR WAVE37.BIN <- WAVE37.BIN
23:11:19 STOR WAVE38.BIN <- WAVE38.BIN
23:11:20 STOR WAVE39.BIN <- WAVE39.BIN
23:11:22 STOR WAVE40.BIN <- WAVE40.BIN
23:11:23 STOR WAVE41.BIN <- WAVE41.BIN
23:11:24 STOR WAVE42.BIN <- WAVE42.BIN
23:11:25 STOR WAVE43.BIN <- WAVE43.BIN
23:11:26 STOR WAVE44.BIN <- WAVE44.BIN
23:11:27 STOR WAVE45.BIN <- WAVE45.BIN
23:11:28 STOR WAVE46.BIN <- WAVE46.BIN
23:11:28 STOR WAVE47.BIN <- WAVE47.BIN
23:11:29 STOR WAVE48.BIN <- WAVE48.BIN
23:11:30 STOR WAVE49.BIN <- WAVE49.BIN
23:11:31 STOR WAVE50.BIN <- WAVE50.BIN
23:11:32 STOR WAVE51.BIN <- WAVE51.BIN
23:11:33 STOR WAVE52.BIN <- WAVE52.BIN
23:11:34 STOR WAVE53.BIN <- WAVE53.BIN
23:11:35 STOR WAVE54.BIN <- WAVE54.BIN
23:11:36 STOR WAVE55.BIN <- WAVE55.BIN
23:11:37 STOR WAVE56.BIN <- WAVE56.BIN
23:11:38 STOR WAVE57.BIN <- WAVE57.BIN
23:11:39 STOR WAVE58.BIN <- WAVE58.BIN
23:11:40 STOR WAVE59.BIN <- WAVE59.BIN
23:11:40 STOR WAVE60.BIN <- WAVE60.BIN
23:11:41 STOR WAVE61.BIN <- WAVE61.BIN
23:11:42 STOR WAVE62.BIN <- WAVE62.BIN
23:11:43 STOR WAVE63.BIN <- WAVE63.BIN
23:11:44 STOR WAVE64.BIN <- WAVE64.BIN
23:11:45 STOR WAVE65.BIN <- WAVE65.BIN
23:11:46 STOR WAVE66.BIN <- WAVE66.BIN
23:11:47 STOR WAVE67.BIN <- WAVE67.BIN
23:11:48 STOR WAVE68.BIN <- WAVE68.BIN
23:11:48 STOR WAVE69.BIN <- WAVE69.BIN
23:11:49 STOR WAVE70.BIN <- WAVE70.BIN
23:11:50 STOR WAVE71.BIN <- WAVE71.BIN
23:11:51 STOR WAVE72.BIN <- WAVE72.BIN
23:11:52 STOR WAVE73.BIN <- WAVE73.BIN
23:11:53 STOR WAVE74.BIN <- WAVE74.BIN
23:11:54 STOR WAVE75.BIN <- WAVE75.BIN
23:11:55 STOR WAVE76.BIN <- WAVE76.BIN
23:11:56 STOR WAVE77.BIN <- WAVE77.BIN
23:11:57 STOR WAVE78.BIN <- WAVE78.BIN
23:11:58 STOR WAVE79.BIN <- WAVE79.BIN
23:11:58 STOR WAVE80.BIN <- WAVE80.BIN
23:11:59 STOR WAVE81.BIN <- WAVE81.BIN
23:12:00 STOR WAVE82.BIN <- WAVE82.BIN
23:12:01 STOR WAVE83.BIN <- WAVE83.BIN
23:12:02 STOR WAVE84.BIN <- WAVE84.BIN
23:12:03 STOR WAVE85.BIN <- WAVE85.BIN
23:12:04 STOR WAVE86.BIN <- WAVE86.BIN
23:12:05 STOR WAVE87.BIN <- WAVE87.BIN
23:12:06 STOR WAVE88.BIN <- WAVE88.BIN
23:12:07 STOR WAVE89.BIN <- WAVE89.BIN
23:12:08 STOR WAVE90.BIN <- WAVE90.BIN
23:12:09 STOR WAVE91.BIN <- WAVE91.BIN
23:12:10 STOR WAVE92.BIN <- WAVE92.BIN
23:12:10 STOR WAVE93.BIN <- WAVE93.BIN
23:12:11 STOR WAVE94.BIN <- WAVE94.BIN
23:12:12 STOR WAVE95.BIN <- WAVE95.BIN
23:12:13 STOR WAVE96.BIN <- WAVE96.BIN
23:12:14 STOR WAVE97.BIN <- WAVE97.BIN
23:12:15 STOR WAVE98.BIN <- WAVE98.BIN
23:12:16 STOR WAVE99.BIN <- WAVE99.BIN
23:13:13 RESTORE verify mismatches: ['WAVE90.BIN', 'WAVE99.BIN']
23:13:13 == battery2 restore done
23:13:54 STOR WAVE90.BIN <- WAVE90.BIN
23:13:55 STOR WAVE99.BIN <- WAVE99.BIN
23:13:55 attempt 0 re-put: ['WAVE90.BIN', 'WAVE99.BIN']
23:13:57 WAVE90/99 already clean (attempt 1)
23:14:55 restore verify -> D:\Code\DTU Code\_wt\fix-wave-findings-b8c190da2e56\ci-artifacts\waveboard\restore_verify.txt mismatches: NONE
23:14:57 open_page -> True ({'ver': 1, 'kind': 'PAGE', 'depth': 1, 'path': [0, 32], 'sel': [6, 9], 'page': 'wave_play'})
23:14:59 frame newN_Z_final_open_100appended sha=17291a0068f2d4ab099f stable=True
23:15:01 closed -> {'ver': 1, 'kind': 'MENU', 'depth': 0, 'path': [0], 'sel': [6], 'page': None}
@@ -0,0 +1,157 @@
[+0ms] [----/--/-- --:--:--][APP] boot: syslog init OK
[+10ms] [----/--/-- --:--:--][APP] fw build: Nov 7 2026 19:10:36 suite=NONE dstr=off
[+21ms] [----/--/-- --:--:--][APP] reset cause: software (NVIC_SystemReset) (CSR=0x14000000)
[+21ms] PREVRUN seg=2 seq=2101829730 t=188054
[+21ms] TICKRUN uw=188103 n=188103 duw=49
[+31ms] [----/--/-- --:--:--][RTC] sd2506_init: OK
[+31ms] [----/--/-- --:--:--][APP] SD2506 init: OK (ret=0)
[+42ms] [2026-11-07 22:52:37][CLK] sys_clock_init: RTC initial time 2026-11-07 22:52:37
[+52ms] [2026-11-07 22:52:37][CLK] sys_clock_init: wall clock base = unix 1794091957, base_tick=142
[+62ms] [2026-11-07 22:52:37][APP] RS485 init: OK (UART4, DE=PA15)
[+62ms] [2026-11-07 22:52:37][APP] ScreenLink init: OK (ret=0, USART1 700000 baud, BRR=0x0078)
[+83ms] [2026-11-07 22:52:37][NAND] Resetting NAND...
[+104ms] [2026-11-07 22:52:37][NAND] Reading NAND ID...
[+104ms] [2026-11-07 22:52:37][NAND] NAND ID: MID=0xC8, DID=0x52
[+104ms] [2026-11-07 22:52:37][NAND] Scanning bad blocks...
[+240ms] [2026-11-07 22:52:37][NAND] BBT scan: 0 bad blocks found
[+240ms] [2026-11-07 22:52:37][NAND] Enabling ECC...
[+250ms] [2026-11-07 22:52:37][NAND] Unlocking block protection...
[+261ms] [2026-11-07 22:52:37][NAND] Locating BBT pool...
[+261ms] [2026-11-07 22:52:37][NAND] Loading persisted BBT...
[+271ms] [2026-11-07 22:52:37][NAND] NAND init OK
[+271ms] [2026-11-07 22:52:37][APP] NAND init: OK
[+271ms] [2026-11-07 22:52:37][ADC] Init OK
[+281ms] [2026-11-07 22:52:37][APP] ADC init: OK
[+281ms] [2026-11-07 22:52:37][APP] ADC input layer init: OK
[+281ms] [2026-11-07 22:52:37][APP] phasor layer init: OK (inst=5)
[+292ms] [2026-11-07 22:52:37][APP] freq layer init: OK
[+303ms] [2026-11-07 22:52:37][CFG] register: section 'adc_cal' (9 keys)
[+303ms] [2026-11-07 22:52:37][CFG] register: section 'adc_cal_ofs' (8 keys)
[+313ms] [2026-11-07 22:52:37][APP] adc cal init: OK (k_q16 tpafe=10000000 stm32=52800000)
[+313ms] [2026-11-07 22:52:37][CFG] register: section 'run_par' (9 keys)
[+324ms] [2026-11-07 22:52:37][APP] run par init: OK (db9 k/b via adc_cal, evt=1<<8)
[+334ms] [2026-11-07 22:52:37][CFG] register: section 'comm' (2 keys)
[+334ms] [2026-11-07 22:52:37][APP] comm init: OK (ca=1 port=2404)
[+345ms] [2026-11-07 22:52:37][APP] protection init: OK (set=40 elm=9)
[+345ms] [2026-11-07 22:52:37][APP] SD2506 ID: 2512153425482405
[+355ms] [2026-11-07 22:52:37][APP] SD2506 time: 2026-11-07 22:52:37 (week 6)
[+355ms] [2026-11-07 22:52:37][APP] SD2506 temp: 23 C
[+366ms] [2026-11-07 22:52:37][APP] SD2506 battery: 3.12 V
[+366ms] [2026-11-07 22:52:37][APP] App init OK
[+376ms] [2026-11-07 22:52:37][NAND_FTL] Initializing NAND FTL...
[+397ms] [2026-11-07 22:52:37][PROT] uncalibrated -> protection blocked (UA/UN/IA VALID not all set)
[+512ms] [2026-11-07 22:52:37][NAND_FTL] Map resumed: 46942/93232 sectors used
[+522ms] [2026-11-07 22:52:37][NAND_FTL] Map head=36880 tail=92105 epoch=8
[+522ms] [2026-11-07 22:52:37][NAND_FTL] NAND FTL ready (capacity: 93232 pages = 182 MB)
[+605ms] [2026-11-07 22:52:37] [FS] FATFS mounted
[+667ms] [2026-11-07 22:52:37][SYSLOG] runlog boot entry: reboot
[+679ms] [2026-11-07 22:52:37][CFG] register: section 'network' (4 keys)
[+679ms] [2026-11-07 22:52:37][CFG] register: section 'ftp' (3 keys)
[+689ms] [2026-11-07 22:52:37][CFG] register: section 'sntp' (4 keys)
[+700ms] [2026-11-07 22:52:37][CFG] load: OK (1064B, heap free 16552B)
[+700ms] [2026-11-07 22:52:37][NET_CFG] load: OK ip=192.168.31.100
[+710ms] [2026-11-07 22:52:37] [CFG] prot set loaded (/prot_set.bin)
[+731ms] [2026-11-07 22:52:37][ADC_TASK] first: UA=-18 UB=417 UC=521 UN=-16 IA=-18 IB=0 IC=771 IN=833 T=713
[+741ms] [2026-11-07 22:52:37][ADC_TASK] phasor(first) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+752ms] [2026-11-07 22:52:37][ADC_TASK] phasor(first) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+752ms] [2026-11-07 22:52:37][ADC_TASK] phasor(first) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+762ms] [2026-11-07 22:52:37][ADC_TASK] phasor(first) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+772ms] [2026-11-07 22:52:37][ADC_TASK] phasor(first) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+772ms] [2026-11-07 22:52:37][ADC_TASK] freq(first): f=0 valid=0 (x0.01)
[+782ms] [2026-11-07 22:52:37][NET_TASK] === Network Init ===
[+782ms] [2026-11-07 22:52:37][PROT] protect task start: cycle=20ms elm=9
[+793ms] [2026-11-07 22:52:37][NET] ch395f ver=0x4A fun_para=0x08
[+793ms] MISS start snap=0x000001E7 req=0x000001F7 t=897
[+803ms] [2026-11-07 22:52:37][WD] [WD] armed: timeout ~2498ms (worst ~1701ms), miss_tol=800ms
[+814ms] [2026-11-07 22:52:37][NET_TASK] net init: OK
[+814ms] [2026-11-07 22:52:37][NET_TASK] MAC: 3C:AB:72:53:2B:12
[+856ms] [2026-11-07 22:52:37][NET_TASK] IP_INF: IP=192.168.31.100 GW=192.168.31.1 MASK=255.255.255.0
[+866ms] [2026-11-07 22:52:37][UI_TASK] UI task: started, wait net ready
[+2783ms] [2026-11-07 22:52:39][NET_TASK] PHY: 100M FULL
[+2804ms] [2026-11-07 22:52:39][NET_TASK] netTask: started (single-socket mode)
[+2835ms] [2026-11-07 22:52:39][ERR][I104] i104: bind port 2404 FAIL, retry in loop
[+2866ms] [2026-11-07 22:52:39] [FTP] using factory default password
[+2876ms] [2026-11-07 22:52:39] [FTP] waiting for connection...
[+2876ms] [2026-11-07 22:52:39][UI_TASK] UI task: net ready, init port
[+2887ms] [2026-11-07 22:52:39][UI_TASK] UI task: ui_port_init enter
[+2898ms] [2026-11-07 22:52:39][UI_PORT] theme: mono dark_bg=true applied
[+2898ms] [2026-11-07 22:52:39][UI_TASK] UI port init: OK
[+2908ms] [2026-11-07 22:52:39][UI_TASK] UI task: ui_menu_init enter
[+2908ms] [2026-11-07 22:52:39][UI_MENU] menu build start: total=15136 free=12692 big=12692
[+2918ms] [2026-11-07 22:52:39][UI_MENU_VIEW] view init: root frame w=66 h=107
[+2929ms] [2026-11-07 22:52:39][UI_MENU] menu build done: total=15020 free=11828 big=11816 used=3192
[+2939ms] [2026-11-07 22:52:39][UI_TASK] UI menu init: OK
[+2939ms] [2026-11-07 22:52:39][UI_STANDBY] standby: ready (idle=60000ms)
[+2950ms] [2026-11-07 22:52:39][UI_TASK] UI standby: ready (idle=60s)
[+2992ms] [2026-11-07 22:52:39][UI_TASK] UI net sink: started (port 7003)
[+3002ms] MISS start snap=0x000001E7 req=0x000001F7 t=3100
[+3002ms] [PROF] t=3104 uic=0 uip=0 uipn=0 uil=0 uiw=0 uis=0 uisn=0 adc=2630 adcm=2001 adcn=0 gl=0
[+3013ms] [PROF2] t=3104 defd=92184 defs=40929 netp=1026 netn=940 adcp=9 adcq=0 gl=0
[+3034ms] [2026-11-07 22:52:39][SBLINK] first frame: size=6 cmd=1 key=0
[+4942ms] [PROF] t=5038 uic=172 uip=29009 uipn=4851 uil=11004 uiw=19009 uis=1138 uisn=0 adc=4564 adcm=2001 adcn=0 gl=0
[+4953ms] [PROF2] t=5038 defd=92184 defs=40929 netp=1026 netn=0 adcp=9 adcq=0 gl=0
[+5377ms] [2026-11-07 22:52:42][SBLINK] rx=19 ok=19 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+5387ms] [2026-11-07 22:52:42] [STACK] default peak_used=2176/5120 free_min=2944 (57%)
[+5398ms] [2026-11-07 22:52:42] [STACK] net peak_used=1116/3840 free_min=2724 (70%)
[+5398ms] [2026-11-07 22:52:42] [STACK] ftp peak_used=740/4096 free_min=3356 (81%)
[+5408ms] [2026-11-07 22:52:42] [STACK] ui peak_used=4204/16384 free_min=12180 (74%)
[+5418ms] [2026-11-07 22:52:42] [STACK] timesync peak_used=476/2560 free_min=2084 (81%)
[+5418ms] [2026-11-07 22:52:42] [STACK] adc peak_used=1024/2560 free_min=1536 (60%)
[+5429ms] [2026-11-07 22:52:42] [STACK] iec104 peak_used=540/2560 free_min=2020 (78%)
[+5439ms] [2026-11-07 22:52:42] [STACK] protect peak_used=492/2048 free_min=1556 (75%)
[+5439ms] [2026-11-07 22:52:42] [STACK] heap free=15624 min_ever=8464
[+5450ms] [2026-11-07 22:52:42][SBLINK] tx=9 done=8 drop=10 kerr=0 abor=0 fb=5 bad=0 us=512 max=673 kq=0 off=0 dfok=0 dfold=0
[+6963ms] [PROF] t=7058 uic=347 uip=94958 uipn=856 uil=10998 uiw=85483 uis=1138 uisn=667 adc=6584 adcm=2001 adcn=0 gl=0
[+6973ms] [PROF2] t=7058 defd=92184 defs=40929 netp=1987 netn=0 adcp=9 adcq=0 gl=0
[+8974ms] [PROF] t=9076 uic=528 uip=94958 uipn=6856 uil=10999 uiw=85483 uis=17926 uisn=0 adc=8602 adcm=2001 adcn=0 gl=0
[+8985ms] [PROF2] t=9076 defd=92184 defs=40929 netp=1987 netn=0 adcp=9 adcq=0 gl=0
[+10382ms] [2026-11-07 22:52:47][ADC_TASK] frames=10000 idle=0 skip=1 seq=10006 frst_err=0 ring=9999 adc1_rc=0 adc1_err=0 adc1_seq=10005 adc1_gap=5 adc1_hw=0 tgap=1
[+10392ms] [2026-11-07 22:52:47][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10403ms] [2026-11-07 22:52:47][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10403ms] [2026-11-07 22:52:47][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+10413ms] [2026-11-07 22:52:47][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+10413ms] [2026-11-07 22:52:47][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+10423ms] [2026-11-07 22:52:47][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+10434ms] [2026-11-07 22:52:47][ADC_TASK] adc: UA=-23 UB=408 UC=614 UN=-21 IA=-21 IB=0 IC=761 IN=875 T=731
[+10444ms] [2026-11-07 22:52:47][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+10444ms] [2026-11-07 22:52:47][ADC_TASK] meas: seq=50 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+10455ms] [2026-11-07 22:52:47][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+10465ms] [2026-11-07 22:52:47][SBLINK] rx=37 ok=37 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+10475ms] [2026-11-07 22:52:47][SBLINK] tx=27 done=27 drop=10 kerr=0 abor=0 fb=16 bad=0 us=676 max=676 kq=0 off=0 dfok=0 dfold=0
[+10984ms] [PROF] t=11084 uic=700 uip=94958 uipn=4856 uil=10982 uiw=85483 uis=17926 uisn=0 adc=10608 adcm=3437 adcn=0 gl=0
[+10995ms] [PROF2] t=11084 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+13009ms] [PROF] t=13102 uic=882 uip=94958 uipn=5863 uil=10999 uiw=85483 uis=17926 uisn=0 adc=12626 adcm=3437 adcn=0 gl=0
[+13009ms] [PROF2] t=13102 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+15021ms] [PROF] t=15120 uic=1064 uip=94958 uipn=5856 uil=10916 uiw=85483 uis=17926 uisn=0 adc=14644 adcm=3437 adcn=0 gl=0
[+15032ms] [PROF2] t=15120 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+15467ms] [2026-11-07 22:52:52][SBLINK] rx=55 ok=55 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+15477ms] [2026-11-07 22:52:52][SBLINK] tx=45 done=45 drop=10 kerr=0 abor=0 fb=26 bad=0 us=513 max=676 kq=0 off=0 dfok=0 dfold=0
[+17039ms] [PROF] t=17140 uic=1244 uip=94958 uipn=7855 uil=11000 uiw=85483 uis=17926 uisn=0 adc=16664 adcm=3437 adcn=0 gl=0
[+17050ms] [PROF2] t=17140 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+19069ms] [PROF] t=19158 uic=1426 uip=94958 uipn=5856 uil=10999 uiw=85483 uis=17926 uisn=0 adc=18682 adcm=3437 adcn=0 gl=0
[+19069ms] [PROF2] t=19158 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+20382ms] [2026-11-07 22:52:57][ADC_TASK] frames=19998 idle=0 skip=2 seq=20006 frst_err=0 ring=19996 adc1_rc=0 adc1_err=0 adc1_seq=20005 adc1_gap=8 adc1_hw=0 tgap=3
[+20392ms] [2026-11-07 22:52:57][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20402ms] [2026-11-07 22:52:57][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20402ms] [2026-11-07 22:52:57][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+20412ms] [2026-11-07 22:52:57][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+20412ms] [2026-11-07 22:52:57][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+20423ms] [2026-11-07 22:52:57][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+20433ms] [2026-11-07 22:52:57][ADC_TASK] adc: UA=-22 UB=403 UC=619 UN=-21 IA=-21 IB=0 IC=764 IN=890 T=750
[+20444ms] [2026-11-07 22:52:57][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+20444ms] [2026-11-07 22:52:57][ADC_TASK] meas: seq=100 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+20454ms] [2026-11-07 22:52:57][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+20475ms] [2026-11-07 22:52:57][SBLINK] rx=73 ok=73 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+20485ms] [2026-11-07 22:52:57][SBLINK] tx=63 done=62 drop=10 kerr=0 abor=0 fb=35 bad=0 us=512 max=676 kq=0 off=0 dfok=0 dfold=0
[+21097ms] [PROF] t=21194 uic=1600 uip=98423 uipn=4856 uil=10997 uiw=85483 uis=17926 uisn=0 adc=20716 adcm=3462 adcn=0 gl=0
[+21107ms] [PROF2] t=21194 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+23114ms] [PROF] t=23212 uic=1782 uip=98423 uipn=5855 uil=11000 uiw=85483 uis=17926 uisn=0 adc=22734 adcm=3462 adcn=0 gl=0
[+23125ms] [PROF2] t=23212 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+25134ms] [PROF] t=25230 uic=1964 uip=98423 uipn=5856 uil=10998 uiw=85483 uis=17926 uisn=0 adc=24752 adcm=3462 adcn=0 gl=0
[+25144ms] [PROF2] t=25230 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+25477ms] [2026-11-07 22:53:02][SBLINK] rx=90 ok=90 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+25487ms] [2026-11-07 22:53:02][SBLINK] tx=80 done=80 drop=10 kerr=0 abor=0 fb=46 bad=0 us=513 max=676 kq=0 off=0 dfok=0 dfold=0
[+27152ms] [PROF] t=27250 uic=2144 uip=98423 uipn=9856 uil=11000 uiw=85483 uis=17926 uisn=0 adc=26772 adcm=3462 adcn=0 gl=0
[+27162ms] [PROF2] t=27250 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
[+29170ms] [PROF] t=29268 uic=2326 uip=98423 uipn=5857 uil=10998 uiw=85483 uis=17926 uisn=0 adc=28790 adcm=3462 adcn=0 gl=0
[+29180ms] [PROF2] t=29268 defd=92184 defs=40929 netp=4025 netn=0 adcp=9 adcq=0 gl=0
@@ -0,0 +1,157 @@
[+0ms] [----/--/-- --:--:--][APP] boot: syslog init OK
[+0ms] [----/--/-- --:--:--][APP] fw build: Nov 7 2026 19:10:36 suite=NONE dstr=off
[+10ms] [----/--/-- --:--:--][APP] reset cause: software (NVIC_SystemReset) (CSR=0x14000000)
[+10ms] PREVRUN seg=2 seq=2101858748 t=171841
[+21ms] TICKRUN uw=171873 n=171873 duw=32
[+21ms] [----/--/-- --:--:--][RTC] sd2506_init: OK
[+31ms] [----/--/-- --:--:--][APP] SD2506 init: OK (ret=0)
[+42ms] [2026-11-07 22:56:09][CLK] sys_clock_init: RTC initial time 2026-11-07 22:56:09
[+42ms] [2026-11-07 22:56:09][CLK] sys_clock_init: wall clock base = unix 1794092169, base_tick=142
[+52ms] [2026-11-07 22:56:09][APP] RS485 init: OK (UART4, DE=PA15)
[+62ms] [2026-11-07 22:56:09][APP] ScreenLink init: OK (ret=0, USART1 700000 baud, BRR=0x0078)
[+73ms] [2026-11-07 22:56:09][NAND] Resetting NAND...
[+94ms] [2026-11-07 22:56:09][NAND] Reading NAND ID...
[+94ms] [2026-11-07 22:56:09][NAND] NAND ID: MID=0xC8, DID=0x52
[+104ms] [2026-11-07 22:56:09][NAND] Scanning bad blocks...
[+238ms] [2026-11-07 22:56:09][NAND] BBT scan: 0 bad blocks found
[+238ms] [2026-11-07 22:56:09][NAND] Enabling ECC...
[+238ms] [2026-11-07 22:56:09][NAND] Unlocking block protection...
[+249ms] [2026-11-07 22:56:09][NAND] Locating BBT pool...
[+249ms] [2026-11-07 22:56:09][NAND] Loading persisted BBT...
[+259ms] [2026-11-07 22:56:09][NAND] NAND init OK
[+259ms] [2026-11-07 22:56:09][APP] NAND init: OK
[+270ms] [2026-11-07 22:56:09][ADC] Init OK
[+270ms] [2026-11-07 22:56:09][APP] ADC init: OK
[+270ms] [2026-11-07 22:56:09][APP] ADC input layer init: OK
[+281ms] [2026-11-07 22:56:09][APP] phasor layer init: OK (inst=5)
[+281ms] [2026-11-07 22:56:09][APP] freq layer init: OK
[+291ms] [2026-11-07 22:56:09][CFG] register: section 'adc_cal' (9 keys)
[+291ms] [2026-11-07 22:56:09][CFG] register: section 'adc_cal_ofs' (8 keys)
[+301ms] [2026-11-07 22:56:09][APP] adc cal init: OK (k_q16 tpafe=10000000 stm32=52800000)
[+312ms] [2026-11-07 22:56:09][CFG] register: section 'run_par' (9 keys)
[+312ms] [2026-11-07 22:56:09][APP] run par init: OK (db9 k/b via adc_cal, evt=1<<8)
[+322ms] [2026-11-07 22:56:09][CFG] register: section 'comm' (2 keys)
[+332ms] [2026-11-07 22:56:09][APP] comm init: OK (ca=1 port=2404)
[+332ms] [2026-11-07 22:56:09][APP] protection init: OK (set=40 elm=9)
[+343ms] [2026-11-07 22:56:09][APP] SD2506 ID: 2512153425482405
[+343ms] [2026-11-07 22:56:09][APP] SD2506 time: 2026-11-07 22:56:10 (week 6)
[+353ms] [2026-11-07 22:56:09][APP] SD2506 temp: 24 C
[+353ms] [2026-11-07 22:56:09][APP] SD2506 battery: 3.12 V
[+364ms] [2026-11-07 22:56:09][APP] App init OK
[+364ms] [2026-11-07 22:56:09][NAND_FTL] Initializing NAND FTL...
[+498ms] [2026-11-07 22:56:09][NAND_FTL] Map resumed: 46942/93232 sectors used
[+509ms] [2026-11-07 22:56:09][NAND_FTL] Map head=37008 tail=92232 epoch=8
[+509ms] [2026-11-07 22:56:09][NAND_FTL] NAND FTL ready (capacity: 93232 pages = 182 MB)
[+592ms] [2026-11-07 22:56:09] [FS] FATFS mounted
[+655ms] [2026-11-07 22:56:09][SYSLOG] runlog boot entry: reboot
[+655ms] [2026-11-07 22:56:09][CFG] register: section 'network' (4 keys)
[+665ms] [2026-11-07 22:56:09][CFG] register: section 'ftp' (3 keys)
[+665ms] [2026-11-07 22:56:09][CFG] register: section 'sntp' (4 keys)
[+686ms] [2026-11-07 22:56:09][CFG] load: OK (1064B, heap free 16552B)
[+686ms] [2026-11-07 22:56:09][NET_CFG] load: OK ip=192.168.31.100
[+697ms] [2026-11-07 22:56:09] [CFG] prot set loaded (/prot_set.bin)
[+759ms] [2026-11-07 22:56:09][PROT] uncalibrated -> protection blocked (UA/UN/IA VALID not all set)
[+759ms] [2026-11-07 22:56:09][ADC_TASK] first: UA=-17 UB=414 UC=521 UN=-17 IA=-17 IB=0 IC=765 IN=900 T=711
[+770ms] [2026-11-07 22:56:09][ADC_TASK] phasor(first) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+780ms] [2026-11-07 22:56:09][ADC_TASK] phasor(first) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+791ms] [2026-11-07 22:56:09][ADC_TASK] phasor(first) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+791ms] [2026-11-07 22:56:09][ADC_TASK] phasor(first) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+801ms] [2026-11-07 22:56:09][ADC_TASK] phasor(first) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+812ms] [2026-11-07 22:56:09][ADC_TASK] freq(first): f=0 valid=0 (x0.01)
[+812ms] [2026-11-07 22:56:09][NET_TASK] === Network Init ===
[+822ms] [2026-11-07 22:56:09][PROT] protect task start: cycle=20ms elm=9
[+822ms] [2026-11-07 22:56:09][NET] ch395f ver=0x4A fun_para=0x08
[+833ms] [2026-11-07 22:56:09][NET_TASK] net init: OK
[+833ms] [2026-11-07 22:56:09][NET_TASK] MAC: 3C:AB:72:53:2B:12
[+843ms] [2026-11-07 22:56:09][NET_TASK] IP_INF: IP=192.168.31.100 GW=192.168.31.1 MASK=255.255.255.0
[+843ms] MISS start snap=0x000001E7 req=0x000001F7 t=952
[+854ms] [2026-11-07 22:56:09][WD] [WD] armed: timeout ~2498ms (worst ~1701ms), miss_tol=800ms
[+895ms] [2026-11-07 22:56:09][UI_TASK] UI task: started, wait net ready
[+2749ms] [2026-11-07 22:56:11][NET_TASK] PHY: 100M FULL
[+2769ms] [2026-11-07 22:56:11][NET_TASK] netTask: started (single-socket mode)
[+2800ms] [2026-11-07 22:56:11][ERR][I104] i104: bind port 2404 FAIL, retry in loop
[+2832ms] [2026-11-07 22:56:11] [FTP] using factory default password
[+2832ms] [2026-11-07 22:56:11] [FTP] waiting for connection...
[+2842ms] [2026-11-07 22:56:11][UI_TASK] UI task: net ready, init port
[+2853ms] [2026-11-07 22:56:11][UI_TASK] UI task: ui_port_init enter
[+2863ms] [2026-11-07 22:56:11][UI_PORT] theme: mono dark_bg=true applied
[+2863ms] [2026-11-07 22:56:11][UI_TASK] UI port init: OK
[+2863ms] [2026-11-07 22:56:11][UI_TASK] UI task: ui_menu_init enter
[+2873ms] [2026-11-07 22:56:11][UI_MENU] menu build start: total=15136 free=12692 big=12692
[+2884ms] [2026-11-07 22:56:11][UI_MENU_VIEW] view init: root frame w=66 h=107
[+2894ms] [2026-11-07 22:56:11][UI_MENU] menu build done: total=15020 free=11828 big=11816 used=3192
[+2905ms] [2026-11-07 22:56:11][UI_TASK] UI menu init: OK
[+2905ms] [2026-11-07 22:56:11][UI_STANDBY] standby: ready (idle=60000ms)
[+2915ms] [2026-11-07 22:56:11][UI_TASK] UI standby: ready (idle=60s)
[+2967ms] [2026-11-07 22:56:11][UI_TASK] UI net sink: started (port 7003)
[+2967ms] MISS start snap=0x000001E7 req=0x000001F7 t=3073
[+2967ms] [PROF] t=3077 uic=0 uip=0 uipn=0 uil=0 uiw=0 uis=0 uisn=0 adc=2606 adcm=1917 adcn=0 gl=0
[+2978ms] [PROF2] t=3077 defd=96634 defs=38441 netp=1008 netn=0 adcp=9 adcq=0 gl=0
[+2999ms] [2026-11-07 22:56:11][SBLINK] first frame: size=6 cmd=1 key=0
[+4902ms] [PROF] t=5011 uic=172 uip=28812 uipn=4855 uil=10999 uiw=18696 uis=1136 uisn=0 adc=4539 adcm=1917 adcn=0 gl=0
[+4912ms] [PROF2] t=5011 defd=96634 defs=38441 netp=1008 netn=0 adcp=9 adcq=0 gl=0
[+5378ms] [2026-11-07 22:56:14] [STACK] default peak_used=2176/5120 free_min=2944 (57%)
[+5378ms] [2026-11-07 22:56:14] [STACK] net peak_used=1048/3840 free_min=2792 (72%)
[+5388ms] [2026-11-07 22:56:14] [STACK] ftp peak_used=740/4096 free_min=3356 (81%)
[+5398ms] [2026-11-07 22:56:14] [STACK] ui peak_used=4204/16384 free_min=12180 (74%)
[+5398ms] [2026-11-07 22:56:14] [STACK] timesync peak_used=476/2560 free_min=2084 (81%)
[+5409ms] [2026-11-07 22:56:14] [STACK] adc peak_used=1024/2560 free_min=1536 (60%)
[+5419ms] [2026-11-07 22:56:14] [STACK] iec104 peak_used=540/2560 free_min=2020 (78%)
[+5419ms] [2026-11-07 22:56:14] [STACK] protect peak_used=492/2048 free_min=1556 (75%)
[+5430ms] [2026-11-07 22:56:14] [STACK] heap free=15624 min_ever=8464
[+5440ms] [2026-11-07 22:56:14][SBLINK] rx=19 ok=19 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+5451ms] [2026-11-07 22:56:14][SBLINK] tx=9 done=9 drop=10 kerr=0 abor=0 fb=6 bad=0 us=513 max=672 kq=0 off=0 dfok=0 dfold=0
[+6908ms] [PROF] t=7013 uic=345 uip=72735 uipn=6855 uil=10999 uiw=22654 uis=1136 uisn=0 adc=6541 adcm=1917 adcn=0 gl=0
[+6918ms] [PROF2] t=7013 defd=96634 defs=38441 netp=1009 netn=0 adcp=9 adcq=0 gl=0
[+8927ms] [PROF] t=9030 uic=527 uip=72735 uipn=4856 uil=10999 uiw=22654 uis=1157 uisn=0 adc=8558 adcm=1917 adcn=0 gl=0
[+8937ms] [PROF2] t=9030 defd=96634 defs=38441 netp=1009 netn=0 adcp=9 adcq=0 gl=0
[+10366ms] [2026-11-07 22:56:19][ADC_TASK] frames=10001 idle=0 skip=2 seq=10006 frst_err=0 ring=9999 adc1_rc=0 adc1_err=0 adc1_seq=10005 adc1_gap=5 adc1_hw=0 tgap=0
[+10387ms] [2026-11-07 22:56:19][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10387ms] [2026-11-07 22:56:19][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10397ms] [2026-11-07 22:56:19][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+10407ms] [2026-11-07 22:56:19][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+10407ms] [2026-11-07 22:56:19][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+10418ms] [2026-11-07 22:56:19][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+10428ms] [2026-11-07 22:56:19][ADC_TASK] adc: UA=-22 UB=405 UC=620 UN=-21 IA=-21 IB=0 IC=758 IN=894 T=729
[+10428ms] [2026-11-07 22:56:19][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+10439ms] [2026-11-07 22:56:19][ADC_TASK] meas: seq=50 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+10449ms] [2026-11-07 22:56:19][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+10459ms] [2026-11-07 22:56:19][SBLINK] rx=37 ok=37 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+10470ms] [2026-11-07 22:56:19][SBLINK] tx=27 done=27 drop=10 kerr=0 abor=0 fb=16 bad=0 us=511 max=672 kq=0 off=0 dfok=0 dfold=0
[+10924ms] [PROF] t=11033 uic=698 uip=93581 uipn=10861 uil=10998 uiw=23057 uis=1157 uisn=0 adc=10559 adcm=3418 adcn=0 gl=0
[+10935ms] [PROF2] t=11033 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+12943ms] [PROF] t=13051 uic=880 uip=93581 uipn=5855 uil=11000 uiw=23057 uis=1157 uisn=0 adc=12577 adcm=3418 adcn=0 gl=0
[+12953ms] [PROF2] t=13051 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+14969ms] [PROF] t=15069 uic=1062 uip=93581 uipn=5856 uil=10998 uiw=23057 uis=1157 uisn=0 adc=14595 adcm=3418 adcn=0 gl=0
[+14969ms] [PROF2] t=15069 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+15466ms] [2026-11-07 22:56:24][SBLINK] rx=55 ok=55 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+15476ms] [2026-11-07 22:56:24][SBLINK] tx=45 done=45 drop=10 kerr=0 abor=0 fb=26 bad=0 us=511 max=672 kq=0 off=0 dfok=0 dfold=0
[+16985ms] [PROF] t=17092 uic=1243 uip=93581 uipn=1855 uil=10982 uiw=23057 uis=1157 uisn=0 adc=16618 adcm=3418 adcn=0 gl=0
[+16995ms] [PROF2] t=17092 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+19001ms] [PROF] t=19110 uic=1425 uip=93581 uipn=5856 uil=10998 uiw=23057 uis=1157 uisn=0 adc=18636 adcm=3418 adcn=0 gl=0
[+19011ms] [PROF2] t=19110 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+20371ms] [2026-11-07 22:56:29][ADC_TASK] frames=19999 idle=0 skip=3 seq=20006 frst_err=0 ring=19996 adc1_rc=0 adc1_err=0 adc1_seq=20005 adc1_gap=8 adc1_hw=0 tgap=2
[+20381ms] [2026-11-07 22:56:29][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20392ms] [2026-11-07 22:56:29][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20392ms] [2026-11-07 22:56:29][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+20402ms] [2026-11-07 22:56:29][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+20412ms] [2026-11-07 22:56:29][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+20423ms] [2026-11-07 22:56:29][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+20423ms] [2026-11-07 22:56:29][ADC_TASK] adc: UA=-20 UB=401 UC=613 UN=-20 IA=-20 IB=0 IC=765 IN=897 T=750
[+20433ms] [2026-11-07 22:56:29][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+20444ms] [2026-11-07 22:56:29][ADC_TASK] meas: seq=100 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+20444ms] [2026-11-07 22:56:29][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+20464ms] [2026-11-07 22:56:29][SBLINK] rx=73 ok=73 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+20475ms] [2026-11-07 22:56:29][SBLINK] tx=63 done=63 drop=10 kerr=0 abor=0 fb=36 bad=0 us=511 max=672 kq=0 off=0 dfok=0 dfold=0
[+21035ms] [PROF] t=21142 uic=1598 uip=98999 uipn=10855 uil=11000 uiw=89760 uis=89573 uisn=0 adc=20666 adcm=3450 adcn=0 gl=0
[+21045ms] [PROF2] t=21142 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+23054ms] [PROF] t=23160 uic=1780 uip=98999 uipn=5856 uil=10999 uiw=89760 uis=89573 uisn=0 adc=22684 adcm=3450 adcn=0 gl=0
[+23064ms] [PROF2] t=23160 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+25074ms] [PROF] t=25178 uic=1962 uip=98999 uipn=5855 uil=10999 uiw=89760 uis=89573 uisn=0 adc=24702 adcm=3450 adcn=0 gl=0
[+25085ms] [PROF2] t=25178 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+25480ms] [2026-11-07 22:56:34][SBLINK] rx=91 ok=91 keys=0 crc=0 len=0 fmt=0 err=1 bits=0x08 rearm=0 size=6 key=0
[+25490ms] [2026-11-07 22:56:34][SBLINK] tx=81 done=81 drop=10 kerr=0 abor=0 fb=46 bad=0 us=511 max=672 kq=0 off=0 dfok=0 dfold=0
[+27101ms] [PROF] t=27203 uic=2143 uip=98999 uipn=3843 uil=11016 uiw=89760 uis=89573 uisn=0 adc=26727 adcm=3450 adcn=0 gl=0
[+27112ms] [PROF2] t=27203 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
[+29117ms] [PROF] t=29221 uic=2325 uip=98999 uipn=5855 uil=11000 uiw=89760 uis=89573 uisn=0 adc=28745 adcm=3450 adcn=0 gl=0
[+29127ms] [PROF2] t=29221 defd=96634 defs=38441 netp=4008 netn=0 adcp=9 adcq=0 gl=0
@@ -0,0 +1,157 @@
[+0ms] [----/--/-- --:--:--][APP] boot: syslog init OK
[+11ms] [----/--/-- --:--:--][APP] fw build: Nov 7 2026 19:10:36 suite=NONE dstr=off
[+11ms] [----/--/-- --:--:--][APP] reset cause: software (NVIC_SystemReset) (CSR=0x14000000)
[+21ms] PREVRUN seg=2 seq=2102063490 t=1334204
[+21ms] TICKRUN uw=1334216 n=1334216 duw=12
[+31ms] [----/--/-- --:--:--][RTC] sd2506_init: OK
[+31ms] [----/--/-- --:--:--][APP] SD2506 init: OK (ret=0)
[+42ms] [2026-11-07 23:19:04][CLK] sys_clock_init: RTC initial time 2026-11-07 23:19:04
[+53ms] [2026-11-07 23:19:04][CLK] sys_clock_init: wall clock base = unix 1794093544, base_tick=143
[+63ms] [2026-11-07 23:19:04][APP] RS485 init: OK (UART4, DE=PA15)
[+63ms] [2026-11-07 23:19:04][APP] ScreenLink init: OK (ret=0, USART1 700000 baud, BRR=0x0078)
[+84ms] [2026-11-07 23:19:04][NAND] Resetting NAND...
[+105ms] [2026-11-07 23:19:04][NAND] Reading NAND ID...
[+105ms] [2026-11-07 23:19:04][NAND] NAND ID: MID=0xC8, DID=0x52
[+105ms] [2026-11-07 23:19:04][NAND] Scanning bad blocks...
[+240ms] [2026-11-07 23:19:04][NAND] BBT scan: 0 bad blocks found
[+251ms] [2026-11-07 23:19:04][NAND] Enabling ECC...
[+251ms] [2026-11-07 23:19:04][NAND] Unlocking block protection...
[+261ms] [2026-11-07 23:19:04][NAND] Locating BBT pool...
[+261ms] [2026-11-07 23:19:04][NAND] Loading persisted BBT...
[+272ms] [2026-11-07 23:19:04][NAND] NAND init OK
[+272ms] [2026-11-07 23:19:04][APP] NAND init: OK
[+272ms] [2026-11-07 23:19:04][ADC] Init OK
[+282ms] [2026-11-07 23:19:04][APP] ADC init: OK
[+282ms] [2026-11-07 23:19:04][APP] ADC input layer init: OK
[+282ms] [2026-11-07 23:19:04][APP] phasor layer init: OK (inst=5)
[+292ms] [2026-11-07 23:19:04][APP] freq layer init: OK
[+303ms] [2026-11-07 23:19:04][CFG] register: section 'adc_cal' (9 keys)
[+303ms] [2026-11-07 23:19:04][CFG] register: section 'adc_cal_ofs' (8 keys)
[+313ms] [2026-11-07 23:19:04][APP] adc cal init: OK (k_q16 tpafe=10000000 stm32=52800000)
[+313ms] [2026-11-07 23:19:04][CFG] register: section 'run_par' (9 keys)
[+324ms] [2026-11-07 23:19:04][APP] run par init: OK (db9 k/b via adc_cal, evt=1<<8)
[+334ms] [2026-11-07 23:19:04][CFG] register: section 'comm' (2 keys)
[+334ms] [2026-11-07 23:19:04][APP] comm init: OK (ca=1 port=2404)
[+345ms] [2026-11-07 23:19:04][APP] protection init: OK (set=40 elm=9)
[+345ms] [2026-11-07 23:19:04][APP] SD2506 ID: 2512153425482405
[+355ms] [2026-11-07 23:19:04][APP] SD2506 time: 2026-11-07 23:19:05 (week 6)
[+366ms] [2026-11-07 23:19:04][APP] SD2506 temp: 24 C
[+366ms] [2026-11-07 23:19:04][APP] SD2506 battery: 3.12 V
[+366ms] [2026-11-07 23:19:04][APP] App init OK
[+376ms] [2026-11-07 23:19:04][NAND_FTL] Initializing NAND FTL...
[+376ms] [2026-11-07 23:19:04][PROT] uncalibrated -> protection blocked (UA/UN/IA VALID not all set)
[+480ms] [2026-11-07 23:19:04][NAND_FTL] Map resumed: 46942/93232 sectors used
[+480ms] [2026-11-07 23:19:04][NAND_FTL] Map head=46768 tail=94934 epoch=8
[+491ms] [2026-11-07 23:19:04][NAND_FTL] NAND FTL ready (capacity: 93232 pages = 182 MB)
[+573ms] [2026-11-07 23:19:04] [FS] FATFS mounted
[+646ms] [2026-11-07 23:19:04][SYSLOG] runlog boot entry: power on
[+646ms] [2026-11-07 23:19:04][CFG] register: section 'network' (4 keys)
[+656ms] [2026-11-07 23:19:04][CFG] register: section 'ftp' (3 keys)
[+667ms] [2026-11-07 23:19:04][CFG] register: section 'sntp' (4 keys)
[+677ms] [2026-11-07 23:19:04][CFG] load: OK (1064B, heap free 16552B)
[+677ms] [2026-11-07 23:19:04][NET_CFG] load: OK ip=192.168.31.100
[+688ms] [2026-11-07 23:19:04] [CFG] prot set loaded (/prot_set.bin)
[+709ms] [2026-11-07 23:19:04][ADC_TASK] first: UA=-18 UB=415 UC=521 UN=-17 IA=-18 IB=0 IC=762 IN=903 T=716
[+720ms] [2026-11-07 23:19:04][ADC_TASK] phasor(first) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+730ms] [2026-11-07 23:19:04][ADC_TASK] phasor(first) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+730ms] [2026-11-07 23:19:04][ADC_TASK] phasor(first) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+740ms] [2026-11-07 23:19:04][ADC_TASK] phasor(first) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+751ms] [2026-11-07 23:19:04][ADC_TASK] phasor(first) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+751ms] [2026-11-07 23:19:04][ADC_TASK] freq(first): f=0 valid=0 (x0.01)
[+761ms] [2026-11-07 23:19:04][NET_TASK] === Network Init ===
[+761ms] [2026-11-07 23:19:04][PROT] protect task start: cycle=20ms elm=9
[+772ms] [2026-11-07 23:19:04][NET] ch395f ver=0x4A fun_para=0x08
[+772ms] [2026-11-07 23:19:04][NET_TASK] net init: OK
[+782ms] [2026-11-07 23:19:04][NET_TASK] MAC: 3C:AB:72:53:2B:12
[+782ms] MISS start snap=0x000001E7 req=0x000001F7 t=885
[+793ms] [2026-11-07 23:19:04][WD] [WD] armed: timeout ~2498ms (worst ~1701ms), miss_tol=800ms
[+793ms] [2026-11-07 23:19:04][NET_TASK] IP_INF: IP=192.168.31.100 GW=192.168.31.1 MASK=255.255.255.0
[+845ms] [2026-11-07 23:19:04][UI_TASK] UI task: started, wait net ready
[+2752ms] [2026-11-07 23:19:06][NET_TASK] PHY: 100M FULL
[+2762ms] [2026-11-07 23:19:06][NET_TASK] netTask: started (single-socket mode)
[+2794ms] [2026-11-07 23:19:06][ERR][I104] i104: bind port 2404 FAIL, retry in loop
[+2835ms] [2026-11-07 23:19:06] [FTP] using factory default password
[+2835ms] [2026-11-07 23:19:06] [FTP] waiting for connection...
[+2846ms] MISS start snap=0x000001E7 req=0x000001F7 t=2941
[+2846ms] [PROF] t=2946 uic=0 uip=0 uipn=0 uil=0 uiw=0 uis=0 uisn=0 adc=2472 adcm=1922 adcn=0 gl=0
[+2856ms] [PROF2] t=2946 defd=96546 defs=36903 netp=996 netn=0 adcp=8 adcq=0 gl=0
[+2856ms] [2026-11-07 23:19:06][UI_TASK] UI task: net ready, init port
[+2867ms] [2026-11-07 23:19:06][UI_TASK] UI task: ui_port_init enter
[+2877ms] [2026-11-07 23:19:06][UI_PORT] theme: mono dark_bg=true applied
[+2877ms] [2026-11-07 23:19:06][UI_TASK] UI port init: OK
[+2887ms] [2026-11-07 23:19:06][UI_TASK] UI task: ui_menu_init enter
[+2887ms] [2026-11-07 23:19:06][UI_MENU] menu build start: total=15136 free=12692 big=12692
[+2897ms] [2026-11-07 23:19:06][UI_MENU_VIEW] view init: root frame w=66 h=107
[+2908ms] [2026-11-07 23:19:06][UI_MENU] menu build done: total=15020 free=11828 big=11816 used=3192
[+2919ms] [2026-11-07 23:19:06][UI_TASK] UI menu init: OK
[+2919ms] [2026-11-07 23:19:06][UI_STANDBY] standby: ready (idle=60000ms)
[+2929ms] [2026-11-07 23:19:06][UI_TASK] UI standby: ready (idle=60s)
[+2982ms] [2026-11-07 23:19:06][UI_TASK] UI net sink: started (port 7003)
[+2992ms] [2026-11-07 23:19:06][SBLINK] first frame: size=6 cmd=1 key=0
[+4899ms] [PROF] t=5000 uic=172 uip=29195 uipn=5856 uil=10999 uiw=19168 uis=1135 uisn=0 adc=4526 adcm=1922 adcn=0 gl=0
[+4909ms] [PROF2] t=5000 defd=96546 defs=36903 netp=1016 netn=0 adcp=8 adcq=0 gl=0
[+5386ms] [2026-11-07 23:19:09][SBLINK] rx=19 ok=19 keys=0 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0 size=6 key=0
[+5396ms] [2026-11-07 23:19:09] [STACK] default peak_used=2188/5120 free_min=2932 (57%)
[+5407ms] [2026-11-07 23:19:09] [STACK] net peak_used=1116/3840 free_min=2724 (70%)
[+5407ms] [2026-11-07 23:19:09] [STACK] ftp peak_used=740/4096 free_min=3356 (81%)
[+5417ms] [2026-11-07 23:19:09] [STACK] ui peak_used=4204/16384 free_min=12180 (74%)
[+5427ms] [2026-11-07 23:19:09] [STACK] timesync peak_used=476/2560 free_min=2084 (81%)
[+5427ms] [2026-11-07 23:19:09] [STACK] adc peak_used=1024/2560 free_min=1536 (60%)
[+5438ms] [2026-11-07 23:19:09] [STACK] iec104 peak_used=540/2560 free_min=2020 (78%)
[+5448ms] [2026-11-07 23:19:09] [STACK] protect peak_used=492/2048 free_min=1556 (75%)
[+5448ms] [2026-11-07 23:19:09] [STACK] heap free=15624 min_ever=8464
[+5459ms] [2026-11-07 23:19:09][SBLINK] tx=8 done=8 drop=11 kerr=0 abor=0 fb=6 bad=0 us=513 max=675 kq=0 off=0 dfok=0 dfold=0
[+6919ms] [PROF] t=7016 uic=346 uip=95998 uipn=6855 uil=11000 uiw=86551 uis=1139 uisn=0 adc=6542 adcm=1922 adcn=0 gl=0
[+6929ms] [PROF2] t=7016 defd=96546 defs=36903 netp=1017 netn=0 adcp=8 adcq=0 gl=0
[+8939ms] [PROF] t=9033 uic=528 uip=95998 uipn=4856 uil=10999 uiw=86551 uis=1197 uisn=0 adc=8559 adcm=1922 adcn=0 gl=0
[+8939ms] [PROF2] t=9033 defd=96546 defs=36903 netp=1017 netn=0 adcp=8 adcq=0 gl=0
[+10379ms] [2026-11-07 23:19:14][ADC_TASK] frames=10001 idle=0 skip=2 seq=10006 frst_err=0 ring=9999 adc1_rc=0 adc1_err=0 adc1_seq=10005 adc1_gap=5 adc1_hw=0 tgap=0
[+10390ms] [2026-11-07 23:19:14][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10401ms] [2026-11-07 23:19:14][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+10401ms] [2026-11-07 23:19:14][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+10412ms] [2026-11-07 23:19:14][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+10422ms] [2026-11-07 23:19:14][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+10422ms] [2026-11-07 23:19:14][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+10433ms] [2026-11-07 23:19:14][ADC_TASK] adc: UA=-23 UB=405 UC=617 UN=-21 IA=-21 IB=0 IC=758 IN=894 T=731
[+10443ms] [2026-11-07 23:19:14][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+10453ms] [2026-11-07 23:19:14][ADC_TASK] meas: seq=50 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+10453ms] [2026-11-07 23:19:14][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+10464ms] [2026-11-07 23:19:14][SBLINK] rx=38 ok=38 keys=0 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0 size=6 key=0
[+10474ms] [2026-11-07 23:19:14][SBLINK] tx=27 done=26 drop=11 kerr=0 abor=0 fb=15 bad=0 us=512 max=675 kq=0 off=0 dfok=0 dfold=0
[+10939ms] [PROF] t=11034 uic=699 uip=95998 uipn=8856 uil=10998 uiw=86551 uis=1197 uisn=0 adc=10558 adcm=3427 adcn=0 gl=0
[+10939ms] [PROF2] t=11034 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+12959ms] [PROF] t=13052 uic=881 uip=95998 uipn=5855 uil=10999 uiw=86551 uis=1197 uisn=0 adc=12576 adcm=3427 adcn=0 gl=0
[+12959ms] [PROF2] t=13052 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+14968ms] [PROF] t=15070 uic=1063 uip=95998 uipn=5856 uil=10998 uiw=86551 uis=1197 uisn=0 adc=14594 adcm=3427 adcn=0 gl=0
[+14979ms] [PROF2] t=15070 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+15474ms] [2026-11-07 23:19:19][SBLINK] rx=55 ok=55 keys=0 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0 size=6 key=0
[+15485ms] [2026-11-07 23:19:19][SBLINK] tx=44 done=44 drop=11 kerr=0 abor=0 fb=26 bad=0 us=511 max=675 kq=0 off=0 dfok=0 dfold=0
[+16996ms] [PROF] t=17095 uic=1244 uip=95998 uipn=1859 uil=11000 uiw=86551 uis=1197 uisn=0 adc=16619 adcm=3427 adcn=0 gl=0
[+17006ms] [PROF2] t=17095 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+19013ms] [PROF] t=19113 uic=1426 uip=95998 uipn=5839 uil=11015 uiw=86551 uis=1197 uisn=0 adc=18637 adcm=3427 adcn=0 gl=0
[+19023ms] [PROF2] t=19113 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+20380ms] [2026-11-07 23:19:24][ADC_TASK] frames=19999 idle=0 skip=3 seq=20006 frst_err=0 ring=19996 adc1_rc=0 adc1_err=0 adc1_seq=20005 adc1_gap=8 adc1_hw=0 tgap=2
[+20391ms] [2026-11-07 23:19:24][ADC_TASK] phasor(hb) C01-IA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20401ms] [2026-11-07 23:19:24][ADC_TASK] phasor(hb) C02-UA-F1: Re=0 Im=0 rms=0 (x0.1)
[+20401ms] [2026-11-07 23:19:24][ADC_TASK] phasor(hb) C03-UN-F1: Re=0 Im=0 rms=0 (x0.1)
[+20411ms] [2026-11-07 23:19:24][ADC_TASK] phasor(hb) C04-IA-F2: Re=0 Im=0 rms=0 (x0.1)
[+20422ms] [2026-11-07 23:19:24][ADC_TASK] phasor(hb) C05-IA-F5: Re=0 Im=0 rms=0 (x0.1)
[+20422ms] [2026-11-07 23:19:24][ADC_TASK] freq(hb): f=0 valid=0 (x0.01)
[+20432ms] [2026-11-07 23:19:24][ADC_TASK] adc: UA=-21 UB=401 UC=617 UN=-21 IA=-21 IB=0 IC=763 IN=896 T=751
[+20443ms] [2026-11-07 23:19:24][ADC_TASK] cal: ua_mv=-3 un_mv=-3 ia_mv=-3 vl=0x00 cl=0xe6 rail=0x000 edge=0x000
[+20453ms] [2026-11-07 23:19:24][ADC_TASK] meas: seq=100 v=1 ua_mv=0 un_mv=0 ia_mv=0 f=0 fv=0
[+20453ms] [2026-11-07 23:19:24][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[+20474ms] [2026-11-07 23:19:24][SBLINK] rx=73 ok=73 keys=0 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0 size=6 key=0
[+20485ms] [2026-11-07 23:19:24][SBLINK] tx=62 done=62 drop=11 kerr=0 abor=0 fb=36 bad=0 us=511 max=675 kq=0 off=0 dfok=0 dfold=0
[+21053ms] [PROF] t=21146 uic=1599 uip=99822 uipn=10855 uil=11000 uiw=86551 uis=1197 uisn=0 adc=20668 adcm=3458 adcn=0 gl=0
[+21053ms] [PROF2] t=21146 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+23062ms] [PROF] t=23164 uic=1781 uip=99822 uipn=5856 uil=10982 uiw=86551 uis=1197 uisn=0 adc=22686 adcm=3458 adcn=0 gl=0
[+23073ms] [PROF2] t=23164 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+25088ms] [PROF] t=25182 uic=1963 uip=99822 uipn=5855 uil=10999 uiw=86551 uis=1197 uisn=0 adc=24704 adcm=3458 adcn=0 gl=0
[+25088ms] [PROF2] t=25182 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+25490ms] [2026-11-07 23:19:29][SBLINK] rx=91 ok=91 keys=0 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0 size=6 key=0
[+25501ms] [2026-11-07 23:19:29][SBLINK] tx=80 done=80 drop=11 kerr=0 abor=0 fb=46 bad=0 us=513 max=675 kq=0 off=0 dfok=0 dfold=0
[+27107ms] [PROF] t=27207 uic=2144 uip=99822 uipn=3865 uil=11000 uiw=86551 uis=1197 uisn=0 adc=26729 adcm=3458 adcn=0 gl=0
[+27117ms] [PROF2] t=27207 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
[+29123ms] [PROF] t=29225 uic=2326 uip=99822 uipn=5855 uil=10917 uiw=86551 uis=1197 uisn=0 adc=28747 adcm=3458 adcn=0 gl=0
[+29133ms] [PROF2] t=29225 defd=96546 defs=36903 netp=4017 netn=0 adcp=8 adcq=0 gl=0
@@ -0,0 +1,58 @@
{
"battery_log.txt": "ff26bfcac72426b64e1f2eb0197b6c57718a04baefa7ed8e5ab5b509b16146d8",
"boot_new3_stdout.txt": "8d4ffa53239dc760eb0fefe58e12583a6576c1d6850c80f3e77f695a2696a2cd",
"newN_A_reject5_enter1.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"newN_A_reject5_enter1_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"newN_A_reject5_enter2.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"newN_A_reject5_enter2_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"newN_A_reject5_enter3.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"newN_A_reject5_enter3_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"newN_B_restored_normal6.png": "f520feb7a59bf1fe1997dd45d27159d9caa11130833d96b8b3e6cdd344de2818",
"newN_B_restored_normal6_raw3200.bin": "c538a051b6bdcca7e871710eb8f0dae2ba54cc6a62725765ce6ce116645f3fef",
"newN_C_reject1_head99.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"newN_C_reject1_head99_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"newN_D_final_ok99.png": "d3fc9b4f41c4d34ee6953d7fdf444d43dae20003dafe13fa69d4aa606fc9c94f",
"newN_D_final_ok99_raw3200.bin": "36a3271a78dafe6afc0c93282ab6e0c993af22395ed8b030be821a98c1bb80ba",
"newN_F11_reopen_seg99_max.png": "d3fc9b4f41c4d34ee6953d7fdf444d43dae20003dafe13fa69d4aa606fc9c94f",
"newN_F11_reopen_seg99_max_raw3200.bin": "36a3271a78dafe6afc0c93282ab6e0c993af22395ed8b030be821a98c1bb80ba",
"newN_F12_empty_state.png": "4056c7b6ea2d711161f2eb52e90bb3342e1a085c8d564de893cb555a9554afd7",
"newN_F12_empty_state_raw3200.bin": "a76c41cfd7f38cecf1092777371869a0a28a4c0ca09eb6963e17afc94d713f66",
"newN_F12_idlekey_seg6.png": "f520feb7a59bf1fe1997dd45d27159d9caa11130833d96b8b3e6cdd344de2818",
"newN_F12_idlekey_seg6_raw3200.bin": "c538a051b6bdcca7e871710eb8f0dae2ba54cc6a62725765ce6ce116645f3fef",
"newN_F13_after_spam.png": "e004e0e15173e1dc715e0b29bd8b1cdbf31f9f809db60013562bcafd11d70a3c",
"newN_F13_after_spam_raw3200.bin": "bfacdb1d922f4e7277d10a3a9a5c469e0257106f3e7dded5940884e853b30221",
"newN_F14_manual_confirm.png": "2495d41b9b2a761ea5c1a898ae77bb0ef5aafbd21c263616635e87dfcf824061",
"newN_F14_manual_confirm_raw3200.bin": "ee14db44f2437dea6cc7dab10b3d49b1aa636fdddd30d2e9396fee107a4a92fd",
"newN_F14_manual_done.png": "6a96fa3ed9993933b9b86467ffd7da60ab51f287aa3e81c30131c8d3ce329350",
"newN_F14_manual_done_raw3200.bin": "0d677bf478c579391a1ac935d18928cfbbffe278047e72d329049f4b4b2d7162",
"newN_F14_manual_page.png": "0a44c86fcbfd36056badb99572f5b0b82f90f3aa1635b7ba1599fa7841bfd5cf",
"newN_F14_manual_page_raw3200.bin": "bdf7e5d1427b74c5b566a7732d9abb2ec342717f002c1002c817736618a18169",
"newN_F15_seg6.png": "f520feb7a59bf1fe1997dd45d27159d9caa11130833d96b8b3e6cdd344de2818",
"newN_F15_seg6_raw3200.bin": "c538a051b6bdcca7e871710eb8f0dae2ba54cc6a62725765ce6ce116645f3fef",
"newN_F15_seg99_alt.png": "8f7eae0d5bdaeb2d7bcc5357fbed844cea01762afa342ff4ba0851f1d3609a04",
"newN_F15_seg99_alt_raw3200.bin": "12bd96f8f7405446c3f789e622868a638ffbddfeaefc1a7db737089c40d6255a",
"newN_Z_final_open_100appended.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"newN_Z_final_open_100appended_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"oldN_P0_first_open_face.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"oldN_P0_first_open_face_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"oldN_P1_stale_table_after_dele.png": "4056c7b6ea2d711161f2eb52e90bb3342e1a085c8d564de893cb555a9554afd7",
"oldN_P1_stale_table_after_dele_raw3200.bin": "a76c41cfd7f38cecf1092777371869a0a28a4c0ca09eb6963e17afc94d713f66",
"oldN_P2_crc_reject_silent.png": "342b3aa67a775817a40159cca61987251217ce32a252a5841642ffe14ca1d463",
"oldN_P2_crc_reject_silent_raw3200.bin": "17291a0068f2d4ab099f636888e809941ad9bba52cad942ff6341a8677b72889",
"oldN_P3_good_seg99.png": "d3fc9b4f41c4d34ee6953d7fdf444d43dae20003dafe13fa69d4aa606fc9c94f",
"oldN_P3_good_seg99_raw3200.bin": "36a3271a78dafe6afc0c93282ab6e0c993af22395ed8b030be821a98c1bb80ba",
"restore_verify.txt": "6c966009d3fadd5c21300add57df4b69e694869117a1272202ac224da6c92f17",
"serial_excerpt_after.txt": "5879feb5bd6e26aed2a4c58fed3ffe18714e1696ee853288f61483a7fe7a9e4d",
"serial_excerpt_before.txt": "51795ef9620a9f21c8133bcf498448d43910fa8fabe319e613bcd530d143c4ac",
"serial_excerpt_f1.txt": "aea8da4064e5419530ac26312930c1e8e0a41fc6d896f28ef8acf8c1acafc7c4",
"serial_excerpt_f2.txt": "d687dfbfb00937bb72a1bb249c3d4ba3045ddaf0af85a4295d86ebdadf1e10d4",
"serial_excerpt_man_post.txt": "19e7ce63f9cf4b198500b7295838ba9988ecdedfead6cd054fd26790c1a8f6ed",
"serial_excerpt_restore.txt": "746a728bdc5c87e949f7dec1fa0d1a0f234a0c1838c376c102676e91e9390dca",
"serial_stats.json": "d3712a2b2212cafa73895f79804f0feeba17b8fa4d562fd02b4396cc40d1ae0f",
"boot_new/boot_log_20261107_225225.txt": "3701a33b33302ded79a2f8b4d8559d1a3616a6d803583083d27d240a351037a5",
"boot_new2/boot_log_20261107_225601.txt": "ce26fc2e5d910b0dd50f65ae51aa2de1fcaf34df85c2fbdd569c33c106d91abe",
"boot_new3/boot_log_20261107_231856.txt": "07ed87bf6deeea1a9f00233ae7da2750337b66514af116fdf2a30abf0f867c75",
"samples/WAVE06_bitflip.BIN": "8ea7abed8ae95a701d3ff583b9ae19b229c194e92e53588151ac67db6f7735c3",
"samples/WAVE99_altseg.BIN": "2ea86400be3be01a7afae85358315939efcffe6423c8fe8dae0ec1d1c3a4b2ac",
"samples/WAVE99_headflip.BIN": "e97bb57afb8142725bcc5cb9f0485e2830a1e3be7a972d1356122bf6daed5105"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,101 @@
WAVE00.BIN 141750 5dec259bcfe232714eabc73e524e3c137544c97dfd1011f5d562751cd08cd34a OK
WAVE01.BIN 141750 c1e52668f29c1e58495c628adb62ea64c7b28c40e1264e4b570392c7a34c5444 OK
WAVE02.BIN 141750 9fa2ac67153918e7ee01217f6877e61f3ecf20d36f2f73c17831b526749118e9 OK
WAVE03.BIN 141750 6f0d210f0833cd48127589e51eb01ec9e098d3c588c67e201dbd403d103eb927 OK
WAVE04.BIN 141750 d90a068be6128ce66d4f477c319b9b34a4fed111181b2bfd05631e2f1b4f6451 OK
WAVE05.BIN 141750 e219826f7fc58825af298481c62bbdf2551f23763f5a12854a5842e5949b5666 OK
WAVE06.BIN 141750 96ca64631420b0ac003d6d4406d82bf297407502d01337472341f9d78f3e9ccd OK
WAVE07.BIN 141750 cf84c28879d2481f80df33fb9c8554a7e5166ab48eee379aaa0cc60295119234 OK
WAVE08.BIN 141750 b5b74abcb846971fcccad70ab28e8e014791586d17e8f092ed32d48a6560ac96 OK
WAVE09.BIN 141750 d5a2607daec3a2c00a93adb2eef84fac82ed909198eb8aca264a58a99d76a272 OK
WAVE10.BIN 141750 82ae4e8f347c90446b6145a9820f350d91880f1a5e0f274d8efbbaf1717ff2bf OK
WAVE11.BIN 141750 38b83cac51c3ad7a5415cd592322cdc31b1158ab6e71b1ab1a2dffa2538bbd0b OK
WAVE12.BIN 141750 a66ef3a9670db89d41b5b072aecf79a99ecefb9a9d372468269161081c981f13 OK
WAVE13.BIN 141750 b1619f61e0724b0f3666e2c0d3e6e8e3f2e310b673930d6192f571c8b56b8134 OK
WAVE14.BIN 141750 b3b0ae35f823e118ef5d2e45d7b6783e7bb74d7f1b439473298cdec7bb523b92 OK
WAVE15.BIN 141750 2feb5db36e44f2b833283f265513f92a684bd6849ace37d0baa9e23860173e36 OK
WAVE16.BIN 141750 af141ae8f389ceaaeaf32d94fefe63029dc2901f6b2bfbf736c68fbc58101b97 OK
WAVE17.BIN 136500 f3663128227b4a46cbd5ed782eac3a8c8088492dd8e87b20ce4fd839c04b0e02 OK
WAVE18.BIN 136500 241e803e7cd8f94208d927be9365070176961bfc956a36111e13d58a52fbc2ee OK
WAVE19.BIN 136500 175c47df57a4c2d1d2e222555224b1c2f1b8664bd973bfd20cf66ca9cfe503a9 OK
WAVE20.BIN 136500 ec54dc5da39738caa6fb14236cf3b0a90b1eae721f0770fb308ee85f7be0d89b OK
WAVE21.BIN 136500 996b0f51d391c47cf29e49277948d07ede2dc786a118a881e4ef1fcc078ab891 OK
WAVE22.BIN 131250 c7d4479c9d1d7e319054c3842822a7b3233a77ce729c7d538190ad5c718db1fb OK
WAVE23.BIN 131250 468b29efb464df5ecbbd1bc6b08a09734a8cc9a3e532b12a70d91a0e80517ea5 OK
WAVE24.BIN 126000 0f2761280135c990e36cd76230e0d027fdada9611b76473f90f4bea030b1a511 OK
WAVE25.BIN 126000 384b7d026fc865c57fded2cb93b3b061caa1afac42be181da30f6077f8717850 OK
WAVE26.BIN 126000 cb49f5d5316972d0d4811c9f1b84a5603a5d7a08b0b7a88112dab6ee5d6d43de OK
WAVE27.BIN 126000 96d87592b72495162c976a7fa964b36d653531d645e33f63b3c80b1a461cc290 OK
WAVE28.BIN 31500 709a6527988442578d47205941dc6fdb4d899cbe50df23530c4ae07008fc2c79 OK
WAVE29.BIN 126000 60803c9f5d480d03fc2f283eedf60241d0fddc44705dcd76ce5098d27d9e057e OK
WAVE30.BIN 120750 dfdb4ec581fdecaa7bdd3904f2119d32e9ee574aae30eb60b5029deaf5047f9c OK
WAVE31.BIN 120750 05eeda0adba85048c57e84000e9280c3b045d540122542891b51e6cce699cb8b OK
WAVE32.BIN 120750 5551e9945f2916b6a2250d80b4839567d69926bbedec07b9a39a2640dbe32db6 OK
WAVE33.BIN 120750 d21222ae671d0d22d1112235a06f28cd354a7bea835e39a0b045d832fe036864 OK
WAVE34.BIN 115500 653bb85f700ea3208657da04f8d1464f911d9a91b45deabbe039e118efa6116b OK
WAVE35.BIN 115500 a174ad39395b5f1e0c146623d78050a3cf8e571a6aa2a45c494a4099b5b55ffa OK
WAVE36.BIN 10500 1a5597514a88d92581b1177a0c50072e911053f021df31645108601756ee50d6 OK
WAVE37.BIN 110250 4aa918983ccac6a7258aaafb8b48b7ee4be5f14a110cdc44b0eda56e51063c98 OK
WAVE38.BIN 110250 8e0e8f77c3cd1a5c9ec9db202ee576e29e4470943e77f946dd168bcdb62b69d5 OK
WAVE39.BIN 110250 158da90c622460a3ec49a528fba1cc74f98589c8619ed3b56523d48360df7e97 OK
WAVE40.BIN 110250 c2efa796ed38c340311deedf44440704e1baadd806f07621f451d0609c2a0778 OK
WAVE41.BIN 110250 dcb694c82eb0ed3da1b344af72e268a5208c9fc0415daed4721713a71a6a9305 OK
WAVE42.BIN 110250 ca5fa525190714123422b03865915c10a7653d404640cbcd51a98f00055b0c00 OK
WAVE43.BIN 110250 10cb317e12a24f61e89c8a419e1eee52d1a6ab99fb0a2a86609811d5c4d65c6f OK
WAVE44.BIN 68250 a48c14290d1b5328ba9c680692e25334435571fb0ef9cc34a1e4e420d28500d8 OK
WAVE45.BIN 105000 a92ef951d5f2feef917197e905347236fd884ff63724b85fa52969599df30876 OK
WAVE46.BIN 99750 50710c832d7424c7fb8f1552056a3219126da12889e11ab8743e7729ad493501 OK
WAVE47.BIN 99750 18e85c5d935d9bf35b1f0bdead9884d42ddb4540b1fd872c132d6fbc780c4f44 OK
WAVE48.BIN 94500 d50d3845ac7a80ad61b359df200122e33f60b12eb06d2a9f0f0a107a1aa3cbb9 OK
WAVE49.BIN 89250 c4b44bd0febe6103b55cdc33ea88e8da80a59306d5f1f9247ce4e556dbcbc415 OK
WAVE50.BIN 78750 f8445ff0e4558c8b47d28c8b2db9a337e318f7a63cdc2ea81343672d6d1c92e9 OK
WAVE51.BIN 78750 92af2f2ff736975de6c8fce5b59a4454f8147c1d7488e70d076d68143285b196 OK
WAVE52.BIN 78750 5a6520c92b2477d2e4cc24010e5215384a363b1099635bb4fed646d27ec995a6 OK
WAVE53.BIN 78750 bf4db176433ff9397a2bb544217a8529d1a454b32c4a1c8f65deb3f1b4d6adc2 OK
WAVE54.BIN 78750 b7d0df9ea2bffb3269b447f20fcf0428a21408b15c6cc369e8a0ec66fb6af3cd OK
WAVE55.BIN 78750 390de8e3c5021eda079c0ed2b2832a870456a44d581e5ec4b7fe1cbb833911e5 OK
WAVE56.BIN 78750 29d00e15b3f5b5b8a87fc0b1c6afc967b83e5265b25c3c549969819c94b4b2d0 OK
WAVE57.BIN 78750 46818313cc77cef539886c2e3722babc722f9d6cfdf920d1374b9d6b03dde2ca OK
WAVE58.BIN 78750 05da71d8027d96337ff9185a6bed8e4f992d4a424808ecbcc84788400f0a4f4f OK
WAVE59.BIN 78750 f5fb2d45498efc0e7e05f5745817378c73607c9312657ecac39c7161f030c301 OK
WAVE60.BIN 73500 eae4e35ba09b1dc040f621f2c1c12c4217e128f1679ba6eba348acdf8a7aa8ed OK
WAVE61.BIN 73500 db611720cdbacb93a88190dc30e8a749a35f62eda1d6d8cefd9b7c22961e1886 OK
WAVE62.BIN 73500 656d94772ccab059dea601f89cfb55696bda05d413751b8db6cc145947d0a889 OK
WAVE63.BIN 73500 46a830cd2430b824ec7f034062e6b6151b66d021c90d275020fe7e550a9bfc5b OK
WAVE64.BIN 73500 9e300fa68a8f0028af4a38e3a7c61f82db3e5c72939dcd8e83a2ce0a28bec7dc OK
WAVE65.BIN 73500 3031d3859775b91cb9a047508a0a7ce6bcc5dad6caa3c25c2b8b98048842ba2a OK
WAVE66.BIN 73500 23063dbe44695c76c55f15e2450f3c62d60a8a09f6ac32dc3aba97c4166b0752 OK
WAVE67.BIN 73500 d18795aaf23d511fe2d618c713dfa495c541938e1e32a3fd9307a0ea9a468c5a OK
WAVE68.BIN 73500 5d1babb82f7b641bb70120b807e77fae6c9ce9e5c9b43afb9326877346da66bf OK
WAVE69.BIN 73500 cc20d1dc5a22b0f99a050cefbd694ea319cb1ce120d2d35b6f40f6629d9803d2 OK
WAVE70.BIN 73500 09cd5935b33a98841d43e0c4f62364a8735b5a2272f38730913312e91d3807dd OK
WAVE71.BIN 73500 977cd0fd9c4f54334ccb60121deb18fc34cf98b7cc3bbb10912a131048a67508 OK
WAVE72.BIN 73500 a432a8672ccbe50b49bb86359e461ec5eacd4648ffec4649fcb58774ed40c936 OK
WAVE73.BIN 73500 d5c78555381a768cd37ed3d4e249525b1302145a92165ee7e7477d8ddfe192d1 OK
WAVE74.BIN 73500 72708d2bfc43786bbd199a564f386a92717d2cfc5da937ac90c9282a7830414f OK
WAVE75.BIN 73500 1c61c89097b6519fabb100ca64c69445f3eb6cd39b7ff4591a7d52396ae638f9 OK
WAVE76.BIN 73500 02ee53ac4ea9de6eb0d0e8524ab61453b932089eb9967742a1369440a2990c90 OK
WAVE77.BIN 73500 5593f588e5eaa1caa5f1cac9243b4bf8b13ed854a9249a3e50af74ca4bba1889 OK
WAVE78.BIN 73500 715827a9df0d7393e5014a2bb3e800d2e91c4163a20ae934b2919d35b9e7ca0b OK
WAVE79.BIN 73500 e7d865123415f11d79e4ec6bd929f347097dbac58194e4f4fec2f7317a30908c OK
WAVE80.BIN 73500 ea11c812b800ddd43a3695467cb4c511052a637a328d64ef3f528e69843662a6 OK
WAVE81.BIN 73500 7d6776fee8521204cf27d641fe9dac70cc52ba12341c8ea09dd6673442e0daa9 OK
WAVE82.BIN 73500 aa2a432b1c564f8559c3be36899db58e2830035ccd83d775159399b1dae3bd7c OK
WAVE83.BIN 73500 aeba71ec8c768186bded317df0493e482c5cf0c65c14446aacc709268a49f014 OK
WAVE84.BIN 73500 a1619dbda34aed7e0677b821bbbba99c41c6089d082326a195bf1b82cce9681d OK
WAVE85.BIN 73500 fa9889c9c5deff8830d9f70618da9f24abcd219621f22f04393701ec4c130465 OK
WAVE86.BIN 73500 711db013aef51272f99167db9e06cb8a808b23d904bdf0c634c4c26188a0b705 OK
WAVE87.BIN 73500 3a13a49b8f755bc595d722445fab873918f579008361ad0b8f7835e46bbb3b16 OK
WAVE88.BIN 73500 37bc3425556c76f764bf7c3e253d0b5cdfed69f9edf1bd6e153ba53e9d1bcd97 OK
WAVE89.BIN 73500 d43969601bd41068d2dbe8c2d6bf80e5f84852fad455f37a3218886fb3c31605 OK
WAVE90.BIN 73500 c35f5a357c93841ad70b5acd426406f3f2b8faccb1b90ab2eeda58f676616060 OK
WAVE91.BIN 73500 e1a83648238949fc6881b9b3b0df5d013b48bd9e1a74359c0b05c8a93c684c6d OK
WAVE92.BIN 73500 f89ac2acdd2e0ee169b5c17024c970e6f797359595458d45d3fa45a49a5cda8b OK
WAVE93.BIN 73500 e11ca6198f8d5ca8399ea22a92e1149e9bfaab6168bded1374b4416670f3b94e OK
WAVE94.BIN 73500 7a4375e6e5586da74c743306ae90a9f082456ec9f2a07e7be74b17f341fe7bc3 OK
WAVE95.BIN 73500 e7769e41724d3a030f7a2b7a568be2bd23f171a4dd5829c894bfc51024e9bee7 OK
WAVE96.BIN 73500 8665629333a18688659c3515487d1fd5cde565f8f120cb4186dff9ea4080af1a OK
WAVE97.BIN 73500 eef8d3d949d03e3ad33945cf0cca2141b501bd87376ab09375a5f2d4e076d45c OK
WAVE98.BIN 73500 702c7be0ad8b500918ecd5b8833926576738229c293c4e9c2d8cd79d44f9198d OK
WAVE99.BIN 73500 a692f1e5923e15cf53910ae89dfe8122a1141f2eb43fce1fdb1c75438a3128f0 OK
SUMMARY: 100 files, mismatches: NONE
@@ -0,0 +1,187 @@
[RX] 2026-11-07T22:46:05.757+08:00 [2026-11-07 22:46:05][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:46:15.760+08:00 [2026-11-07 22:46:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:46:25.763+08:00 [2026-11-07 22:46:25][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:46:35.755+08:00 [2026-11-07 22:46:35][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:46:45.759+08:00 [2026-11-07 22:46:45][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:46:55.764+08:00 [2026-11-07 22:46:55][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:05.755+08:00 [2026-11-07 22:47:05][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:15.759+08:00 [2026-11-07 22:47:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:25.756+08:00 [2026-11-07 22:47:25][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:35.755+08:00 [2026-11-07 22:47:35][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:45.762+08:00 [2026-11-07 22:47:45][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:47:55.757+08:00 [2026-11-07 22:47:55][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:05.761+08:00 [2026-11-07 22:48:05][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:15.757+08:00 [2026-11-07 22:48:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:25.757+08:00 [2026-11-07 22:48:25][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:35.753+08:00 [2026-11-07 22:48:35][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:45.756+08:00 [2026-11-07 22:48:45][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:48:55.761+08:00 [2026-11-07 22:48:55][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:49:05.759+08:00 [2026-11-07 22:49:05][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:49:10.285+08:00 [2026-11-07 22:49:09] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK
[RX] 2026-11-07T22:49:14.042+08:00 [2026-11-07 22:49:13][UI_CONTENT_PAGE] page open: id=wave_play rows=0
[RX] 2026-11-07T22:49:15.759+08:00 [2026-11-07 22:49:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:49:16.381+08:00 [2026-11-07 22:49:16][UI_CONTENT_PAGE] page close: id=wave_play
[RX] 2026-11-07T22:49:19.627+08:00 [2026-11-07 22:49:19] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 73500 bytes OK
[RX] 2026-11-07T22:49:20.216+08:00 [2026-11-07 22:49:19] [FTP] CMD RETR WAVE99.BIN
[RX] 2026-11-07T22:49:21.065+08:00 [----/--/-- --:--:--][APP] fw build: Nov 7 2026 21:52:33 suite=NONE dstr=off
[RX] 2026-11-07T22:49:21.076+08:00 [----/--/-- --:--:--][APP] reset cause: software (NVIC_SystemReset) (CSR=0x14000000)
[RX] 2026-11-07T22:49:21.966+08:00 [2026-11-07 22:49:20][UI_TASK] UI task: started, wait net ready
[RX] 2026-11-07T22:49:23.867+08:00 [2026-11-07 22:49:22][ERR][I104] i104: bind port 2404 FAIL, retry in loop
[RX] 2026-11-07T22:49:23.940+08:00 [2026-11-07 22:49:22][UI_TASK] UI task: net ready, init port
[RX] 2026-11-07T22:49:23.940+08:00 [2026-11-07 22:49:22][UI_TASK] UI task: ui_port_init enter
[RX] 2026-11-07T22:49:23.962+08:00 [2026-11-07 22:49:22][UI_TASK] UI port init: OK
[RX] 2026-11-07T22:49:23.962+08:00 [2026-11-07 22:49:22][UI_TASK] UI task: ui_menu_init enter
[RX] 2026-11-07T22:49:23.993+08:00 [2026-11-07 22:49:22][UI_TASK] UI menu init: OK
[RX] 2026-11-07T22:49:24.003+08:00 [2026-11-07 22:49:22][UI_TASK] UI standby: ready (idle=60s)
[RX] 2026-11-07T22:49:24.055+08:00 [2026-11-07 22:49:22][UI_TASK] UI net sink: started (port 7003)
[RX] 2026-11-07T22:49:31.516+08:00 [2026-11-07 22:49:30][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:49:41.512+08:00 [2026-11-07 22:49:40][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:49:51.519+08:00 [2026-11-07 22:49:50][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:01.518+08:00 [2026-11-07 22:50:00][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:11.520+08:00 [2026-11-07 22:50:10][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:21.514+08:00 [2026-11-07 22:50:20][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:31.514+08:00 [2026-11-07 22:50:30][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:41.522+08:00 [2026-11-07 22:50:40][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:50:51.515+08:00 [2026-11-07 22:50:50][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:01.521+08:00 [2026-11-07 22:51:00][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:11.514+08:00 [2026-11-07 22:51:10][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:21.515+08:00 [2026-11-07 22:51:20][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:31.515+08:00 [2026-11-07 22:51:30][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:41.516+08:00 [2026-11-07 22:51:40][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:51:51.520+08:00 [2026-11-07 22:51:50][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:52:01.513+08:00 [2026-11-07 22:52:00][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:52:11.518+08:00 [2026-11-07 22:52:10][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:52:21.520+08:00 [2026-11-07 22:52:20][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T23:13:53.236+08:00 [2026-11-07 23:13:52] [FTP] CMD RETR WAVE90.BIN
[RX] 2026-11-07T23:13:53.664+08:00 [2026-11-07 23:13:53] [FTP] CMD RETR WAVE99.BIN
[RX] 2026-11-07T23:13:54.444+08:00 [2026-11-07 23:13:53] [FTP] UPLOAD '/WAVE/WAVE90.BIN' 73500 bytes OK
[RX] 2026-11-07T23:13:55.356+08:00 [2026-11-07 23:13:54] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 73500 bytes OK
[RX] 2026-11-07T23:13:56.055+08:00 [2026-11-07 23:13:55][NET] sock1 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T23:13:56.979+08:00 [2026-11-07 23:13:56] [FTP] CMD RETR WAVE90.BIN
[RX] 2026-11-07T23:13:57.425+08:00 [2026-11-07 23:13:56] [FTP] CMD RETR WAVE99.BIN
[RX] 2026-11-07T23:13:57.986+08:00 [2026-11-07 23:13:57][NET] sock1 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T23:13:58.404+08:00 [2026-11-07 23:13:57] [FTP] CMD RETR WAVE00.BIN
[RX] 2026-11-07T23:13:59.058+08:00 [2026-11-07 23:13:58] [FTP] CMD RETR WAVE01.BIN
[RX] 2026-11-07T23:13:59.720+08:00 [2026-11-07 23:13:59] [FTP] CMD RETR WAVE02.BIN
[RX] 2026-11-07T23:14:00.413+08:00 [2026-11-07 23:13:59] [FTP] CMD RETR WAVE03.BIN
[RX] 2026-11-07T23:14:01.107+08:00 [2026-11-07 23:14:00] [FTP] CMD RETR WAVE04.BIN
[RX] 2026-11-07T23:14:01.833+08:00 [2026-11-07 23:14:01] [FTP] CMD RETR WAVE05.BIN
[RX] 2026-11-07T23:14:02.529+08:00 [2026-11-07 23:14:01] [FTP] CMD RETR WAVE06.BIN
[RX] 2026-11-07T23:14:02.995+08:00 [2026-11-07 23:14:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:03.269+08:00 [2026-11-07 23:14:02] [FTP] CMD RETR WAVE07.BIN
[RX] 2026-11-07T23:14:04.026+08:00 [2026-11-07 23:14:03] [FTP] CMD RETR WAVE08.BIN
[RX] 2026-11-07T23:14:04.683+08:00 [2026-11-07 23:14:04] [FTP] CMD RETR WAVE09.BIN
[RX] 2026-11-07T23:14:05.445+08:00 [2026-11-07 23:14:04] [FTP] CMD RETR WAVE10.BIN
[RX] 2026-11-07T23:14:06.223+08:00 [2026-11-07 23:14:05] [FTP] CMD RETR WAVE11.BIN
[RX] 2026-11-07T23:14:06.929+08:00 [2026-11-07 23:14:06] [FTP] CMD RETR WAVE12.BIN
[RX] 2026-11-07T23:14:07.632+08:00 [2026-11-07 23:14:07] [FTP] CMD RETR WAVE13.BIN
[RX] 2026-11-07T23:14:08.429+08:00 [2026-11-07 23:14:07] [FTP] CMD RETR WAVE14.BIN
[RX] 2026-11-07T23:14:09.123+08:00 [2026-11-07 23:14:08] [FTP] CMD RETR WAVE15.BIN
[RX] 2026-11-07T23:14:09.839+08:00 [2026-11-07 23:14:09] [FTP] CMD RETR WAVE16.BIN
[RX] 2026-11-07T23:14:10.480+08:00 [2026-11-07 23:14:09] [FTP] CMD RETR WAVE17.BIN
[RX] 2026-11-07T23:14:11.225+08:00 [2026-11-07 23:14:10] [FTP] CMD RETR WAVE18.BIN
[RX] 2026-11-07T23:14:11.886+08:00 [2026-11-07 23:14:11] [FTP] CMD RETR WAVE19.BIN
[RX] 2026-11-07T23:14:12.632+08:00 [2026-11-07 23:14:12] [FTP] CMD RETR WAVE20.BIN
[RX] 2026-11-07T23:14:12.996+08:00 [2026-11-07 23:14:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:13.420+08:00 [2026-11-07 23:14:12] [FTP] CMD RETR WAVE21.BIN
[RX] 2026-11-07T23:14:14.092+08:00 [2026-11-07 23:14:13] [FTP] CMD RETR WAVE22.BIN
[RX] 2026-11-07T23:14:14.704+08:00 [2026-11-07 23:14:14] [FTP] CMD RETR WAVE23.BIN
[RX] 2026-11-07T23:14:15.324+08:00 [2026-11-07 23:14:14] [FTP] CMD RETR WAVE24.BIN
[RX] 2026-11-07T23:14:16.026+08:00 [2026-11-07 23:14:15] [FTP] CMD RETR WAVE25.BIN
[RX] 2026-11-07T23:14:16.676+08:00 [2026-11-07 23:14:16] [FTP] CMD RETR WAVE26.BIN
[RX] 2026-11-07T23:14:17.430+08:00 [2026-11-07 23:14:16] [FTP] CMD RETR WAVE27.BIN
[RX] 2026-11-07T23:14:18.106+08:00 [2026-11-07 23:14:17] [FTP] CMD RETR WAVE28.BIN
[RX] 2026-11-07T23:14:18.427+08:00 [2026-11-07 23:14:17] [FTP] CMD RETR WAVE29.BIN
[RX] 2026-11-07T23:14:19.070+08:00 [2026-11-07 23:14:18] [FTP] CMD RETR WAVE30.BIN
[RX] 2026-11-07T23:14:19.704+08:00 [2026-11-07 23:14:19] [FTP] CMD RETR WAVE31.BIN
[RX] 2026-11-07T23:14:20.426+08:00 [2026-11-07 23:14:19] [FTP] CMD RETR WAVE32.BIN
[RX] 2026-11-07T23:14:21.025+08:00 [2026-11-07 23:14:20] [FTP] CMD RETR WAVE33.BIN
[RX] 2026-11-07T23:14:21.613+08:00 [2026-11-07 23:14:21] [FTP] CMD RETR WAVE34.BIN
[RX] 2026-11-07T23:14:22.263+08:00 [2026-11-07 23:14:21] [FTP] CMD RETR WAVE35.BIN
[RX] 2026-11-07T23:14:22.865+08:00 [2026-11-07 23:14:22] [FTP] CMD RETR WAVE36.BIN
[RX] 2026-11-07T23:14:23.002+08:00 [2026-11-07 23:14:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:23.220+08:00 [2026-11-07 23:14:22] [FTP] CMD RETR WAVE37.BIN
[RX] 2026-11-07T23:14:23.832+08:00 [2026-11-07 23:14:23] [FTP] CMD RETR WAVE38.BIN
[RX] 2026-11-07T23:14:24.411+08:00 [2026-11-07 23:14:23] [FTP] CMD RETR WAVE39.BIN
[RX] 2026-11-07T23:14:25.033+08:00 [2026-11-07 23:14:24] [FTP] CMD RETR WAVE40.BIN
[RX] 2026-11-07T23:14:25.647+08:00 [2026-11-07 23:14:25] [FTP] CMD RETR WAVE41.BIN
[RX] 2026-11-07T23:14:26.212+08:00 [2026-11-07 23:14:25] [FTP] CMD RETR WAVE42.BIN
[RX] 2026-11-07T23:14:26.831+08:00 [2026-11-07 23:14:26] [FTP] CMD RETR WAVE43.BIN
[RX] 2026-11-07T23:14:27.421+08:00 [2026-11-07 23:14:26] [FTP] CMD RETR WAVE44.BIN
[RX] 2026-11-07T23:14:27.877+08:00 [2026-11-07 23:14:27] [FTP] CMD RETR WAVE45.BIN
[RX] 2026-11-07T23:14:28.482+08:00 [2026-11-07 23:14:27] [FTP] CMD RETR WAVE46.BIN
[RX] 2026-11-07T23:14:29.023+08:00 [2026-11-07 23:14:28] [FTP] CMD RETR WAVE47.BIN
[RX] 2026-11-07T23:14:29.635+08:00 [2026-11-07 23:14:29] [FTP] CMD RETR WAVE48.BIN
[RX] 2026-11-07T23:14:30.236+08:00 [2026-11-07 23:14:29] [FTP] CMD RETR WAVE49.BIN
[RX] 2026-11-07T23:14:30.826+08:00 [2026-11-07 23:14:30] [FTP] CMD RETR WAVE50.BIN
[RX] 2026-11-07T23:14:31.305+08:00 [2026-11-07 23:14:30] [FTP] CMD RETR WAVE51.BIN
[RX] 2026-11-07T23:14:31.812+08:00 [2026-11-07 23:14:31] [FTP] CMD RETR WAVE52.BIN
[RX] 2026-11-07T23:14:32.423+08:00 [2026-11-07 23:14:31] [FTP] CMD RETR WAVE53.BIN
[RX] 2026-11-07T23:14:32.887+08:00 [2026-11-07 23:14:32] [FTP] CMD RETR WAVE54.BIN
[RX] 2026-11-07T23:14:33.002+08:00 [2026-11-07 23:14:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:33.436+08:00 [2026-11-07 23:14:32] [FTP] CMD RETR WAVE55.BIN
[RX] 2026-11-07T23:14:33.893+08:00 [2026-11-07 23:14:33] [FTP] CMD RETR WAVE56.BIN
[RX] 2026-11-07T23:14:34.422+08:00 [2026-11-07 23:14:33] [FTP] CMD RETR WAVE57.BIN
[RX] 2026-11-07T23:14:34.898+08:00 [2026-11-07 23:14:34] [FTP] CMD RETR WAVE58.BIN
[RX] 2026-11-07T23:14:35.414+08:00 [2026-11-07 23:14:34] [FTP] CMD RETR WAVE59.BIN
[RX] 2026-11-07T23:14:35.880+08:00 [2026-11-07 23:14:35] [FTP] CMD RETR WAVE60.BIN
[RX] 2026-11-07T23:14:36.420+08:00 [2026-11-07 23:14:35] [FTP] CMD RETR WAVE61.BIN
[RX] 2026-11-07T23:14:36.865+08:00 [2026-11-07 23:14:36] [FTP] CMD RETR WAVE62.BIN
[RX] 2026-11-07T23:14:37.299+08:00 [2026-11-07 23:14:36] [FTP] CMD RETR WAVE63.BIN
[RX] 2026-11-07T23:14:37.827+08:00 [2026-11-07 23:14:37] [FTP] CMD RETR WAVE64.BIN
[RX] 2026-11-07T23:14:38.315+08:00 [2026-11-07 23:14:37] [FTP] CMD RETR WAVE65.BIN
[RX] 2026-11-07T23:14:38.822+08:00 [2026-11-07 23:14:38] [FTP] CMD RETR WAVE66.BIN
[RX] 2026-11-07T23:14:39.288+08:00 [2026-11-07 23:14:38] [FTP] CMD RETR WAVE67.BIN
[RX] 2026-11-07T23:14:39.828+08:00 [2026-11-07 23:14:39] [FTP] CMD RETR WAVE68.BIN
[RX] 2026-11-07T23:14:40.307+08:00 [2026-11-07 23:14:39] [FTP] CMD RETR WAVE69.BIN
[RX] 2026-11-07T23:14:40.803+08:00 [2026-11-07 23:14:40] [FTP] CMD RETR WAVE70.BIN
[RX] 2026-11-07T23:14:41.252+08:00 [2026-11-07 23:14:40] [FTP] CMD RETR WAVE71.BIN
[RX] 2026-11-07T23:14:41.820+08:00 [2026-11-07 23:14:41] [FTP] CMD RETR WAVE72.BIN
[RX] 2026-11-07T23:14:42.308+08:00 [2026-11-07 23:14:41] [FTP] CMD RETR WAVE73.BIN
[RX] 2026-11-07T23:14:42.837+08:00 [2026-11-07 23:14:42] [FTP] CMD RETR WAVE74.BIN
[RX] 2026-11-07T23:14:42.994+08:00 [2026-11-07 23:14:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:43.422+08:00 [2026-11-07 23:14:42] [FTP] CMD RETR WAVE75.BIN
[RX] 2026-11-07T23:14:43.871+08:00 [2026-11-07 23:14:43] [FTP] CMD RETR WAVE76.BIN
[RX] 2026-11-07T23:14:44.288+08:00 [2026-11-07 23:14:43] [FTP] CMD RETR WAVE77.BIN
[RX] 2026-11-07T23:14:44.830+08:00 [2026-11-07 23:14:44] [FTP] CMD RETR WAVE78.BIN
[RX] 2026-11-07T23:14:45.248+08:00 [2026-11-07 23:14:44] [FTP] CMD RETR WAVE79.BIN
[RX] 2026-11-07T23:14:45.698+08:00 [2026-11-07 23:14:45] [FTP] CMD RETR WAVE80.BIN
[RX] 2026-11-07T23:14:46.102+08:00 [2026-11-07 23:14:45] [FTP] CMD RETR WAVE81.BIN
[RX] 2026-11-07T23:14:46.642+08:00 [2026-11-07 23:14:46] [FTP] CMD RETR WAVE82.BIN
[RX] 2026-11-07T23:14:47.108+08:00 [2026-11-07 23:14:46] [FTP] CMD RETR WAVE83.BIN
[RX] 2026-11-07T23:14:47.616+08:00 [2026-11-07 23:14:47] [FTP] CMD RETR WAVE84.BIN
[RX] 2026-11-07T23:14:48.042+08:00 [2026-11-07 23:14:47] [FTP] CMD RETR WAVE85.BIN
[RX] 2026-11-07T23:14:48.517+08:00 [2026-11-07 23:14:47] [FTP] CMD RETR WAVE86.BIN
[RX] 2026-11-07T23:14:49.026+08:00 [2026-11-07 23:14:48] [FTP] CMD RETR WAVE87.BIN
[RX] 2026-11-07T23:14:49.440+08:00 [2026-11-07 23:14:48] [FTP] CMD RETR WAVE88.BIN
[RX] 2026-11-07T23:14:49.873+08:00 [2026-11-07 23:14:49] [FTP] CMD RETR WAVE89.BIN
[RX] 2026-11-07T23:14:50.309+08:00 [2026-11-07 23:14:49] [FTP] CMD RETR WAVE90.BIN
[RX] 2026-11-07T23:14:50.806+08:00 [2026-11-07 23:14:50] [FTP] CMD RETR WAVE91.BIN
[RX] 2026-11-07T23:14:51.240+08:00 [2026-11-07 23:14:50] [FTP] CMD RETR WAVE92.BIN
[RX] 2026-11-07T23:14:51.699+08:00 [2026-11-07 23:14:51] [FTP] CMD RETR WAVE93.BIN
[RX] 2026-11-07T23:14:52.241+08:00 [2026-11-07 23:14:51] [FTP] CMD RETR WAVE94.BIN
[RX] 2026-11-07T23:14:52.706+08:00 [2026-11-07 23:14:52] [FTP] CMD RETR WAVE95.BIN
[RX] 2026-11-07T23:14:52.996+08:00 [2026-11-07 23:14:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:14:53.226+08:00 [2026-11-07 23:14:52] [FTP] CMD RETR WAVE96.BIN
[RX] 2026-11-07T23:14:53.693+08:00 [2026-11-07 23:14:53] [FTP] CMD RETR WAVE97.BIN
[RX] 2026-11-07T23:14:54.230+08:00 [2026-11-07 23:14:53] [FTP] CMD RETR WAVE98.BIN
[RX] 2026-11-07T23:14:54.675+08:00 [2026-11-07 23:14:54] [FTP] CMD RETR WAVE99.BIN
[RX] 2026-11-07T23:14:55.225+08:00 [2026-11-07 23:14:54][NET] sock1 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T23:14:56.852+08:00 [2026-11-07 23:14:56][UI_CONTENT_PAGE] page open: id=wave_play rows=0
[RX] 2026-11-07T23:14:56.871+08:00 [2026-11-07 23:14:56][ERR][UI_TASK] ui wave head idx=99 reject=2 stored=0x0000 calc=0x0000
[RX] 2026-11-07T23:14:59.166+08:00 [2026-11-07 23:14:58][UI_CONTENT_PAGE] page close: id=wave_play
[RX] 2026-11-07T23:15:02.180+08:00 [2026-11-07 23:15:01][NET] sock2 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T23:15:02.987+08:00 [2026-11-07 23:15:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:15:12.993+08:00 [2026-11-07 23:15:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:15:22.987+08:00 [2026-11-07 23:15:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:15:32.993+08:00 [2026-11-07 23:15:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:15:42.991+08:00 [2026-11-07 23:15:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:15:52.994+08:00 [2026-11-07 23:15:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:02.993+08:00 [2026-11-07 23:16:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:12.984+08:00 [2026-11-07 23:16:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:22.986+08:00 [2026-11-07 23:16:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:32.992+08:00 [2026-11-07 23:16:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:42.992+08:00 [2026-11-07 23:16:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:16:52.988+08:00 [2026-11-07 23:16:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:17:02.992+08:00 [2026-11-07 23:17:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
[RX] 2026-11-07T23:17:12.987+08:00 [2026-11-07 23:17:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000
@@ -0,0 +1,16 @@
[RX] 2026-11-07T22:44:12.602+08:00 [2026-11-07 22:44:12] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK
[RX] 2026-11-07T22:44:13.311+08:00 [2026-11-07 22:44:12][NET] sock1 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T22:44:15.759+08:00 [2026-11-07 22:44:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:44:16.475+08:00 [2026-11-07 22:44:16][UI_CONTENT_PAGE] page open: id=wave_play rows=0
[RX] 2026-11-07T22:44:22.188+08:00 [2026-11-07 22:44:21][UI_CONTENT_PAGE] page close: id=wave_play
[RX] 2026-11-07T22:44:25.792+08:00 [2026-11-07 22:44:25][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:44:25.802+08:00 [2026-11-07 22:44:25] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 141750 bytes OK
[RX] 2026-11-07T22:44:26.312+08:00 [2026-11-07 22:44:25] [FTP] CMD RETR WAVE06.BIN
[RX] 2026-11-07T22:44:27.173+08:00 [2026-11-07 22:44:26][NET] sock1 reconcile: chip not listening (0x00/0xFF, was state=3) -> relisten
[RX] 2026-11-07T22:44:27.183+08:00 [2026-11-07 22:44:26][NET] sock2 reconcile: chip not listening (0x00/0xFF, was state=0) -> relisten
[RX] 2026-11-07T22:44:35.767+08:00 [2026-11-07 22:44:35][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:44:45.764+08:00 [2026-11-07 22:44:45][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:44:55.856+08:00 [2026-11-07 22:44:55][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:45:05.762+08:00 [2026-11-07 22:45:05][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:45:15.760+08:00 [2026-11-07 22:45:15][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
[RX] 2026-11-07T22:45:25.758+08:00 [2026-11-07 22:45:25][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0
@@ -0,0 +1,150 @@
"[RX] 2026-11-07T23:02:13.012+08:00 [2026-11-07 23:02:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:23.009+08:00 [2026-11-07 23:02:22][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:33.012+08:00 [2026-11-07 23:02:32][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:43.009+08:00 [2026-11-07 23:02:42][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:53.007+08:00 [2026-11-07 23:02:52][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:03.006+08:00 [2026-11-07 23:03:02][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.010+08:00 [2026-11-07 23:03:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.135+08:00 [2026-11-07 23:03:12][UI_CONTENT_PAGE] page open: id=wave_manual rows=0",
"[RX] 2026-11-07T23:03:23.005+08:00 [2026-11-07 23:03:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:33.009+08:00 [2026-11-07 23:03:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:36.209+08:00 [2026-11-07 23:03:35][UI_CONTENT_PAGE] page close: id=wave_manual",
"[RX] 2026-11-07T23:03:43.009+08:00 [2026-11-07 23:03:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:53.011+08:00 [2026-11-07 23:03:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:03.006+08:00 [2026-11-07 23:04:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:13.008+08:00 [2026-11-07 23:04:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:23.003+08:00 [2026-11-07 23:04:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:33.002+08:00 [2026-11-07 23:04:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:43.004+08:00 [2026-11-07 23:04:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:53.005+08:00 [2026-11-07 23:04:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:03.001+08:00 [2026-11-07 23:05:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:13.010+08:00 [2026-11-07 23:05:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:23.001+08:00 [2026-11-07 23:05:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:33.008+08:00 [2026-11-07 23:05:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:43.000+08:00 [2026-11-07 23:05:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:52.999+08:00 [2026-11-07 23:05:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:03.019+08:00 [2026-11-07 23:06:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:13.017+08:00 [2026-11-07 23:06:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:23.001+08:00 [2026-11-07 23:06:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:33.018+08:00 [2026-11-07 23:06:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:43.010+08:00 [2026-11-07 23:06:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:53.001+08:00 [2026-11-07 23:06:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:03.005+08:00 [2026-11-07 23:07:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:12.998+08:00 [2026-11-07 23:07:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:23.000+08:00 [2026-11-07 23:07:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:33.000+08:00 [2026-11-07 23:07:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:43.000+08:00 [2026-11-07 23:07:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:52.996+08:00 [2026-11-07 23:07:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:03.000+08:00 [2026-11-07 23:08:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:12.996+08:00 [2026-11-07 23:08:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:23.001+08:00 [2026-11-07 23:08:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:27.945+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE00.BIN",
"[RX] 2026-11-07T23:08:28.018+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE01.BIN",
"[RX] 2026-11-07T23:08:28.122+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE02.BIN",
"[RX] 2026-11-07T23:08:28.174+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE03.BIN",
"[RX] 2026-11-07T23:08:28.246+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE04.BIN",
"[RX] 2026-11-07T23:08:28.309+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE05.BIN",
"[RX] 2026-11-07T23:08:28.382+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:08:28.423+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE07.BIN",
"[RX] 2026-11-07T23:08:28.486+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE08.BIN",
"[RX] 2026-11-07T23:08:28.558+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE09.BIN",
"[RX] 2026-11-07T23:08:28.652+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE10.BIN",
"[RX] 2026-11-07T23:08:28.715+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE11.BIN",
"[RX] 2026-11-07T23:08:28.778+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE12.BIN",
"[RX] 2026-11-07T23:08:28.850+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE13.BIN",
"[RX] 2026-11-07T23:08:28.923+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE14.BIN",
"[RX] 2026-11-07T23:08:28.985+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE15.BIN",
"[RX] 2026-11-07T23:08:29.058+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE16.BIN",
"[RX] 2026-11-07T23:08:29.131+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE17.BIN",
"[RX] 2026-11-07T23:08:29.204+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE18.BIN",
"[RX] 2026-11-07T23:08:29.276+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE19.BIN",
"[RX] 2026-11-07T23:08:29.349+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE20.BIN",
"[RX] 2026-11-07T23:08:29.411+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE21.BIN",
"[RX] 2026-11-07T23:08:29.485+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE22.BIN",
"[RX] 2026-11-07T23:08:29.547+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE23.BIN",
"[RX] 2026-11-07T23:08:29.620+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE24.BIN",
"[RX] 2026-11-07T23:08:29.777+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE25.BIN",
"[RX] 2026-11-07T23:08:29.787+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE26.BIN",
"[RX] 2026-11-07T23:08:29.870+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE27.BIN",
"[RX] 2026-11-07T23:08:29.932+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE28.BIN",
"[RX] 2026-11-07T23:08:29.973+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE29.BIN",
"[RX] 2026-11-07T23:08:30.045+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE30.BIN",
"[RX] 2026-11-07T23:08:30.117+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE31.BIN",
"[RX] 2026-11-07T23:08:30.190+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE32.BIN",
"[RX] 2026-11-07T23:08:30.263+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE33.BIN",
"[RX] 2026-11-07T23:08:30.336+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE34.BIN",
"[RX] 2026-11-07T23:08:30.409+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE35.BIN",
"[RX] 2026-11-07T23:08:30.481+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE36.BIN",
"[RX] 2026-11-07T23:08:30.523+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE37.BIN",
"[RX] 2026-11-07T23:08:30.596+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE38.BIN",
"[RX] 2026-11-07T23:08:30.638+08:00 STALL snap=0x000001E7 req=0x000001F7 h=000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7 mg=193 cf=0 seg=1",
"[RX] 2026-11-07T23:08:30.783+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE39.BIN",
"[RX] 2026-11-07T23:08:30.845+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE40.BIN",
"[RX] 2026-11-07T23:08:30.907+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE41.BIN",
"[RX] 2026-11-07T23:08:30.990+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE42.BIN",
"[RX] 2026-11-07T23:08:31.062+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE43.BIN",
"[RX] 2026-11-07T23:08:31.145+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE44.BIN",
"[RX] 2026-11-07T23:08:31.197+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE45.BIN",
"[RX] 2026-11-07T23:08:31.281+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE46.BIN",
"[RX] 2026-11-07T23:08:31.385+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE47.BIN",
"[RX] 2026-11-07T23:08:31.447+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE48.BIN",
"[RX] 2026-11-07T23:08:31.519+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE49.BIN",
"[RX] 2026-11-07T23:08:31.561+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE50.BIN",
"[RX] 2026-11-07T23:08:31.603+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE51.BIN",
"[RX] 2026-11-07T23:08:31.644+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE52.BIN",
"[RX] 2026-11-07T23:08:31.707+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE53.BIN",
"[RX] 2026-11-07T23:08:31.738+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE54.BIN",
"[RX] 2026-11-07T23:08:31.780+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE55.BIN",
"[RX] 2026-11-07T23:08:31.821+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE56.BIN",
"[RX] 2026-11-07T23:08:31.863+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE57.BIN",
"[RX] 2026-11-07T23:08:31.904+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE58.BIN",
"[RX] 2026-11-07T23:08:31.945+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE59.BIN",
"[RX] 2026-11-07T23:08:31.987+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE60.BIN",
"[RX] 2026-11-07T23:08:32.071+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE61.BIN",
"[RX] 2026-11-07T23:08:32.092+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE62.BIN",
"[RX] 2026-11-07T23:08:32.175+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE63.BIN",
"[RX] 2026-11-07T23:08:32.248+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE64.BIN",
"[RX] 2026-11-07T23:08:32.330+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE65.BIN",
"[RX] 2026-11-07T23:08:32.446+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE66.BIN",
"[RX] 2026-11-07T23:08:32.508+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE67.BIN",
"[RX] 2026-11-07T23:08:32.581+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE68.BIN",
"[RX] 2026-11-07T23:08:32.717+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE69.BIN",
"[RX] 2026-11-07T23:08:32.758+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE70.BIN",
"[RX] 2026-11-07T23:08:32.841+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE71.BIN",
"[RX] 2026-11-07T23:08:32.914+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE72.BIN",
"[RX] 2026-11-07T23:08:33.197+08:00 [2026-11-07 23:08:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:33.227+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE73.BIN",
"[RX] 2026-11-07T23:08:33.258+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE74.BIN",
"[RX] 2026-11-07T23:08:33.269+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE75.BIN",
"[RX] 2026-11-07T23:08:33.373+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE76.BIN",
"[RX] 2026-11-07T23:08:33.404+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE77.BIN",
"[RX] 2026-11-07T23:08:33.487+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE78.BIN",
"[RX] 2026-11-07T23:08:33.570+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE79.BIN",
"[RX] 2026-11-07T23:08:33.643+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE80.BIN",
"[RX] 2026-11-07T23:08:33.736+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE81.BIN",
"[RX] 2026-11-07T23:08:33.850+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE82.BIN",
"[RX] 2026-11-07T23:08:33.913+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE83.BIN",
"[RX] 2026-11-07T23:08:33.995+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE84.BIN",
"[RX] 2026-11-07T23:08:34.068+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE85.BIN",
"[RX] 2026-11-07T23:08:34.150+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE86.BIN",
"[RX] 2026-11-07T23:08:34.233+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE87.BIN",
"[RX] 2026-11-07T23:08:34.316+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE88.BIN",
"[RX] 2026-11-07T23:08:34.389+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE89.BIN",
"[RX] 2026-11-07T23:08:34.473+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE90.BIN",
"[RX] 2026-11-07T23:08:34.577+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE91.BIN",
"[RX] 2026-11-07T23:08:34.639+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE92.BIN",
"[RX] 2026-11-07T23:08:34.723+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE93.BIN",
"[RX] 2026-11-07T23:08:34.805+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE94.BIN",
"[RX] 2026-11-07T23:08:34.889+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE95.BIN",
"[RX] 2026-11-07T23:08:34.973+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE96.BIN",
"[RX] 2026-11-07T23:08:35.056+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE97.BIN",
"[RX] 2026-11-07T23:08:35.139+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE98.BIN",
"[RX] 2026-11-07T23:08:35.275+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:08:42.995+08:00 [2026-11-07 23:08:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:53.004+08:00 [2026-11-07 23:08:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:02.997+08:00 [2026-11-07 23:09:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:03.638+08:00 [2026-11-07 23:09:03] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:10.839+08:00 [2026-11-07 23:09:10] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:13.001+08:00 [2026-11-07 23:09:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:15.641+08:00 [2026-11-07 23:09:15] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:22.998+08:00 [2026-11-07 23:09:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
@@ -0,0 +1,166 @@
"[RX] 2026-11-07T23:02:13.012+08:00 [2026-11-07 23:02:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:23.009+08:00 [2026-11-07 23:02:22][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:33.012+08:00 [2026-11-07 23:02:32][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:43.009+08:00 [2026-11-07 23:02:42][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:53.007+08:00 [2026-11-07 23:02:52][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:03.006+08:00 [2026-11-07 23:03:02][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.010+08:00 [2026-11-07 23:03:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.135+08:00 [2026-11-07 23:03:12][UI_CONTENT_PAGE] page open: id=wave_manual rows=0",
"[RX] 2026-11-07T23:03:23.005+08:00 [2026-11-07 23:03:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:33.009+08:00 [2026-11-07 23:03:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:36.209+08:00 [2026-11-07 23:03:35][UI_CONTENT_PAGE] page close: id=wave_manual",
"[RX] 2026-11-07T23:03:43.009+08:00 [2026-11-07 23:03:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:53.011+08:00 [2026-11-07 23:03:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:03.006+08:00 [2026-11-07 23:04:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:13.008+08:00 [2026-11-07 23:04:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:23.003+08:00 [2026-11-07 23:04:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:33.002+08:00 [2026-11-07 23:04:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:43.004+08:00 [2026-11-07 23:04:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:53.005+08:00 [2026-11-07 23:04:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:03.001+08:00 [2026-11-07 23:05:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:13.010+08:00 [2026-11-07 23:05:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:23.001+08:00 [2026-11-07 23:05:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:33.008+08:00 [2026-11-07 23:05:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:43.000+08:00 [2026-11-07 23:05:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:52.999+08:00 [2026-11-07 23:05:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:03.019+08:00 [2026-11-07 23:06:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:13.017+08:00 [2026-11-07 23:06:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:23.001+08:00 [2026-11-07 23:06:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:33.018+08:00 [2026-11-07 23:06:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:43.010+08:00 [2026-11-07 23:06:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:53.001+08:00 [2026-11-07 23:06:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:03.005+08:00 [2026-11-07 23:07:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:12.998+08:00 [2026-11-07 23:07:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:23.000+08:00 [2026-11-07 23:07:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:33.000+08:00 [2026-11-07 23:07:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:43.000+08:00 [2026-11-07 23:07:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:52.996+08:00 [2026-11-07 23:07:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:03.000+08:00 [2026-11-07 23:08:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:12.996+08:00 [2026-11-07 23:08:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:23.001+08:00 [2026-11-07 23:08:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:27.945+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE00.BIN",
"[RX] 2026-11-07T23:08:28.018+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE01.BIN",
"[RX] 2026-11-07T23:08:28.122+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE02.BIN",
"[RX] 2026-11-07T23:08:28.174+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE03.BIN",
"[RX] 2026-11-07T23:08:28.246+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE04.BIN",
"[RX] 2026-11-07T23:08:28.309+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE05.BIN",
"[RX] 2026-11-07T23:08:28.382+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:08:28.423+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE07.BIN",
"[RX] 2026-11-07T23:08:28.486+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE08.BIN",
"[RX] 2026-11-07T23:08:28.558+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE09.BIN",
"[RX] 2026-11-07T23:08:28.652+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE10.BIN",
"[RX] 2026-11-07T23:08:28.715+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE11.BIN",
"[RX] 2026-11-07T23:08:28.778+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE12.BIN",
"[RX] 2026-11-07T23:08:28.850+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE13.BIN",
"[RX] 2026-11-07T23:08:28.923+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE14.BIN",
"[RX] 2026-11-07T23:08:28.985+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE15.BIN",
"[RX] 2026-11-07T23:08:29.058+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE16.BIN",
"[RX] 2026-11-07T23:08:29.131+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE17.BIN",
"[RX] 2026-11-07T23:08:29.204+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE18.BIN",
"[RX] 2026-11-07T23:08:29.276+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE19.BIN",
"[RX] 2026-11-07T23:08:29.349+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE20.BIN",
"[RX] 2026-11-07T23:08:29.411+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE21.BIN",
"[RX] 2026-11-07T23:08:29.485+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE22.BIN",
"[RX] 2026-11-07T23:08:29.547+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE23.BIN",
"[RX] 2026-11-07T23:08:29.620+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE24.BIN",
"[RX] 2026-11-07T23:08:29.777+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE25.BIN",
"[RX] 2026-11-07T23:08:29.787+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE26.BIN",
"[RX] 2026-11-07T23:08:29.870+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE27.BIN",
"[RX] 2026-11-07T23:08:29.932+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE28.BIN",
"[RX] 2026-11-07T23:08:29.973+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE29.BIN",
"[RX] 2026-11-07T23:08:30.045+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE30.BIN",
"[RX] 2026-11-07T23:08:30.117+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE31.BIN",
"[RX] 2026-11-07T23:08:30.190+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE32.BIN",
"[RX] 2026-11-07T23:08:30.263+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE33.BIN",
"[RX] 2026-11-07T23:08:30.336+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE34.BIN",
"[RX] 2026-11-07T23:08:30.409+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE35.BIN",
"[RX] 2026-11-07T23:08:30.481+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE36.BIN",
"[RX] 2026-11-07T23:08:30.523+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE37.BIN",
"[RX] 2026-11-07T23:08:30.596+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE38.BIN",
"[RX] 2026-11-07T23:08:30.638+08:00 STALL snap=0x000001E7 req=0x000001F7 h=000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7 mg=193 cf=0 seg=1",
"[RX] 2026-11-07T23:08:30.783+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE39.BIN",
"[RX] 2026-11-07T23:08:30.845+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE40.BIN",
"[RX] 2026-11-07T23:08:30.907+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE41.BIN",
"[RX] 2026-11-07T23:08:30.990+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE42.BIN",
"[RX] 2026-11-07T23:08:31.062+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE43.BIN",
"[RX] 2026-11-07T23:08:31.145+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE44.BIN",
"[RX] 2026-11-07T23:08:31.197+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE45.BIN",
"[RX] 2026-11-07T23:08:31.281+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE46.BIN",
"[RX] 2026-11-07T23:08:31.385+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE47.BIN",
"[RX] 2026-11-07T23:08:31.447+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE48.BIN",
"[RX] 2026-11-07T23:08:31.519+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE49.BIN",
"[RX] 2026-11-07T23:08:31.561+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE50.BIN",
"[RX] 2026-11-07T23:08:31.603+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE51.BIN",
"[RX] 2026-11-07T23:08:31.644+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE52.BIN",
"[RX] 2026-11-07T23:08:31.707+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE53.BIN",
"[RX] 2026-11-07T23:08:31.738+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE54.BIN",
"[RX] 2026-11-07T23:08:31.780+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE55.BIN",
"[RX] 2026-11-07T23:08:31.821+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE56.BIN",
"[RX] 2026-11-07T23:08:31.863+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE57.BIN",
"[RX] 2026-11-07T23:08:31.904+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE58.BIN",
"[RX] 2026-11-07T23:08:31.945+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE59.BIN",
"[RX] 2026-11-07T23:08:31.987+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE60.BIN",
"[RX] 2026-11-07T23:08:32.071+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE61.BIN",
"[RX] 2026-11-07T23:08:32.092+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE62.BIN",
"[RX] 2026-11-07T23:08:32.175+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE63.BIN",
"[RX] 2026-11-07T23:08:32.248+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE64.BIN",
"[RX] 2026-11-07T23:08:32.330+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE65.BIN",
"[RX] 2026-11-07T23:08:32.446+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE66.BIN",
"[RX] 2026-11-07T23:08:32.508+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE67.BIN",
"[RX] 2026-11-07T23:08:32.581+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE68.BIN",
"[RX] 2026-11-07T23:08:32.717+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE69.BIN",
"[RX] 2026-11-07T23:08:32.758+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE70.BIN",
"[RX] 2026-11-07T23:08:32.841+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE71.BIN",
"[RX] 2026-11-07T23:08:32.914+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE72.BIN",
"[RX] 2026-11-07T23:08:33.197+08:00 [2026-11-07 23:08:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:33.227+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE73.BIN",
"[RX] 2026-11-07T23:08:33.258+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE74.BIN",
"[RX] 2026-11-07T23:08:33.269+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE75.BIN",
"[RX] 2026-11-07T23:08:33.373+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE76.BIN",
"[RX] 2026-11-07T23:08:33.404+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE77.BIN",
"[RX] 2026-11-07T23:08:33.487+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE78.BIN",
"[RX] 2026-11-07T23:08:33.570+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE79.BIN",
"[RX] 2026-11-07T23:08:33.643+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE80.BIN",
"[RX] 2026-11-07T23:08:33.736+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE81.BIN",
"[RX] 2026-11-07T23:08:33.850+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE82.BIN",
"[RX] 2026-11-07T23:08:33.913+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE83.BIN",
"[RX] 2026-11-07T23:08:33.995+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE84.BIN",
"[RX] 2026-11-07T23:08:34.068+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE85.BIN",
"[RX] 2026-11-07T23:08:34.150+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE86.BIN",
"[RX] 2026-11-07T23:08:34.233+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE87.BIN",
"[RX] 2026-11-07T23:08:34.316+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE88.BIN",
"[RX] 2026-11-07T23:08:34.389+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE89.BIN",
"[RX] 2026-11-07T23:08:34.473+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE90.BIN",
"[RX] 2026-11-07T23:08:34.577+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE91.BIN",
"[RX] 2026-11-07T23:08:34.639+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE92.BIN",
"[RX] 2026-11-07T23:08:34.723+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE93.BIN",
"[RX] 2026-11-07T23:08:34.805+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE94.BIN",
"[RX] 2026-11-07T23:08:34.889+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE95.BIN",
"[RX] 2026-11-07T23:08:34.973+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE96.BIN",
"[RX] 2026-11-07T23:08:35.056+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE97.BIN",
"[RX] 2026-11-07T23:08:35.139+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE98.BIN",
"[RX] 2026-11-07T23:08:35.275+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:08:42.995+08:00 [2026-11-07 23:08:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:53.004+08:00 [2026-11-07 23:08:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:02.997+08:00 [2026-11-07 23:09:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:03.638+08:00 [2026-11-07 23:09:03] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:10.839+08:00 [2026-11-07 23:09:10] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:13.001+08:00 [2026-11-07 23:09:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:15.641+08:00 [2026-11-07 23:09:15] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:22.998+08:00 [2026-11-07 23:09:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:29.646+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:29.677+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:09:29.865+08:00 [2026-11-07 23:09:29] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:32.120+08:00 [2026-11-07 23:09:31][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:33.000+08:00 [2026-11-07 23:09:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:38.759+08:00 [2026-11-07 23:09:38][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:42.995+08:00 [2026-11-07 23:09:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:45.374+08:00 [2026-11-07 23:09:44][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:50.784+08:00 [2026-11-07 23:09:50] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:52.994+08:00 [2026-11-07 23:09:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:58.063+08:00 [2026-11-07 23:09:57] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:58.239+08:00 [2026-11-07 23:09:57] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:00.363+08:00 [2026-11-07 23:09:59][ERR][UI_TASK] ui wave head idx=99 reject=1 stored=0x0000 calc=0x0000",
"[RX] 2026-11-07T23:10:02.996+08:00 [2026-11-07 23:10:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:05.772+08:00 [2026-11-07 23:10:05] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:12.998+08:00 [2026-11-07 23:10:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
@@ -0,0 +1,168 @@
"[RX] 2026-11-07T23:02:13.012+08:00 [2026-11-07 23:02:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:23.009+08:00 [2026-11-07 23:02:22][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:33.012+08:00 [2026-11-07 23:02:32][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:43.009+08:00 [2026-11-07 23:02:42][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:53.007+08:00 [2026-11-07 23:02:52][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:03.006+08:00 [2026-11-07 23:03:02][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.010+08:00 [2026-11-07 23:03:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.135+08:00 [2026-11-07 23:03:12][UI_CONTENT_PAGE] page open: id=wave_manual rows=0",
"[RX] 2026-11-07T23:03:23.005+08:00 [2026-11-07 23:03:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:33.009+08:00 [2026-11-07 23:03:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:36.209+08:00 [2026-11-07 23:03:35][UI_CONTENT_PAGE] page close: id=wave_manual",
"[RX] 2026-11-07T23:03:43.009+08:00 [2026-11-07 23:03:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:53.011+08:00 [2026-11-07 23:03:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:03.006+08:00 [2026-11-07 23:04:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:13.008+08:00 [2026-11-07 23:04:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:23.003+08:00 [2026-11-07 23:04:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:33.002+08:00 [2026-11-07 23:04:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:43.004+08:00 [2026-11-07 23:04:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:53.005+08:00 [2026-11-07 23:04:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:03.001+08:00 [2026-11-07 23:05:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:13.010+08:00 [2026-11-07 23:05:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:23.001+08:00 [2026-11-07 23:05:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:33.008+08:00 [2026-11-07 23:05:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:43.000+08:00 [2026-11-07 23:05:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:52.999+08:00 [2026-11-07 23:05:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:03.019+08:00 [2026-11-07 23:06:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:13.017+08:00 [2026-11-07 23:06:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:23.001+08:00 [2026-11-07 23:06:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:33.018+08:00 [2026-11-07 23:06:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:43.010+08:00 [2026-11-07 23:06:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:53.001+08:00 [2026-11-07 23:06:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:03.005+08:00 [2026-11-07 23:07:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:12.998+08:00 [2026-11-07 23:07:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:23.000+08:00 [2026-11-07 23:07:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:33.000+08:00 [2026-11-07 23:07:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:43.000+08:00 [2026-11-07 23:07:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:52.996+08:00 [2026-11-07 23:07:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:03.000+08:00 [2026-11-07 23:08:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:12.996+08:00 [2026-11-07 23:08:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:23.001+08:00 [2026-11-07 23:08:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:27.945+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE00.BIN",
"[RX] 2026-11-07T23:08:28.018+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE01.BIN",
"[RX] 2026-11-07T23:08:28.122+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE02.BIN",
"[RX] 2026-11-07T23:08:28.174+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE03.BIN",
"[RX] 2026-11-07T23:08:28.246+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE04.BIN",
"[RX] 2026-11-07T23:08:28.309+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE05.BIN",
"[RX] 2026-11-07T23:08:28.382+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:08:28.423+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE07.BIN",
"[RX] 2026-11-07T23:08:28.486+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE08.BIN",
"[RX] 2026-11-07T23:08:28.558+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE09.BIN",
"[RX] 2026-11-07T23:08:28.652+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE10.BIN",
"[RX] 2026-11-07T23:08:28.715+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE11.BIN",
"[RX] 2026-11-07T23:08:28.778+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE12.BIN",
"[RX] 2026-11-07T23:08:28.850+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE13.BIN",
"[RX] 2026-11-07T23:08:28.923+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE14.BIN",
"[RX] 2026-11-07T23:08:28.985+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE15.BIN",
"[RX] 2026-11-07T23:08:29.058+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE16.BIN",
"[RX] 2026-11-07T23:08:29.131+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE17.BIN",
"[RX] 2026-11-07T23:08:29.204+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE18.BIN",
"[RX] 2026-11-07T23:08:29.276+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE19.BIN",
"[RX] 2026-11-07T23:08:29.349+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE20.BIN",
"[RX] 2026-11-07T23:08:29.411+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE21.BIN",
"[RX] 2026-11-07T23:08:29.485+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE22.BIN",
"[RX] 2026-11-07T23:08:29.547+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE23.BIN",
"[RX] 2026-11-07T23:08:29.620+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE24.BIN",
"[RX] 2026-11-07T23:08:29.777+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE25.BIN",
"[RX] 2026-11-07T23:08:29.787+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE26.BIN",
"[RX] 2026-11-07T23:08:29.870+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE27.BIN",
"[RX] 2026-11-07T23:08:29.932+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE28.BIN",
"[RX] 2026-11-07T23:08:29.973+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE29.BIN",
"[RX] 2026-11-07T23:08:30.045+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE30.BIN",
"[RX] 2026-11-07T23:08:30.117+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE31.BIN",
"[RX] 2026-11-07T23:08:30.190+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE32.BIN",
"[RX] 2026-11-07T23:08:30.263+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE33.BIN",
"[RX] 2026-11-07T23:08:30.336+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE34.BIN",
"[RX] 2026-11-07T23:08:30.409+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE35.BIN",
"[RX] 2026-11-07T23:08:30.481+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE36.BIN",
"[RX] 2026-11-07T23:08:30.523+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE37.BIN",
"[RX] 2026-11-07T23:08:30.596+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE38.BIN",
"[RX] 2026-11-07T23:08:30.638+08:00 STALL snap=0x000001E7 req=0x000001F7 h=000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7 mg=193 cf=0 seg=1",
"[RX] 2026-11-07T23:08:30.783+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE39.BIN",
"[RX] 2026-11-07T23:08:30.845+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE40.BIN",
"[RX] 2026-11-07T23:08:30.907+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE41.BIN",
"[RX] 2026-11-07T23:08:30.990+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE42.BIN",
"[RX] 2026-11-07T23:08:31.062+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE43.BIN",
"[RX] 2026-11-07T23:08:31.145+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE44.BIN",
"[RX] 2026-11-07T23:08:31.197+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE45.BIN",
"[RX] 2026-11-07T23:08:31.281+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE46.BIN",
"[RX] 2026-11-07T23:08:31.385+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE47.BIN",
"[RX] 2026-11-07T23:08:31.447+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE48.BIN",
"[RX] 2026-11-07T23:08:31.519+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE49.BIN",
"[RX] 2026-11-07T23:08:31.561+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE50.BIN",
"[RX] 2026-11-07T23:08:31.603+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE51.BIN",
"[RX] 2026-11-07T23:08:31.644+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE52.BIN",
"[RX] 2026-11-07T23:08:31.707+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE53.BIN",
"[RX] 2026-11-07T23:08:31.738+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE54.BIN",
"[RX] 2026-11-07T23:08:31.780+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE55.BIN",
"[RX] 2026-11-07T23:08:31.821+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE56.BIN",
"[RX] 2026-11-07T23:08:31.863+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE57.BIN",
"[RX] 2026-11-07T23:08:31.904+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE58.BIN",
"[RX] 2026-11-07T23:08:31.945+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE59.BIN",
"[RX] 2026-11-07T23:08:31.987+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE60.BIN",
"[RX] 2026-11-07T23:08:32.071+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE61.BIN",
"[RX] 2026-11-07T23:08:32.092+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE62.BIN",
"[RX] 2026-11-07T23:08:32.175+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE63.BIN",
"[RX] 2026-11-07T23:08:32.248+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE64.BIN",
"[RX] 2026-11-07T23:08:32.330+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE65.BIN",
"[RX] 2026-11-07T23:08:32.446+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE66.BIN",
"[RX] 2026-11-07T23:08:32.508+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE67.BIN",
"[RX] 2026-11-07T23:08:32.581+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE68.BIN",
"[RX] 2026-11-07T23:08:32.717+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE69.BIN",
"[RX] 2026-11-07T23:08:32.758+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE70.BIN",
"[RX] 2026-11-07T23:08:32.841+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE71.BIN",
"[RX] 2026-11-07T23:08:32.914+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE72.BIN",
"[RX] 2026-11-07T23:08:33.197+08:00 [2026-11-07 23:08:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:33.227+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE73.BIN",
"[RX] 2026-11-07T23:08:33.258+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE74.BIN",
"[RX] 2026-11-07T23:08:33.269+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE75.BIN",
"[RX] 2026-11-07T23:08:33.373+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE76.BIN",
"[RX] 2026-11-07T23:08:33.404+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE77.BIN",
"[RX] 2026-11-07T23:08:33.487+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE78.BIN",
"[RX] 2026-11-07T23:08:33.570+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE79.BIN",
"[RX] 2026-11-07T23:08:33.643+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE80.BIN",
"[RX] 2026-11-07T23:08:33.736+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE81.BIN",
"[RX] 2026-11-07T23:08:33.850+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE82.BIN",
"[RX] 2026-11-07T23:08:33.913+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE83.BIN",
"[RX] 2026-11-07T23:08:33.995+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE84.BIN",
"[RX] 2026-11-07T23:08:34.068+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE85.BIN",
"[RX] 2026-11-07T23:08:34.150+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE86.BIN",
"[RX] 2026-11-07T23:08:34.233+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE87.BIN",
"[RX] 2026-11-07T23:08:34.316+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE88.BIN",
"[RX] 2026-11-07T23:08:34.389+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE89.BIN",
"[RX] 2026-11-07T23:08:34.473+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE90.BIN",
"[RX] 2026-11-07T23:08:34.577+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE91.BIN",
"[RX] 2026-11-07T23:08:34.639+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE92.BIN",
"[RX] 2026-11-07T23:08:34.723+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE93.BIN",
"[RX] 2026-11-07T23:08:34.805+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE94.BIN",
"[RX] 2026-11-07T23:08:34.889+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE95.BIN",
"[RX] 2026-11-07T23:08:34.973+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE96.BIN",
"[RX] 2026-11-07T23:08:35.056+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE97.BIN",
"[RX] 2026-11-07T23:08:35.139+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE98.BIN",
"[RX] 2026-11-07T23:08:35.275+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:08:42.995+08:00 [2026-11-07 23:08:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:53.004+08:00 [2026-11-07 23:08:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:02.997+08:00 [2026-11-07 23:09:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:03.638+08:00 [2026-11-07 23:09:03] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:10.839+08:00 [2026-11-07 23:09:10] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:13.001+08:00 [2026-11-07 23:09:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:15.641+08:00 [2026-11-07 23:09:15] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:22.998+08:00 [2026-11-07 23:09:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:29.646+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:29.677+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:09:29.865+08:00 [2026-11-07 23:09:29] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:32.120+08:00 [2026-11-07 23:09:31][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:33.000+08:00 [2026-11-07 23:09:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:38.759+08:00 [2026-11-07 23:09:38][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:42.995+08:00 [2026-11-07 23:09:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:45.374+08:00 [2026-11-07 23:09:44][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:50.784+08:00 [2026-11-07 23:09:50] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:52.994+08:00 [2026-11-07 23:09:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:58.063+08:00 [2026-11-07 23:09:57] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:58.239+08:00 [2026-11-07 23:09:57] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:00.363+08:00 [2026-11-07 23:09:59][ERR][UI_TASK] ui wave head idx=99 reject=1 stored=0x0000 calc=0x0000",
"[RX] 2026-11-07T23:10:02.996+08:00 [2026-11-07 23:10:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:05.772+08:00 [2026-11-07 23:10:05] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:12.998+08:00 [2026-11-07 23:10:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:22.995+08:00 [2026-11-07 23:10:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:32.996+08:00 [2026-11-07 23:10:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
@@ -0,0 +1,284 @@
"[RX] 2026-11-07T23:02:13.012+08:00 [2026-11-07 23:02:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:23.009+08:00 [2026-11-07 23:02:22][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:33.012+08:00 [2026-11-07 23:02:32][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:43.009+08:00 [2026-11-07 23:02:42][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:02:53.007+08:00 [2026-11-07 23:02:52][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:03.006+08:00 [2026-11-07 23:03:02][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.010+08:00 [2026-11-07 23:03:12][ADC_TASK] wave: seg=0 armed=0 src=- pts=320 err=0 ovf=0 drop=0",
"[RX] 2026-11-07T23:03:13.135+08:00 [2026-11-07 23:03:12][UI_CONTENT_PAGE] page open: id=wave_manual rows=0",
"[RX] 2026-11-07T23:03:23.005+08:00 [2026-11-07 23:03:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:33.009+08:00 [2026-11-07 23:03:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:36.209+08:00 [2026-11-07 23:03:35][UI_CONTENT_PAGE] page close: id=wave_manual",
"[RX] 2026-11-07T23:03:43.009+08:00 [2026-11-07 23:03:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:03:53.011+08:00 [2026-11-07 23:03:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:03.006+08:00 [2026-11-07 23:04:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:13.008+08:00 [2026-11-07 23:04:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:23.003+08:00 [2026-11-07 23:04:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:33.002+08:00 [2026-11-07 23:04:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:43.004+08:00 [2026-11-07 23:04:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:04:53.005+08:00 [2026-11-07 23:04:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:03.001+08:00 [2026-11-07 23:05:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:13.010+08:00 [2026-11-07 23:05:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:23.001+08:00 [2026-11-07 23:05:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:33.008+08:00 [2026-11-07 23:05:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:43.000+08:00 [2026-11-07 23:05:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:05:52.999+08:00 [2026-11-07 23:05:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:03.019+08:00 [2026-11-07 23:06:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:13.017+08:00 [2026-11-07 23:06:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:23.001+08:00 [2026-11-07 23:06:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:33.018+08:00 [2026-11-07 23:06:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:43.010+08:00 [2026-11-07 23:06:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:06:53.001+08:00 [2026-11-07 23:06:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:03.005+08:00 [2026-11-07 23:07:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:12.998+08:00 [2026-11-07 23:07:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:23.000+08:00 [2026-11-07 23:07:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:33.000+08:00 [2026-11-07 23:07:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:43.000+08:00 [2026-11-07 23:07:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:07:52.996+08:00 [2026-11-07 23:07:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:03.000+08:00 [2026-11-07 23:08:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:12.996+08:00 [2026-11-07 23:08:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:23.001+08:00 [2026-11-07 23:08:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:27.945+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE00.BIN",
"[RX] 2026-11-07T23:08:28.018+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE01.BIN",
"[RX] 2026-11-07T23:08:28.122+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE02.BIN",
"[RX] 2026-11-07T23:08:28.174+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE03.BIN",
"[RX] 2026-11-07T23:08:28.246+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE04.BIN",
"[RX] 2026-11-07T23:08:28.309+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE05.BIN",
"[RX] 2026-11-07T23:08:28.382+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:08:28.423+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE07.BIN",
"[RX] 2026-11-07T23:08:28.486+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE08.BIN",
"[RX] 2026-11-07T23:08:28.558+08:00 [2026-11-07 23:08:27] [FTP] CMD DELE WAVE09.BIN",
"[RX] 2026-11-07T23:08:28.652+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE10.BIN",
"[RX] 2026-11-07T23:08:28.715+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE11.BIN",
"[RX] 2026-11-07T23:08:28.778+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE12.BIN",
"[RX] 2026-11-07T23:08:28.850+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE13.BIN",
"[RX] 2026-11-07T23:08:28.923+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE14.BIN",
"[RX] 2026-11-07T23:08:28.985+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE15.BIN",
"[RX] 2026-11-07T23:08:29.058+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE16.BIN",
"[RX] 2026-11-07T23:08:29.131+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE17.BIN",
"[RX] 2026-11-07T23:08:29.204+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE18.BIN",
"[RX] 2026-11-07T23:08:29.276+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE19.BIN",
"[RX] 2026-11-07T23:08:29.349+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE20.BIN",
"[RX] 2026-11-07T23:08:29.411+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE21.BIN",
"[RX] 2026-11-07T23:08:29.485+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE22.BIN",
"[RX] 2026-11-07T23:08:29.547+08:00 [2026-11-07 23:08:28] [FTP] CMD DELE WAVE23.BIN",
"[RX] 2026-11-07T23:08:29.620+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE24.BIN",
"[RX] 2026-11-07T23:08:29.777+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE25.BIN",
"[RX] 2026-11-07T23:08:29.787+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE26.BIN",
"[RX] 2026-11-07T23:08:29.870+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE27.BIN",
"[RX] 2026-11-07T23:08:29.932+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE28.BIN",
"[RX] 2026-11-07T23:08:29.973+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE29.BIN",
"[RX] 2026-11-07T23:08:30.045+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE30.BIN",
"[RX] 2026-11-07T23:08:30.117+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE31.BIN",
"[RX] 2026-11-07T23:08:30.190+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE32.BIN",
"[RX] 2026-11-07T23:08:30.263+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE33.BIN",
"[RX] 2026-11-07T23:08:30.336+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE34.BIN",
"[RX] 2026-11-07T23:08:30.409+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE35.BIN",
"[RX] 2026-11-07T23:08:30.481+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE36.BIN",
"[RX] 2026-11-07T23:08:30.523+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE37.BIN",
"[RX] 2026-11-07T23:08:30.596+08:00 [2026-11-07 23:08:29] [FTP] CMD DELE WAVE38.BIN",
"[RX] 2026-11-07T23:08:30.638+08:00 STALL snap=0x000001E7 req=0x000001F7 h=000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7,000001E7 mg=193 cf=0 seg=1",
"[RX] 2026-11-07T23:08:30.783+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE39.BIN",
"[RX] 2026-11-07T23:08:30.845+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE40.BIN",
"[RX] 2026-11-07T23:08:30.907+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE41.BIN",
"[RX] 2026-11-07T23:08:30.990+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE42.BIN",
"[RX] 2026-11-07T23:08:31.062+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE43.BIN",
"[RX] 2026-11-07T23:08:31.145+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE44.BIN",
"[RX] 2026-11-07T23:08:31.197+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE45.BIN",
"[RX] 2026-11-07T23:08:31.281+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE46.BIN",
"[RX] 2026-11-07T23:08:31.385+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE47.BIN",
"[RX] 2026-11-07T23:08:31.447+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE48.BIN",
"[RX] 2026-11-07T23:08:31.519+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE49.BIN",
"[RX] 2026-11-07T23:08:31.561+08:00 [2026-11-07 23:08:30] [FTP] CMD DELE WAVE50.BIN",
"[RX] 2026-11-07T23:08:31.603+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE51.BIN",
"[RX] 2026-11-07T23:08:31.644+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE52.BIN",
"[RX] 2026-11-07T23:08:31.707+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE53.BIN",
"[RX] 2026-11-07T23:08:31.738+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE54.BIN",
"[RX] 2026-11-07T23:08:31.780+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE55.BIN",
"[RX] 2026-11-07T23:08:31.821+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE56.BIN",
"[RX] 2026-11-07T23:08:31.863+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE57.BIN",
"[RX] 2026-11-07T23:08:31.904+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE58.BIN",
"[RX] 2026-11-07T23:08:31.945+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE59.BIN",
"[RX] 2026-11-07T23:08:31.987+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE60.BIN",
"[RX] 2026-11-07T23:08:32.071+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE61.BIN",
"[RX] 2026-11-07T23:08:32.092+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE62.BIN",
"[RX] 2026-11-07T23:08:32.175+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE63.BIN",
"[RX] 2026-11-07T23:08:32.248+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE64.BIN",
"[RX] 2026-11-07T23:08:32.330+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE65.BIN",
"[RX] 2026-11-07T23:08:32.446+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE66.BIN",
"[RX] 2026-11-07T23:08:32.508+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE67.BIN",
"[RX] 2026-11-07T23:08:32.581+08:00 [2026-11-07 23:08:31] [FTP] CMD DELE WAVE68.BIN",
"[RX] 2026-11-07T23:08:32.717+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE69.BIN",
"[RX] 2026-11-07T23:08:32.758+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE70.BIN",
"[RX] 2026-11-07T23:08:32.841+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE71.BIN",
"[RX] 2026-11-07T23:08:32.914+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE72.BIN",
"[RX] 2026-11-07T23:08:33.197+08:00 [2026-11-07 23:08:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:33.227+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE73.BIN",
"[RX] 2026-11-07T23:08:33.258+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE74.BIN",
"[RX] 2026-11-07T23:08:33.269+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE75.BIN",
"[RX] 2026-11-07T23:08:33.373+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE76.BIN",
"[RX] 2026-11-07T23:08:33.404+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE77.BIN",
"[RX] 2026-11-07T23:08:33.487+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE78.BIN",
"[RX] 2026-11-07T23:08:33.570+08:00 [2026-11-07 23:08:32] [FTP] CMD DELE WAVE79.BIN",
"[RX] 2026-11-07T23:08:33.643+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE80.BIN",
"[RX] 2026-11-07T23:08:33.736+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE81.BIN",
"[RX] 2026-11-07T23:08:33.850+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE82.BIN",
"[RX] 2026-11-07T23:08:33.913+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE83.BIN",
"[RX] 2026-11-07T23:08:33.995+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE84.BIN",
"[RX] 2026-11-07T23:08:34.068+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE85.BIN",
"[RX] 2026-11-07T23:08:34.150+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE86.BIN",
"[RX] 2026-11-07T23:08:34.233+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE87.BIN",
"[RX] 2026-11-07T23:08:34.316+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE88.BIN",
"[RX] 2026-11-07T23:08:34.389+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE89.BIN",
"[RX] 2026-11-07T23:08:34.473+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE90.BIN",
"[RX] 2026-11-07T23:08:34.577+08:00 [2026-11-07 23:08:33] [FTP] CMD DELE WAVE91.BIN",
"[RX] 2026-11-07T23:08:34.639+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE92.BIN",
"[RX] 2026-11-07T23:08:34.723+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE93.BIN",
"[RX] 2026-11-07T23:08:34.805+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE94.BIN",
"[RX] 2026-11-07T23:08:34.889+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE95.BIN",
"[RX] 2026-11-07T23:08:34.973+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE96.BIN",
"[RX] 2026-11-07T23:08:35.056+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE97.BIN",
"[RX] 2026-11-07T23:08:35.139+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE98.BIN",
"[RX] 2026-11-07T23:08:35.275+08:00 [2026-11-07 23:08:34] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:08:42.995+08:00 [2026-11-07 23:08:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:08:53.004+08:00 [2026-11-07 23:08:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:02.997+08:00 [2026-11-07 23:09:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:03.638+08:00 [2026-11-07 23:09:03] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:10.839+08:00 [2026-11-07 23:09:10] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:13.001+08:00 [2026-11-07 23:09:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:15.641+08:00 [2026-11-07 23:09:15] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:22.998+08:00 [2026-11-07 23:09:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:29.646+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:29.677+08:00 [2026-11-07 23:09:29] [FTP] CMD DELE WAVE99.BIN",
"[RX] 2026-11-07T23:09:29.865+08:00 [2026-11-07 23:09:29] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:32.120+08:00 [2026-11-07 23:09:31][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:33.000+08:00 [2026-11-07 23:09:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:38.759+08:00 [2026-11-07 23:09:38][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:42.995+08:00 [2026-11-07 23:09:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:45.374+08:00 [2026-11-07 23:09:44][ERR][UI_TASK] ui wave head idx=6 reject=5 stored=0xC204 calc=0x8A84",
"[RX] 2026-11-07T23:09:50.784+08:00 [2026-11-07 23:09:50] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:09:52.994+08:00 [2026-11-07 23:09:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:09:58.063+08:00 [2026-11-07 23:09:57] [FTP] CMD DELE WAVE06.BIN",
"[RX] 2026-11-07T23:09:58.239+08:00 [2026-11-07 23:09:57] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:00.363+08:00 [2026-11-07 23:09:59][ERR][UI_TASK] ui wave head idx=99 reject=1 stored=0x0000 calc=0x0000",
"[RX] 2026-11-07T23:10:02.996+08:00 [2026-11-07 23:10:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:05.772+08:00 [2026-11-07 23:10:05] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 5250 bytes OK",
"[RX] 2026-11-07T23:10:12.998+08:00 [2026-11-07 23:10:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:22.995+08:00 [2026-11-07 23:10:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:32.996+08:00 [2026-11-07 23:10:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:38.625+08:00 [2026-11-07 23:10:38] [FTP] UPLOAD '/WAVE/WAVE00.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:39.785+08:00 [2026-11-07 23:10:39] [FTP] UPLOAD '/WAVE/WAVE01.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:40.893+08:00 [2026-11-07 23:10:40] [FTP] UPLOAD '/WAVE/WAVE02.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:42.062+08:00 [2026-11-07 23:10:41] [FTP] UPLOAD '/WAVE/WAVE03.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:43.007+08:00 [2026-11-07 23:10:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:43.246+08:00 [2026-11-07 23:10:42] [FTP] UPLOAD '/WAVE/WAVE04.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:44.424+08:00 [2026-11-07 23:10:43] [FTP] UPLOAD '/WAVE/WAVE05.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:45.561+08:00 [2026-11-07 23:10:44] [FTP] UPLOAD '/WAVE/WAVE06.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:46.702+08:00 [2026-11-07 23:10:46] [FTP] UPLOAD '/WAVE/WAVE07.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:47.892+08:00 [2026-11-07 23:10:47] [FTP] UPLOAD '/WAVE/WAVE08.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:49.063+08:00 [2026-11-07 23:10:48] [FTP] UPLOAD '/WAVE/WAVE09.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:50.206+08:00 [2026-11-07 23:10:49] [FTP] UPLOAD '/WAVE/WAVE10.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:51.322+08:00 [2026-11-07 23:10:50] [FTP] UPLOAD '/WAVE/WAVE11.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:52.441+08:00 [2026-11-07 23:10:51] [FTP] UPLOAD '/WAVE/WAVE12.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:53.001+08:00 [2026-11-07 23:10:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:10:53.613+08:00 [2026-11-07 23:10:53] [FTP] UPLOAD '/WAVE/WAVE13.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:54.733+08:00 [2026-11-07 23:10:54] [FTP] UPLOAD '/WAVE/WAVE14.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:55.847+08:00 [2026-11-07 23:10:55] [FTP] UPLOAD '/WAVE/WAVE15.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:56.974+08:00 [2026-11-07 23:10:56] [FTP] UPLOAD '/WAVE/WAVE16.BIN' 141750 bytes OK",
"[RX] 2026-11-07T23:10:58.062+08:00 [2026-11-07 23:10:57] [FTP] UPLOAD '/WAVE/WAVE17.BIN' 136500 bytes OK",
"[RX] 2026-11-07T23:10:59.190+08:00 [2026-11-07 23:10:58] [FTP] UPLOAD '/WAVE/WAVE18.BIN' 136500 bytes OK",
"[RX] 2026-11-07T23:11:00.290+08:00 [2026-11-07 23:10:59] [FTP] UPLOAD '/WAVE/WAVE19.BIN' 136500 bytes OK",
"[RX] 2026-11-07T23:11:01.483+08:00 [2026-11-07 23:11:00] [FTP] UPLOAD '/WAVE/WAVE20.BIN' 136500 bytes OK",
"[RX] 2026-11-07T23:11:02.570+08:00 [2026-11-07 23:11:01] [FTP] UPLOAD '/WAVE/WAVE21.BIN' 136500 bytes OK",
"[RX] 2026-11-07T23:11:02.994+08:00 [2026-11-07 23:11:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:03.660+08:00 [2026-11-07 23:11:03] [FTP] UPLOAD '/WAVE/WAVE22.BIN' 131250 bytes OK",
"[RX] 2026-11-07T23:11:04.758+08:00 [2026-11-07 23:11:04] [FTP] UPLOAD '/WAVE/WAVE23.BIN' 131250 bytes OK",
"[RX] 2026-11-07T23:11:05.826+08:00 [2026-11-07 23:11:05] [FTP] UPLOAD '/WAVE/WAVE24.BIN' 126000 bytes OK",
"[RX] 2026-11-07T23:11:06.907+08:00 [2026-11-07 23:11:06] [FTP] UPLOAD '/WAVE/WAVE25.BIN' 126000 bytes OK",
"[RX] 2026-11-07T23:11:07.969+08:00 [2026-11-07 23:11:07] [FTP] UPLOAD '/WAVE/WAVE26.BIN' 126000 bytes OK",
"[RX] 2026-11-07T23:11:09.023+08:00 [2026-11-07 23:11:08] [FTP] UPLOAD '/WAVE/WAVE27.BIN' 126000 bytes OK",
"[RX] 2026-11-07T23:11:09.781+08:00 [2026-11-07 23:11:09] [FTP] UPLOAD '/WAVE/WAVE28.BIN' 31500 bytes OK",
"[RX] 2026-11-07T23:11:10.845+08:00 [2026-11-07 23:11:10] [FTP] UPLOAD '/WAVE/WAVE29.BIN' 126000 bytes OK",
"[RX] 2026-11-07T23:11:11.939+08:00 [2026-11-07 23:11:11] [FTP] UPLOAD '/WAVE/WAVE30.BIN' 120750 bytes OK",
"[RX] 2026-11-07T23:11:13.006+08:00 [2026-11-07 23:11:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:13.068+08:00 [2026-11-07 23:11:12] [FTP] UPLOAD '/WAVE/WAVE31.BIN' 120750 bytes OK",
"[RX] 2026-11-07T23:11:14.137+08:00 [2026-11-07 23:11:13] [FTP] UPLOAD '/WAVE/WAVE32.BIN' 120750 bytes OK",
"[RX] 2026-11-07T23:11:15.184+08:00 [2026-11-07 23:11:14] [FTP] UPLOAD '/WAVE/WAVE33.BIN' 120750 bytes OK",
"[RX] 2026-11-07T23:11:16.241+08:00 [2026-11-07 23:11:15] [FTP] UPLOAD '/WAVE/WAVE34.BIN' 115500 bytes OK",
"[RX] 2026-11-07T23:11:17.261+08:00 [2026-11-07 23:11:16] [FTP] UPLOAD '/WAVE/WAVE35.BIN' 115500 bytes OK",
"[RX] 2026-11-07T23:11:17.927+08:00 [2026-11-07 23:11:17] [FTP] UPLOAD '/WAVE/WAVE36.BIN' 10500 bytes OK",
"[RX] 2026-11-07T23:11:18.934+08:00 [2026-11-07 23:11:18] [FTP] UPLOAD '/WAVE/WAVE37.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:19.969+08:00 [2026-11-07 23:11:19] [FTP] UPLOAD '/WAVE/WAVE38.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:20.987+08:00 [2026-11-07 23:11:20] [FTP] UPLOAD '/WAVE/WAVE39.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:22.011+08:00 [2026-11-07 23:11:21] [FTP] UPLOAD '/WAVE/WAVE40.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:23.007+08:00 [2026-11-07 23:11:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:23.100+08:00 [2026-11-07 23:11:22] [FTP] UPLOAD '/WAVE/WAVE41.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:24.106+08:00 [2026-11-07 23:11:23] [FTP] UPLOAD '/WAVE/WAVE42.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:25.133+08:00 [2026-11-07 23:11:24] [FTP] UPLOAD '/WAVE/WAVE43.BIN' 110250 bytes OK",
"[RX] 2026-11-07T23:11:26.023+08:00 [2026-11-07 23:11:25] [FTP] UPLOAD '/WAVE/WAVE44.BIN' 68250 bytes OK",
"[RX] 2026-11-07T23:11:27.006+08:00 [2026-11-07 23:11:26] [FTP] UPLOAD '/WAVE/WAVE45.BIN' 105000 bytes OK",
"[RX] 2026-11-07T23:11:28.009+08:00 [2026-11-07 23:11:27] [FTP] UPLOAD '/WAVE/WAVE46.BIN' 99750 bytes OK",
"[RX] 2026-11-07T23:11:29.001+08:00 [2026-11-07 23:11:28] [FTP] UPLOAD '/WAVE/WAVE47.BIN' 99750 bytes OK",
"[RX] 2026-11-07T23:11:29.973+08:00 [2026-11-07 23:11:29] [FTP] UPLOAD '/WAVE/WAVE48.BIN' 94500 bytes OK",
"[RX] 2026-11-07T23:11:30.907+08:00 [2026-11-07 23:11:30] [FTP] UPLOAD '/WAVE/WAVE49.BIN' 89250 bytes OK",
"[RX] 2026-11-07T23:11:31.818+08:00 [2026-11-07 23:11:31] [FTP] UPLOAD '/WAVE/WAVE50.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:32.741+08:00 [2026-11-07 23:11:32] [FTP] UPLOAD '/WAVE/WAVE51.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:33.002+08:00 [2026-11-07 23:11:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:33.643+08:00 [2026-11-07 23:11:33] [FTP] UPLOAD '/WAVE/WAVE52.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:34.546+08:00 [2026-11-07 23:11:33] [FTP] UPLOAD '/WAVE/WAVE53.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:35.449+08:00 [2026-11-07 23:11:34] [FTP] UPLOAD '/WAVE/WAVE54.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:36.387+08:00 [2026-11-07 23:11:35] [FTP] UPLOAD '/WAVE/WAVE55.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:37.282+08:00 [2026-11-07 23:11:36] [FTP] UPLOAD '/WAVE/WAVE56.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:38.206+08:00 [2026-11-07 23:11:37] [FTP] UPLOAD '/WAVE/WAVE57.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:39.150+08:00 [2026-11-07 23:11:38] [FTP] UPLOAD '/WAVE/WAVE58.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:40.050+08:00 [2026-11-07 23:11:39] [FTP] UPLOAD '/WAVE/WAVE59.BIN' 78750 bytes OK",
"[RX] 2026-11-07T23:11:40.940+08:00 [2026-11-07 23:11:40] [FTP] UPLOAD '/WAVE/WAVE60.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:41.845+08:00 [2026-11-07 23:11:41] [FTP] UPLOAD '/WAVE/WAVE61.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:42.739+08:00 [2026-11-07 23:11:42] [FTP] UPLOAD '/WAVE/WAVE62.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:43.000+08:00 [2026-11-07 23:11:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:43.632+08:00 [2026-11-07 23:11:43] [FTP] UPLOAD '/WAVE/WAVE63.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:44.523+08:00 [2026-11-07 23:11:43] [FTP] UPLOAD '/WAVE/WAVE64.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:45.457+08:00 [2026-11-07 23:11:44] [FTP] UPLOAD '/WAVE/WAVE65.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:46.350+08:00 [2026-11-07 23:11:45] [FTP] UPLOAD '/WAVE/WAVE66.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:47.229+08:00 [2026-11-07 23:11:46] [FTP] UPLOAD '/WAVE/WAVE67.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:48.118+08:00 [2026-11-07 23:11:47] [FTP] UPLOAD '/WAVE/WAVE68.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:49.002+08:00 [2026-11-07 23:11:48] [FTP] UPLOAD '/WAVE/WAVE69.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:49.890+08:00 [2026-11-07 23:11:49] [FTP] UPLOAD '/WAVE/WAVE70.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:50.778+08:00 [2026-11-07 23:11:50] [FTP] UPLOAD '/WAVE/WAVE71.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:51.686+08:00 [2026-11-07 23:11:51] [FTP] UPLOAD '/WAVE/WAVE72.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:52.569+08:00 [2026-11-07 23:11:51] [FTP] UPLOAD '/WAVE/WAVE73.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:52.995+08:00 [2026-11-07 23:11:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:11:53.460+08:00 [2026-11-07 23:11:52] [FTP] UPLOAD '/WAVE/WAVE74.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:54.392+08:00 [2026-11-07 23:11:53] [FTP] UPLOAD '/WAVE/WAVE75.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:55.294+08:00 [2026-11-07 23:11:54] [FTP] UPLOAD '/WAVE/WAVE76.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:56.205+08:00 [2026-11-07 23:11:55] [FTP] UPLOAD '/WAVE/WAVE77.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:57.087+08:00 [2026-11-07 23:11:56] [FTP] UPLOAD '/WAVE/WAVE78.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:58.017+08:00 [2026-11-07 23:11:57] [FTP] UPLOAD '/WAVE/WAVE79.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:58.910+08:00 [2026-11-07 23:11:58] [FTP] UPLOAD '/WAVE/WAVE80.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:11:59.784+08:00 [2026-11-07 23:11:59] [FTP] UPLOAD '/WAVE/WAVE81.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:00.706+08:00 [2026-11-07 23:12:00] [FTP] UPLOAD '/WAVE/WAVE82.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:01.598+08:00 [2026-11-07 23:12:01] [FTP] UPLOAD '/WAVE/WAVE83.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:02.563+08:00 [2026-11-07 23:12:01] [FTP] UPLOAD '/WAVE/WAVE84.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:02.997+08:00 [2026-11-07 23:12:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:12:03.453+08:00 [2026-11-07 23:12:02] [FTP] UPLOAD '/WAVE/WAVE85.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:04.370+08:00 [2026-11-07 23:12:03] [FTP] UPLOAD '/WAVE/WAVE86.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:05.284+08:00 [2026-11-07 23:12:04] [FTP] UPLOAD '/WAVE/WAVE87.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:06.177+08:00 [2026-11-07 23:12:05] [FTP] UPLOAD '/WAVE/WAVE88.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:07.328+08:00 [2026-11-07 23:12:06] [FTP] UPLOAD '/WAVE/WAVE89.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:08.260+08:00 [2026-11-07 23:12:07] [FTP] UPLOAD '/WAVE/WAVE90.BIN' 71680 bytes OK",
"[RX] 2026-11-07T23:12:09.175+08:00 [2026-11-07 23:12:08] [FTP] UPLOAD '/WAVE/WAVE91.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:10.086+08:00 [2026-11-07 23:12:09] [FTP] UPLOAD '/WAVE/WAVE92.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:10.997+08:00 [2026-11-07 23:12:10] [FTP] UPLOAD '/WAVE/WAVE93.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:11.902+08:00 [2026-11-07 23:12:11] [FTP] UPLOAD '/WAVE/WAVE94.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:12.792+08:00 [2026-11-07 23:12:12] [FTP] UPLOAD '/WAVE/WAVE95.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:13.000+08:00 [2026-11-07 23:12:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:12:13.694+08:00 [2026-11-07 23:12:13] [FTP] UPLOAD '/WAVE/WAVE96.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:14.618+08:00 [2026-11-07 23:12:14] [FTP] UPLOAD '/WAVE/WAVE97.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:15.843+08:00 [2026-11-07 23:12:15] [FTP] UPLOAD '/WAVE/WAVE98.BIN' 73500 bytes OK",
"[RX] 2026-11-07T23:12:16.869+08:00 [2026-11-07 23:12:16] [FTP] UPLOAD '/WAVE/WAVE99.BIN' 71680 bytes OK",
"[RX] 2026-11-07T23:12:22.998+08:00 [2026-11-07 23:12:22][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:12:33.015+08:00 [2026-11-07 23:12:32][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:12:43.002+08:00 [2026-11-07 23:12:42][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:12:53.007+08:00 [2026-11-07 23:12:52][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:13:02.999+08:00 [2026-11-07 23:13:02][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
"[RX] 2026-11-07T23:13:12.997+08:00 [2026-11-07 23:13:12][ADC_TASK] wave: seg=1 armed=0 src=M pts=320 err=0 ovf=0 drop=1000",
@@ -0,0 +1,25 @@
{
"counts": {
"before": {
"lines": 16,
"reject_lines": 0,
"scan_anchors": 0,
"open_fail": 0,
"err_total": 0,
"err_i104_bind": 0,
"err_ui": 0,
"manual_src": 0
},
"after": {
"lines": 187,
"reject_lines": 1,
"scan_anchors": 0,
"open_fail": 0,
"err_total": 2,
"err_i104_bind": 1,
"err_ui": 1,
"manual_src": 20
}
},
"f13_spam_scans": 0
}
@@ -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 复验)
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 949 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 949 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -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"
}
@@ -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
```
@@ -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
+65 -7
View File
@@ -142,7 +142,7 @@ STM32(U17)为 LQFP144 脚号。
> 出处:`docs/任务规划/数据可信.md` §2.1(量程口径冻结)。本节把 **语义端子(二次侧)→ 子板/端子板 → 网名 `AINn` → 主板电阻网络 → 板级网名 `ADCn` → 转换器引脚 → 码值 → 满量程** 的链路**逐段**定口径。
> ③ 段(`AINn` ↔ 转换器引脚)已有台架实测数值——变比 **1:1**,斜率实测见 §8.1;④ 段(语义端子 ↔ `AINn` 的子板/
> 端子板变比)仓库内没有任何数据,只给口径与判据。
> 端子板变比)已于 **2026-11-06 按用户现场报参算定**(#41,登记与复核边界见 §7.2;子板原理图仍不在仓库内)。
**芯片级口径(定死,与前端网络无关)**:
@@ -171,19 +171,77 @@ STM32(U17)为 LQFP144 脚号。
| ① 语义 ↔ 网名 ↔ 板级网名 ↔ 转换器代码通道 | §2/§3/§4/§5 的 17 路映射表 | **定死**(本文件为唯一权威) |
| ② 转换器引脚电压 ↔ 码值 | TPAFE `U_pin = code × 152.59 µV`(code 带符号);STM32 `U_pin = code × 805.66 µV` | **定死**(纯转换器事实,上表) |
| ③ `AINn`(串联电阻子板侧)↔ `ADCn`/转换器引脚 | **变比 = 1:1(2026-10-27 定死)**:`ADCn` 节点只有 {串阻.2, 滤波 C, 转换器引脚},无对地元件(拓扑图见上)。旧"读法 A(2:1 分压 → 305.18 / 1611.3 µV/码)"**作废**——它是把接在差分负端的 1k 误读成对地分压 | **定死**(网表级结论 + **2026-10-27 台架实测确认**,见 §8.1:端子侧注入斜率 6544.2 码/V,与引脚侧理论 6553.6 差 0.14 %,不存在 2:1 分压)。已知电压注入验证已闭环 |
| ④ 语义端子(二次端子)↔ `AINn` | 子板/端子板变比:仓库内**无任何文档**(`docs/硬件平台/` 只有 `.tel` 网表与分析报告,无子板原理图;§8 步骤 4) | **缺口**——待「端子/子板变比确认」实测确认;拿不到变比则"端子二次值"不成立、`eng` 保持 0 |
| ④ 语义端子(二次端子)↔ `AINn` | 子板/端子板变比:**电压族(UA/UB/UC/UN)= 606.06 : 1(V/V)**、**电流族(IA/IB/IC/IN)= 29.4118 A/V**;由用户现场报参(2026-11-06,#41)按式算定,算式与复核边界见 §7.2 | **定死**(参数算定,非本板双表同测;数值确认归两点标定)——"端子二次值"口径成立;但 `eng` 在电气 8 路 `ADC_CAL_F_VALID` 全置位(两点标定卡)前**保持 0** |
**可评审结论**:
1. **ROM 默认系数按 ② 引脚口径冻结**:TPAFE 通道 `k = 152.59 µV/码`、STM32 通道 `k = 805.66 µV/码`;标定折算的输出单位 = **ADC 引脚电压 V**(`eng = 0`)。该口径**不依赖** ③④ 两个未决项,自本节点死即成立——这就是 M4 承诺边界止于“引脚电压”的依据(`docs/任务规划/数据可信.md` §2.6)。
1. **ROM 默认系数按 ② 引脚口径冻结**:TPAFE 通道 `k = 152.59 µV/码`、STM32 通道 `k = 805.66 µV/码`;标定折算的输出单位 = **ADC 引脚电压 V**(`eng = 0`)。该口径与 ③④ 变比何时定死**无关**,冻结当日即成立且此后不因 ④ 到手而改动——这就是 M4 承诺边界止于“引脚电压”的依据(`docs/任务规划/数据可信.md` §2.6)。
2. `docs/任务规划/数据可信.md` §2.1 旧表的“板级系数(输入侧)305.18 / 1611.3 µV/码”**已随 ③ 段定死而删除**(2026-10-27):该值按 2:1 分压折算,而网表证明 `ADCn` 节点无对地元件。板级系数 = 引脚侧系数(152.59 / 805.66);305.18 / 1611.3 今后只允许出现在“±10 V 档 LSB”语境(芯片手册口径),不得再当本板系数。
3. **满量程必须写明参考点**:TPAFE 通道满量程 = ±5 V **@ 引脚**(跨度 10 V);③ 已定 1:1、④ 仍未知,故端子侧满量程只允许写“引脚侧数值 × ④ 比”,**严禁**把“码 × 152.59 µV”当端子二次值写进代码/文档(那是引脚电压)。
3. **满量程必须写明参考点**:TPAFE 通道满量程 = ±5 V **@ 引脚**(跨度 10 V);③④ 现均已定死(④ 值见 §7.2),端子侧换算已允许写“引脚侧数值 × ④ 比”;但两点标定置 `VALID` 之前,**严禁**把“码 × 152.59 µV”当端子二次值写进代码/文档(那是引脚电压),§7.2 的标称系数只是算定值、不是已验证二次值。
4. **已知电压注入验证已于 2026-10-27 闭环**(六项判据全 PASS,实测见 §8.1):③ 段 1:1 由台架直接证实,
② 引脚侧 LSB 与实测斜率差 0.14 %,逐通道映射与极性均已验。**仍待实测的是 ④**(端子→引脚
变比,即端子/子板变比确认)与两点标定;两者完成前 `eng` 保持 0、输出单位仍是 ADC 引脚电压。
② 引脚侧 LSB 与实测斜率差 0.14 %,逐通道映射与极性均已验。**④ 变比已于 2026-11-06 按用户现场报参算定**
(§7.2;子板原理图仍不在仓库内,本板双表同测未做)。**仍待实测的是两点标定**(给端子域系数、置 `VALID`,
`eng` 随之升 1);标定完成前 `eng` 保持 0、输出单位仍是 ADC 引脚电压。
实测斜率与 ② 理论值偏差 >2 % 时**先查前端**(分压/变比/焊接),不得用系数凑错斜率
(`docs/任务规划/数据可信.md` §8 风险表)。
### 7.2 ④ 段变比登记(2026-11-06 定死)
> **来源**:用户现场报的子板参数(2026-11-06,Issue #41),按 `docs/任务规划/数据可信.md` §7 #2 的路 ①「按图(参数)直接算」
> 算得;子板原理图仍不在仓库内,路 ②「万用表同时量端子与引脚」未做——数值上的理想化偏差与逐路差归两点标定
> (见本节末「复核口径」)。
**电压族 UA/UB/UC/UN——子板 PT:2 mA/2 mA,输入侧 200 kΩ,输出侧 330 Ω**:
- 变比 = U端子 ÷ UAINn = (2 mA × 200 kΩ) ÷ (2 mA × 330 Ω):电流比 1:1 电流相消,只剩两侧负担电阻之比 =
200000 ÷ 330 = **606.060606… ≈ 606.06 : 1**(V/V,无量纲);
- 额定点(按参数推读):端子 **≈400 V**(2 mA × 200 kΩ)→ `AINn` 侧 **0.66 V**(2 mA × 330 Ω)。
**电流族 IA/IB/IC/IN——子板 CT:5 A/2.5 mA,输出侧负担电阻 68 Ω**:
- ADC 读的是负担电阻两端电压,所以这个"变比"是**带单位的比**:I端子 ÷ UAINn = 5 A ÷ (2.5 mA × 68 Ω) =
5 ÷ 0.17 = **29.4118 A/V**(= 匝比 2000 ÷ 68);与 V/V 无量纲量不可混写,进系数表须分注单位;
- 额定点:端子 **5 A** → `AINn` 侧 **0.17 V**。
**算术复核**:200000 ÷ 330 = 606.060606… ✓(用户给值 606.0606060606061);5 ÷ 0.17 = 29.41176470… ✓
(用户给值 29.41176470588235,与 2000 ÷ 68 同源)。两数与报参口径一致,未发现算误。
**②×③×④ 端到端标称系数**(③ 已定 1:1)——只作两点标定的初值与量级核对用,**ROM 不动**(ROM 出厂表
仍按 ② 引脚口径,§7.1 可评审结论 1):
| 族 | 转换器 | 端子域系数(标称) | 额定点码数(RMS) | 占转换器跨度 |
|---|---|---|---|---|
| 电压 UA/UN | TPAFE | 152.59 µV/码 × 606.06 = **92.48 mV/码** | 0.66 V ≈ 4325 码 | 10 V 跨度的 6.6 % |
| 电压 UB/UC | STM32 | 805.66 µV/码 × 606.06 = **488.28 mV/码** | 0.66 V ≈ 819 码 | 3.3 V 跨度的 20 % |
| 电流 IA | TPAFE | 152.59 µV/码 × 29.4118 A/V = **4.488 mA/码** | 0.17 V ≈ 1114 码 | 10 V 跨度的 1.7 % |
| 电流 IB/IC/IN | STM32 | 805.66 µV/码 × 29.4118 A/V = **23.70 mA/码** | 0.17 V ≈ 211 码 | 3.3 V 跨度的 5.2 % |
补一句:额定点正弦峰值 = RMS × √2(电压族 ≈0.93 V、电流族 ≈0.24 V),两片转换器的量程都装得下;STM32
五路交流负半周削到 0 的问题仍是 §7「前端偏置」行的 V0.1 既有口径,不是本节新发现。变比口径只圈电气 8 路,
温度与备用路不进 ④ 换算。
**eng 判定(「端子/子板变比确认」卡(#41)的完成判据)**:
- `eng = 1`(出端子二次值)两条件:④ 变比到手——**已满足**(本节,电压/电流两族);电气 8 路
`ADC_CAL_F_VALID` 全置位——**未满足**(`App/app/ui_data_feed.c` 的 `feed_eng()` 门,「两点标定与精度验收」卡承担)。
- 判定:**`eng` 保持 0**,输出单位仍是 ADC 引脚电压,M4 承诺边界不变。本节改变的是:两点标定从
「开不了工」变成「可开工」——端子侧参照已定死,本节标称系数即其起点。
**复核口径(别把本节数值当本板实测)**:
- 参数是铭牌/板面值:不含理想变压器偏差(励磁电流、绕组阻抗、负担误差),不含负担电阻容差,也不含逐路差
(电压 4 路共用 606.06、电流 4 路共用 29.4118,逐路真值以标定实测为准)。
- 下游机器面核对跟着在:两点标定的逐路实测系数吸收 ④ 段实际偏差;`App/algo/adc_cal.c` 合法带哨兵
(k ∉ ROM×[0.5, 2.0] → 回退 ROM)是「④ 数量级错了」的兜底。
- **本节标称系数是给「两点标定与精度验收」卡的输入,且带着两道存储口径题**(本卡不替它定案):
k 按 µV/码 int32 Q16 存储、上限 32767 µV/码(`docs/任务规划/数据可信.md` §4.1 的"远够"论断做在引脚域
假设上)——电压族端子域标称已越上限(92.48 mV/码 ≈ 92479 µV/码,UB/UC 达 488.28 mV/码 ≈ 488278 µV/码),
电流族两档(4488 / 23696 µV 等效)尚在带内;且合法带基准读 ROM 出厂表(现为引脚域系数),端子域 k
会被 [0.5, 2.0] 哨兵顶回。标定写入端子域系数之前,存储单位(或每路标度因子)与出厂表基准须一并换血,
否则正确的标定值也会被拒。
- 端子级上额定电压仍是独立动作:变比已从"没到手"变"到手",但"先量端子对地通断"的前置与风险次序不变
(`docs/任务规划/数据可信.md` §8),本卡不动高压。
---
## 8. 逐通道验证方法(上板自检口径)
@@ -191,7 +249,7 @@ STM32(U17)为 LQFP144 脚号。
1. **TPAFE 侧**:对目标 `AIN` 注入 1 V DC → 观察对应 `buf[i]` 变化(UA→`buf[6]`、UN→`buf[5]`、IA→`buf[2]`),同时 U3.14 `BUSY` 有脉冲;**语义与下标不符即映射错**。✅ **2026-10-27 已执行**(原 2026-10-23 挂账的"无执行记录"已消除;`docs/硬件平台/V0.0_网表详细分析报告.md` §5.1 第 6 条的同一验证随之关闭)。判据按已知电压注入验证的**不需要示波器**口径执行:① "`BUSY` 有脉冲"改用固件帧计数——注入前后 `tpafe5160_frame_seq()` 仍严格 1000 Hz 递增即等价;② 幅值判据改用万用表读注入点实际电压 + 同时读 `adc_input_raw()` 码值,三点线性拟合(R² ≥ 0.999)。
2. **STM32 侧**:对目标引脚(如 PC4=UB)注入 0.5 V → 读 `ADC_CHANNEL_14` 应变化;若不变而相邻通道变化 → 通道宏写错(见 §5 警告)。✅ **2026-10-27 已执行**(原 2026-10-10 的"尚未执行"已消除;当时台架只验证了"9 通道全部转换成功 + 零超时 + 互异非饱和 + 跨次开机读数不同",台架无信号源);映射的**代码侧**一致性有两道保证:① `App/algo/adc_input.c` 的 `k_adc_map[]` 与 CubeMX 标签(`ADC17_UB`=PC4 等)逐条对齐;② 开机自检 `adc_input_init()` 校验每个 STM32 语义通道都落在 `k_stm32_rank_ch[]` 扫描序列内(挡"映射到不扫描的通道 → 恒读陈旧值")。
3. **备用通道**:RESERVED 路不接入任何语义,UI 与上报里不得出现;若实测有读数漂移,只记录不消费。
4. **端子侧变比(2026-10-23 补,2026-10-27 收窄)**:上面 1/2 两条都只到 **ADC 引脚**。③ 段(`AINn` ↔ 转换器引脚)已由网表追线定死为 **1:1**(`ADCn` 节点无对地元件,拓扑图见 §7.1),**板内不再有未知比值**;剩下的未知量只有 ④ **子板/端子板变比**——它在仓库里没有任何文档给出(`docs/硬件平台/` 只有 `.tel` 网表与分析报告,无子板原理图)。故**不得**用"2:1 分压"换算出二次值;该变比由「端子/子板变比确认」实测确认。
4. **端子侧变比(2026-10-23 补,2026-10-27 收窄)**:上面 1/2 两条都只到 **ADC 引脚**。③ 段(`AINn` ↔ 转换器引脚)已由网表追线定死为 **1:1**(`ADCn` 节点无对地元件,拓扑图见 §7.1),**板内不再有未知比值**;剩下的未知量只有 ④ **子板/端子板变比**,已于 2026-11-06 按用户现场报参算定收口(电压族 606.06 : 1、电流族 29.4118 A/V,算式与复核边界见 §7.2;子板原理图仍不在仓库内,数值确认归两点标定)。故**不得**用"2:1 分压"换算出二次值;端子口径一律按 §7.1 分段表与 §7.2 登记写。
### 8.1 2026-10-27 实测记录(首次执行,六项判据全 PASS)
+1
View File
@@ -644,6 +644,7 @@ DISCONNECT 会被 `(void)` 丢掉。但 RECV_OK 是条件位(下轮补回)
| **E18** | **负向注入打靶 · 三轮**(注入代码不入库):① 吞掉 DISCONNECT(在 i104 的 200 ms accept 轮询窗内 RST);③ 绕过本层簿记直接 close 芯片空闲监听;⑤ 开盲区吞掉芯片自发的中断 + 等芯片真 CLOSED 再 open+listen | **①③⑤ 全部命中并救回**;①⑤ 的前提会被更快的消费者路径消解 → 常态 0 命中;⑤ 还要先越过芯片 `FIN_WAIT_2`(E15 的 2MSL 长尾,实测 ≈1 s) | §4.1.4 / §4.1.5:**三条均不可降级为只留痕**;⑤ 的**取消挂起 recv/send** 不可省 |
| **E19** | **`force open` 反事实 A/B**(本层已收口 CLOSED + 芯片停 `FIN_WAIT_2` `0x05/0x06` + **对端挂住不关** = 队头阻塞场景;A = 现状放行,B = 只留痕不放行) | **放行与不放行的端口恢复时刻同一分布** → 动作在全部可产现场景内无可测收益;真正兜住"监听器永久失效"的是 **D10 预算 + 形态④ 重新登记**。两条实测坑:① 本层直接改 `state` **不会**进沉降窗(窗只由 `net_listener_settle` 开启);② `relisten retry budget exhausted` 在此被稳定复现 = 对端不配合拆链的签名,**非回归** | §4.3:800 ms 上限降级为**只留痕**(`keep waiting` 只留首末、隔离标志不清 → 继续排渣) |
| **队头阻塞审计**(非实验编号) | `net_drop_conn` 收口后的时序由台架定案(探针 `e02_probe.py` 已删除,2026-11-04 随 :8888 退役,正文见 git 历史) | 对端配合(收到 FIN 后其内核 close):`TIME_WAIT` ~150 ms → 形态④ relisten,恢复全程 ~500 ms;对端内核存活但不 close:芯片停 `FIN_WAIT_2` 长尾,**监听恢复受限于对端 close** | §4.6 |
| **台架重验(#39 子项 B)**(2026-11-06) | 新负载剖面一整轮 30 min:SNTP 请求/退避(poll_min=1,无可达服务器)+ 持续 FTP 512KB + 周期 104 GI/COV + 7003 拉帧 10Hz。看门狗 `task stall` 0 条、复位 0 次、NAND `wdev.log` 当日零新增 STALL(独立佐证);880 次瞬时节拍抖动全部 <800 ms 自恢复、均发生在网络 relisten 瞬间(阈值下抖动,非饿死);7003 最差单轮 759 ms(<800 ms 线)、18000/18000 零错零超时;FTP 188/188 全过 | 8888 reconcile/relisten 突发源退役(#78)+ 异步断连收口后,新负载下 **uiTask ≥800 ms 饿死签名无触发源**——子项 B 完成判据(台架负载下不再出现目标饿死签名)本轮达成 | §4.6;§11.1;看门狗设计说明 §11.4 |
## 6. 红线(明确不做的事)
+7 -1
View File
@@ -853,9 +853,15 @@ static int sim_wave_seg_win(uint8_t a_idx, uint8_t a_ch, int16_t *a_codes,
return UI_WAVE_OK;
}
/* 录波通道假表(与真机 s_wave_ops 同形状六件) */
/* 函数功能:开页 / 空态再探盘作废钩子假桩(#93 F1:模拟器假表没有段表 /
* 段头缓存可作废,空做 = 行为不变;补这件与真机 s_wave_ops 同形状七件) void */
static void sim_wave_enter(void) {
}
/* 录波通道假表(与真机 s_wave_ops 同形状七件) */
static const ui_data_wave_ops_t s_wave_ops = {
sim_wave_manual_req,
sim_wave_enter,
sim_wave_seg_first,
sim_wave_seg_prev,
sim_wave_seg_next,