|
@@ -934,6 +934,17 @@ static void send_extra(uint8_t report_id, uint16_t data) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
|
|
|
+ /* Need to either suspend, or loop and call unlock/lock during
|
|
|
+ * every iteration - otherwise the system will remain locked,
|
|
|
+ * no interrupts served, so USB not going through as well.
|
|
|
+ * Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
|
|
+ if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
|
|
+ osalSysUnlock();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
static report_extra_t report;
|
|
|
report = (report_extra_t){.report_id = report_id, .usage = data};
|
|
|
|