From 1e2604953d01383925b2b1e07fa1220c44d852c8 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Wed, 11 Nov 2026 21:44:24 +0800 Subject: [PATCH] =?UTF-8?q?docs(bt):=20M54=20r1=20=E8=AF=84=E5=AE=A1=20P2?= =?UTF-8?q?=20=E2=80=94=20=E5=85=A5=E7=AB=99=20hcitool=20con=20=E6=A0=B7?= =?UTF-8?q?=E6=9C=AC=E5=86=85=E8=81=94=20od=20-c=20=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E6=8D=95=E8=8E=B7=EF=BC=88=E4=BB=85=E6=B3=A8=E9=87=8A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 评审指出 S_CON_INBOUND 注释声称「od -c 逐字节校对」,但仓库与设备上都找不到 那份捕获件,traceability 不可审计。把 2026-11-11 20:53(0.8.50 / 10.58.215.50 / 耳机自主回连现场)`hcitool con 2>&1 | od -c` 的原样输出内联进注释块,并写清 逐字节读法、80 字节/末偏移 0000120 的自校验、以及复核命令(printf | od -c)。 同时如实注明该次采集未单独落盘(devdocs/evidence/ 只有 m50 那一份),出站样本 仍指 devdocs/evidence/m50_bt_result_20261111.log:7-8 的 cat -A 证据。 仅注释变化:meow_netmgrd.c 一字未动,测试断言未动(宿主单测 206 ok / 0 FAIL, 连跑 3 次 ALL PASS)。 --- patch_v2/meow_netmgrd/test_bt_ctl.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/patch_v2/meow_netmgrd/test_bt_ctl.c b/patch_v2/meow_netmgrd/test_bt_ctl.c index f39c223..f4ae9c3 100644 --- a/patch_v2/meow_netmgrd/test_bt_ctl.c +++ b/patch_v2/meow_netmgrd/test_bt_ctl.c @@ -44,10 +44,28 @@ static const char *S_PLAIN_BLOCK = "Device 33:DE:2E:21:AD:30 MOONDROP Pudding\n" static const char *S_TRUNC_MAC = "\033[0;94m[bluetooth]\033[0m# \r\033[K[NEW] Device 33:DE:2E:21:A"; -/* ---- 真机 `hcitool con` 原始字节(od -c 逐字节校对,行首 TAB、行尾一个空格 + \n)---- - * S_CON_INBOUND:0.8.50 设备 10.58.215.50,2026-11-11 20:53,**耳机自主回连**(M54 复现现场): - * od -c → "Connections:\n\t> ACL 33:DE:2E:21:AD:30 handle 11 state 1 lm MASTER AUTH ENCRYPT \n" - * S_CON_OUTBOUND:devdocs/evidence/m50_bt_result_20261111.log:8(同机同耳机,本端发起) */ +/* ---- 真机 `hcitool con` 原始字节样本(两条都可从仓库内自证)---- + * + * S_CON_INBOUND —— 0.8.50 / 设备 10.58.215.50 / 2026-11-11 20:53 / **耳机自主回连**现场, + * `hcitool con 2>&1 | od -c` 的原样输出(每行 16 字节;偏移是八进制,末行 0000120 = 80 字节, + * 与本字面量长度一致;每字节右侧的空格是 od 的字段填充,不是数据): + * 0000000 C o n n e c t i o n s : \n \t > + * 0000020 A C L 3 3 : D E : 2 E : 2 1 : + * 0000040 A D : 3 0 h a n d l e 1 1 + * 0000060 s t a t e 1 l m M A S T E + * 0000100 R A U T H E N C R Y P T \n + * 0000120 + * 逐字节读法:`Connections:` + LF + TAB + `>` + SPC + `ACL` + SPC + 17 字符 MAC + + * ` handle 11 ` + `state 1 lm MASTER AUTH ENCRYPT` + SPC + LF ⇒ 字面量见下方 S_CON_INBOUND。 + * 复核方法:`printf '<上面的字面量>' | od -c`,与本块除「行尾字段填充空格」外逐行相同 + * (本块为免源码尾随空格删掉了那点填充;数据以 80 字节 / 末偏移 0000120 为准)。 + * 这次采集没有单独落盘成证据文件(`devdocs/evidence/` 只有 m50 那一份),上面这块 od 输出 + * 就是它的原样记录;同一条命令的「`Connections:` 表头 + 行首 TAB + 行尾 SPC 后 LF」框架字节 + * 可与 S_CON_OUTBOUND 的来源(下面那份 `cat -A` 证据)互相印证。 + * + * S_CON_OUTBOUND —— devdocs/evidence/m50_bt_result_20261111.log:7-8(同机同耳机,本端发起)。 + * `cat -A` 核为 `Connections:$` + `^I< ACL 33:DE:2E:21:AD:30 handle 0 state 5 lm MASTER $`, + * 与下面的字面量逐字节一致(行首 TAB、行尾一个空格再 LF)。 */ static const char *S_CON_INBOUND = "Connections:\n" "\t> ACL 33:DE:2E:21:AD:30 handle 11 state 1 lm MASTER AUTH ENCRYPT \n";