Update USB reports from the main loop instead of the callback of the USB keyboard interface.

This commit is contained in:
László Monda
2017-02-26 11:10:04 +01:00
parent 657431e130
commit 8b46810643
3 changed files with 17 additions and 5 deletions

View File

@@ -42,6 +42,7 @@ usb_device_class_struct_t UsbKeyboardClass = {
static usb_keyboard_report_t usbKeyboardReports[2];
usb_keyboard_report_t* ActiveUsbKeyboardReport = usbKeyboardReports;
bool IsUsbKeyboardReportSent = false;
usb_keyboard_report_t* getInactiveUsbKeyboardReport()
{
@@ -60,9 +61,11 @@ void ResetActiveUsbKeyboardReport()
static usb_status_t UsbKeyboardAction(void)
{
UpdateUsbReports();
return USB_DeviceHidSend(UsbCompositeDevice.keyboardHandle, USB_KEYBOARD_ENDPOINT_INDEX,
(uint8_t*)getInactiveUsbKeyboardReport(), USB_KEYBOARD_REPORT_LENGTH);
usb_status_t status = USB_DeviceHidSend(
UsbCompositeDevice.keyboardHandle, USB_KEYBOARD_ENDPOINT_INDEX,
(uint8_t*)getInactiveUsbKeyboardReport(), USB_KEYBOARD_REPORT_LENGTH);
IsUsbKeyboardReportSent = true;
return status;
}
usb_status_t UsbKeyboardCallback(class_handle_t handle, uint32_t event, void *param)

View File

@@ -3,6 +3,7 @@
// Includes:
#include "fsl_common.h"
#include "usb_api.h"
#include "usb_descriptors/usb_descriptor_keyboard_report.h"
@@ -28,6 +29,7 @@
// Variables:
extern bool IsUsbKeyboardReportSent;
extern usb_device_class_struct_t UsbKeyboardClass;
extern usb_keyboard_report_t* ActiveUsbKeyboardReport;