Source code for bleak.backends.adapter

from typing import Any

from bleak._compat import Self
from bleak.backends import BleakBackend, get_default_backend
from bleak.backends.device import BLEDevice
from bleak.exc import BleakError


[docs] class BaseBleakAdapter: """ Interface for Bleak Bluetooth adapter operations. Provides operations that do not require active scanning, such as retrieving devices that are already connected to the system. Instances should be obtained via :meth:`get`. .. versionadded:: 3.1 """
[docs] @classmethod async def get(cls, **kwargs: Any) -> Self: """ Get a Bluetooth adapter for the current platform. Returns: A platform-specific :class:`BaseBleakAdapter` instance. Raises: NotImplementedError: if the current backend does not support this. """ raise NotImplementedError("get is not implemented for this backend")
[docs] async def get_connected_devices( self, service_uuids: frozenset[str] ) -> list[BLEDevice]: """ Retrieve BLE devices that are currently connected to the system. Args: service_uuids: Service UUIDs to filter on. Returns: A list of :class:`BLEDevice` for each connected BLE device. Raises: NotImplementedError: if the current backend does not support this. """ raise NotImplementedError( "get_connected_devices is not implemented for this backend" )
[docs] def get_platform_adapter_backend_type() -> tuple[type[BaseBleakAdapter], BleakBackend]: """ Gets the platform-specific :class:`BaseBleakAdapter` type. """ backend = get_default_backend() match backend: case BleakBackend.BLUEZ_DBUS: from bleak.backends.bluezdbus.adapter import ( BleakAdapterBlueZDBus, # type: ignore ) return (BleakAdapterBlueZDBus, backend) # type: ignore case BleakBackend.CORE_BLUETOOTH: from bleak.backends.corebluetooth.adapter import ( BleakAdapterCoreBluetooth, # type: ignore ) return (BleakAdapterCoreBluetooth, backend) # type: ignore case BleakBackend.WIN_RT: from bleak.backends.winrt.adapter import BleakAdapterWinRT # type: ignore return (BleakAdapterWinRT, backend) # type: ignore case BleakBackend.ANDROID: from bleak.backends.android.adapter import ( BleakAdapterAndroid, # type: ignore ) return (BleakAdapterAndroid, backend) # type: ignore case _: raise BleakError(f"Unsupported backend: {backend}")