1
0
This commit is contained in:
Aiden
2026-05-27 21:37:50 +10:00
parent 21f0e455ee
commit 4364d0ed48
54 changed files with 30241 additions and 191 deletions

View File

@@ -0,0 +1,227 @@
{
"name": "iris-mblack-link-mirror-state-machine",
"notes": [
"IRIS/M.BLACK LINK closed-loop state-machine probe.",
"The RCP reports local button intent as selector 0x0013. This scenario ACKs the report and mirrors the reported selector value back as a command-0 CCU table update.",
"Expected cycle if the CCU owns the latched state: press 1 emits 00 00 13 40 00 09, mirror active, press 2 emits 00 00 13 00 00 49, mirror clear, press 3 emits active again.",
"If every press still emits active, the local handler is not seeing the mirrored E800/F791 state or the physical input path is level-style rather than toggle-style."
],
"steps": [
{
"action": "prompt",
"message": "Prepare to test the closed-loop IRIS/M.BLACK LINK state machine. Press Enter to power-cycle and start."
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.20
},
{
"action": "send",
"label": "selector_zero_connect_seed",
"frame": "00 00 00 80 00 DA",
"listen": 0.20
},
{
"action": "send",
"label": "cmd5_latch_clear_0096",
"frame": "05 01 16 00 00 48",
"listen": 0.02
},
{
"action": "listen_ack_until_quiet",
"seconds": 28.00,
"quiet_seconds": 0.90,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 180,
"abort_on_limit": false
},
{
"action": "send",
"label": "force_selector_0013_clear_baseline",
"frame": "00 00 13 00 00 49",
"listen": 0.40
},
{
"action": "send",
"label": "recover_connect_ok_seed_before_press_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.20
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK ONCE NOW. The script will mirror selector 0x0013 back to the RCP when it sees the report.",
"banner": true
},
{
"action": "listen_ack",
"seconds": 9.00,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 80,
"abort_on_limit": false,
"respond_on": [
{
"frames": [
"00 00 13 40 00 09",
"01 00 13 40 00 08",
"02 00 13 40 00 0B"
],
"send": "00 00 13 40 00 09",
"label": "mirror_selector_0013_active_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
},
{
"frames": [
"00 00 13 00 00 49",
"01 00 13 00 00 48",
"02 00 13 00 00 4B"
],
"send": "00 00 13 00 00 49",
"label": "mirror_selector_0013_clear_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
}
]
},
{
"action": "send",
"label": "readback_selector_0013_after_press_1",
"frame": "01 00 13 00 00 48",
"listen": 0.60
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK A SECOND TIME NOW. If the mirror completed the latch, this should report clear.",
"banner": true
},
{
"action": "listen_ack",
"seconds": 9.00,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 80,
"abort_on_limit": false,
"respond_on": [
{
"frames": [
"00 00 13 40 00 09",
"01 00 13 40 00 08",
"02 00 13 40 00 0B"
],
"send": "00 00 13 40 00 09",
"label": "mirror_selector_0013_active_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
},
{
"frames": [
"00 00 13 00 00 49",
"01 00 13 00 00 48",
"02 00 13 00 00 4B"
],
"send": "00 00 13 00 00 49",
"label": "mirror_selector_0013_clear_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
}
]
},
{
"action": "send",
"label": "readback_selector_0013_after_press_2",
"frame": "01 00 13 00 00 48",
"listen": 0.60
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK A THIRD TIME NOW to check that active returns after a mirrored clear.",
"banner": true
},
{
"action": "listen_ack",
"seconds": 9.00,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 80,
"abort_on_limit": false,
"respond_on": [
{
"frames": [
"00 00 13 40 00 09",
"01 00 13 40 00 08",
"02 00 13 40 00 0B"
],
"send": "00 00 13 40 00 09",
"label": "mirror_selector_0013_active_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
},
{
"frames": [
"00 00 13 00 00 49",
"01 00 13 00 00 48",
"02 00 13 00 00 4B"
],
"send": "00 00 13 00 00 49",
"label": "mirror_selector_0013_clear_from_button",
"delay": 0.050,
"listen": 0.20,
"once": true
}
]
},
{
"action": "send",
"label": "readback_selector_0013_after_press_3",
"frame": "01 00 13 00 00 48",
"listen": 0.60
},
{
"action": "send",
"label": "repeat_last_for_hidden_report_check",
"frame": "07 00 00 00 00 5D",
"listen": 0.60
},
{
"action": "listen",
"seconds": 1.00
}
]
}

View File

