This commit is contained in:
Aiden
2026-05-13 18:59:20 +10:00
parent b9e76911bb
commit e03fb7da2a
13 changed files with 833 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
Sequence probe: 5 frames x 4 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 00 00 80 DA
FRAME 3: 00 00 B0 00 80 6A
FRAME 4: 00 00 00 00 80 DA
FRAME 5: 00 00 00 00 80 DA
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 1/4
18:47:29.233 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:47:29.233 RX group=1 frame=1 no RX bytes
18:47:29.576 TX group=1 frame=2 len=006 00 00 00 00 80 DA
18:47:29.576 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00
18:47:29.576 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 C0 40 30 6D 07 80 C0 40 30 6D
18:47:29.925 TX group=1 frame=3 len=006 00 00 B0 00 80 6A
18:47:29.925 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:47:30.271 TX group=1 frame=4 len=006 00 00 00 00 80 DA
18:47:30.271 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:47:30.615 TX group=1 frame=5 len=006 00 00 00 00 80 DA
18:47:30.615 RX group=1 frame=5 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 2/4
18:47:31.380 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:47:31.380 RX group=2 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:47:31.726 TX group=2 frame=2 len=006 00 00 00 00 80 DA
18:47:31.726 RX group=2 frame=2 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:47:32.101 TX group=2 frame=3 len=006 00 00 B0 00 80 6A
18:47:32.101 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:32.476 TX group=2 frame=4 len=006 00 00 00 00 80 DA
18:47:32.476 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:32.853 TX group=2 frame=5 len=006 00 00 00 00 80 DA
18:47:32.853 RX group=2 frame=5 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
GROUP 2 TAIL heartbeat-compatible RX: 17 bytes, offset 1, 2 frames + 5 bytes
BEGIN group 3/4
18:47:33.645 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:47:33.645 RX group=3 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:47:33.990 TX group=3 frame=2 len=006 00 00 00 00 80 DA
18:47:33.990 RX group=3 frame=2 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:47:34.367 TX group=3 frame=3 len=006 00 00 B0 00 80 6A
18:47:34.367 RX group=3 frame=3 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:34.741 TX group=3 frame=4 len=006 00 00 00 00 80 DA
18:47:34.741 RX group=3 frame=4 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:47:35.087 TX group=3 frame=5 len=006 00 00 00 00 80 DA
18:47:35.087 RX group=3 frame=5 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
GROUP 3 TAIL heartbeat-compatible RX: 17 bytes, offset 1, 2 frames + 5 bytes
BEGIN group 4/4
18:47:35.878 TX group=4 frame=1 len=006 00 00 00 00 80 DA
18:47:35.878 RX group=4 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:47:36.223 TX group=4 frame=2 len=006 00 00 00 00 80 DA
18:47:36.223 RX group=4 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:47:36.568 TX group=4 frame=3 len=006 00 00 B0 00 80 6A
18:47:36.568 RX group=4 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:47:36.914 TX group=4 frame=4 len=006 00 00 00 00 80 DA
18:47:36.914 RX group=4 frame=4 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:47:37.290 TX group=4 frame=5 len=006 00 00 00 00 80 DA
18:47:37.290 RX group=4 frame=5 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
GROUP 4 TAIL heartbeat-compatible RX: 17 bytes, offset 1, 2 frames + 5 bytes
Anomalies: 1

View File

