From 71df062e07dd029848be795fd74a2b8c7bfae7e4 Mon Sep 17 00:00:00 2001 From: Charlie Boutier Date: Wed, 17 Apr 2024 17:37:10 +0000 Subject: [PATCH] pyusb: power_cycle if '!' is present at the start of the transport --- bumble/transport/pyusb.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bumble/transport/pyusb.py b/bumble/transport/pyusb.py index 8123f14d..68a1dfd9 100644 --- a/bumble/transport/pyusb.py +++ b/bumble/transport/pyusb.py @@ -227,6 +227,10 @@ async def open_pyusb_transport(spec: str) -> Transport: usb_find = libusb_package.find # Find the device according to the spec moniker + power_cycle = False + if spec.startswith('!'): + power_cycle = True + spec = spec[1:] if ':' in spec: vendor_id, product_id = spec.split(':') device = usb_find(idVendor=int(vendor_id, 16), idProduct=int(product_id, 16)) @@ -259,11 +263,12 @@ async def open_pyusb_transport(spec: str) -> Transport: logger.debug(f'USB Device: {device}') # Power Cycle the device - try: - device = await _power_cycle(device) # type: ignore - except Exception as e: - logging.debug(e) - logging.info(f"Unable to power cycle {hex(device.idVendor)} {hex(device.idProduct)}") # type: ignore + if power_cycle: + try: + device = await _power_cycle(device) # type: ignore + except Exception as e: + logging.debug(e) + logging.info(f"Unable to power cycle {hex(device.idVendor)} {hex(device.idProduct)}") # type: ignore # Collect the metadata device_metadata = {'vendor_id': device.idVendor, 'product_id': device.idProduct}