From a5f1ccdd68ea0b03ca610734bd2cdb43861ebbfe Mon Sep 17 00:00:00 2001 From: "Mike A." Date: Mon, 15 Jul 2024 17:20:23 +0200 Subject: [PATCH] scanner: abstract status byte into `OfflineFindingDevice` --- findmy/scanner/scanner.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/findmy/scanner/scanner.py b/findmy/scanner/scanner.py index 6eb7ed9..3a51d13 100644 --- a/findmy/scanner/scanner.py +++ b/findmy/scanner/scanner.py @@ -36,10 +36,12 @@ class OfflineFindingDevice(ABC): def __init__( self, mac_bytes: bytes, + status_byte: int, additional_data: dict[Any, Any] | None = None, ) -> None: """Instantiate an OfflineFindingDevice.""" self._mac_bytes: bytes = mac_bytes + self._status: int = status_byte self._additional_data: dict[Any, Any] = additional_data or {} @property @@ -48,6 +50,11 @@ class OfflineFindingDevice(ABC): mac = self._mac_bytes.hex().upper() return ":".join(mac[i : i + 2] for i in range(0, len(mac), 2)) + @property + def status(self) -> int: + """Status value as reported by the device.""" + return self._status % 255 + @property def additional_data(self) -> dict[Any, Any]: """Any additional data. No guarantees about the contents of this dictionary.""" @@ -123,16 +130,10 @@ class NearbyOfflineFindingDevice(OfflineFindingDevice): additional_data: dict[Any, Any] | None = None, ) -> None: """Instantiate a NearbyOfflineFindingDevice.""" - super().__init__(mac_bytes, additional_data) + super().__init__(mac_bytes, status_byte, additional_data) - self._status_byte: int = status_byte self._extra_byte: int = extra_byte - @property - def status(self) -> int: - """Status value as reported by the device.""" - return self._status_byte % 255 - @classmethod @override def from_payload( @@ -175,17 +176,11 @@ class SeparatedOfflineFindingDevice(OfflineFindingDevice, HasPublicKey): additional_data: dict[Any, Any] | None = None, ) -> None: """Initialize a `SeparatedOfflineFindingDevice`.""" - super().__init__(mac_bytes, additional_data) + super().__init__(mac_bytes, status, additional_data) - self._status: int = status self._public_key: bytes = public_key self._hint: int = hint - @property - def status(self) -> int: - """Status value as reported by the device.""" - return self._status % 255 - @property def hint(self) -> int: """Hint value as reported by the device."""