From 217259ba63dae31896a17ee7837b55a64ae4dd85 Mon Sep 17 00:00:00 2001 From: Kristian Sloth Lauszus Date: Sat, 30 Jun 2018 16:36:52 +0200 Subject: [PATCH] Cancel the ongoing transfer if it is still in progress --- right/src/usb_interfaces/usb_interface_basic_keyboard.c | 8 ++++++-- right/src/usb_report_updater.c | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.c b/right/src/usb_interfaces/usb_interface_basic_keyboard.c index 2bf39e8..058ccd7 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.c @@ -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 diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index 7710b85..877f235 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -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();