scanner: abstract status byte into OfflineFindingDevice

This commit is contained in:
Mike A.
2024-07-15 17:20:23 +02:00
parent c12fffe98e
commit a5f1ccdd68

View File

@@ -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."""