knee auto tests
This commit is contained in:
@@ -43,9 +43,31 @@ Candidate mapping:
|
||||
|
||||
| Selector/value pair | Current meaning |
|
||||
| --- | --- |
|
||||
| `0x0007 = 0x8000/0x0000` | strongest CAM POWER lamp candidate |
|
||||
| `0x0015 = 0x8000/0x0000` | strongest CALL lamp candidate |
|
||||
| `0x0012`, `0x0013`, `0x0016`, `0x0017`, `0x0018`, `0x001A` | BARS, MASTER, tally red/green candidates; exact assignment still needs isolation |
|
||||
| `0x0007 = 0x8000/0x0000` | CAM POWER lamp blink confirmed by isolated run |
|
||||
| `0x0015 = 0x8000/0x0000` | CALL lamp blink confirmed; red tally also blinked in the same phase |
|
||||
| `0x0012`, `0x0013`, `0x0016`, `0x0017`, `0x0018`, `0x001A` | ordered candidates for SLAVE, green tally, BARS, MASTER, and neighboring lamp states |
|
||||
|
||||
Follow-up `lamp-isolate-cam-call` result:
|
||||
|
||||
- First phase blinked CAM POWER.
|
||||
- Second phase blinked CALL and red tally.
|
||||
|
||||
Follow-up `lamp-isolate-known-neighbors` result:
|
||||
|
||||
- Visible order was SLAVE, then green tally, then BARS.
|
||||
- The pattern repeated, and at one point SLAVE and BARS were visible together.
|
||||
- Treat the ordered mapping as likely but not final until a fresh-boot single-selector run separates latch/persistence effects from the selector under test.
|
||||
|
||||
Follow-up `lamp-isolate-neighbor-single-boot` result:
|
||||
|
||||
| Fresh-boot candidate | Visible result |
|
||||
| --- | --- |
|
||||
| `0x0012 = 0x8000/0x0000` | no visible change reported |
|
||||
| `0x0013 = 0x8000/0x0000` | SLAVE lamp |
|
||||
| `0x0016 = 0x8000/0x0000` | camera tally green |
|
||||
| `0x0017 = 0x8000/0x0000` | BARS lamp |
|
||||
| `0x0018 = 0x8000/0x0000` | no visible result reported yet |
|
||||
| `0x001A = 0x8000/0x0000` | no visible result reported yet |
|
||||
|
||||
This confirms that the host/CCU can directly drive panel lamps through selector-table writes. It also validates using the ROM dispatch-neighbor list around `0x0007` and `0x0015` as a high-value lamp map.
|
||||
|
||||
@@ -55,6 +77,7 @@ Visible result:
|
||||
|
||||
- KNEE AUTO lamp flashed a few times.
|
||||
- No other new visible result was reported.
|
||||
- Follow-up isolation saw KNEE AUTO toward the end of the run, then blinking.
|
||||
|
||||
Candidate selectors in that run:
|
||||
|
||||
@@ -63,8 +86,25 @@ Candidate selectors in that run:
|
||||
Interpretation:
|
||||
|
||||
- KNEE AUTO is likely in this broader status cluster.
|
||||
- Because the visible change happened toward the end, strongest next candidates are `0x00A7`, `0x00B7`, `0x00B9`, and `0x0110`, with `0x0092` kept as a guard candidate.
|
||||
- Exact selector/value still needs isolation because the broad sweep changed several selectors in sequence.
|
||||
|
||||
Follow-up `lamp-isolate-knee-tail-single-boot` result:
|
||||
|
||||
| Fresh-boot candidate | Visible result |
|
||||
| --- | --- |
|
||||
| `0x0092` | iris AUTO/OFF behavior |
|
||||
| `0x00A7` | no visible result reported |
|
||||
| `0x00B7` | no visible result reported |
|
||||
| `0x00B9` | KNEE AUTO |
|
||||
| `0x0110` | KNEE AUTO |
|
||||
|
||||
Interpretation:
|
||||
|
||||
- `0x00B9` and `0x0110` are now the strongest KNEE AUTO candidates.
|
||||
- Because two selectors can light the same lamp, the KNEE status may be split between camera status and panel/display state, or one selector may select the subsystem while the other sets the visible mode.
|
||||
- The next useful step is a bit scan of `0x00B9` and `0x0110` to see whether `0x8000` is the only live bit or whether lower bits select other KNEE states.
|
||||
|
||||
## Follow-Up Isolation Scenarios
|
||||
|
||||
Run these with the console visible and record the exact label shown when each lamp changes:
|
||||
@@ -73,6 +113,9 @@ Run these with the console visible and record the exact label shown when each la
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-cam-call.json --parity E --log captures\lamp-isolate-cam-call.txt --result-json captures\lamp-isolate-cam-call-result.json
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-known-neighbors.json --parity E --log captures\lamp-isolate-known-neighbors.txt --result-json captures\lamp-isolate-known-neighbors-result.json
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-status-selectors.json --parity E --log captures\lamp-isolate-knee-status-selectors.txt --result-json captures\lamp-isolate-knee-status-selectors-result.json
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-neighbor-single-boot.json --parity E --log captures\lamp-isolate-neighbor-single-boot.txt --result-json captures\lamp-isolate-neighbor-single-boot-result.json
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-tail-single-boot.json --parity E --log captures\lamp-isolate-knee-tail-single-boot.txt --result-json captures\lamp-isolate-knee-tail-single-boot-result.json
|
||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-bit-scan.json --parity E --log captures\lamp-isolate-knee-bit-scan.txt --result-json captures\lamp-isolate-knee-bit-scan-result.json
|
||||
```
|
||||
|
||||
Method notes:
|
||||
@@ -80,3 +123,4 @@ Method notes:
|
||||
- Record visible changes immediately during each labeled hold. Later `CONNECT: NOT ACT` cleanup is not selector evidence.
|
||||
- If a selector causes a latch or unexpected mode, stop and keep the log instead of continuing the whole sweep.
|
||||
- Prefer exact notes like `selector_0018_high -> tally red`, because the logs already preserve send timestamps and readback frames.
|
||||
- For the single-boot follow-ups, each candidate gets a fresh power cycle. That is deliberate: it tests whether a lamp is truly driven by that selector rather than retained from a previous write.
|
||||
|
||||
@@ -680,10 +680,10 @@ Bench lamp sweeps now prove that several panel outputs are directly driven by co
|
||||
Newest confirmed behavior:
|
||||
|
||||
- `lamp-known-button-selector-probe` made CAM, CALL, BARS, MASTER, and camera tally outputs flash individually.
|
||||
- `0x0007 = 0x8000/0x0000` is the strongest CAM POWER lamp candidate.
|
||||
- `0x0015 = 0x8000/0x0000` is the strongest CALL lamp candidate.
|
||||
- Neighbor selectors `0x0012`, `0x0013`, `0x0016`, `0x0017`, `0x0018`, and `0x001A` likely contain BARS/MASTER/tally red/green assignments, pending isolation.
|
||||
- A broader status sweep made KNEE AUTO flash; candidate selectors are `0x0003`, `0x0040`, `0x0081`, `0x0092`, `0x00A7`, `0x00B7`, `0x00B9`, and `0x0110`.
|
||||
- `0x0007 = 0x8000/0x0000` blinked CAM POWER in isolation.
|
||||
- `0x0015 = 0x8000/0x0000` blinked CALL and red tally in isolation.
|
||||
- Fresh-boot isolation maps `0x0013` to SLAVE, `0x0016` to green tally, and `0x0017` to BARS for the `0x8000/0x0000` value pair.
|
||||
- Fresh-boot isolation maps `0x0092` to iris AUTO/OFF behavior, and maps both `0x00B9` and `0x0110` to KNEE AUTO behavior.
|
||||
|
||||
## What Is Still Unknown
|
||||
|
||||
|
||||
206
scenarios/lamp-isolate-knee-bit-scan.json
Normal file
206
scenarios/lamp-isolate-knee-bit-scan.json
Normal file
@@ -0,0 +1,206 @@
|
||||
{
|
||||
"name": "lamp-isolate-knee-bit-scan",
|
||||
"notes": [
|
||||
"Bit-scan the two fresh-boot KNEE AUTO candidates, 0x00B9 and 0x0110.",
|
||||
"Each selector gets its own fresh CONNECT OK seed, then high-byte bits are tested one at a time with clears between writes.",
|
||||
"Record whether KNEE AUTO, KNEE manual, or any neighboring paint/detail lamp changes during each label."
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_00b9",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_00b9",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_bit15_watch",
|
||||
"frame": "00 01 39 80 00 E2",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_bit15",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_bit14_watch",
|
||||
"frame": "00 01 39 40 00 22",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_bit14",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_bit13_watch",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_bit13",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_bit12_watch",
|
||||
"frame": "00 01 39 10 00 72",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_bit12",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_bit11_watch",
|
||||
"frame": "00 01 39 08 00 6A",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_bit11",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_lowff_watch",
|
||||
"frame": "00 01 39 00 FF 9D",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_lowff",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0110",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0110",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_bit15_watch",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_bit15",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_bit14_watch",
|
||||
"frame": "00 01 90 40 00 8B",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_bit14",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_bit13_watch",
|
||||
"frame": "00 01 90 20 00 EB",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_bit13",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_bit12_watch",
|
||||
"frame": "00 01 90 10 00 DB",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_bit12",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_bit11_watch",
|
||||
"frame": "00 01 90 08 00 C3",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_bit11",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_lowff_watch",
|
||||
"frame": "00 01 90 00 FF 34",
|
||||
"listen": 1.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_lowff",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.70
|
||||
}
|
||||
]
|
||||
}
|
||||
260
scenarios/lamp-isolate-knee-tail-single-boot.json
Normal file
260
scenarios/lamp-isolate-knee-tail-single-boot.json
Normal file
@@ -0,0 +1,260 @@
|
||||
{
|
||||
"name": "lamp-isolate-knee-tail-single-boot",
|
||||
"notes": [
|
||||
"Fresh-boot isolation for the late broad-status candidates after KNEE AUTO appeared toward the end of the previous run.",
|
||||
"Selector 0x0092 is included as a guard before the stronger tail candidates 0x00A7, 0x00B7, 0x00B9, and 0x0110.",
|
||||
"Each candidate tests high, clear, all bits, clear."
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0092",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0092",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0092_high_watch",
|
||||
"frame": "00 01 12 80 00 C9",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0092_clear_after_high",
|
||||
"frame": "00 01 12 00 00 49",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0092_all_bits_watch",
|
||||
"frame": "00 01 12 FF FF 49",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0092_clear_after_all",
|
||||
"frame": "00 01 12 00 00 49",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_00a7",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_00a7",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00a7_high_watch",
|
||||
"frame": "00 01 27 80 00 FC",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00a7_clear_after_high",
|
||||
"frame": "00 01 27 00 00 7C",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00a7_all_bits_watch",
|
||||
"frame": "00 01 27 FF FF 7C",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00a7_clear_after_all",
|
||||
"frame": "00 01 27 00 00 7C",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_00b7",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_00b7",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b7_high_watch",
|
||||
"frame": "00 01 37 80 00 EC",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b7_clear_after_high",
|
||||
"frame": "00 01 37 00 00 6C",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b7_all_bits_watch",
|
||||
"frame": "00 01 37 FF FF 6C",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b7_clear_after_all",
|
||||
"frame": "00 01 37 00 00 6C",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_00b9",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_00b9",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_high_watch",
|
||||
"frame": "00 01 39 80 00 E2",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_high",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_all_bits_watch",
|
||||
"frame": "00 01 39 FF FF 62",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_00b9_clear_after_all",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0110",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0110",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_high_watch",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_high",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.90
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_all_bits_watch",
|
||||
"frame": "00 01 90 FF FF CB",
|
||||
"listen": 1.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0110_clear_after_all",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.90
|
||||
}
|
||||
]
|
||||
}
|
||||
238
scenarios/lamp-isolate-neighbor-single-boot.json
Normal file
238
scenarios/lamp-isolate-neighbor-single-boot.json
Normal file
@@ -0,0 +1,238 @@
|
||||
{
|
||||
"name": "lamp-isolate-neighbor-single-boot",
|
||||
"notes": [
|
||||
"Fresh-boot isolation for the selector cluster that produced SLAVE, green tally, BARS, MASTER, and related lamps.",
|
||||
"Each candidate starts from a fresh power cycle and CONNECT OK seed so latched lamps from the previous selector cannot contaminate the result.",
|
||||
"Record the visible lamp during the high hold and whether the low write clears it."
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0012",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0012",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0012_high_watch",
|
||||
"frame": "00 00 12 80 00 C8",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0012_low_clear_watch",
|
||||
"frame": "00 00 12 00 00 48",
|
||||
"listen": 1.20
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0013",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0013",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0013_high_watch",
|
||||
"frame": "00 00 13 80 00 C9",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0013_low_clear_watch",
|
||||
"frame": "00 00 13 00 00 49",
|
||||
"listen": 1.20
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0016",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0016",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0016_high_watch",
|
||||
"frame": "00 00 16 80 00 CC",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0016_low_clear_watch",
|
||||
"frame": "00 00 16 00 00 4C",
|
||||
"listen": 1.20
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0017",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0017",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0017_high_watch",
|
||||
"frame": "00 00 17 80 00 CD",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0017_low_clear_watch",
|
||||
"frame": "00 00 17 00 00 4D",
|
||||
"listen": 1.20
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_0018",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_0018",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0018_high_watch",
|
||||
"frame": "00 00 18 80 00 C2",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_0018_low_clear_watch",
|
||||
"frame": "00 00 18 00 00 42",
|
||||
"listen": 1.20
|
||||
},
|
||||
{
|
||||
"action": "power_cycle",
|
||||
"off_seconds": 1.5
|
||||
},
|
||||
{
|
||||
"action": "wait_ready",
|
||||
"heartbeats": 2,
|
||||
"timeout": 10.0,
|
||||
"require": true
|
||||
},
|
||||
{
|
||||
"action": "drain",
|
||||
"seconds": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_1_for_001a",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "selector_zero_ok_seed_2_for_001a",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_001a_high_watch",
|
||||
"frame": "00 00 1A 80 00 C0",
|
||||
"listen": 2.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "candidate_001a_low_clear_watch",
|
||||
"frame": "00 00 1A 00 00 40",
|
||||
"listen": 1.20
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user