@@ -0,0 +1,114 @@
{
"name": "iris-mblack-link-report-after-quiet-press",
"notes": [
"Second-pass IRIS/M.BLACK LINK button report test.",
"This drains the startup/current-state report queue until it goes quiet before asking for a physical press, so a fresh selector-0013 report is easier to separate from boot backlog.",
"Expected fresh report shapes are 00/01/02 00 13 40 00 for active, or 00/01/02 00 13 00 00 for clear. Page-1 selector 01 13 is not this button; it is selector 0x0093."
],
"steps": [
{
"action": "prompt",
"message": "Prepare to test IRIS/M.BLACK LINK after the report queue drains. Press Enter to power-cycle and start."
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.20
},
{
"action": "send",
"label": "selector_zero_connect_seed",
"frame": "00 00 00 80 00 DA",
"listen": 0.20
},
{
"action": "send",
"label": "cmd5_latch_clear_0096",
"frame": "05 01 16 00 00 48",
"listen": 0.02
},
{
"action": "listen_ack_until_quiet",
"seconds": 28.00,
"quiet_seconds": 0.90,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 180,
"abort_on_limit": false
},
{
"action": "send",
"label": "recover_connect_ok_seed_before_press",
"frame": "00 00 00 80 00 DA",
"listen": 0.20
},
{
"action": "note",
"message": "QUEUE IS QUIET. PRESS IRIS/M.BLACK LINK ONCE NOW; fresh-report ACK window is running.",
"banner": true
},
{
"action": "listen_ack_until_quiet",
"seconds": 14.00,
"quiet_seconds": 1.20,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 64,
"abort_on_limit": false
},
{
"action": "send",
"label": "recover_connect_ok_seed_before_second_press",
"frame": "00 00 00 80 00 DA",
"listen": 0.20
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK A SECOND TIME NOW to test the opposite toggle state.",
"banner": true
},
{
"action": "listen_ack_until_quiet",
"seconds": 14.00,
"quiet_seconds": 1.20,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.005,
"post_ack_read": 0.035,
"poll_interval": 0.003,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 64,
"abort_on_limit": false
},
{
"action": "send",
"label": "repeat_last_for_hidden_report_check",
"frame": "07 00 00 00 00 5D",
"listen": 0.60
},
{
"action": "listen",
"seconds": 1.00
}
]
}

View File

@@ -0,0 +1,125 @@
{
"name": "iris-mblack-link-report-press",
"notes": [
"Focused queued-report test for the IRIS/M.BLACK LINK physical button.",
"The ROM path at H'200E toggles E800[0x0013].14 when F006.7/F6DB.7 is active and F731 <= 3, then calls loc_3E54 with R2=0x80 R3=0x0013.",
"This scenario services the local report queue by ACKing checksum-valid 00/01/02 report frames with command 5 for the observed selector.",
"Expected selector-0013 report shapes include 00 00 13 40 00 09 for active, 00 00 13 00 00 49 for clear, and bit15 variants 00 00 13 80 00 C9 / 00 00 13 C0 00 89. Queued 01/02 variants are also valid evidence."
],
"steps": [
{
"action": "prompt",
"message": "Prepare to test the IRIS/M.BLACK LINK button. Press Enter to power-cycle and start the live ACK windows."
},
{
"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_seed",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "cmd5_latch_clear_0096",
"frame": "05 01 16 00 00 48",
"listen": 0.05
},
{
"action": "listen_ack",
"seconds": 3.20,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.010,
"post_ack_read": 0.070,
"poll_interval": 0.004,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 48,
"abort_on_limit": false
},
{
"action": "send",
"label": "recover_connect_ok_seed",
"frame": "00 00 00 80 00 DA",
"listen": 0.45
},
{
"action": "listen_ack",
"seconds": 1.20,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.010,
"post_ack_read": 0.070,
"poll_interval": 0.004,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 32,
"abort_on_limit": false
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK ONCE NOW; live queued-report ACK window is running.",
"banner": true
},
{
"action": "listen_ack",
"seconds": 10.00,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.010,
"post_ack_read": 0.070,
"poll_interval": 0.004,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 96,
"abort_on_limit": false
},
{
"action": "send",
"label": "refresh_connect_ok_seed_before_second_press",
"frame": "00 00 00 80 00 DA",
"listen": 0.35
},
{
"action": "note",
"message": "PRESS IRIS/M.BLACK LINK A SECOND TIME NOW to test the toggle-clear report.",
"banner": true
},
{
"action": "listen_ack",
"seconds": 10.00,
"target_mode": "queued_reports",
"ack_mode": "cmd5_selector",
"ack_guard": 0.010,
"post_ack_read": 0.070,
"poll_interval": 0.004,
"once_per_frame": false,
"limit_scope": "local",
"max_acks": 96,
"abort_on_limit": false
},
{
"action": "send",
"label": "repeat_last_for_hidden_report_check",
"frame": "07 00 00 00 00 5D",
"listen": 0.80
},
{
"action": "listen",
"seconds": 1.50
}
]
}

