device: recover from guessing the wrong number for direct-connected HID++ 1.0 devices

This commit is contained in:
Peter F. Patel-Schneider 2026-02-24 14:40:43 -05:00
parent 42e0e391b5
commit cbb3106993
1 changed files with 9 additions and 6 deletions

View File

@ -183,13 +183,16 @@ class Device:
self.descriptor = ( self.descriptor = (
descriptors.get_btid(self.product_id) if self.bluetooth else descriptors.get_usbid(self.product_id) descriptors.get_btid(self.product_id) if self.bluetooth else descriptors.get_usbid(self.product_id)
) )
if self.number is None: # for direct-connected devices get 'number' from descriptor protocol else use 0xFF # for direct-connected devices get 'number' from descriptor protocol else use 0xFF
if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0: self.number = 0x00 if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0 else 0xFF
number = 0x00 try: # determine whether a direct-connected device is online
self.ping()
except exceptions.NoSuchDevice as e:
if self.number == 0xFF: # guessed wrong number?
self.number = 0x00
self.ping()
else: else:
number = 0xFF raise e
self.number = number
self.ping() # determine whether a direct-connected device is online
if self.descriptor: if self.descriptor:
self._name = self.descriptor.name self._name = self.descriptor.name