feat: standards polish — G7 sensor translation_key naming + entity strings, G10 protocol-push device identity on the registry card, G12 unrecorded poll-driven attributes (media player DAG internals + sensors), G14 async_redact_data with an explicit redaction list behind the marker scan (t30)
This commit is contained in:
1 parent
194a97ce34
commit
2e70587871
8 files changed
+178
-5
No files matched your search
@@ -215,6 +215,9 @@ class ShieldConnectionManager:
|
||||
self._logcat_disabled = False
|
||||
self._logcat_failures: list[float] = []
|
||||
self._logcat_last_pkg: str | None = None
|
||||
# G10 (t30): protocol device identity captured once per session —
|
||||
# (name, manufacturer, model, sw) for the registry's device card.
|
||||
self.protocol_device_data: tuple[str, str, str, str] | None = None
|
||||
self._logcat_last_stamp: float = -1e9
|
||||
# Injectable ladder sleep (t26: deterministic tests / future alt-floors)
|
||||
self._logcat_ladder_sleep = asyncio.sleep
|
||||
@@ -565,6 +568,24 @@ class ShieldConnectionManager:
|
||||
self._app_label_requests.add(package)
|
||||
return None
|
||||
|
||||
async def async_capture_protocol_device_data(self) -> None:
|
||||
"""Capture (name, manufacturer, model, sw) once (t30 G10)."""
|
||||
if self._protocol is None or self.protocol_device_data is not None:
|
||||
return
|
||||
try:
|
||||
info = self._protocol.device_info or {} # {manufacturer, model, sw_version}
|
||||
name, _mac = await asyncio.wait_for(
|
||||
self._protocol.async_get_name_and_mac(), timeout=10.0
|
||||
)
|
||||
self.protocol_device_data = (
|
||||
name,
|
||||
info.get("manufacturer", "Google"),
|
||||
info.get("model", "Shield TV"),
|
||||
info.get("sw_version", ""),
|
||||
)
|
||||
except Exception as err:
|
||||
_LOGGER.debug("protocol device info unavailable: %s", err)
|
||||
|
||||
async def _fetch_app_label(self, package: str) -> None:
|
||||
"""One `pm dump` label fetch; failure falls through silently."""
|
||||
poller = self._poller
|
||||
@@ -997,6 +1018,14 @@ class ShieldConnectionManager:
|
||||
foreground = await poller.poll_foreground()
|
||||
if foreground:
|
||||
self.store.set(FIELD_FOREGROUND, foreground)
|
||||
# G10: capture the protocol device identity for the registry card
|
||||
if self._protocol is not None:
|
||||
self._tasks.append(
|
||||
self._create_task(
|
||||
self.async_capture_protocol_device_data(),
|
||||
"protocol_device_capture",
|
||||
)
|
||||
)
|
||||
# P5-1: manifest labels resolve on demand, one package per cycle
|
||||
self._drain_app_label_requests()
|
||||
# P5-3: ensure the (optional, default-off) logcat fast-path runs
|
||||
|
||||
Reference in new issue
Block a user