From f34bfb5d1c930376a461c683873320b30a7ba582 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 20 Oct 2023 17:34:05 -1000 Subject: [PATCH] Simplify raw ble advertisements callbacks (#594) --- aioesphomeapi/__init__.py | 4 ++++ aioesphomeapi/client.py | 10 +++++++--- aioesphomeapi/model.py | 15 --------------- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/aioesphomeapi/__init__.py b/aioesphomeapi/__init__.py index 55925b5..2ac018e 100644 --- a/aioesphomeapi/__init__.py +++ b/aioesphomeapi/__init__.py @@ -1,4 +1,8 @@ # flake8: noqa +from .api_pb2 import ( # type: ignore[attr-defined] # noqa: F401 + BluetoothLERawAdvertisement, + BluetoothLERawAdvertisementsResponse, +) from .ble_defs import ESP_CONNECTION_ERROR_DESCRIPTION, BLEConnectionError from .client import APIClient from .connection import APIConnection, ConnectionParams diff --git a/aioesphomeapi/client.py b/aioesphomeapi/client.py index 2ca0e23..fb11c09 100644 --- a/aioesphomeapi/client.py +++ b/aioesphomeapi/client.py @@ -171,7 +171,6 @@ from .model import ( UserServiceArgType, VoiceAssistantCommand, VoiceAssistantEventType, - make_ble_raw_advertisement_processor, ) _LOGGER = logging.getLogger(__name__) @@ -585,12 +584,17 @@ class APIClient: msg_types = (BluetoothLERawAdvertisementsResponse,) assert self._connection is not None - on_msg = make_ble_raw_advertisement_processor(on_advertisements) + + def _on_ble_raw_advertisement_response( + data: BluetoothLERawAdvertisementsResponse, + ) -> None: + on_advertisements(data.advertisements) + unsub_callback = self._connection.send_message_callback_response( SubscribeBluetoothLEAdvertisementsRequest( flags=BluetoothProxySubscriptionFlag.RAW_ADVERTISEMENTS ), - on_msg, + _on_ble_raw_advertisement_response, msg_types, ) diff --git a/aioesphomeapi/model.py b/aioesphomeapi/model.py index 3941000..270fefb 100644 --- a/aioesphomeapi/model.py +++ b/aioesphomeapi/model.py @@ -8,7 +8,6 @@ from functools import cache, lru_cache, partial from typing import TYPE_CHECKING, Any, Callable, TypeVar, cast from uuid import UUID -from .api_pb2 import BluetoothLERawAdvertisement # type: ignore[attr-defined] from .util import fix_float_single_double_conversion if sys.version_info[:2] < (3, 10): @@ -22,7 +21,6 @@ else: if TYPE_CHECKING: from .api_pb2 import ( # type: ignore BluetoothLEAdvertisementResponse, - BluetoothLERawAdvertisementsResponse, HomeassistantServiceMap, ) @@ -927,19 +925,6 @@ class BluetoothLEAdvertisement: ) -def make_ble_raw_advertisement_processor( - on_advertisements: Callable[[list[BluetoothLERawAdvertisement]], None] -) -> Callable[[BluetoothLERawAdvertisementsResponse], None]: - """Make a processor for BluetoothLERawAdvertisementResponse.""" - - def _on_ble_raw_advertisement_response( - data: BluetoothLERawAdvertisementsResponse, - ) -> None: - on_advertisements(data.advertisements) - - return _on_ble_raw_advertisement_response - - @_frozen_dataclass_decorator class BluetoothDeviceConnection(APIModelBase): address: int = 0