mirror of
https://github.com/malmeloo/FindMy.py.git
synced 2026-04-18 03:54:01 +02:00
scanner: abstract status byte into OfflineFindingDevice
This commit is contained in:
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user