From 8bd65f2015fc329db1f0313197a21b7bc4808cf9 Mon Sep 17 00:00:00 2001 From: jpk Date: Sat, 13 May 2023 14:32:15 +0200 Subject: [PATCH] [WIP] Basic scanner output test --- blatted/cli/__init__.py | 3 ++- blatted/tools/ble/scanner.py | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) 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}")