View File

@@ -0,0 +1,74 @@
{
"name": "panel-atlas-big-hits-isolation-v1",
"notes": [
"Fresh-boot isolation pass for user-reviewed hits from panel-atlas-big-visual-sweep-0001-017f-highbits.",
"Each case power-cycles, seeds CONNECT OK, captures a baseline image, sends the candidate, then captures a clear/low write.",
"Expected observations are from the first broad image review and must be confirmed here."
],
"steps": [
{"action": "note", "message": "Case 1: 0x0013=0x4000, reported Iris/MBlack Link", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case001_baseline_before_0013_4000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case001_candidate_0013_4000_iris_mblack_link", "frame": "00 00 13 40 00 09", "listen": 1.0},
{"action": "send", "label": "case001_clear_0013", "frame": "00 00 13 00 00 49", "listen": 0.7},
{"action": "note", "message": "Case 2: 0x0024=0x8000, reported LCD selector button", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case002_baseline_before_0024_8000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case002_candidate_0024_8000_lcd_selector_button", "frame": "00 00 24 80 00 FE", "listen": 1.0},
{"action": "send", "label": "case002_clear_0024", "frame": "00 00 24 00 00 7E", "listen": 0.7},
{"action": "note", "message": "Case 3: 0x0082=0x8000, reported IRIS display OP", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case003_baseline_before_0082_8000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case003_candidate_0082_8000_iris_op", "frame": "00 01 02 80 00 D9", "listen": 1.0},
{"action": "send", "label": "case003_clear_0082", "frame": "00 01 02 00 00 59", "listen": 0.7},
{"action": "note", "message": "Case 4: 0x0082=0x4000, reported IRIS display 1.4", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case004_baseline_before_0082_4000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case004_candidate_0082_4000_iris_1_4", "frame": "00 01 02 40 00 19", "listen": 1.0},
{"action": "send", "label": "case004_clear_0082", "frame": "00 01 02 00 00 59", "listen": 0.7},
{"action": "note", "message": "Case 5: 0x0083=0x8000, reported MASTER GAIN display -3", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case005_baseline_before_0083_8000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case005_candidate_0083_8000_master_gain_minus_3", "frame": "00 01 03 80 00 D8", "listen": 1.0},
{"action": "send", "label": "case005_clear_0083", "frame": "00 01 03 00 00 58", "listen": 0.7},
{"action": "note", "message": "Case 6: 0x0093=0x8000, reported white balance PRESET", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case006_baseline_before_0093_8000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case006_candidate_0093_8000_white_balance_preset", "frame": "00 01 13 80 00 C8", "listen": 1.0},
{"action": "send", "label": "case006_clear_0093", "frame": "00 01 13 00 00 48", "listen": 0.7},
{"action": "note", "message": "Case 7: 0x0093=0x4000, reported white balance AUTO", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case007_baseline_before_0093_4000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case007_candidate_0093_4000_white_balance_auto", "frame": "00 01 13 40 00 08", "listen": 1.0},
{"action": "send", "label": "case007_clear_0093", "frame": "00 01 13 00 00 48", "listen": 0.7},
{"action": "note", "message": "Case 8: 0x0093=0x2000, reported white balance MANUAL", "banner": true},
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.5},
{"action": "send", "label": "case008_baseline_before_0093_2000", "frame": "00 00 00 80 00 DA", "listen": 0.7},
{"action": "send", "label": "case008_candidate_0093_2000_white_balance_manual", "frame": "00 01 13 20 00 68", "listen": 1.0},
{"action": "send", "label": "case008_clear_0093", "frame": "00 01 13 00 00 48", "listen": 0.7},
{"action": "listen", "seconds": 1.0}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,142 @@
{
"name": "panel-atlas-operator-lamps-v1",
"notes": [
"Compact visible-output atlas for operator lamps and tally-adjacent selectors.",
"Use webcam snapshots to tie each selector/value write to the panel state.",
"This intentionally stays on command-0 primary-table writes and avoids COPY/menu latch selectors."
],
"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",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "selector_zero_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "cam_power_candidate_0007_high",
"frame": "00 00 07 80 00 DD",
"listen": 0.90
},
{
"action": "send",
"label": "cam_power_candidate_0007_low",
"frame": "00 00 07 00 00 5D",
"listen": 0.50
},
{
"action": "send",
"label": "call_candidate_0015_high",
"frame": "00 00 15 80 00 CF",
"listen": 0.90
},
{
"action": "send",
"label": "call_candidate_0015_low",
"frame": "00 00 15 00 00 4F",
"listen": 0.50
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_neighbors",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "send",
"label": "neighbor_0012_high",
"frame": "00 00 12 80 00 C8",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_0012_low",
"frame": "00 00 12 00 00 48",
"listen": 0.45
},
{
"action": "send",
"label": "neighbor_0013_high",
"frame": "00 00 13 80 00 C9",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_0013_low",
"frame": "00 00 13 00 00 49",
"listen": 0.45
},
{
"action": "send",
"label": "neighbor_0016_high",
"frame": "00 00 16 80 00 CC",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_0016_low",
"frame": "00 00 16 00 00 4C",
"listen": 0.45
},
{
"action": "send",
"label": "neighbor_0017_high",
"frame": "00 00 17 80 00 CD",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_0017_low",
"frame": "00 00 17 00 00 4D",
"listen": 0.45
},
{
"action": "send",
"label": "neighbor_0018_high",
"frame": "00 00 18 80 00 C2",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_0018_low",
"frame": "00 00 18 00 00 42",
"listen": 0.45
},
{
"action": "send",
"label": "neighbor_001a_high",
"frame": "00 00 1A 80 00 C0",
"listen": 0.90
},
{
"action": "send",
"label": "neighbor_001a_low",
"frame": "00 00 1A 00 00 40",
"listen": 0.45
},
{
"action": "listen",
"seconds": 0.80
}
]
}

View File

@@ -0,0 +1,124 @@
{
"name": "panel-atlas-readout-status-v1",
"notes": [
"Compact visible-output atlas for readouts and status clusters.",
"Targets known shutter display, white-balance/black-flare, and KNEE candidate selectors.",
"Use webcam snapshots to tie each selector/value write to visible LCD, lamp, and seven-segment states."
],
"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",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "selector_zero_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "shutter_008f_evs_bit11",
"frame": "00 01 0F 08 00 5C",
"listen": 0.90
},
{
"action": "send",
"label": "shutter_008f_off_bit12",
"frame": "00 01 0F 10 00 44",
"listen": 0.90
},
{
"action": "send",
"label": "shutter_008f_clear",
"frame": "00 01 0F 00 00 54",
"listen": 0.50
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_0093",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "send",
"label": "status_0093_bit15_wb_preset_black_manual",
"frame": "00 01 13 80 00 C8",
"listen": 0.90
},
{
"action": "send",
"label": "status_0093_9020_black_manual_context",
"frame": "00 01 13 90 20 F8",
"listen": 0.90
},
{
"action": "send",
"label": "status_0093_90ff_black_auto_candidate",
"frame": "00 01 13 90 FF 27",
"listen": 0.90
},
{
"action": "send",
"label": "status_0093_clear",
"frame": "00 01 13 00 00 48",
"listen": 0.50
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_knee",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "send",
"label": "knee_00b9_bit13_report_gate",
"frame": "00 01 39 20 00 42",
"listen": 0.90
},
{
"action": "send",
"label": "knee_00b9_bits15_13_label_gate",
"frame": "00 01 39 A0 00 C2",
"listen": 0.90
},
{
"action": "send",
"label": "knee_0110_bit15_auto_or_dl_candidate",
"frame": "00 01 90 80 00 4B",
"listen": 1.10
},
{
"action": "send",
"label": "knee_0110_clear",
"frame": "00 01 90 00 00 CB",
"listen": 0.70
},
{
"action": "send",
"label": "knee_00b9_clear",
"frame": "00 01 39 00 00 62",
"listen": 0.70
},
{
"action": "listen",
"seconds": 0.80
}
]
}

View File

@@ -0,0 +1,124 @@
{
"name": "panel-atlas-right-stack-fresh-latch-v1",
"notes": [
"Fresh-boot isolation for right-side status selectors that looked latched in the compact run.",
"Each selector gets its own power cycle before high/low testing so 0x0017 cannot contaminate 0x001A.",
"Use webcam snapshots to compare CONNECT OK baseline, high write, and low write."
],
"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": "case_0017_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_0017_ok_seed_2_baseline",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_0017_high_bars_family",
"frame": "00 00 17 80 00 CD",
"listen": 0.90
},
{
"action": "send",
"label": "case_0017_low_clear_attempt",
"frame": "00 00 17 00 00 4D",
"listen": 1.00
},
{
"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": "case_001a_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_001a_ok_seed_2_baseline",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_001a_high_bars_family",
"frame": "00 00 1A 80 00 C0",
"listen": 0.90
},
{
"action": "send",
"label": "case_001a_low_clear_attempt",
"frame": "00 00 1A 00 00 40",
"listen": 1.00
},
{
"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": "case_0007_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_0007_ok_seed_2_baseline",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_0007_high_cam_power",
"frame": "00 00 07 80 00 DD",
"listen": 0.90
},
{
"action": "send",
"label": "case_0007_low_clear_attempt",
"frame": "00 00 07 00 00 5D",
"listen": 1.00
}
]
}

View File

@@ -0,0 +1,154 @@
{
"name": "panel-atlas-right-stack-isolation-v1",
"notes": [
"Tight right-side lamp isolation for CAM POWER/CALL/BARS/status candidates.",
"Each candidate is held high then low twice so webcam frames can be compared against the same baseline.",
"Watch the right-side CAM POWER/BARS/status stack and the CALL/CAM POWER lamps; CONNECT OK traffic is kept alive throughout."
],
"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",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "selector_zero_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "candidate_0007_high_cam_power",
"frame": "00 00 07 80 00 DD",
"listen": 0.85
},
{
"action": "send",
"label": "candidate_0007_low_cam_power",
"frame": "00 00 07 00 00 5D",
"listen": 0.65
}
]
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_0015",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "candidate_0015_high_call",
"frame": "00 00 15 80 00 CF",
"listen": 0.85
},
{
"action": "send",
"label": "candidate_0015_low_call",
"frame": "00 00 15 00 00 4F",
"listen": 0.65
}
]
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_0013",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "candidate_0013_high_orange_status",
"frame": "00 00 13 80 00 C9",
"listen": 0.85
},
{
"action": "send",
"label": "candidate_0013_low_orange_status",
"frame": "00 00 13 00 00 49",
"listen": 0.65
}
]
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_0017",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "candidate_0017_high_bars_family",
"frame": "00 00 17 80 00 CD",
"listen": 0.85
},
{
"action": "send",
"label": "candidate_0017_low_bars_family",
"frame": "00 00 17 00 00 4D",
"listen": 0.65
}
]
},
{
"action": "send",
"label": "selector_zero_ok_refresh_before_001a",
"frame": "00 00 00 80 00 DA",
"listen": 0.40
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "candidate_001a_high_bars_family",
"frame": "00 00 1A 80 00 C0",
"listen": 0.85
},
{
"action": "send",
"label": "candidate_001a_low_bars_family",
"frame": "00 00 1A 00 00 40",
"listen": 0.65
}
]
},
{
"action": "listen",
"seconds": 0.80
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,110 @@
{
"name": "panel-atlas-standard-master-bit-sweep-v1",
"notes": [
"Targeted bench sweep for the far-right STANDARD and MASTER lamps.",
"Uses CONNECT OK seed frames, a known SLAVE positive control, then bit sweeps around adjacent selector words.",
"Watch far-right stack top to bottom: tally, STANDARD, MASTER, SLAVE, CAM POWER, BARS."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.8
},
{
"action": "send",
"label": "ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.6
},
{
"action": "send",
"label": "ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.6
},
{
"action": "send",
"label": "positive_control_0013_8000_slave_on",
"frame": "00 00 13 80 00 C9",
"listen": 0.8
},
{
"action": "send",
"label": "clear_0013_after_slave",
"frame": "00 00 13 00 00 49",
"listen": 0.5
},
{
"action": "repeat",
"count": 1,
"steps": [
{"action": "send", "label": "candidate_0013_4000", "frame": "00 00 13 40 00 09", "listen": 0.75},
{"action": "send", "label": "clear_0013_after_4000", "frame": "00 00 13 00 00 49", "listen": 0.45},
{"action": "send", "label": "candidate_0013_2000", "frame": "00 00 13 20 00 69", "listen": 0.75},
{"action": "send", "label": "clear_0013_after_2000", "frame": "00 00 13 00 00 49", "listen": 0.45},
{"action": "send", "label": "candidate_0013_1000", "frame": "00 00 13 10 00 59", "listen": 0.75},
{"action": "send", "label": "clear_0013_after_1000", "frame": "00 00 13 00 00 49", "listen": 0.45},
{"action": "send", "label": "candidate_0013_0800", "frame": "00 00 13 08 00 41", "listen": 0.75},
{"action": "send", "label": "clear_0013_after_0800", "frame": "00 00 13 00 00 49", "listen": 0.45}
]
},
{
"action": "send",
"label": "ok_refresh_before_0012",
"frame": "00 00 00 80 00 DA",
"listen": 0.6
},
{
"action": "repeat",
"count": 1,
"steps": [
{"action": "send", "label": "candidate_0012_4000", "frame": "00 00 12 40 00 08", "listen": 0.75},
{"action": "send", "label": "clear_0012_after_4000", "frame": "00 00 12 00 00 48", "listen": 0.45},
{"action": "send", "label": "candidate_0012_2000", "frame": "00 00 12 20 00 68", "listen": 0.75},
{"action": "send", "label": "clear_0012_after_2000", "frame": "00 00 12 00 00 48", "listen": 0.45},
{"action": "send", "label": "candidate_0012_1000", "frame": "00 00 12 10 00 58", "listen": 0.75},
{"action": "send", "label": "clear_0012_after_1000", "frame": "00 00 12 00 00 48", "listen": 0.45},
{"action": "send", "label": "candidate_0012_0800", "frame": "00 00 12 08 00 40", "listen": 0.75},
{"action": "send", "label": "clear_0012_after_0800", "frame": "00 00 12 00 00 48", "listen": 0.45},
{"action": "send", "label": "candidate_0012_8000", "frame": "00 00 12 80 00 C8", "listen": 0.75},
{"action": "send", "label": "clear_0012_after_8000", "frame": "00 00 12 00 00 48", "listen": 0.45}
]
},
{
"action": "send",
"label": "ok_refresh_before_0014",
"frame": "00 00 00 80 00 DA",
"listen": 0.6
},
{
"action": "repeat",
"count": 1,
"steps": [
{"action": "send", "label": "candidate_0014_4000", "frame": "00 00 14 40 00 0E", "listen": 0.75},
{"action": "send", "label": "clear_0014_after_4000", "frame": "00 00 14 00 00 4E", "listen": 0.45},
{"action": "send", "label": "candidate_0014_2000", "frame": "00 00 14 20 00 6E", "listen": 0.75},
{"action": "send", "label": "clear_0014_after_2000", "frame": "00 00 14 00 00 4E", "listen": 0.45},
{"action": "send", "label": "candidate_0014_1000", "frame": "00 00 14 10 00 5E", "listen": 0.75},
{"action": "send", "label": "clear_0014_after_1000", "frame": "00 00 14 00 00 4E", "listen": 0.45},
{"action": "send", "label": "candidate_0014_0800", "frame": "00 00 14 08 00 46", "listen": 0.75},
{"action": "send", "label": "clear_0014_after_0800", "frame": "00 00 14 00 00 4E", "listen": 0.45},
{"action": "send", "label": "candidate_0014_8000", "frame": "00 00 14 80 00 CE", "listen": 0.75},
{"action": "send", "label": "clear_0014_after_8000", "frame": "00 00 14 00 00 4E", "listen": 0.45}
]
},
{
"action": "listen",
"seconds": 1.0
}
]
}

