Browse Source

Check usb transmit status in send_extra() (#14643)

pull/14920/head 0.14.26
Dasky 2 years ago
committed by GitHub
parent
commit
1953a968c5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 0 deletions
  1. +11
    -0
      tmk_core/protocol/chibios/usb_main.c

+ 11
- 0
tmk_core/protocol/chibios/usb_main.c View File

@ -921,6 +921,17 @@ static void send_extra(uint8_t report_id, uint16_t data) {
return; 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; static report_extra_t report;
report = (report_extra_t){.report_id = report_id, .usage = data}; report = (report_extra_t){.report_id = report_id, .usage = data};


Loading…
Cancel
Save