@@ -0,0 +1,57 @@
Sequence probe: 5 frames x 4 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 00 00 80 DA
FRAME 3: 00 00 B5 00 80 6F
FRAME 4: 00 00 00 00 80 DA
FRAME 5: 00 00 00 00 80 DA
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 1/4
18:47:55.898 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:47:55.898 RX group=1 frame=1 no RX bytes
18:47:56.273 TX group=1 frame=2 len=006 00 00 00 00 80 DA
18:47:56.273 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00
18:47:56.273 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 40 40 30 ED 07 80 40 40 30 ED
18:47:56.651 TX group=1 frame=3 len=006 00 00 B5 00 80 6F
18:47:56.651 RX group=1 frame=3 heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes
18:47:57.025 TX group=1 frame=4 len=006 00 00 00 00 80 DA
18:47:57.025 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:57.400 TX group=1 frame=5 len=006 00 00 00 00 80 DA
18:47:57.400 RX group=1 frame=5 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
BEGIN group 2/4
18:47:58.163 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:47:58.163 RX group=2 frame=1 heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes
18:47:58.538 TX group=2 frame=2 len=006 00 00 00 00 80 DA
18:47:58.538 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:58.914 TX group=2 frame=3 len=006 00 00 B5 00 80 6F
18:47:58.914 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:59.290 TX group=2 frame=4 len=006 00 00 00 00 80 DA
18:47:59.290 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:47:59.666 TX group=2 frame=5 len=006 00 00 00 00 80 DA
18:47:59.666 RX group=2 frame=5 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
GROUP 2 TAIL heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
BEGIN group 3/4
18:48:00.431 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:48:00.431 RX group=3 frame=1 heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes
18:48:00.806 TX group=3 frame=2 len=006 00 00 00 00 80 DA
18:48:00.806 RX group=3 frame=2 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:48:01.180 TX group=3 frame=3 len=006 00 00 B5 00 80 6F
18:48:01.180 RX group=3 frame=3 heartbeat-compatible RX: 12 bytes, offset 1, 2 frames + 0 bytes
18:48:01.553 TX group=3 frame=4 len=006 00 00 00 00 80 DA
18:48:01.553 RX group=3 frame=4 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:48:01.898 TX group=3 frame=5 len=006 00 00 00 00 80 DA
18:48:01.898 RX group=3 frame=5 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
GROUP 3 TAIL heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 4/4
18:48:02.660 TX group=4 frame=1 len=006 00 00 00 00 80 DA
18:48:02.660 RX group=4 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:48:03.005 TX group=4 frame=2 len=006 00 00 00 00 80 DA
18:48:03.005 RX group=4 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:48:03.349 TX group=4 frame=3 len=006 00 00 B5 00 80 6F
18:48:03.349 RX group=4 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:48:03.694 TX group=4 frame=4 len=006 00 00 00 00 80 DA
18:48:03.694 RX group=4 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:48:04.039 TX group=4 frame=5 len=006 00 00 00 00 80 DA
18:48:04.039 RX group=4 frame=5 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
GROUP 4 TAIL heartbeat-compatible RX: 17 bytes, offset 1, 2 frames + 5 bytes
Anomalies: 1

View File

@@ -0,0 +1,32 @@
Sequence probe: 3 frames x 3 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 00 00 80 DA
FRAME 3: 00 00 A0 00 80 7A
BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
BEGIN group 1/3
18:49:55.415 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:49:55.415 RX group=1 frame=1 no RX bytes
18:49:57.374 TX group=1 frame=2 len=006 00 00 00 00 80 DA
18:49:57.374 RX group=1 frame=2 heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
18:49:59.331 TX group=1 frame=3 len=006 00 00 A0 00 80 7A
18:49:59.331 RX group=1 frame=3 ANOMALY 54 RX bytes; first mismatch at byte 36: got 07, heartbeat offset 0 expected 00
18:49:59.331 RX group=1 frame=3 raw 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 00 00 00 00 80 DA 07 80 68 40 30 C5 07 80 68 40 30 C5 07 80 68 40 30 C5
GROUP 1 TAIL ANOMALY 24 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
GROUP 1 TAIL raw 07 80 68 40 30 C5 07 80 68 40 30 C5 07 80 68 40 30 C5 07 80 68 40 30 C5
BEGIN group 2/3
18:50:00.796 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:50:00.796 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:50:02.756 TX group=2 frame=2 len=006 00 00 00 00 80 DA
18:50:02.756 RX group=2 frame=2 heartbeat-compatible RX: 36 bytes, offset 0, 6 frames + 0 bytes
18:50:04.713 TX group=2 frame=3 len=006 00 00 A0 00 80 7A
18:50:04.713 RX group=2 frame=3 heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
GROUP 2 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 3/3
18:50:06.178 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:50:06.178 RX group=3 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:50:08.134 TX group=3 frame=2 len=006 00 00 00 00 80 DA
18:50:08.134 RX group=3 frame=2 heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
18:50:10.094 TX group=3 frame=3 len=006 00 00 A0 00 80 7A
18:50:10.094 RX group=3 frame=3 heartbeat-compatible RX: 37 bytes, offset 0, 6 frames + 1 bytes
GROUP 3 TAIL heartbeat-compatible RX: 24 bytes, offset 1, 4 frames + 0 bytes
Anomalies: 2

View File

