Update USB reports from the main loop instead of the callback of the USB keyboard interface.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user