{ "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 } ] }