@@ -0,0 +1,53 @@
Sequence probe: 6 frames x 3 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 40 00 80 9A
FRAME 3: 00 00 00 00 80 DA
FRAME 4: 00 00 B0 00 80 6A
FRAME 5: 00 00 00 00 80 DA
FRAME 6: 00 00 C0 00 80 1A
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 1/3
18:49:28.409 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:49:28.409 RX group=1 frame=1 no RX bytes
18:49:28.876 TX group=1 frame=2 len=006 00 00 40 00 80 9A
18:49:28.876 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00
18:49:28.876 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 50 40 30 FD 07 80 50 40 30 FD
18:49:29.324 TX group=1 frame=3 len=006 00 00 00 00 80 DA
18:49:29.324 RX group=1 frame=3 ANOMALY 13 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
18:49:29.324 RX group=1 frame=3 raw 07 80 50 40 30 FD 00 00 00 00 80 DA 00
18:49:29.798 TX group=1 frame=4 len=006 00 00 B0 00 80 6A
18:49:29.798 RX group=1 frame=4 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:30.242 TX group=1 frame=5 len=006 00 00 00 00 80 DA
18:49:30.242 RX group=1 frame=5 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:30.687 TX group=1 frame=6 len=006 00 00 C0 00 80 1A
18:49:30.687 RX group=1 frame=6 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 2/3
18:49:31.754 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:49:31.754 RX group=2 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:49:32.198 TX group=2 frame=2 len=006 00 00 40 00 80 9A
18:49:32.198 RX group=2 frame=2 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:32.673 TX group=2 frame=3 len=006 00 00 00 00 80 DA
18:49:32.673 RX group=2 frame=3 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:33.120 TX group=2 frame=4 len=006 00 00 B0 00 80 6A
18:49:33.120 RX group=2 frame=4 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:33.596 TX group=2 frame=5 len=006 00 00 00 00 80 DA
18:49:33.596 RX group=2 frame=5 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:34.042 TX group=2 frame=6 len=006 00 00 C0 00 80 1A
18:49:34.042 RX group=2 frame=6 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
GROUP 2 TAIL heartbeat-compatible RX: 23 bytes, offset 1, 3 frames + 5 bytes
BEGIN group 3/3
18:49:35.137 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:49:35.137 RX group=3 frame=1 heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes
18:49:35.612 TX group=3 frame=2 len=006 00 00 40 00 80 9A
18:49:35.612 RX group=3 frame=2 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:36.057 TX group=3 frame=3 len=006 00 00 00 00 80 DA
18:49:36.057 RX group=3 frame=3 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:36.532 TX group=3 frame=4 len=006 00 00 B0 00 80 6A
18:49:36.532 RX group=3 frame=4 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:36.978 TX group=3 frame=5 len=006 00 00 00 00 80 DA
18:49:36.978 RX group=3 frame=5 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:37.452 TX group=3 frame=6 len=006 00 00 C0 00 80 1A
18:49:37.452 RX group=3 frame=6 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
GROUP 3 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 2

View File

@@ -0,0 +1,52 @@
Sequence probe: 6 frames x 3 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 A0 00 80 7A
FRAME 3: 00 00 00 00 80 DA
FRAME 4: 00 00 B0 00 80 6A
FRAME 5: 00 00 00 00 80 DA
FRAME 6: 00 00 B5 00 80 6F
BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
BEGIN group 1/3
18:49:02.262 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:49:02.262 RX group=1 frame=1 no RX bytes
18:49:02.738 TX group=1 frame=2 len=006 00 00 A0 00 80 7A
18:49:02.738 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
18:49:02.738 RX group=1 frame=2 raw 07 80 68 40 30 C5
18:49:03.185 TX group=1 frame=3 len=006 00 00 00 00 80 DA
18:49:03.185 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:49:03.659 TX group=1 frame=4 len=006 00 00 B0 00 80 6A
18:49:03.659 RX group=1 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:04.104 TX group=1 frame=5 len=006 00 00 00 00 80 DA
18:49:04.104 RX group=1 frame=5 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:04.580 TX group=1 frame=6 len=006 00 00 B5 00 80 6F
18:49:04.580 RX group=1 frame=6 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 2/3
18:49:05.646 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:49:05.646 RX group=2 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:49:06.092 TX group=2 frame=2 len=006 00 00 A0 00 80 7A
18:49:06.092 RX group=2 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:06.538 TX group=2 frame=3 len=006 00 00 00 00 80 DA
18:49:06.538 RX group=2 frame=3 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:06.983 TX group=2 frame=4 len=006 00 00 B0 00 80 6A
18:49:06.983 RX group=2 frame=4 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:07.429 TX group=2 frame=5 len=006 00 00 00 00 80 DA
18:49:07.429 RX group=2 frame=5 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:07.872 TX group=2 frame=6 len=006 00 00 B5 00 80 6F
18:49:07.872 RX group=2 frame=6 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
GROUP 2 TAIL heartbeat-compatible RX: 23 bytes, offset 1, 3 frames + 5 bytes
BEGIN group 3/3
18:49:08.969 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:49:08.969 RX group=3 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:49:09.412 TX group=3 frame=2 len=006 00 00 A0 00 80 7A
18:49:09.412 RX group=3 frame=2 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:49:09.856 TX group=3 frame=3 len=006 00 00 00 00 80 DA
18:49:09.856 RX group=3 frame=3 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:10.331 TX group=3 frame=4 len=006 00 00 B0 00 80 6A
18:49:10.331 RX group=3 frame=4 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
18:49:10.776 TX group=3 frame=5 len=006 00 00 00 00 80 DA
18:49:10.776 RX group=3 frame=5 heartbeat-compatible RX: 13 bytes, offset 0, 2 frames + 1 bytes
18:49:11.251 TX group=3 frame=6 len=006 00 00 B5 00 80 6F
18:49:11.251 RX group=3 frame=6 heartbeat-compatible RX: 11 bytes, offset 1, 1 frames + 5 bytes
GROUP 3 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 1

