Skip to content

Commit 0cf9982

Browse files
committed
device: recover from guessing the wrong number for direct-connected HID++ 1.0 devices
1 parent 42e0e39 commit 0cf9982

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

lib/logitech_receiver/device.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,19 @@ def __init__(
183183
self.descriptor = (
184184
descriptors.get_btid(self.product_id) if self.bluetooth else descriptors.get_usbid(self.product_id)
185185
)
186-
if self.number is None: # for direct-connected devices get 'number' from descriptor protocol else use 0xFF
187-
if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0:
188-
number = 0x00
186+
# for direct-connected devices get 'number' from descriptor protocol else use 0xFF
187+
if self.number is None and self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0:
188+
self.number = 0x00
189+
elif self.number is None:
190+
self.number = 0xFF
191+
try: # determine whether a direct-connected device is online
192+
self.ping()
193+
except exceptions.NoSuchDevice as e:
194+
if self.number == 0xFF: # guessed wrong number?
195+
self.number = 0x00
196+
self.ping()
189197
else:
190-
number = 0xFF
191-
self.number = number
192-
self.ping() # determine whether a direct-connected device is online
193-
198+
raise e
194199
if self.descriptor:
195200
self._name = self.descriptor.name
196201
if self._codename is None:

0 commit comments

Comments
 (0)