Skip to content

Commit c9fc5bf

Browse files
committed
labgrid/util/agents/usb_hid_relay: keep the USB device open
This avoids device busy errors when accessing the device in a loop. Signed-off-by: Jan Luebbe <[email protected]>
1 parent e592a37 commit c9fc5bf

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

labgrid/util/agents/usb_hid_relay.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,22 @@ def __del__(self):
6060
usb.util.release_interface(self._dev, 0)
6161

6262

63+
_relays = {}
64+
65+
66+
def _get_relay(busnum, devnum):
67+
if (busnum, devnum) not in _relays:
68+
_relays[(busnum, devnum)] = USBHIDRelay(bus=busnum, address=devnum)
69+
return _relays[(busnum, devnum)]
70+
71+
6372
def handle_set(busnum, devnum, number, status):
64-
relay = USBHIDRelay(bus=busnum, address=devnum)
73+
relay = _get_relay(busnum, devnum)
6574
relay.set_output(number, status)
6675

6776

6877
def handle_get(busnum, devnum, number):
69-
relay = USBHIDRelay(bus=busnum, address=devnum)
78+
relay = _get_relay(busnum, devnum)
7079
return relay.get_output(number)
7180

7281

0 commit comments

Comments
 (0)