View File

@@ -0,0 +1,15 @@
Sequence probe: 3 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 00 00 80 DA
FRAME 3: 00 00 40 00 80 9A
BASELINE heartbeat-compatible RX: 29 bytes, offset 1, 4 frames + 5 bytes
BEGIN group 1/1
18:48:22.547 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:48:22.547 RX group=1 frame=1 no RX bytes
18:48:23.024 TX group=1 frame=2 len=006 00 00 00 00 80 DA
18:48:23.024 RX group=1 frame=2 ANOMALY 6 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
18:48:23.024 RX group=1 frame=2 raw 07 80 40 40 30 ED
18:48:23.503 TX group=1 frame=3 len=006 00 00 40 00 80 9A
18:48:23.503 RX group=1 frame=3 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 1

View File

@@ -0,0 +1,16 @@
Sequence probe: 3 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 00 00 80 DA
FRAME 3: 00 00 C0 00 80 1A
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 1/1
18:48:40.672 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:48:40.672 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:48:41.148 TX group=1 frame=2 len=006 00 00 00 00 80 DA
18:48:41.148 RX group=1 frame=2 ANOMALY 18 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00
18:48:41.148 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 40 40 30 ED 07 80 40 40 30 ED
18:48:41.629 TX group=1 frame=3 len=006 00 00 C0 00 80 1A
18:48:41.629 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
18:48:41.629 RX group=1 frame=3 raw 07 80 40 40 30 ED 00 00 00 00 80 DA 00 00 00 00 80 DA
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 2

View File

@@ -0,0 +1,11 @@
Sequence probe: 2 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 40 00 80 9A
BASELINE heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
BEGIN group 1/1
18:56:42.466 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:56:42.466 RX group=1 frame=1 heartbeat-compatible RX: 6 bytes, offset 0, 1 frames + 0 bytes
18:56:45.302 TX group=1 frame=2 len=006 00 00 40 00 80 9A
18:56:45.302 RX group=1 frame=2 heartbeat-compatible RX: 42 bytes, offset 0, 7 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,14 @@
Sequence probe: 3 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 A0 00 80 7A
FRAME 3: 00 00 A0 00 80 7A
BASELINE heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 1/1
18:55:50.709 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:55:50.709 RX group=1 frame=1 no RX bytes
18:55:53.516 TX group=1 frame=2 len=006 00 00 A0 00 80 7A
18:55:53.516 RX group=1 frame=2 heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
18:55:56.353 TX group=1 frame=3 len=006 00 00 A0 00 80 7A
18:55:56.353 RX group=1 frame=3 heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,11 @@
Sequence probe: 2 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 A0 00 80 7A
BASELINE heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 1/1
18:55:27.804 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:55:27.804 RX group=1 frame=1 no RX bytes
18:55:30.609 TX group=1 frame=2 len=006 00 00 A0 00 80 7A
18:55:30.609 RX group=1 frame=2 heartbeat-compatible RX: 42 bytes, offset 0, 7 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,11 @@
Sequence probe: 2 frames x 1 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 B0 00 80 6A
BASELINE heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 1/1
18:56:18.474 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:56:18.474 RX group=1 frame=1 no RX bytes
18:56:21.282 TX group=1 frame=2 len=006 00 00 B0 00 80 6A
18:56:21.282 RX group=1 frame=2 heartbeat-compatible RX: 48 bytes, offset 0, 8 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,46 @@
Sequence probe: 5 frames x 3 group(s) on COM5 at 38400 8N1
FRAME 1: 00 00 00 00 80 DA
FRAME 2: 00 00 A0 00 80 7A
FRAME 3: 00 00 00 00 80 DA
FRAME 4: 00 00 00 00 80 DA
FRAME 5: 00 00 00 00 80 DA
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
BEGIN group 1/3
18:55:00.199 TX group=1 frame=1 len=006 00 00 00 00 80 DA
18:55:00.199 RX group=1 frame=1 no RX bytes
18:55:00.815 TX group=1 frame=2 len=006 00 00 A0 00 80 7A
18:55:00.815 RX group=1 frame=2 ANOMALY 24 RX bytes; first mismatch at byte 6: got 07, heartbeat offset 0 expected 00
18:55:00.815 RX group=1 frame=2 raw 00 00 00 00 80 DA 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45
18:55:01.432 TX group=1 frame=3 len=006 00 00 00 00 80 DA
18:55:01.432 RX group=1 frame=3 ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
18:55:01.432 RX group=1 frame=3 raw 07 80 E8 40 30 45 00 00 00 00 80 DA 00 00 00 00 80 DA
18:55:02.049 TX group=1 frame=4 len=006 00 00 00 00 80 DA
18:55:02.049 RX group=1 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:02.666 TX group=1 frame=5 len=006 00 00 00 00 80 DA
18:55:02.666 RX group=1 frame=5 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
GROUP 1 TAIL heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 2/3
18:55:03.550 TX group=2 frame=1 len=006 00 00 00 00 80 DA
18:55:03.550 RX group=2 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:55:04.167 TX group=2 frame=2 len=006 00 00 A0 00 80 7A
18:55:04.167 RX group=2 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:04.784 TX group=2 frame=3 len=006 00 00 00 00 80 DA
18:55:04.784 RX group=2 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:05.400 TX group=2 frame=4 len=006 00 00 00 00 80 DA
18:55:05.400 RX group=2 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:06.017 TX group=2 frame=5 len=006 00 00 00 00 80 DA
18:55:06.017 RX group=2 frame=5 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
GROUP 2 TAIL heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
BEGIN group 3/3
18:55:06.871 TX group=3 frame=1 len=006 00 00 00 00 80 DA
18:55:06.871 RX group=3 frame=1 heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
18:55:07.487 TX group=3 frame=2 len=006 00 00 A0 00 80 7A
18:55:07.487 RX group=3 frame=2 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:08.103 TX group=3 frame=3 len=006 00 00 00 00 80 DA
18:55:08.103 RX group=3 frame=3 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:08.719 TX group=3 frame=4 len=006 00 00 00 00 80 DA
18:55:08.719 RX group=3 frame=4 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
18:55:09.338 TX group=3 frame=5 len=006 00 00 00 00 80 DA
18:55:09.338 RX group=3 frame=5 heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
GROUP 3 TAIL heartbeat-compatible RX: 12 bytes, offset 0, 2 frames + 0 bytes
Anomalies: 2

