updates
This commit is contained in:
@@ -9,6 +9,7 @@ from typing import Any
|
||||
|
||||
from .formatting import h16
|
||||
from .lcd_text import analyze_lcd_text
|
||||
from .panel_selectors import panel_selector_semantics_payload
|
||||
from .rom import Rom
|
||||
from .serial_semantics import OBSERVED_TX_REPORT_OVERLAY
|
||||
from .table_xrefs import analyze_table_xrefs
|
||||
@@ -125,6 +126,7 @@ def analyze_ccu_seed_hints(payload: Mapping[str, Any], *, rom_path: Path | None
|
||||
selector_hints = _selector_hints_from_tables(table_analysis)
|
||||
_merge_special_selectors(selector_hints)
|
||||
_merge_observed_reports(selector_hints)
|
||||
_merge_panel_selector_semantics(selector_hints)
|
||||
|
||||
dispatch = _dispatch_table_summary(payload, rom_path)
|
||||
for entry in dispatch.get("interesting_entries", []):
|
||||
@@ -362,6 +364,30 @@ def _merge_observed_reports(hints: dict[int, JsonObject]) -> None:
|
||||
hint["reasons"].append(f"observed RCP autonomous report frame(s): {frames}")
|
||||
|
||||
|
||||
def _merge_panel_selector_semantics(hints: dict[int, JsonObject]) -> None:
|
||||
for item in panel_selector_semantics_payload():
|
||||
selector = int(item["selector"])
|
||||
hint = hints.setdefault(selector, _new_selector_hint(selector))
|
||||
hint["score"] += 4
|
||||
hint["name"] = str(item.get("name") or hint["name"])
|
||||
summary = str(item.get("summary") or "").strip()
|
||||
if summary:
|
||||
hint["reasons"].append(summary)
|
||||
for effect in item.get("effects", []):
|
||||
if not isinstance(effect, Mapping):
|
||||
continue
|
||||
name = effect.get("name") or "panel effect"
|
||||
mask = effect.get("mask_hex") or "mask?"
|
||||
when_set = effect.get("when_set") or "set"
|
||||
hint["reasons"].append(f"{mask} {name}: {when_set}")
|
||||
for meaning in item.get("value_meanings", []):
|
||||
if not isinstance(meaning, Mapping):
|
||||
continue
|
||||
value = meaning.get("value")
|
||||
if isinstance(value, int):
|
||||
_add_seed_value(hint, value)
|
||||
|
||||
|
||||
def _seed_plan(hints: Mapping[int, JsonObject]) -> JsonObject:
|
||||
planned = [
|
||||
(0x000, 0x8080, "selector zero active/connect candidate from emulator state search"),
|
||||
@@ -595,3 +621,7 @@ __all__ = [
|
||||
"selector_bytes",
|
||||
"write_ccu_seed_hints",
|
||||
]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
|
||||
Reference in New Issue
Block a user