From 5420e0401c67ff302c3079697fe3a496ec635b9b Mon Sep 17 00:00:00 2001 From: Julian Winter Date: Tue, 26 Mar 2019 19:52:18 +0100 Subject: [PATCH 1/2] Added timeout-option/parameter to start_discovery(...) --- examples/discovery.py | 2 +- gatt/gatt_linux.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/discovery.py b/examples/discovery.py index 2b2731e..f3ca021 100644 --- a/examples/discovery.py +++ b/examples/discovery.py @@ -5,5 +5,5 @@ def device_discovered(self, device): print("[%s] Discovered, alias = %s" % (device.mac_address, device.alias())) manager = AnyDeviceManager(adapter_name='hci0') -manager.start_discovery() +manager.start_discovery(timeout=10000) # 10 seconds manager.run() diff --git a/gatt/gatt_linux.py b/gatt/gatt_linux.py index dcf0b00..a06a53a 100644 --- a/gatt/gatt_linux.py +++ b/gatt/gatt_linux.py @@ -124,11 +124,14 @@ def devices(self): self.update_devices() return self._devices.values() - def start_discovery(self, service_uuids=[]): + def start_discovery(self, service_uuids=[], timeout=None): """Starts a discovery for BLE devices with given service UUIDs. :param service_uuids: Filters the search to only return devices with given UUIDs. + :param timeout: Stops discovery after a timeout (in milliseconds). """ + if timeout is not None: + GObject.timeout_add(timeout, self.stop) discovery_filter = {'Transport': 'le'} if service_uuids: # D-Bus doesn't like empty lists, it needs to guess the type From 8e37a62dc4e71b5e62ac030b8c2e96d17d5f2763 Mon Sep 17 00:00:00 2001 From: Julian Winter Date: Wed, 26 Feb 2020 22:13:46 +0100 Subject: [PATCH 2/2] 10s default timeout. Timeout ignored when set to zero. --- gatt/gatt_linux.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gatt/gatt_linux.py b/gatt/gatt_linux.py index b1dc9a6..ea0f6a1 100644 --- a/gatt/gatt_linux.py +++ b/gatt/gatt_linux.py @@ -124,13 +124,13 @@ def devices(self): self.update_devices() return self._devices.values() - def start_discovery(self, service_uuids=[], timeout=None): + def start_discovery(self, service_uuids=[], timeout=10000): """Starts a discovery for BLE devices with given service UUIDs. :param service_uuids: Filters the search to only return devices with given UUIDs. - :param timeout: Stops discovery after a timeout (in milliseconds). + :param timeout: Stops discovery after a timeout (in milliseconds). If set to 0, no timeout is used. """ - if timeout is not None: + if timeout > 0: GObject.timeout_add(timeout, self.stop) discovery_filter = {'Transport': 'le'}