Source code for bleak.backends.device

# -*- coding: utf-8 -*-
"""
Wrapper class for Bluetooth LE servers returned from calling
:py:meth:`bleak.discover`.

Created on 2018-04-23 by hbldh <henrik.blidh@nedomkull.com>

"""
from ._manufacturers import MANUFACTURERS


[docs]class BLEDevice(object): """A simple wrapper class representing a BLE server detected during a `discover` call. - When using Windows backend, `details` attribute is a ``Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisement`` object, unless it is created with the Windows.Devices.Enumeration discovery method, then is is a ``Windows.Devices.Enumeration.DeviceInformation``. - When using Linux backend, ``details`` attribute is a dict with keys ``path`` which has the string path to the DBus device object and ``props`` which houses the properties dictionary of the D-Bus Device. - When using macOS backend, ``details`` attribute will be a CBPeripheral object. """ def __init__(self, address, name, details=None, rssi=0, **kwargs): #: The Bluetooth address of the device on this machine. self.address = address #: The advertised name of the device. self.name = name #: The OS native details required for connecting to the device. self.details = details #: RSSI, if available self.rssi = rssi #: Device specific details. Contains a ``uuids`` key which is a list of service UUIDs and a ``manufacturer_data`` field with a bytes-object from the advertised data. self.metadata = kwargs def __str__(self): if not self.name: if "manufacturer_data" in self.metadata: ks = list(self.metadata["manufacturer_data"].keys()) if len(ks): mf = MANUFACTURERS.get(ks[0], MANUFACTURERS.get(0xFFFF)) value = self.metadata["manufacturer_data"].get( ks[0], MANUFACTURERS.get(0xFFFF) ) # TODO: Evaluate how to interpret the value of the company identifier... return "{0}: {1} ({2})".format(self.address, mf, value) return "{0}: {1}".format(self.address, self.name or "Unknown") def __repr__(self): return str(self)