remote: usb: print "access denied" error

When we get an error with errno 13, it means that the user doesn't
have access to the USB device.  Rather than silently eating this
error and returning -1, print out a message to aid in debugging.

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross 2019-05-21 02:35:09 +01:00
parent faf6554c89
commit 014c950580
1 changed files with 12 additions and 3 deletions

View File

@ -111,7 +111,14 @@ class CommUSB:
if value is None:
raise TypeError
return int.from_bytes(value, byteorder="little")
except (usb.core.USBError, TypeError):
except usb.core.USBError as e:
if e.errno == 13:
print("Access Denied. Maybe try using sudo?")
self.close()
self.open()
if depth < self.MAX_RECURSION_COUNT:
return self.usb_read(addr, depth+1)
except TypeError:
self.close()
self.open()
if depth < self.MAX_RECURSION_COUNT:
@ -127,7 +134,7 @@ class CommUSB:
def usb_write(self, addr, value, depth=0):
try:
self.dev.ctrl_transfer(bmRequestType=0x43, bRequest=0x00,
value = self.dev.ctrl_transfer(bmRequestType=0x43, bRequest=0x00,
wValue=addr & 0xffff,
wIndex=(addr >> 16) & 0xffff,
data_or_wLength=bytes([(value >> 0) & 0xff,
@ -135,7 +142,9 @@ class CommUSB:
(value >> 16) & 0xff,
(value >> 24) & 0xff]
), timeout=None)
except usb.core.USBError:
except usb.core.USBError as e:
if e.errno == 13:
print("Access Denied. Maybe try using sudo?")
self.close()
self.open()
if depth < self.MAX_RECURSION_COUNT: