{ "name": "lamp-knee-or-precedence", "notes": [ "Test whether KNEE AUTO is an OR of 0x00B9.15 and 0x0110.15, or whether latest-write/hidden precedence matters.", "Case 1 sets 0x00B9.15, then 0x0110.15, then clears 0x00B9 while 0x0110 remains set.", "Case 2 sets 0x0110.15, then 0x00B9.15, then clears 0x0110 while 0x00B9 remains set." ], "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": "case1_ok_seed_1", "frame": "00 00 00 80 00 DA", "listen": 0.60 }, { "action": "send", "label": "case1_ok_seed_2", "frame": "00 00 00 80 00 DA", "listen": 0.60 }, { "action": "send", "label": "case1_set_00b9_bit15_watch_knee_auto", "frame": "00 01 39 80 00 E2", "listen": 1.50 }, { "action": "send", "label": "case1_set_0110_bit15_while_00b9_still_set", "frame": "00 01 90 80 00 4B", "listen": 1.50 }, { "action": "send", "label": "case1_clear_00b9_watch_if_knee_stays_on", "frame": "00 01 39 00 00 62", "listen": 1.50 }, { "action": "send", "label": "case1_clear_0110_watch_knee_off", "frame": "00 01 90 00 00 CB", "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": "case2_ok_seed_1", "frame": "00 00 00 80 00 DA", "listen": 0.60 }, { "action": "send", "label": "case2_ok_seed_2", "frame": "00 00 00 80 00 DA", "listen": 0.60 }, { "action": "send", "label": "case2_set_0110_bit15_watch_knee_auto", "frame": "00 01 90 80 00 4B", "listen": 1.50 }, { "action": "send", "label": "case2_set_00b9_bit15_while_0110_still_set", "frame": "00 01 39 80 00 E2", "listen": 1.50 }, { "action": "send", "label": "case2_clear_0110_watch_if_knee_stays_on", "frame": "00 01 90 00 00 CB", "listen": 1.50 }, { "action": "send", "label": "case2_clear_00b9_watch_knee_off", "frame": "00 01 39 00 00 62", "listen": 1.20 } ] }