Skip to content

Commit bb5ea69

Browse files
committed
Add more typing to the usb module, and catch transfer.submit() failures that can happen when a device resumes from suspend
1 parent 0d31521 commit bb5ea69

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

scc/drivers/usb.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import usb1
1919

2020
if TYPE_CHECKING:
21-
from usb1 import USBDeviceHandle
21+
from usb1 import USBDeviceHandle, USBTransfer
2222

2323
from scc.sccdaemon import SCCDaemon
2424

@@ -41,7 +41,7 @@ def set_input_interrupt(self, endpoint: int, size: int, callback) -> None:
4141
4242
callback(endpoint, data) is called repeadedly with every packed received.
4343
"""
44-
def callback_wrapper(transfer) -> None:
44+
def callback_wrapper(transfer: USBTransfer) -> None:
4545
if (transfer.getStatus() != usb1.TRANSFER_COMPLETED or
4646
transfer.getActualLength() != size):
4747
return
@@ -54,7 +54,10 @@ def callback_wrapper(transfer) -> None:
5454
log.error(e)
5555
log.error(traceback.format_exc())
5656
finally:
57-
transfer.submit()
57+
try: # https://github.com/C0rn3j/sc-controller/issues/57
58+
transfer.submit()
59+
except Exception:
60+
log.exception("Failed to submit the transfer!")
5861

5962
transfer = self.handle.getTransfer()
6063
transfer.setInterrupt(
@@ -134,7 +137,7 @@ def force_restart(self):
134137
_usb._retry_devices.append(tp)
135138

136139

137-
def claim(self, number):
140+
def claim(self, number: int):
138141
"""Remember list of claimed interfaces and allow to unclaim them all at once using unclaim() method
139142
140143
or automatically when device is closed.

0 commit comments

Comments
 (0)