Query response, one way,
This commit is contained in:
@@ -1150,3 +1150,266 @@ python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB1-0xB2
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB2-0xB3" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b2-b3.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xAF-0xB0" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-af-b0.txt
|
||||
```
|
||||
|
||||
### 2026-05-13 Nearby Pair Results
|
||||
|
||||
Captures:
|
||||
|
||||
- `captures/rcp-powercycle-pair-af-b0.txt`
|
||||
- `captures/rcp-powercycle-pair-b1-b2.txt`
|
||||
- `captures/rcp-powercycle-pair-b2-b3.txt`
|
||||
|
||||
Each test was run after a panel power cycle.
|
||||
|
||||
| Host pair | Second frame window | RCP response |
|
||||
| --- | --- | --- |
|
||||
| `AF -> B0` | `00 00 B0 00 80 6A` | `07 80 6C 60 30 E1` repeated |
|
||||
| `B1 -> B2` | `00 00 B2 00 80 68` | `07 80 36 10 0C F7` repeated |
|
||||
| `B2 -> B3` | `00 00 B3 00 80 69` | `07 80 36 10 2C D7` repeated |
|
||||
|
||||
Previously confirmed:
|
||||
|
||||
| Host pair | Second frame window | RCP response |
|
||||
| --- | --- | --- |
|
||||
| `B0 -> B1` | `00 00 B1 00 80 6B` | `07 80 6C 20 D8 49` repeated |
|
||||
|
||||
Checksum checks:
|
||||
|
||||
- `07 80 6C 60 30 E1`: checksum valid.
|
||||
- `07 80 36 10 0C F7`: checksum valid.
|
||||
- `07 80 36 10 2C D7`: checksum valid.
|
||||
|
||||
Interpretation:
|
||||
|
||||
- The RCP responds to multiple adjacent two-frame host sequences in the
|
||||
`AF-B3` region, not only `B0 -> B1`.
|
||||
- The response appears in the read window after the second frame of each pair.
|
||||
- The response payload changes by pair, which suggests these are real command
|
||||
queries or status reads rather than a generic link-present acknowledgement.
|
||||
- The repeated response pattern still returns to the normal heartbeat afterward.
|
||||
|
||||
Emerging map:
|
||||
|
||||
| Host sequence | RCP response fields |
|
||||
| --- | --- |
|
||||
| `AF -> B0` | `p1=07 p2=80 cmd=6C state=60 value=30 checksum=E1` |
|
||||
| `B0 -> B1` | `p1=07 p2=80 cmd=6C state=20 value=D8 checksum=49` |
|
||||
| `B1 -> B2` | `p1=07 p2=80 cmd=36 state=10 value=0C checksum=F7` |
|
||||
| `B2 -> B3` | `p1=07 p2=80 cmd=36 state=10 value=2C checksum=D7` |
|
||||
|
||||
Recommended next tests:
|
||||
|
||||
Power-cycle between each. First continue the adjacent-pair map:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB3-0xB4" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b3-b4.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB4-0xB5" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b4-b5.txt
|
||||
```
|
||||
|
||||
Then test whether adjacency and order matter:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB0 0xB2" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b0-b2-skip.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB1 0xB0" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b1-b0-reverse.txt
|
||||
```
|
||||
|
||||
### 2026-05-13 Additional Pair/Control Results
|
||||
|
||||
User observation:
|
||||
|
||||
- All tests still showed `CONNECT NOT ACT` on the RCP/CCU screen, with no other
|
||||
visible state change.
|
||||
|
||||
Serial captures:
|
||||
|
||||
- `captures/rcp-powercycle-pair-b3-b4.txt`
|
||||
- `captures/rcp-powercycle-pair-b4-b5.txt`
|
||||
- `captures/rcp-powercycle-pair-b0-b2-skip.txt`
|
||||
- `captures/rcp-powercycle-pair-b1-b0-reverse.txt`
|
||||
|
||||
Each test was run after a panel power cycle.
|
||||
|
||||
| Host pair | Second frame window | RCP response |
|
||||
| --- | --- | --- |
|
||||
| `B3 -> B4` | `00 00 B4 00 80 6E` | `07 80 6D 40 30 C0` repeated |
|
||||
| `B4 -> B5` | `00 00 B5 00 80 6F` | `07 80 6D 20 D8 48` repeated |
|
||||
| `B0 -> B2` | `00 00 B2 00 80 68` | `07 80 36 10 0C F7` repeated |
|
||||
| `B1 -> B0` | `00 00 B0 00 80 6A` | `07 80 6C 40 30 C1` repeated |
|
||||
|
||||
Interpretation:
|
||||
|
||||
- The screen state remains `CONNECT NOT ACT`, but pin 4 responses are changing
|
||||
in a structured, checksum-valid way.
|
||||
- The skip test `B0 -> B2` produced the same response as `B1 -> B2`, so the
|
||||
second command may be the main selector once any valid priming frame is sent.
|
||||
- The reverse test `B1 -> B0` also produced a valid response, so strict
|
||||
ascending adjacency is not required.
|
||||
- Current model: a first host frame primes/enters a response mode, and the
|
||||
second host frame selects a status/query response.
|
||||
|
||||
Expanded observed response map:
|
||||
|
||||
| Second host command | Observed response(s) |
|
||||
| ---: | --- |
|
||||
| `B0` | `07 80 6C 60 30 E1` after `AF -> B0`; `07 80 6C 40 30 C1` after `B1 -> B0` |
|
||||
| `B1` | `07 80 6C 20 D8 49` after `B0 -> B1` |
|
||||
| `B2` | `07 80 36 10 0C F7` after `B1 -> B2` and `B0 -> B2` |
|
||||
| `B3` | `07 80 36 10 2C D7` after `B2 -> B3` |
|
||||
| `B4` | `07 80 6D 40 30 C0` after `B3 -> B4` |
|
||||
| `B5` | `07 80 6D 20 D8 48` after `B4 -> B5` |
|
||||
|
||||
Recommended next tests:
|
||||
|
||||
Power-cycle between each. Test whether a generic primer plus selected second
|
||||
command is enough:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB0" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b0.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB2" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b2.txt
|
||||
```
|
||||
|
||||
Then map the next selected second commands:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB5-0xB6" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b5-b6.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0xB6-0xB7" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-pair-b6-b7.txt
|
||||
```
|
||||
|
||||
### 2026-05-13 Generic Primer and B6-B7 Results
|
||||
|
||||
Captures:
|
||||
|
||||
- `captures/rcp-powercycle-primer-00-b0.txt`
|
||||
- `captures/rcp-powercycle-primer-00-b2.txt`
|
||||
- `captures/rcp-powercycle-pair-b5-b6.txt`
|
||||
- `captures/rcp-powercycle-pair-b6-b7.txt`
|
||||
|
||||
Each test was run after a panel power cycle.
|
||||
|
||||
| Host pair | Second frame window | RCP response |
|
||||
| --- | --- | --- |
|
||||
| `00 -> B0` | `00 00 B0 00 80 6A` | `07 80 6C 40 30 C1` repeated |
|
||||
| `00 -> B2` | `00 00 B2 00 80 68` | `07 80 36 10 0C F7` repeated |
|
||||
| `B5 -> B6` | `00 00 B6 00 80 6C` | `07 80 1B 08 C6 08` repeated |
|
||||
| `B6 -> B7` | `00 00 B7 00 80 6D` | `07 80 1B 08 D6 18` repeated |
|
||||
|
||||
Checksum checks:
|
||||
|
||||
- `07 80 6C 40 30 C1`: checksum valid.
|
||||
- `07 80 36 10 0C F7`: checksum valid.
|
||||
- `07 80 1B 08 C6 08`: checksum valid.
|
||||
- `07 80 1B 08 D6 18`: checksum valid.
|
||||
|
||||
Interpretation:
|
||||
|
||||
- `00 -> B0` produced the same response as `B1 -> B0`.
|
||||
- `00 -> B2` produced the same response as `B0 -> B2` and `B1 -> B2`.
|
||||
- This supports the model that the first frame can be a generic valid primer,
|
||||
and the second frame selects the response.
|
||||
- The `B6` and `B7` selected responses introduce another response command class
|
||||
(`cmd=0x1B`) with changing value bytes.
|
||||
|
||||
Updated selected-command map:
|
||||
|
||||
| Selected second command | Observed response |
|
||||
| ---: | --- |
|
||||
| `B0` | `07 80 6C 40 30 C1` after `00 -> B0` and `B1 -> B0`; `07 80 6C 60 30 E1` after `AF -> B0` |
|
||||
| `B1` | `07 80 6C 20 D8 49` after `B0 -> B1` |
|
||||
| `B2` | `07 80 36 10 0C F7` after `00 -> B2`, `B0 -> B2`, and `B1 -> B2` |
|
||||
| `B3` | `07 80 36 10 2C D7` after `B2 -> B3` |
|
||||
| `B4` | `07 80 6D 40 30 C0` after `B3 -> B4` |
|
||||
| `B5` | `07 80 6D 20 D8 48` after `B4 -> B5` |
|
||||
| `B6` | `07 80 1B 08 C6 08` after `B5 -> B6` |
|
||||
| `B7` | `07 80 1B 08 D6 18` after `B6 -> B7` |
|
||||
|
||||
Recommended next controls:
|
||||
|
||||
Power-cycle between each. First prove whether `B2`, `B6`, and `B7` need a
|
||||
primer, or whether they can respond as single frames from cold boot:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands 0xB2 --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-single-b2.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands 0xB6 --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-single-b6.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands 0xB7 --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-single-b7.txt
|
||||
```
|
||||
|
||||
Then continue the selected-command map using `00` as the primer:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB3" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b3.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB4" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b4.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB5" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b5.txt
|
||||
```
|
||||
|
||||
### 2026-05-13 Single-Frame and One-Shot Primer Results
|
||||
|
||||
Captures:
|
||||
|
||||
- `captures/rcp-powercycle-single-b2.txt`
|
||||
- `captures/rcp-powercycle-single-b6.txt`
|
||||
- `captures/rcp-powercycle-single-b7.txt`
|
||||
- `captures/rcp-powercycle-primer-00-b3.txt`
|
||||
- `captures/rcp-powercycle-primer-00-b4.txt`
|
||||
- `captures/rcp-powercycle-primer-00-b5.txt`
|
||||
|
||||
Single-frame controls, each after a panel power cycle:
|
||||
|
||||
| Test | Pin 4 result |
|
||||
| --- | --- |
|
||||
| `B2` alone | heartbeat only, `Anomalies: 0` |
|
||||
| `B6` alone | heartbeat only, `Anomalies: 0` |
|
||||
| `B7` alone | heartbeat only, `Anomalies: 0` |
|
||||
|
||||
Generic-primer map, each first run after a panel power cycle:
|
||||
|
||||
| Host pair | Second frame window | RCP response |
|
||||
| --- | --- | --- |
|
||||
| `00 -> B3` | `00 00 B3 00 80 69` | `07 80 36 10 2C D7` repeated |
|
||||
| `00 -> B4` | `00 00 B4 00 80 6E` | `07 80 6D 40 30 C0` |
|
||||
| `00 -> B5` | `00 00 B5 00 80 6F` | `07 80 6D 20 D8 48` repeated |
|
||||
|
||||
Repeated `00 -> B5` without power-cycling:
|
||||
|
||||
| Attempt | Power cycle before attempt? | Result |
|
||||
| ---: | --- | --- |
|
||||
| 1 | yes | `07 80 6D 20 D8 48` repeated |
|
||||
| 2 | no | heartbeat only, `Anomalies: 0` |
|
||||
| 3 | no | heartbeat only, `Anomalies: 0` |
|
||||
|
||||
Interpretation:
|
||||
|
||||
- A single selected command is not enough; the panel requires a preceding valid
|
||||
primer frame.
|
||||
- `00` works as a primer for `B0`, `B2`, `B3`, `B4`, and `B5`.
|
||||
- The same primed query may be one-shot after power-up. After `00 -> B5`
|
||||
returns its response, repeating `00 -> B5` without power-cycling does not
|
||||
produce another non-heartbeat response.
|
||||
- Future mapping should power-cycle before each selected-command test unless
|
||||
intentionally studying latch/repeat behavior.
|
||||
|
||||
Current generic-primer selected-command map:
|
||||
|
||||
| Host query | RCP response |
|
||||
| --- | --- |
|
||||
| `00 -> B0` | `07 80 6C 40 30 C1` |
|
||||
| `00 -> B2` | `07 80 36 10 0C F7` |
|
||||
| `00 -> B3` | `07 80 36 10 2C D7` |
|
||||
| `00 -> B4` | `07 80 6D 40 30 C0` |
|
||||
| `00 -> B5` | `07 80 6D 20 D8 48` |
|
||||
|
||||
Recommended next tests:
|
||||
|
||||
Power-cycle before each query. Fill the missing `00 -> B1` entry and continue
|
||||
the `00 -> selected` map:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB1" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b1.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB6" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b6.txt
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB7" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --stop-on-anomaly --log captures/rcp-powercycle-primer-00-b7.txt
|
||||
```
|
||||
|
||||
Optional latch test, without power-cycling after the first run:
|
||||
|
||||
```powershell
|
||||
python scripts/serial_direct_response_sweep.py --port COM5 --commands "0x00 0xB5" --states 0x00 --values 0x80 --settle 3 --after-each 0.6 --cycles 3 --cycle-pause 2 --log captures/rcp-latch-primer-00-b5-cycles.txt
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user