This commit is contained in:
Aiden
2026-05-13 15:15:09 +10:00
parent 025bd0511d
commit 5b4179d341
10 changed files with 161 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
Primer/candidate sweep: primer 00 00 00 00 80 DA, 3 candidates on COM5 at 38400 8N1
CANDIDATE 0xA0 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:07:49.552 TX primer frame 006 00 00 00 00 80 DA
15:07:50.163 TX candidate 0xA0 frame 006 00 00 A0 00 80 7A
15:07:50.163 CANDIDATE 0xA0 ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:07:50.163 CANDIDATE 0xA0 raw 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45 07 80 E8 40 30 45
Completed candidate 1/3
CANDIDATE 0xB8 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:08:02.305 TX primer frame 006 00 00 00 00 80 DA
15:08:02.918 TX candidate 0xB8 frame 006 00 00 B8 00 80 62
15:08:02.918 CANDIDATE 0xB8 ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:08:02.918 CANDIDATE 0xB8 raw 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3
Completed candidate 2/3
CANDIDATE 0xBC BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:08:15.181 TX primer frame 006 00 00 00 00 80 DA
15:08:15.789 TX candidate 0xBC frame 006 00 00 BC 00 80 66
15:08:15.789 CANDIDATE 0xBC ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:08:15.789 CANDIDATE 0xBC raw 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2
Completed candidate 3/3
Anomalies: 3

View File

@@ -0,0 +1,7 @@
Primer/candidate sweep: primer 00 00 9F 00 80 45, 1 candidates on COM5 at 38400 8N1
CANDIDATE 0xA0 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
15:08:49.396 TX primer frame 006 00 00 9F 00 80 45
15:08:50.008 TX candidate 0xA0 frame 006 00 00 A0 00 80 7A
15:08:50.008 CANDIDATE 0xA0 heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Completed candidate 1/1
Anomalies: 0

View File

@@ -0,0 +1,8 @@
Primer/candidate sweep: primer 00 00 AF 00 80 75, 1 candidates on COM5 at 38400 8N1
CANDIDATE 0xB0 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:10:09.167 TX primer frame 006 00 00 AF 00 80 75
15:10:09.777 TX candidate 0xB0 frame 006 00 00 B0 00 80 6A
15:10:09.777 CANDIDATE 0xB0 ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:10:09.777 CANDIDATE 0xB0 raw 07 80 6C 40 30 C1 07 80 6C 40 30 C1 07 80 6C 40 30 C1 07 80 6C 40 30 C1 07 80 6C 40 30 C1 07 80 6C 40 30 C1 07 80 6C 40 30 C1
Completed candidate 1/1
Anomalies: 1

View File

@@ -0,0 +1,8 @@
Primer/candidate sweep: primer 00 00 B7 00 80 6D, 1 candidates on COM5 at 38400 8N1
CANDIDATE 0xB8 BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:09:15.729 TX primer frame 006 00 00 B7 00 80 6D
15:09:16.340 TX candidate 0xB8 frame 006 00 00 B8 00 80 62
15:09:16.340 CANDIDATE 0xB8 ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:09:16.340 CANDIDATE 0xB8 raw 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3 07 80 6E 40 30 C3
Completed candidate 1/1
Anomalies: 1

View File

@@ -0,0 +1,8 @@
Primer/candidate sweep: primer 00 00 BB 00 80 61, 1 candidates on COM5 at 38400 8N1
CANDIDATE 0xBC BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:09:47.430 TX primer frame 006 00 00 BB 00 80 61
15:09:48.040 TX candidate 0xBC frame 006 00 00 BC 00 80 66
15:09:48.040 CANDIDATE 0xBC ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:09:48.040 CANDIDATE 0xBC raw 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2 07 80 6F 40 30 C2
Completed candidate 1/1
Anomalies: 1

View File

