knee page discovery
This commit is contained in:
100
scenarios/knee-detail-physical-button-watch.json
Normal file
100
scenarios/knee-detail-physical-button-watch.json
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"name": "knee-detail-physical-button-watch",
|
||||
"notes": [
|
||||
"Create clean watch windows for the physical DETAIL and KNEE buttons near the LCD.",
|
||||
"The ROM trace suggests these buttons may be the missing F104 panel-input transition into loc_1795.",
|
||||
"Watch the console labels and LCD. During the labeled windows, press DETAIL, KNEE, then DETAIL/KNEE alternately."
|
||||
],
|
||||
"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": "ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "prepare_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "prepare_00b9_bit13_gate",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "listen",
|
||||
"seconds": 5.0
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_after_detail_press_window",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "refresh_00b9_bit13_gate_for_knee_press",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 0.50
|
||||
},
|
||||
{
|
||||
"action": "listen",
|
||||
"seconds": 5.0
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_after_knee_press_window",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "prepare_00b9_a0_for_page_label_watch",
|
||||
"frame": "00 01 39 A0 00 C2",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "listen",
|
||||
"seconds": 6.0
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "prepare_0110_dl_override_then_press_buttons",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "listen",
|
||||
"seconds": 6.0
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "final_read_00bc",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.80
|
||||
}
|
||||
]
|
||||
}
|
||||
206
scenarios/knee-rom-dtl-knee-isolation.json
Normal file
206
scenarios/knee-rom-dtl-knee-isolation.json
Normal file
@@ -0,0 +1,206 @@
|
||||
{
|
||||
"name": "knee-rom-dtl-knee-isolation",
|
||||
"notes": [
|
||||
"Isolate which ROM-derived KNEE selector sequence creates the bench DTL/KNEE LCD state.",
|
||||
"Record the exact case label visible in the console when DTL/KNEE appears or disappears.",
|
||||
"Cases separate 0x00B9.13 gate, 0x00B9.15 label bit, and 0x0110.15 timed override."
|
||||
],
|
||||
"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_a_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_a_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_a_clear_00b9",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_a_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_a_set_00b9_bit13_only_watch_dtl_knee",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 3.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_b_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_b_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_b_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_b_set_00b9_bits15_and_13_watch_dtl_knee",
|
||||
"frame": "00 01 39 A0 00 C2",
|
||||
"listen": 3.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_c_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_c_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_c_clear_00b9",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_c_set_0110_bit15_only_watch_dtl_knee",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 3.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_d_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_d_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_d_set_00b9_bit13_then_0110_override_part1",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_d_set_0110_bit15_after_00b9_bit13_watch_dtl_knee",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 3.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_e_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_e_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_e_set_00b9_a0_then_0110_override_part1",
|
||||
"frame": "00 01 39 A0 00 C2",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_e_set_0110_bit15_after_00b9_a0_watch_dtl_knee",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 3.00
|
||||
}
|
||||
]
|
||||
}
|
||||
132
scenarios/knee-rom-gate-and-value-probe.json
Normal file
132
scenarios/knee-rom-gate-and-value-probe.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"name": "knee-rom-gate-and-value-probe",
|
||||
"notes": [
|
||||
"Probe the ROM-derived KNEE model from docs/pt2-knee-rom-trace.md.",
|
||||
"The key correction is that 0x00B9.13 gates the live KNEE value/report branch, while 0x0110.15 forces the timed KNEE page.",
|
||||
"Serial writes may only prepare the state. If the panel has a KNEE-related control, move it during the long gate windows and watch for selector 0x00BC reports or visible KNEE changes."
|
||||
],
|
||||
"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": "ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "clear_00b9",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.30
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_baseline",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "set_00b9_bit13_gate_move_knee_control_if_possible",
|
||||
"frame": "00 01 39 20 00 42",
|
||||
"listen": 4.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_after_gate_window",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "set_00b9_bits15_and_13_preset_label_plus_gate",
|
||||
"frame": "00 01 39 A0 00 C2",
|
||||
"listen": 1.50
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "set_0110_bit15_dl_timed_page_override",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 2.50
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "clear_0110_return_to_value_path",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 1.00
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_after_override_clear",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.80
|
||||
},
|
||||
{
|
||||
"action": "repeat",
|
||||
"count": 2,
|
||||
"steps": [
|
||||
{
|
||||
"action": "send",
|
||||
"label": "00bc_direct_low_probe",
|
||||
"frame": "00 01 3C 00 00 67",
|
||||
"listen": 0.35
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "00bc_direct_mid_probe",
|
||||
"frame": "00 01 3C 40 00 27",
|
||||
"listen": 0.35
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "00bc_direct_high_probe",
|
||||
"frame": "00 01 3C 80 00 E7",
|
||||
"listen": 0.35
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "read_00bc_direct_probe",
|
||||
"frame": "01 01 3C 00 00 66",
|
||||
"listen": 0.50
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "final_clear_00b9",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"listen": 0.50
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "final_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 1.50
|
||||
}
|
||||
]
|
||||
}
|
||||
110
scenarios/lamp-knee-context-hold.json
Normal file
110
scenarios/lamp-knee-context-hold.json
Normal file
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"name": "lamp-knee-context-hold",
|
||||
"notes": [
|
||||
"Test whether the known quiet active refresh context lets KNEE AUTO stay on.",
|
||||
"The prior sustain test showed repeated 0x00B9.15 never lit KNEE AUTO, while repeated 0x0110.15 lit it then cleared around mid-window.",
|
||||
"This pairs each KNEE candidate with the proven 0x0093=0x9020 active refresh stream."
|
||||
],
|
||||
"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_00b9_context_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_00b9_context_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "repeat",
|
||||
"count": 10,
|
||||
"steps": [
|
||||
{
|
||||
"action": "send",
|
||||
"label": "context_0093_9020_refresh_for_00b9",
|
||||
"frame": "00 01 13 90 20 F8",
|
||||
"listen": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "context_00b9_bit15_knee_test",
|
||||
"frame": "00 01 39 80 00 E2",
|
||||
"listen": 0.35
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "clear_00b9_with_context_watch",
|
||||
"frame": "00 01 39 00 00 62",
|
||||
"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_0110_context_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "case_0110_context_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "repeat",
|
||||
"count": 10,
|
||||
"steps": [
|
||||
{
|
||||
"action": "send",
|
||||
"label": "context_0093_9020_refresh_for_0110",
|
||||
"frame": "00 01 13 90 20 F8",
|
||||
"listen": 0.25
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "context_0110_bit15_knee_test",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 0.35
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "clear_0110_with_context_watch",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 1.00
|
||||
}
|
||||
]
|
||||
}
|
||||
116
scenarios/lamp-knee-edge-refresh.json
Normal file
116
scenarios/lamp-knee-edge-refresh.json
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"name": "lamp-knee-edge-refresh",
|
||||
"notes": [
|
||||
"Test whether KNEE AUTO needs a low-to-high edge on 0x0110.15 rather than repeated high writes.",
|
||||
"The context-hold test kept active serial responses alive, but KNEE AUTO still turned off mid-run.",
|
||||
"This alternates clear/set for 0x0110.15, first by itself and then with 0x0093=0x9020 context refresh."
|
||||
],
|
||||
"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": "edge_only_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_only_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "repeat",
|
||||
"count": 10,
|
||||
"steps": [
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_only_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.18
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_only_set_0110_bit15_watch",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 0.42
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_only_final_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"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": "edge_context_ok_seed_1",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_context_ok_seed_2",
|
||||
"frame": "00 00 00 80 00 DA",
|
||||
"listen": 0.60
|
||||
},
|
||||
{
|
||||
"action": "repeat",
|
||||
"count": 10,
|
||||
"steps": [
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_context_0093_9020_refresh",
|
||||
"frame": "00 01 13 90 20 F8",
|
||||
"listen": 0.20
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_context_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 0.16
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_context_set_0110_bit15_watch",
|
||||
"frame": "00 01 90 80 00 4B",
|
||||
"listen": 0.34
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"action": "send",
|
||||
"label": "edge_context_final_clear_0110",
|
||||
"frame": "00 01 90 00 00 CB",
|
||||
"listen": 1.00
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user