diff --git a/docs/pt2-shutter-display-trace.md b/docs/pt2-shutter-display-trace.md index 34a20ce..ebdd634 100644 --- a/docs/pt2-shutter-display-trace.md +++ b/docs/pt2-shutter-display-trace.md @@ -149,6 +149,7 @@ These JSON scenarios are set up for the current bench runner and default to `384 .\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\shutter-0093-bit-isolation.json --parity E --log captures\shutter-0093-bit-isolation.txt --result-json captures\shutter-0093-bit-isolation-result.json .\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\shutter-0093-blackflare-auto-candidates.json --parity E --log captures\shutter-0093-blackflare-auto-candidates.txt --result-json captures\shutter-0093-blackflare-auto-candidates-result.json .\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\shutter-0093-blackflare-slow-marked.json --parity E --log captures\shutter-0093-blackflare-slow-marked.txt --result-json captures\shutter-0093-blackflare-slow-marked-result.json +.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\shutter-0093-blackflare-field-groups.json --parity E --log captures\shutter-0093-blackflare-field-groups.txt --result-json captures\shutter-0093-blackflare-field-groups-result.json ``` Run order: @@ -161,6 +162,7 @@ Run order: 6. `shutter-0093-bit-isolation.json`: isolates the `0x0093` bits after bench evidence showed this selector also controls white-balance and black/flare lamps. 7. `shutter-0093-blackflare-auto-candidates.json`: uses the known `0x9020` black/flare-manual context and adds each remaining bit to hunt for the `0xFFFF` black/flare-AUTO effect. 8. `shutter-0093-blackflare-slow-marked.json`: repeats the hunt without clear/OK resets between candidates, so white-balance should flicker less and black/flare AUTO transitions can be matched to candidate holds. +9. `shutter-0093-blackflare-field-groups.json`: tests multi-bit field groups after the slow-marked run suggested black/flare AUTO is not one single extra bit over `0x9020`. ## Bench Observations 2026-05-26 @@ -173,6 +175,7 @@ Observed visible effects from the first adjacent-selector run set: | `shutter-0093-gate-ffff` | `E000[0x0093]` read back as `0xFFFF` | white-balance PRESET lamp on, black/flare AUTO lamp on | another `0x0093` bit overrides/selects black/flare AUTO when all bits are set | | `shutter-0093-bit-isolation` | stepped through `0x1000`, `0x0020`, `0x1020`, `0x8000`, `0x8020`, `0x9000`, `0x9020` | white-balance lamps swapped between MANUAL and PRESET; black/flare stayed MANUAL | bit 15 remains the prime white-balance PRESET candidate; black/flare AUTO is likely outside bits 15/12/5 | | `shutter-0093-blackflare-auto-candidates` | stepped through `0x9020`, `0xFFFF`, then `0x9020` plus each remaining bit | black/flare swapped AUTO/MANUAL more slowly than white-balance MANUAL/PRESET | the clear/OK reset before each candidate likely caused extra white-balance flicker; use the slow-marked follow-up to map black/flare transitions to exact bits | +| `shutter-0093-blackflare-slow-marked` | held `0x9020`, `0xFFFF`, then alternated `0x9020` with each candidate | white-balance stayed stable, black/flare swapped twice with large pauses; panel stayed `CONNECT: OK` throughout | likely only the manual-reference to `0xFFFF` and `0xFFFF` back to `0x9020` changed black/flare, so AUTO is probably a multi-bit field rather than one added bit | | `shutter-008f-evs-clear-control` | `0x008F` writes acknowledged as `0x0800`, `0x0000`, `0x0800` | SHUTTER swapped between EVS and OFF while iris AUTO lamp stayed on | `0x008F` is a packed shutter/display status word; clearing it does not simply mean "blank" | | `shutter-008f-evs-timeout-control` | only `0x008F=0x0800` was sent after OK seed | EVS/iris AUTO, then `CONNECT:NOT ACT` | later blanking is timeout cleanup, not selector-clear evidence | diff --git a/scenarios/shutter-0093-blackflare-field-groups.json b/scenarios/shutter-0093-blackflare-field-groups.json new file mode 100644 index 0000000..95d840d --- /dev/null +++ b/scenarios/shutter-0093-blackflare-field-groups.json @@ -0,0 +1,154 @@ +{ + "name": "shutter-0093-blackflare-field-groups", + "notes": [ + "Follow-up after the slow-marked run: black/flare swapped only twice, likely on 0x9020 -> 0xFFFF and back to 0x9020.", + "That suggests black/flare AUTO is not one single extra bit over 0x9020, but a multi-bit mode field.", + "Each candidate is preceded by 0x9020 manual context. Record whether black/flare changes during the candidate hold." + ], + "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_connect_ok_seed", + "frame": "00 00 00 80 00 DA", + "listen": 0.25 + }, + { + "action": "send", + "label": "known_manual_context_9020", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "known_auto_reference_ffff", + "frame": "00 01 13 FF FF 48", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_upper_nibble_f020", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_upper_nibble_f020", + "frame": "00 01 13 F0 20 98", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_all_high_byte_ff20", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_all_high_byte_ff20", + "frame": "00 01 13 FF 20 97", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_low_nibble_9f20", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_low_nibble_9f20", + "frame": "00 01 13 9F 20 F7", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_low_byte_90ff", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_low_byte_90ff", + "frame": "00 01 13 90 FF 27", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_low_nibble_plus_low_byte_9fff", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_low_nibble_plus_low_byte_9fff", + "frame": "00 01 13 9F FF 28", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_low_bits0_5_903f", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_low_bits0_5_903f", + "frame": "00 01 13 90 3F E7", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_low_nibble_combo_9b20", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_low_nibble_combo_9b20", + "frame": "00 01 13 9B 20 F3", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_low_nibble_combo_9d20", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_low_nibble_combo_9d20", + "frame": "00 01 13 9D 20 F5", + "listen": 1.80 + }, + { + "action": "send", + "label": "manual_before_high_low_nibble_combo_9e20", + "frame": "00 01 13 90 20 F8", + "listen": 1.20 + }, + { + "action": "send", + "label": "candidate_high_low_nibble_combo_9e20", + "frame": "00 01 13 9E 20 F6", + "listen": 1.80 + }, + { + "action": "listen", + "seconds": 0.75 + } + ] +}