View File

@@ -0,0 +1,70 @@
{
"name": "panel-atlas-standard-master-lower-neighbor-sweep-v3",
"notes": [
"Third STANDARD/MASTER hunt over lower neighbor selectors 0x0008-0x000F.",
"This tests whether the far-right STANDARD/MASTER lamps live closer to the CAM POWER/CALL selector pocket than the SLAVE/BARS pocket.",
"Watch far-right stack top to bottom: tally, STANDARD, MASTER, SLAVE, CAM POWER, BARS."
],
"steps": [
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.8},
{"action": "send", "label": "ok_seed_1", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "ok_seed_2", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "positive_control_0013_8000_slave_on", "frame": "00 00 13 80 00 C9", "listen": 0.8},
{"action": "send", "label": "clear_0013_after_slave", "frame": "00 00 13 00 00 49", "listen": 0.6},
{"action": "send", "label": "candidate_0008_8000", "frame": "00 00 08 80 00 D2", "listen": 0.6},
{"action": "send", "label": "candidate_0008_4000", "frame": "00 00 08 40 00 12", "listen": 0.6},
{"action": "send", "label": "candidate_0008_2000", "frame": "00 00 08 20 00 72", "listen": 0.6},
{"action": "send", "label": "candidate_0008_1000", "frame": "00 00 08 10 00 42", "listen": 0.6},
{"action": "send", "label": "clear_0008", "frame": "00 00 08 00 00 52", "listen": 0.45},
{"action": "send", "label": "candidate_0009_8000", "frame": "00 00 09 80 00 D3", "listen": 0.6},
{"action": "send", "label": "candidate_0009_4000", "frame": "00 00 09 40 00 13", "listen": 0.6},
{"action": "send", "label": "candidate_0009_2000", "frame": "00 00 09 20 00 73", "listen": 0.6},
{"action": "send", "label": "candidate_0009_1000", "frame": "00 00 09 10 00 43", "listen": 0.6},
{"action": "send", "label": "clear_0009", "frame": "00 00 09 00 00 53", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_000A", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_000A_8000", "frame": "00 00 0A 80 00 D0", "listen": 0.6},
{"action": "send", "label": "candidate_000A_4000", "frame": "00 00 0A 40 00 10", "listen": 0.6},
{"action": "send", "label": "candidate_000A_2000", "frame": "00 00 0A 20 00 70", "listen": 0.6},
{"action": "send", "label": "candidate_000A_1000", "frame": "00 00 0A 10 00 40", "listen": 0.6},
{"action": "send", "label": "clear_000A", "frame": "00 00 0A 00 00 50", "listen": 0.45},
{"action": "send", "label": "candidate_000B_8000", "frame": "00 00 0B 80 00 D1", "listen": 0.6},
{"action": "send", "label": "candidate_000B_4000", "frame": "00 00 0B 40 00 11", "listen": 0.6},
{"action": "send", "label": "candidate_000B_2000", "frame": "00 00 0B 20 00 71", "listen": 0.6},
{"action": "send", "label": "candidate_000B_1000", "frame": "00 00 0B 10 00 41", "listen": 0.6},
{"action": "send", "label": "clear_000B", "frame": "00 00 0B 00 00 51", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_000C", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_000C_8000", "frame": "00 00 0C 80 00 D6", "listen": 0.6},
{"action": "send", "label": "candidate_000C_4000", "frame": "00 00 0C 40 00 16", "listen": 0.6},
{"action": "send", "label": "candidate_000C_2000", "frame": "00 00 0C 20 00 76", "listen": 0.6},
{"action": "send", "label": "candidate_000C_1000", "frame": "00 00 0C 10 00 46", "listen": 0.6},
{"action": "send", "label": "clear_000C", "frame": "00 00 0C 00 00 56", "listen": 0.45},
{"action": "send", "label": "candidate_000D_8000", "frame": "00 00 0D 80 00 D7", "listen": 0.6},
{"action": "send", "label": "candidate_000D_4000", "frame": "00 00 0D 40 00 17", "listen": 0.6},
{"action": "send", "label": "candidate_000D_2000", "frame": "00 00 0D 20 00 77", "listen": 0.6},
{"action": "send", "label": "candidate_000D_1000", "frame": "00 00 0D 10 00 47", "listen": 0.6},
{"action": "send", "label": "clear_000D", "frame": "00 00 0D 00 00 57", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_000E", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_000E_8000", "frame": "00 00 0E 80 00 D4", "listen": 0.6},
{"action": "send", "label": "candidate_000E_4000", "frame": "00 00 0E 40 00 14", "listen": 0.6},
{"action": "send", "label": "candidate_000E_2000", "frame": "00 00 0E 20 00 74", "listen": 0.6},
{"action": "send", "label": "candidate_000E_1000", "frame": "00 00 0E 10 00 44", "listen": 0.6},
{"action": "send", "label": "clear_000E", "frame": "00 00 0E 00 00 54", "listen": 0.45},
{"action": "send", "label": "candidate_000F_8000", "frame": "00 00 0F 80 00 D5", "listen": 0.6},
{"action": "send", "label": "candidate_000F_4000", "frame": "00 00 0F 40 00 15", "listen": 0.6},
{"action": "send", "label": "candidate_000F_2000", "frame": "00 00 0F 20 00 75", "listen": 0.6},
{"action": "send", "label": "candidate_000F_1000", "frame": "00 00 0F 10 00 45", "listen": 0.6},
{"action": "send", "label": "clear_000F", "frame": "00 00 0F 00 00 55", "listen": 0.45},
{"action": "listen", "seconds": 1.0}
]
}

