Skip to content

Commit

Permalink
feat: add human_readable_name function (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco committed Oct 27, 2022
1 parent 22e2525 commit bb408cd
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/bluetooth_data_tools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,26 @@

L_PACK = Struct(">L")

__all__ = [
"address_to_bytes",
"manufacturer_data_to_raw",
"newest_manufacturer_data",
"human_readable_name",
"short_address",
]


def short_address(address: str) -> str:
"""Convert a Bluetooth address to a short address."""
results = address.replace("-", ":").split(":")
return f"{results[-2].upper()}{results[-1].upper()}"[-4:]


def human_readable_name(name: str | None, local_name: str, address: str) -> str:
"""Return a human readable name for the given name, local_name, and address."""
return f"{name or local_name} ({short_address(address)})"


def newest_manufacturer_data(manufacturer_data: dict[int, bytes]) -> bytes | None:
"""Return the raw data from manufacturer data."""
if manufacturer_data and (last_id := list(manufacturer_data)[-1]):
Expand Down
13 changes: 13 additions & 0 deletions tests/test_init.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from bluetooth_data_tools import (
address_to_bytes,
human_readable_name,
manufacturer_data_to_raw,
newest_manufacturer_data,
short_address,
)


Expand All @@ -21,3 +23,14 @@ def test_manufacturer_data_to_raw():
manufacturer_data_to_raw(1, b"\x01\x02\x03\x04")
== b"\x00\x00\x01\x00\x01\x02\x03\x04"
)


def test_short_address():
assert short_address("AA:BB:CC:DD:EE:FF") == "EEFF"


def test_human_readable_name():
assert (
human_readable_name("My Device", "Your Device", "AA:BB:CC:DD:EE:FF")
== "My Device (EEFF)"
)

0 comments on commit bb408cd

Please sign in to comment.