@@ -0,0 +1,10 @@
Direct response sweep: 3 frames x 1 cycles (3 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:10:35.107 TX cycle=1 p1=0x00 p2=0x00 cmd=0x90 state=0x00 value=0x80 frame 006 00 00 90 00 80 4A
15:10:35.932 TX cycle=1 p1=0x00 p2=0x00 cmd=0x9F state=0x00 value=0x80 frame 006 00 00 9F 00 80 45
15:10:36.756 TX cycle=1 p1=0x00 p2=0x00 cmd=0xA0 state=0x00 value=0x80 frame 006 00 00 A0 00 80 7A
15:10:36.756 ANOMALY 24 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
15:10:36.756 RX 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
FINAL ANOMALY 42 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
FINAL 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 07 80 68 40 30 C5 00 00 00 00 80 DA 00 00 00 00 80 DA
Anomalies: 1

View File

@@ -0,0 +1,5 @@
Direct response sweep: 1 frames x 1 cycles (1 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes
15:11:06.315 TX cycle=1 p1=0x00 p2=0x00 cmd=0xA0 state=0x00 value=0x80 frame 006 00 00 A0 00 80 7A
FINAL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,5 @@
Direct response sweep: 1 frames x 1 cycles (1 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:11:25.737 TX cycle=1 p1=0x00 p2=0x00 cmd=0xB8 state=0x00 value=0x80 frame 006 00 00 B8 00 80 62
FINAL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
Anomalies: 0

View File

@@ -0,0 +1,5 @@
Direct response sweep: 1 frames x 1 cycles (1 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
15:11:45.976 TX cycle=1 p1=0x00 p2=0x00 cmd=0xBC state=0x00 value=0x80 frame 006 00 00 BC 00 80 66
FINAL heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
Anomalies: 0

View File

@@ -2253,3 +2253,88 @@ python scripts/serial_direct_response_sweep.py --port COM5 --commands 0xBC --sta
```
Power-cycle before each single-frame control.
### 2026-05-13 Context Selector Dataset Results
New captures:
- `captures/rcp-context-selector-00-a0-b8-bc.txt`
- `captures/rcp-context-selector-9f-a0.txt`
- `captures/rcp-context-selector-b7-b8.txt`
- `captures/rcp-context-selector-bb-bc.txt`
- `captures/rcp-context-selector-af-b0.txt`
- `captures/rcp-context-seq-90-9f-a0.txt`
- `captures/rcp-context-single-a0.txt`
- `captures/rcp-context-single-b8.txt`
- `captures/rcp-context-single-bc.txt`
Observed results:
| Test | Sequence | Observed response |
| --- | --- | --- |
| CS1 | `00 -> A0` | `07 80 E8 40 30 45` |
| CS1 | `00 -> B8` | `07 80 6E 40 30 C3` |
| CS1 | `00 -> BC` | `07 80 6F 40 30 C2` |
| CS2 | `9F -> A0` | heartbeat only |
| CS2 | `B7 -> B8` | `07 80 6E 40 30 C3` |
| CS2 | `BB -> BC` | `07 80 6F 40 30 C2` |
| CS2 | `AF -> B0` | `07 80 6C 40 30 C1` |
| CS3 | `90 -> 9F -> A0` | `07 80 68 40 30 C5` |
| Single-frame control | `A0` | heartbeat only |
| Single-frame control | `B8` | heartbeat only |
| Single-frame control | `BC` | heartbeat only |
Important comparison against earlier sweeps:
| Selected query | Earlier primer sweep response | New `00 -> query` response |
| ---: | --- | --- |
| `A0` | `07 80 68 40 30 C5` | `07 80 E8 40 30 45` |
| `B8` | `07 80 EE 40 30 43` | `07 80 6E 40 30 C3` |
| `BC` | `07 80 EF 40 30 42` | `07 80 6F 40 30 C2` |
Interpretation:
- Single `A0`, `B8`, and `BC` frames after boot produced heartbeat only, so
these responses require prior host traffic.
- The response is not determined only by the selected query command. The same
selected query can produce different response blocks in different setup
contexts.
- `B7 -> B8` and `BB -> BC` reproduced the alternate `B8`/`BC` responses seen
in the paused direct sweep.
- `90 -> 9F -> A0` reproduced the earlier `A0` response
`07 80 68 40 30 C5`, while `9F -> A0` alone produced no response.
- `00 -> A0` now produced the alternate `A0` response
`07 80 E8 40 30 45`, so the `00` first frame is not always a simple
deterministic "generic primer" in the current bench state.
- The evidence now favors a stateful/page-sensitive discovery model rather than
a single fixed primer model.
Working model after these datasets:
```text
Host sends one or more setup/selector frames.
RCP arms one readable response.
The next selected query returns a block from the currently selected page/state.
After that response, the RCP latches until power cycle or an unknown reset/state
advance command.
```
Recommended next confirmation:
1. Repeat `00 -> A0`, `00 -> B8`, and `00 -> BC` once more after clean power
cycles to see whether the alternate page is now stable.
2. Repeat `90 -> 9F -> A0` once more to confirm the earlier page can be selected
reliably.
3. Test whether `90 -> A0` alone selects the earlier page, or whether `9F` is
also required.
4. Test whether `00 -> 9F -> A0` behaves like `90 -> 9F -> A0`, which would
suggest `9F` is the real selector and `90` is only a setup/arming frame.
Suggested commands:
```powershell
python scripts/serial_primer_candidate_sweep.py --port COM5 --primer-command 0x00 --candidates "0xA0 0xB8 0xBC" --prompt-power-cycle --log captures/rcp-context-repeat-00-a0-b8-bc.txt
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x90 0x9F 0xA0" --states 0x00 --values 0x80 --settle 3 --after-each 0.8 --after 3 --log captures/rcp-context-repeat-90-9f-a0.txt
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x90 0xA0" --states 0x00 --values 0x80 --settle 3 --after-each 0.8 --after 3 --log captures/rcp-context-seq-90-a0.txt
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0x9F 0xA0" --states 0x00 --values 0x80 --settle 3 --after-each 0.8 --after 3 --log captures/rcp-context-seq-00-9f-a0.txt
```