aboutsummaryrefslogtreecommitdiff
path: root/tmk_core
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/protocol/chibios/usb_main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index cc282e6a9..04049c1a9 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -921,6 +921,17 @@ static void send_extra(uint8_t report_id, uint16_t data) {
921 return; 921 return;
922 } 922 }
923 923
924 if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
925 /* Need to either suspend, or loop and call unlock/lock during
926 * every iteration - otherwise the system will remain locked,
927 * no interrupts served, so USB not going through as well.
928 * Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
929 if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
930 osalSysUnlock();
931 return;
932 }
933 }
934
924 static report_extra_t report; 935 static report_extra_t report;
925 report = (report_extra_t){.report_id = report_id, .usage = data}; 936 report = (report_extra_t){.report_id = report_id, .usage = data};
926 937