Cancel the ongoing transfer if it is still in progress
This commit is contained in:
@@ -23,8 +23,12 @@ void ResetActiveUsbBasicKeyboardReport(void)
|
||||
|
||||
usb_status_t UsbBasicKeyboardAction(void)
|
||||
{
|
||||
if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy)
|
||||
return kStatus_USB_Busy; // The previous report has not been sent yet
|
||||
if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy) {
|
||||
((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy = 0;
|
||||
return USB_DeviceCancel(((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->handle,
|
||||
(USB_BASIC_KEYBOARD_ENDPOINT_INDEX & USB_ENDPOINT_NUMBER_MASK) |
|
||||
USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_IN);
|
||||
}
|
||||
|
||||
UsbBasicKeyboardActionCounter++;
|
||||
SwitchActiveUsbBasicKeyboardReport(); // Switch the active report
|
||||
|
||||
@@ -402,20 +402,20 @@ static void updateActiveUsbReports(void)
|
||||
}
|
||||
|
||||
uint32_t UsbReportUpdateCounter;
|
||||
static uint32_t lastMouseUpdateTimeMicros;
|
||||
static uint32_t lastMouseUpdateTime;
|
||||
|
||||
void UpdateUsbReports(void)
|
||||
{
|
||||
UsbReportUpdateCounter++;
|
||||
if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy ||
|
||||
/*if (((usb_device_hid_struct_t *)UsbCompositeDevice.basicKeyboardHandle)->interruptInPipeBusy ||
|
||||
((usb_device_hid_struct_t *)UsbCompositeDevice.mediaKeyboardHandle)->interruptInPipeBusy ||
|
||||
((usb_device_hid_struct_t *)UsbCompositeDevice.systemKeyboardHandle)->interruptInPipeBusy ||
|
||||
((usb_device_hid_struct_t *)UsbCompositeDevice.mouseHandle)->interruptInPipeBusy) {
|
||||
return;
|
||||
} else if (Timer_GetElapsedTimeMicros(&lastMouseUpdateTimeMicros) < 1000U * USB_BASIC_KEYBOARD_INTERRUPT_IN_INTERVAL) {
|
||||
} else */if (Timer_GetElapsedTime(&lastMouseUpdateTime) < USB_BASIC_KEYBOARD_INTERRUPT_IN_INTERVAL) {
|
||||
return;
|
||||
}
|
||||
Timer_SetCurrentTimeMicros(&lastMouseUpdateTimeMicros);
|
||||
Timer_SetCurrentTime(&lastMouseUpdateTime);
|
||||
|
||||
ResetActiveUsbBasicKeyboardReport();
|
||||
ResetActiveUsbMediaKeyboardReport();
|
||||
|
||||
Reference in New Issue
Block a user