Skip to content

Commit 2512503

Browse files
authored
Merge pull request #5 from RetiredWizard/usbhostmouse
handle VID/PID errors better
2 parents b8a30c4 + 911fa08 commit 2512503

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

adafruit_usb_host_mouse.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"""
3131

3232
import array
33+
from traceback import print_exception
3334

3435
import adafruit_usb_host_descriptors
3536
import supervisor
@@ -56,23 +57,36 @@ def find_and_init_boot_mouse(cursor_image="/launcher_assets/mouse_cursor.bmp"):
5657
print("scanning usb")
5758
for device in usb.core.find(find_all=True):
5859
# print device info
59-
print(f"{device.idVendor:04x}:{device.idProduct:04x}")
60-
print(device.manufacturer, device.product)
61-
print()
62-
config_descriptor = adafruit_usb_host_descriptors.get_configuration_descriptor(device, 0)
63-
print(config_descriptor)
64-
65-
_possible_interface_index, _possible_endpoint_address = (
66-
adafruit_usb_host_descriptors.find_boot_mouse_endpoint(device)
67-
)
68-
if _possible_interface_index is not None and _possible_endpoint_address is not None:
69-
mouse_device = device
70-
mouse_interface_index = _possible_interface_index
71-
mouse_endpoint_address = _possible_endpoint_address
72-
print(
73-
f"mouse interface: {mouse_interface_index} "
74-
+ f"endpoint_address: {hex(mouse_endpoint_address)}"
60+
try:
61+
try:
62+
print(f"{device.idVendor:04x}:{device.idProduct:04x}")
63+
except usb.core.USBError as e:
64+
print_exception(e, e, None)
65+
try:
66+
print(device.manufacturer, device.product)
67+
except usb.core.USBError as e:
68+
print_exception(e, e, None)
69+
print()
70+
config_descriptor = adafruit_usb_host_descriptors.get_configuration_descriptor(
71+
device, 0
72+
)
73+
print(config_descriptor)
74+
75+
_possible_interface_index, _possible_endpoint_address = (
76+
adafruit_usb_host_descriptors.find_boot_mouse_endpoint(device)
7577
)
78+
if _possible_interface_index is not None and _possible_endpoint_address is not None:
79+
mouse_device = device
80+
mouse_interface_index = _possible_interface_index
81+
mouse_endpoint_address = _possible_endpoint_address
82+
print(
83+
f"mouse interface: {mouse_interface_index} "
84+
+ f"endpoint_address: {hex(mouse_endpoint_address)}"
85+
)
86+
break
87+
print("was not a boot mouse")
88+
except usb.core.USBError as e:
89+
print_exception(e, e, None)
7690

7791
mouse_was_attached = None
7892
if mouse_device is not None:

0 commit comments

Comments
 (0)