View File

@@ -4293,3 +4293,461 @@ Next branch worth testing:
- or combine heartbeat maintenance with the synthetic CALL path, to test - or combine heartbeat maintenance with the synthetic CALL path, to test
whether "host present" plus an event-path trigger behaves differently than whether "host present" plus an event-path trigger behaves differently than
"host present" plus a plain table query "host present" plus a plain table query
## Camera-Info-Stream Hypothesis Ladder
Goal:
- Test the idea that the panel wants more than a plain link heartbeat.
- Treat one frame family as "host present" and another as possible
camera-state/camera-info traffic.
- Check whether the transient heartbeat-induced `0x40` / `0xC0` family is a
different readable page or context, not just noise.
Working model:
1. host heartbeat says "I am here"
2. a second family says "here is current camera state"
3. only then does the panel become fully active
### CI1: Provoke `0x40` Family, Then Query `B0`
Use the same dense double-heartbeat pattern that previously provoked
`07 80 40 40 30 ED`, then immediately ask for a known `B0` block.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 B0 00 80 6A" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 4 --frame-interval 0.10 --read-after-frame 0.25 --read-after-group 0.5 --log captures/rcp-camerainfo-40-then-b0.txt
```
Question:
- Does the `0x40` family suppress `B0`, alter `B0`, or allow a different `B0`
response family than the normal `07 80 6C 40 30 C1`?
### CI2: Provoke `0x40` Family, Then Query `B5`
Same idea, but use the strongest discovery-like block we have.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 B5 00 80 6F" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 4 --frame-interval 0.10 --read-after-frame 0.25 --read-after-group 0.5 --log captures/rcp-camerainfo-40-then-b5.txt
```
Question:
- If `B5` is really a discovery/status block, does entering the heartbeat-driven
`0x40` state make it return a different page, or consume it entirely?
### CI3: Probe Commands Aligned With The Heartbeat-Induced Family
Try a simple `00 -> 40` and `00 -> C0` query again, but now with a small
heartbeat run-up first instead of a bare primer.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 40 00 80 9A" --read-after-frame 0.4 --read-after-group 1.0 --log captures/rcp-camerainfo-preheart-40.txt
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 C0 00 80 1A" --read-after-frame 0.4 --read-after-group 1.0 --log captures/rcp-camerainfo-preheart-c0.txt
```
Question:
- Do these commands return something closer to the transient `0x40` / `0xC0`
response families when the panel has just seen two host heartbeats?
### CI4: Sustained Mixed Stream, Status-Block Style
Instead of repeating one query, rotate through a small set of known readable
blocks while keeping heartbeat in the stream.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame "00 00 00 00 80 DA" --frame "00 00 B0 00 80 6A" --frame "00 00 00 00 80 DA" --frame "00 00 B5 00 80 6F" --repeat 3 --frame-interval 0.20 --read-after-frame 0.25 --read-after-group 0.8 --log captures/rcp-camerainfo-mixed-a0-b0-b5.txt
```
Question:
- Does a rotating "camera info block" stream behave differently from hammering a
single one-shot query?
### CI5: Sustained Mixed Stream, Heartbeat-Driven Family
Rotate heartbeat around `0x40`-family and normal query candidates to see
whether the panel prefers a page/state rhythm instead of a static query.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 40 00 80 9A" --frame "00 00 00 00 80 DA" --frame "00 00 B0 00 80 6A" --frame "00 00 00 00 80 DA" --frame "00 00 C0 00 80 1A" --repeat 3 --frame-interval 0.20 --read-after-frame 0.25 --read-after-group 0.8 --log captures/rcp-camerainfo-mixed-40-b0-c0.txt
```
Question:
- Does mixing the heartbeat-aligned family with a known readable block expose a
reusable page, a new response family, or any visible panel state change?
### CI6: Sparse Heartbeat Run-Up, Then `A0`
Try the same idea as the dense `0x40` trigger, but with slower heartbeat spacing
that previously nudged the `0xC0` family.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --repeat 3 --frame-interval 1.50 --read-after-frame 0.45 --read-after-group 1.0 --log captures/rcp-camerainfo-c0-then-a0.txt
```
Question:
- Does a slower heartbeat-derived state family behave differently from the dense
`0x40` case?
What to watch for:
- the panel stays out of `CONNECT NOT ACT` for the whole run
- a known readable block changes family or value fields
- a later query responds where it previously would not
- the transient `0x40` / `0xC0` family appears immediately before a different
stable block
- any lamp or display change beyond the usual timeout behavior
Recommended order:
1. `CI1`
2. `CI2`
3. `CI4`
4. `CI5`
5. `CI6`
### 2026-05-13 Camera-Info-Stream Result
Captures:
- `captures/rcp-camerainfo-40-then-b0.txt`
- `captures/rcp-camerainfo-40-then-b5.txt`
- `captures/rcp-camerainfo-preheart-40.txt`
- `captures/rcp-camerainfo-preheart-c0.txt`
- `captures/rcp-camerainfo-mixed-a0-b0-b5.txt`
- `captures/rcp-camerainfo-mixed-40-b0-c0.txt`
- `captures/rcp-camerainfo-c0-then-a0.txt`
User observation:
- In `CI6`, the panel appeared to enter `CONNECT NOT ACT` and then emit a
single latch/readable response afterward.
#### CI1: Provoke `0x40`/`0xC0`, Then Query `B0`
Observed result:
- Group 1:
- the second heartbeat produced `07 80 C0 40 30 6D`
- the following `B0` query produced only heartbeat-compatible RX
- Groups 2-4:
- no structured `B0` response
- all later frames stayed heartbeat-compatible
Read:
- The heartbeat-induced `0xC0` family did not open a new `B0` page.
- It appears to consume or displace the normal one-shot response opportunity.
#### CI2: Provoke `0x40`, Then Query `B5`
Observed result:
- Group 1:
- the second heartbeat produced `07 80 40 40 30 ED`
- the following `B5` query produced only heartbeat-compatible RX
- Groups 2-4:
- `B5` remained heartbeat-compatible only
Read:
- Same story as `CI1`: the heartbeat-driven family does not seem to lead into a
richer `B5` discovery page.
- It suppresses or replaces it.
#### CI3: Probe Commands Aligned With The Heartbeat-Induced Family
Observed result:
| Sequence | Result |
| --- | --- |
| double heartbeat, then `00 -> 40` | heartbeat-induced `07 80 40 40 30 ED`, then `00 -> 40` gave heartbeat only |
| double heartbeat, then `00 -> C0` | heartbeat-induced `07 80 40 40 30 ED`, then `00 -> C0` only drained more `07 80 40 40 30 ED` plus heartbeat |
Read:
- The pre-heartbeat `0x40` state does not make the explicit `40` or `C0`
commands bloom into a clear new readable block.
- The explicit commands mostly arrive after the transient state is already in
progress.
#### CI4: Sustained Mixed Stream, Status-Block Style
Observed result:
- Group 1:
- `A0` produced `07 80 68 40 30 C5`
- later `B0` and `B5` in the same mixed stream were heartbeat only
- Groups 2-3:
- `A0`, `B0`, and `B5` were all heartbeat-compatible only
Read:
- A rotating "camera info block" stream did not keep opening new readable
status pages.
- The first successful block still wins, then the rest are suppressed.
#### CI5: Sustained Mixed Stream, Heartbeat-Driven Family
Observed result:
- Group 1:
- `00 -> 40` produced `07 80 50 40 30 FD`
- later `B0` and `C0` in the same stream were heartbeat only
- Groups 2-3:
- all later frames were heartbeat-compatible only
Read:
- This confirms `00 -> 40` is a stable explicit query family in its own right.
- But, again, the first successful readable family suppresses later queries in
the same stream.
#### CI6: Sparse Heartbeat Run-Up, Then `A0`
Observed result:
- Group 1:
- two widely spaced heartbeat frames stayed heartbeat-compatible
- the later `A0` produced a delayed `07 80 68 40 30 C5` burst
- Groups 2-3:
- the same pattern returned heartbeat-compatible RX only
Read:
- This matches the user's observation well: a slow run-up can leave the panel
visibly in `CONNECT NOT ACT`, yet a later single readable/latch response can
still occur afterward.
- That suggests the visible display state and the one-shot readable window are
related, but not identical.
- A panel that has already fallen into `CONNECT NOT ACT` may still accept one
later readable query under the right timing.
Overall interpretation:
- The "camera info stream" hypothesis is not wrong, but this particular test set
did not show a sustained multi-block camera-state feed.
- The heartbeat-induced `0x40` / `0xC0` family is real, but it mostly acts like
a competing one-shot response family, not a gateway into a larger page.
- Mixed streams still collapse into "first successful block wins."
- The cleanest new points are:
- `00 -> 40` is a real explicit readable family: `07 80 50 40 30 FD`
- heartbeat cadence can provoke `0x40` / `0xC0` families without an explicit
query
- a visible `CONNECT NOT ACT` state does not completely forbid one later
readable/latch response
Next branch worth testing:
- isolate the delayed-after-`CONNECT NOT ACT` case from `CI6` with a small
timing ladder around the final `A0`
- compare `A0`, `B0`, and `40` after a deliberate wait-until-`CONNECT NOT ACT`
phase
- test whether the `0x40` / `0xC0` families are better thought of as alternate
readable pages rather than camera-info keepalives
## `CONNECT NOT ACT` vs Latch-State Decoupling Test
Goal:
- Prove that the visible `CONNECT NOT ACT` state and the one-shot readable/latch
state are related, but not the same thing.
- Show one case where the latch is spent even though the panel does **not**
enter `CONNECT NOT ACT`.
- Show another case where the panel **does** enter `CONNECT NOT ACT` and can
still produce one later readable response.
Interpretation target:
- If both paths happen, the LCD state is not a direct indicator of whether the
one-shot readable window is still available.
### DL1: Latch Spent While `CONNECT NOT ACT` Stays Away
This is the "no visible timeout, but latch already consumed" proof.
Watch the LCD throughout. The expected result is that the panel stays out of
`CONNECT NOT ACT` while running.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --frame "00 00 00 00 80 DA" --repeat 3 --frame-interval 0.25 --read-after-frame 0.35 --read-after-group 0.5 --log captures/rcp-decouple-no-connectnotact-a0.txt
```
What proves decoupling:
- group 1: `A0` responds
- later groups: `A0` does not respond
- LCD never enters `CONNECT NOT ACT` during the run
That shows the latch can be spent even while the display does not show the
timeout/not-active state.
### DL2: Deliberate `CONNECT NOT ACT`, Then Late `A0`
This is the "visible timeout, but one late readable response still exists"
proof.
Method:
- power-cycle
- watch for the panel to show `CONNECT NOT ACT` between the first heartbeat and
the later `A0`
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame-interval 2.50 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-connectnotact-then-a0.txt
```
What proves decoupling:
- the panel visibly enters `CONNECT NOT ACT`
- the later `A0` still returns `07 80 68 40 30 C5`
That shows the visible `CONNECT NOT ACT` state does not automatically mean the
readable/latch opportunity is gone.
### DL3: Deliberate `CONNECT NOT ACT`, Then Two Late `A0` Queries
This tightens `DL2` by checking whether the first late query can consume the
remaining one-shot readable window while the LCD state stays the same.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame "00 00 A0 00 80 7A" --frame-interval 2.50 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-connectnotact-then-a0-a0.txt
```
What proves decoupling:
- panel enters `CONNECT NOT ACT`
- first late `A0` responds
- second late `A0` does not
- LCD remains in the same visible state
That shows the latch/readable state can change while the display state does not.
### DL4: Compare Late `A0`, `B0`, and `40` After `CONNECT NOT ACT`
This checks whether only some readable families survive the visible timeout
state.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 B0 00 80 6A" --frame-interval 2.50 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-connectnotact-then-b0.txt
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 40 00 80 9A" --frame-interval 2.50 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-connectnotact-then-40.txt
```
Useful outcomes:
- only `A0` responds late:
the post-timeout window may be family-specific
- `A0`, `B0`, and `40` all respond late:
the timeout state is clearly not the same as the latch state
- none respond late:
the `CI6` late response was timing-sensitive and needs a tighter delay ladder
### DL5: Tight Delay Ladder Around Late `A0`
If `DL2` or `DL3` looks close but inconsistent, bracket the timeout edge.
```powershell
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame-interval 2.00 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-delay-2000ms-a0.txt
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame-interval 2.25 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-delay-2250ms-a0.txt
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame-interval 2.50 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-delay-2500ms-a0.txt
python scripts/serial_sequence_probe.py --port COM5 --prompt --pre-read 1.0 --frame "00 00 00 00 80 DA" --frame "00 00 A0 00 80 7A" --frame-interval 2.75 --read-after-frame 0.30 --read-after-group 1.0 --log captures/rcp-decouple-delay-2750ms-a0.txt
```
Recommended order:
1. `DL1`
2. `DL2`
3. `DL3`
4. `DL4`
5. `DL5` only if `DL2`/`DL3` are close but inconsistent
### 2026-05-13 `CONNECT NOT ACT` vs Latch-State Decoupling Result
Captures:
- `captures/rcp-decouple-no-connectnotact-a0.txt`
- `captures/rcp-decouple-connectnotact-then-a0.txt`
- `captures/rcp-decouple-connectnotact-then-a0-a0.txt`
User LCD observation:
- `DL1`: the panel never presented `CONNECT NOT ACT` while the script was
running.
- `DL2` and `DL3`: the panel presented `CONNECT NOT ACT` at the start of the
script.
#### DL1: Latch Spent While `CONNECT NOT ACT` Stays Away
Observed result:
- Group 1:
- `A0` produced a readable block, but this run returned
`07 80 E8 40 30 45` rather than `07 80 68 40 30 C5`
- Groups 2-3:
- `A0` produced heartbeat-compatible RX only
- LCD:
- no `CONNECT NOT ACT` while the script was active
Read:
- This is strong evidence for decoupling in one direction:
the readable/latch state can be consumed while the panel does **not** show
`CONNECT NOT ACT`.
- It also reinforces that the `A0` family can vary between at least `68` and
`E8` forms depending on context/timing.
#### DL2: Deliberate `CONNECT NOT ACT`, Then Late `A0`
Observed result:
- The panel showed `CONNECT NOT ACT` early in the run.
- The later `A0` query produced heartbeat-compatible RX only.
- No delayed `A0` readable block appeared at this exact timing.
Read:
- At a `2.50 s` gap in this two-frame form, visible `CONNECT NOT ACT` did not
guarantee a late readable response.
- This weakens the simple "enter `CONNECT NOT ACT`, then `A0` always still
works once" idea.
#### DL3: Deliberate `CONNECT NOT ACT`, Then Two Late `A0` Queries
Observed result:
- The panel showed `CONNECT NOT ACT` early in the run.
- Both later `A0` queries produced heartbeat-compatible RX only.
- No readable block appeared on either late `A0`.
Read:
- This does not provide the hoped-for second half of the decoupling proof.
- Instead, it says that once the panel has visibly entered `CONNECT NOT ACT` in
this specific timing pattern, the late `A0` opportunity may already be gone or
may require narrower timing than `2.50 s`.
Overall interpretation:
- We now have solid evidence for one half of the claim:
`CONNECT NOT ACT` is **not required** for the latch/readable state to be
consumed.
- We do **not** yet have equally solid evidence for the other half at this
timing:
a visible `CONNECT NOT ACT` state did not still yield a late `A0` response in
`DL2` or `DL3`.
- So the current safest statement is:
the LCD state and the latch/readable state are not directly coupled, but the
exact post-timeout behavior is more timing-sensitive than the earlier `CI6`
observation first suggested.
Best next move:
- run `DL4` and then a tight `DL5` delay bracket
- especially around `2.00 s`, `2.25 s`, `2.50 s`, and `2.75 s`
- because the difference between the earlier `CI6` late hit and these no-hit
decoupling runs is now most likely timing, framing shape, or both