Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
watcher.Stop()
try:
watcher.Added -= DeviceWatcher_Added
watcher.Updated -= DeviceWatcher_Updated
watcher.Removed -= DeviceWatcher_Removed
watcher.EnumerationCompleted -= DeviceWatcher_EnumCompleted
watcher.Stopped -= DeviceWatcher_Stopped
except Exception as e:
logger.debug("Could not remove event handlers: {0}...".format(e))
found = []
for d in devices.values():
properties = {p.Key: p.Value for p in d.Properties}
found.append(
BLEDevice(properties["System.Devices.Aep.DeviceAddress"], d.Name, d, uuids=[], manufacturer_data=b'')
)
return found
manufacturer_binary_data[0:2], byteorder="little"
)
manufacturer_value = "".join(
list(
map(
lambda x: format(x, "x")
if len(format(x, "x")) == 2
else "0{}".format(format(x, "x")),
list(manufacturer_binary_data)[2:],
)
)
)
manufacturer_data = {manufacturer_id: manufacturer_value}
found.append(
BLEDevice(address, name, details, manufacturer_data=manufacturer_data)
)
return found
async def discover(
timeout: float = 5.0, loop: AbstractEventLoop = None, **kwargs
) -> List[BLEDevice]:
"""Perform a Bluetooth LE Scan using Windows.Devices.Bluetooth.Advertisement
Args:
timeout (float): Time to scan for.
loop (Event Loop): The event loop to use.
Keyword Args:
string_output (bool): If set to false, ``discover`` returns .NET
device objects instead.
Returns:
List of strings or objects found.
"""
loop = loop if loop else asyncio.get_event_loop()
# print(properties)
#
discovered_devices = []
for path, props in devices.items():
if not props:
logger.debug(
"Disregarding %s since no properties could be obtained." % path
)
continue
name, address, _, path = _device_info(path, props)
if address is None:
continue
uuids = props.get("UUIDs", [])
manufacturer_data = props.get("ManufacturerData", {})
discovered_devices.append(
BLEDevice(
address,
name,
{"path": path, "props": props},
uuids=uuids,
manufacturer_data=manufacturer_data,
)
)
for rule in rules:
await bus.delMatch(rule).asFuture(loop)
bus.disconnect()
return discovered_devices
async def discover(
timeout: float = 5.0, loop: AbstractEventLoop = None, **kwargs
) -> List[BLEDevice]:
"""Perform a Bluetooth LE Scan.
Args:
timeout (float): duration of scaning period
loop (Event Loop): Event Loop to use
"""
loop = loop if loop else asyncio.get_event_loop()
devices = {}
if not cbapp.central_manager_delegate.enabled:
raise BleakError("Bluetooth device is turned off")
scan_options = {"timeout": timeout}
bdaddr = _format_bdaddr(d.BluetoothAddress)
uuids = []
for u in d.Advertisement.ServiceUuids:
uuids.append(u.ToString())
data = {}
for m in d.Advertisement.ManufacturerData:
md = IBuffer(m.Data)
b = Array.CreateInstance(Byte, md.Length)
reader = DataReader.FromBuffer(md)
reader.ReadBytes(b)
data[m.CompanyId] = bytes(b)
local_name = d.Advertisement.LocalName
if not local_name and d.BluetoothAddress in scan_responses:
local_name = scan_responses[d.BluetoothAddress].Advertisement.LocalName
found.append(
BLEDevice(
bdaddr,
local_name,
d,
uuids=uuids,
manufacturer_data=data,
)
)
return found