Skip to content

Commit 493e464

Browse files
committed
add read timeout
1 parent 88e06be commit 493e464

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

adafruit_usb_host_midi.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@
2020
DIR_IN = 0x80
2121

2222
class MIDI:
23-
def __init__(self, device):
23+
def __init__(self, device, timeout=None):
2424
self.interface_number = 0
2525
self.in_ep = 0
2626
self.out_ep = 0
2727
self.device = device
28+
self.timeout_ms = round(timeout * 1000) if timeout else 0
2829

2930
self.buf = bytearray(64)
3031
self.start = 0
@@ -64,8 +65,12 @@ def __init__(self, device):
6465

6566
def read(self, size):
6667
if self._remaining == 0:
67-
self._remaining = self.device.read(self.in_ep, self.buf) - 1
68-
self.start = 1
68+
try:
69+
n = self.device.read(self.in_ep, self.buf, self.timeout_ms)
70+
self._remaining = n - 1
71+
self.start = 1
72+
except usb.core.USBTimeoutError as e:
73+
pass
6974
size = min(size, self._remaining)
7075
b = self.buf[self.start:self.start + size]
7176
self.start += size

0 commit comments

Comments
 (0)