diff --git a/blatted/cli/__init__.py b/blatted/cli/__init__.py index c88c842..03ebe04 100644 --- a/blatted/cli/__init__.py +++ b/blatted/cli/__init__.py @@ -2,11 +2,12 @@ import click +from ..tools.ble import scanner @click.command() def scan(): - pass + scanner.run() @click.group() diff --git a/blatted/tools/ble/scanner.py b/blatted/tools/ble/scanner.py index 57d47f5..3e85a07 100644 --- a/blatted/tools/ble/scanner.py +++ b/blatted/tools/ble/scanner.py @@ -1,4 +1,24 @@ +import asyncio from bleak import BleakScanner +from bleak.backends.device import BLEDevice +from bleak.backends.scanner import AdvertisementData +import bleak.exc -def scanner(): + +def discover_callback(device: BLEDevice, advertising_data: AdvertisementData): + print(f"[{advertising_data.rssi:-4d}] {device.address} - {device.name} with {len(advertising_data.service_uuids)} services") + + +async def discover_devices(): + stop_event = asyncio.Event() + + async with BleakScanner(discover_callback): + await stop_event.wait() + + +def run(): print("scanner called") + try: + asyncio.run(discover_devices()) + except bleak.exc.BleakDBusError as exc: + print(f"ERROR: {exc}")