knee
This commit is contained in:
@@ -103,7 +103,15 @@ Interpretation:
|
|||||||
|
|
||||||
- `0x00B9` and `0x0110` are now the strongest KNEE AUTO candidates.
|
- `0x00B9` and `0x0110` are now the strongest KNEE AUTO candidates.
|
||||||
- Because two selectors can light the same lamp, the KNEE status may be split between camera status and panel/display state, or one selector may select the subsystem while the other sets the visible mode.
|
- Because two selectors can light the same lamp, the KNEE status may be split between camera status and panel/display state, or one selector may select the subsystem while the other sets the visible mode.
|
||||||
- The next useful step is a bit scan of `0x00B9` and `0x0110` to see whether `0x8000` is the only live bit or whether lower bits select other KNEE states.
|
- `lamp-isolate-knee-bit-scan` lit KNEE AUTO in both candidate passes. The current working map is `0x00B9.15` and `0x0110.15`.
|
||||||
|
- No lower-bit KNEE behavior has been reported from that scan yet.
|
||||||
|
- The next useful step is an OR/precedence test: set both candidate bits, then clear one while the other remains set. If KNEE AUTO stays on, the lamp is probably an OR of two status sources. If it turns off, the latest selector write or a hidden mode gate is more important than the raw bit state.
|
||||||
|
|
||||||
|
Follow-up `lamp-knee-or-precedence` result:
|
||||||
|
|
||||||
|
- Case 1 (`0x00B9.15` set, then `0x0110.15` set, then `0x00B9` cleared) kept KNEE AUTO on until near the end, when `0x0110` was cleared.
|
||||||
|
- Case 2 (`0x0110.15` set, then `0x00B9.15` set, then `0x0110` cleared) turned KNEE AUTO off well before the end, even though `0x00B9` had been set.
|
||||||
|
- This argues against a simple OR model. Current best interpretation: `0x0110.15` is the stronger live display/control source for KNEE AUTO; `0x00B9.15` is related, but may be a transient, secondary status source, or only meaningful with another gate active.
|
||||||
|
|
||||||
## Follow-Up Isolation Scenarios
|
## Follow-Up Isolation Scenarios
|
||||||
|
|
||||||
@@ -116,6 +124,8 @@ Run these with the console visible and record the exact label shown when each la
|
|||||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-neighbor-single-boot.json --parity E --log captures\lamp-isolate-neighbor-single-boot.txt --result-json captures\lamp-isolate-neighbor-single-boot-result.json
|
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-neighbor-single-boot.json --parity E --log captures\lamp-isolate-neighbor-single-boot.txt --result-json captures\lamp-isolate-neighbor-single-boot-result.json
|
||||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-tail-single-boot.json --parity E --log captures\lamp-isolate-knee-tail-single-boot.txt --result-json captures\lamp-isolate-knee-tail-single-boot-result.json
|
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-tail-single-boot.json --parity E --log captures\lamp-isolate-knee-tail-single-boot.txt --result-json captures\lamp-isolate-knee-tail-single-boot-result.json
|
||||||
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-bit-scan.json --parity E --log captures\lamp-isolate-knee-bit-scan.txt --result-json captures\lamp-isolate-knee-bit-scan-result.json
|
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-isolate-knee-bit-scan.json --parity E --log captures\lamp-isolate-knee-bit-scan.txt --result-json captures\lamp-isolate-knee-bit-scan-result.json
|
||||||
|
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-knee-or-precedence.json --parity E --log captures\lamp-knee-or-precedence.txt --result-json captures\lamp-knee-or-precedence-result.json
|
||||||
|
.\.venv\Scripts\python.exe scripts\serial_scenario.py scenarios\lamp-knee-sustain-compare.json --parity E --log captures\lamp-knee-sustain-compare.txt --result-json captures\lamp-knee-sustain-compare-result.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Method notes:
|
Method notes:
|
||||||
|
|||||||
@@ -684,6 +684,8 @@ Newest confirmed behavior:
|
|||||||
- `0x0015 = 0x8000/0x0000` blinked CALL and red tally in isolation.
|
- `0x0015 = 0x8000/0x0000` blinked CALL and red tally in isolation.
|
||||||
- Fresh-boot isolation maps `0x0013` to SLAVE, `0x0016` to green tally, and `0x0017` to BARS for the `0x8000/0x0000` value pair.
|
- Fresh-boot isolation maps `0x0013` to SLAVE, `0x0016` to green tally, and `0x0017` to BARS for the `0x8000/0x0000` value pair.
|
||||||
- Fresh-boot isolation maps `0x0092` to iris AUTO/OFF behavior, and maps both `0x00B9` and `0x0110` to KNEE AUTO behavior.
|
- Fresh-boot isolation maps `0x0092` to iris AUTO/OFF behavior, and maps both `0x00B9` and `0x0110` to KNEE AUTO behavior.
|
||||||
|
- A KNEE bit scan keeps the working bit assignment at `0x00B9.15` and `0x0110.15`; no lower-bit KNEE behavior has been reported yet.
|
||||||
|
- A KNEE precedence test argues against a simple OR: clearing `0x0110` turned KNEE AUTO off even after `0x00B9` had been set. Current best interpretation is that `0x0110.15` is the stronger live KNEE AUTO source, while `0x00B9.15` is related or transient.
|
||||||
|
|
||||||
## What Is Still Unknown
|
## What Is Still Unknown
|
||||||
|
|
||||||
|
|||||||
110
scenarios/lamp-knee-or-precedence.json
Normal file
110
scenarios/lamp-knee-or-precedence.json
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
98
scenarios/lamp-knee-sustain-compare.json
Normal file
98
scenarios/lamp-knee-sustain-compare.json
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"name": "lamp-knee-sustain-compare",
|
||||||
|
"notes": [
|
||||||
|
"Compare how long KNEE AUTO stays lit from repeated 0x00B9.15 versus repeated 0x0110.15 refreshes.",
|
||||||
|
"This follows the precedence result where clearing 0x0110 turned KNEE AUTO off even after 0x00B9 had been set.",
|
||||||
|
"Record whether each repeated-refresh phase holds KNEE AUTO continuously or only flashes it."
|
||||||
|
],
|
||||||
|
"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_ok_seed_1",
|
||||||
|
"frame": "00 00 00 80 00 DA",
|
||||||
|
"listen": 0.60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "case_00b9_ok_seed_2",
|
||||||
|
"frame": "00 00 00 80 00 DA",
|
||||||
|
"listen": 0.60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "repeat",
|
||||||
|
"count": 8,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "refresh_00b9_bit15_hold_test",
|
||||||
|
"frame": "00 01 39 80 00 E2",
|
||||||
|
"listen": 0.55
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "clear_00b9_watch_knee_off",
|
||||||
|
"frame": "00 01 39 00 00 62",
|
||||||
|
"listen": 1.50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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_ok_seed_1",
|
||||||
|
"frame": "00 00 00 80 00 DA",
|
||||||
|
"listen": 0.60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "case_0110_ok_seed_2",
|
||||||
|
"frame": "00 00 00 80 00 DA",
|
||||||
|
"listen": 0.60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "repeat",
|
||||||
|
"count": 8,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "refresh_0110_bit15_hold_test",
|
||||||
|
"frame": "00 01 90 80 00 4B",
|
||||||
|
"listen": 0.55
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"action": "send",
|
||||||
|
"label": "clear_0110_watch_knee_off",
|
||||||
|
"frame": "00 01 90 00 00 CB",
|
||||||
|
"listen": 1.50
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user