View File

@@ -0,0 +1,70 @@
{
"name": "panel-atlas-standard-master-neighbor-sweep-v2",
"notes": [
"Second targeted STANDARD/MASTER hunt after 0x0012/0x0013/0x0014 high-bit pass did not show them.",
"Sweeps neighboring selector words with high-nibble values; these are the values most similar to confirmed lamp controls.",
"Watch far-right stack top to bottom: tally, STANDARD, MASTER, SLAVE, CAM POWER, BARS."
],
"steps": [
{"action": "power_cycle", "off_seconds": 1.5},
{"action": "wait_ready", "heartbeats": 2, "timeout": 10.0, "require": true},
{"action": "drain", "seconds": 0.8},
{"action": "send", "label": "ok_seed_1", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "ok_seed_2", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "positive_control_0013_8000_slave_on", "frame": "00 00 13 80 00 C9", "listen": 0.8},
{"action": "send", "label": "clear_0013_after_slave", "frame": "00 00 13 00 00 49", "listen": 0.6},
{"action": "send", "label": "candidate_0010_8000", "frame": "00 00 10 80 00 CA", "listen": 0.6},
{"action": "send", "label": "candidate_0010_4000", "frame": "00 00 10 40 00 0A", "listen": 0.6},
{"action": "send", "label": "candidate_0010_2000", "frame": "00 00 10 20 00 6A", "listen": 0.6},
{"action": "send", "label": "candidate_0010_1000", "frame": "00 00 10 10 00 5A", "listen": 0.6},
{"action": "send", "label": "clear_0010", "frame": "00 00 10 00 00 4A", "listen": 0.45},
{"action": "send", "label": "candidate_0011_8000", "frame": "00 00 11 80 00 CB", "listen": 0.6},
{"action": "send", "label": "candidate_0011_4000", "frame": "00 00 11 40 00 0B", "listen": 0.6},
{"action": "send", "label": "candidate_0011_2000", "frame": "00 00 11 20 00 6B", "listen": 0.6},
{"action": "send", "label": "candidate_0011_1000", "frame": "00 00 11 10 00 5B", "listen": 0.6},
{"action": "send", "label": "clear_0011", "frame": "00 00 11 00 00 4B", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_0015", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_0015_4000", "frame": "00 00 15 40 00 0F", "listen": 0.6},
{"action": "send", "label": "candidate_0015_2000", "frame": "00 00 15 20 00 6F", "listen": 0.6},
{"action": "send", "label": "candidate_0015_1000", "frame": "00 00 15 10 00 5F", "listen": 0.6},
{"action": "send", "label": "candidate_0015_0800", "frame": "00 00 15 08 00 47", "listen": 0.6},
{"action": "send", "label": "clear_0015", "frame": "00 00 15 00 00 4F", "listen": 0.45},
{"action": "send", "label": "candidate_0016_8000", "frame": "00 00 16 80 00 CC", "listen": 0.6},
{"action": "send", "label": "candidate_0016_4000", "frame": "00 00 16 40 00 0C", "listen": 0.6},
{"action": "send", "label": "candidate_0016_2000", "frame": "00 00 16 20 00 6C", "listen": 0.6},
{"action": "send", "label": "candidate_0016_1000", "frame": "00 00 16 10 00 5C", "listen": 0.6},
{"action": "send", "label": "clear_0016", "frame": "00 00 16 00 00 4C", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_0017", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_0017_4000", "frame": "00 00 17 40 00 0D", "listen": 0.6},
{"action": "send", "label": "candidate_0017_2000", "frame": "00 00 17 20 00 6D", "listen": 0.6},
{"action": "send", "label": "candidate_0017_1000", "frame": "00 00 17 10 00 5D", "listen": 0.6},
{"action": "send", "label": "candidate_0017_0800", "frame": "00 00 17 08 00 45", "listen": 0.6},
{"action": "send", "label": "clear_0017", "frame": "00 00 17 00 00 4D", "listen": 0.45},
{"action": "send", "label": "candidate_0018_8000", "frame": "00 00 18 80 00 C2", "listen": 0.6},
{"action": "send", "label": "candidate_0018_4000", "frame": "00 00 18 40 00 02", "listen": 0.6},
{"action": "send", "label": "candidate_0018_2000", "frame": "00 00 18 20 00 62", "listen": 0.6},
{"action": "send", "label": "candidate_0018_1000", "frame": "00 00 18 10 00 52", "listen": 0.6},
{"action": "send", "label": "clear_0018", "frame": "00 00 18 00 00 42", "listen": 0.45},
{"action": "send", "label": "ok_refresh_before_0019", "frame": "00 00 00 80 00 DA", "listen": 0.6},
{"action": "send", "label": "candidate_0019_8000", "frame": "00 00 19 80 00 C3", "listen": 0.6},
{"action": "send", "label": "candidate_0019_4000", "frame": "00 00 19 40 00 03", "listen": 0.6},
{"action": "send", "label": "candidate_0019_2000", "frame": "00 00 19 20 00 63", "listen": 0.6},
{"action": "send", "label": "candidate_0019_1000", "frame": "00 00 19 10 00 53", "listen": 0.6},
{"action": "send", "label": "clear_0019", "frame": "00 00 19 00 00 43", "listen": 0.45},
{"action": "send", "label": "candidate_001A_8000", "frame": "00 00 1A 80 00 C0", "listen": 0.6},
{"action": "send", "label": "candidate_001A_4000", "frame": "00 00 1A 40 00 00", "listen": 0.6},
{"action": "send", "label": "candidate_001A_2000", "frame": "00 00 1A 20 00 60", "listen": 0.6},
{"action": "send", "label": "candidate_001A_1000", "frame": "00 00 1A 10 00 50", "listen": 0.6},
{"action": "send", "label": "clear_001A", "frame": "00 00 1A 00 00 40", "listen": 0.45},
{"action": "listen", "seconds": 1.0}
]
}