From 4269e233b832b406d176b9facb6eff5e5d94b6a6 Mon Sep 17 00:00:00 2001 From: James Mackay Date: Thu, 8 Oct 2026 08:53:13 +0100 Subject: [PATCH] feat(adb_client): expose last_dump so consumers can parse the Audio playback section from the same query --- .../nvidia_shield/ha_adb_common/adb_client.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/custom_components/nvidia_shield/ha_adb_common/adb_client.py b/custom_components/nvidia_shield/ha_adb_common/adb_client.py index 42af991..6387f59 100644 --- a/custom_components/nvidia_shield/ha_adb_common/adb_client.py +++ b/custom_components/nvidia_shield/ha_adb_common/adb_client.py @@ -72,8 +72,10 @@ class AdbClientBase: # Media session state self._last_info: MediaSessionInfo | None = None + self._last_dump: str | None = None self._all_sessions: list[MediaSessionInfo] = [] + @property def connected(self) -> bool: return self._connected @@ -89,6 +91,7 @@ class AdbClientBase: def clear_info(self) -> None: """Clear the cached media session info.""" self._last_info = None + self._last_dump = None self._all_sessions = [] async def connect(self) -> bool: @@ -196,12 +199,22 @@ class AdbClientBase: if head_lines is not None: command += f" | head -{head_lines}" dump = await self.shell(command) + self._last_dump = dump if dump is not None else None if dump is None: return None self._all_sessions = parse_all_media_sessions(dump) self._last_info = parse_media_session(dump, foreground_package) return self._last_info + @property + def last_dump(self) -> str | None: + """Raw output of the last media-session query (or None if it failed). + + Shared consumers (the ShieldConnectionManager) parse the "Audio + playback" section from this same dump — no extra round trip. + """ + return self._last_dump + # -- Health check -- async def health_check(self) -> bool: