Source code for bleak.args.bluez

"""
-----------------------
BlueZ backend arguments
-----------------------
"""

from typing import NamedTuple, TypedDict, Union

from bleak.assigned_numbers import AdvertisementDataType


[docs] class BlueZDiscoveryFilters(TypedDict, total=False): """ Dictionary of arguments for the ``org.bluez.Adapter1.SetDiscoveryFilter`` D-Bus method. https://github.com/bluez/bluez/blob/master/doc/org.bluez.Adapter.rst#void-setdiscoveryfilterdict-filter """ UUIDs: list[str] """ Filter by service UUIDs, empty means match _any_ UUID. Normally, the ``service_uuids`` argument of :class:`bleak.BleakScanner` is used instead. """ RSSI: int """ RSSI threshold value. """ Pathloss: int """ Pathloss threshold value. """ Transport: str """ Transport parameter determines the type of scan. This should not be used since it is required to be set to ``"le"``. """ DuplicateData: bool """ Disables duplicate detection of advertisement data. This does not affect the ``Filter Duplicates`` parameter of the ``LE Set Scan Enable`` HCI command to the Bluetooth adapter! Although the default value for BlueZ is ``True``, Bleak sets this to ``False`` by default. """ Discoverable: bool """ Make adapter discoverable while discovering, if the adapter is already discoverable setting this filter won't do anything. """ Pattern: str """ Discover devices where the pattern matches either the prefix of the address or device name which is convenient way to limited the number of device objects created during a discovery. """
[docs] class OrPattern(NamedTuple): """ BlueZ advertisement monitor or-pattern. https://github.com/bluez/bluez/blob/master/doc/org.bluez.AdvertisementMonitor.rst#arrayuint8-uint8-arraybyte-patterns-read-only-optional """ start_position: int ad_data_type: AdvertisementDataType content_of_pattern: bytes
# Windows has a similar structure, so we allow generic tuple for cross-platform compatibility OrPatternLike = Union[OrPattern, tuple[int, AdvertisementDataType, bytes]]
[docs] class BlueZScannerArgs(TypedDict, total=False): """ :class:`BleakScanner` args that are specific to the BlueZ backend. """ filters: BlueZDiscoveryFilters """ Filters to pass to the adapter SetDiscoveryFilter D-Bus method. Only used for active scanning. """ or_patterns: list[OrPatternLike] """ Or patterns to pass to the AdvertisementMonitor1 D-Bus interface. Only used for passive scanning. """
[docs] class BlueZNotifyArgs(TypedDict, total=False): """ :meth:`bleak.BleakClient.start_notify` method args that are specific to the BlueZ backend. .. versionadded:: 2.1 """ use_start_notify: bool """ If true, use the "StartNotify" D-Bus method instead of "AcquireNotify" to subscribe to notifications. This is needed in rare cases to work around BlueZ quirks. For example, some peripherals may send notifications immediately after writing to the CCCD descriptor, before the write response is sent. In this case, "AcquireNotify" will miss the notification, whereas "StartNotify" will work correctly. """