forked from mfulz_github/qmk_firmware
Ensure that the Keyboard and Mouse demos adhere to the boot protocol specification in that they send a report before the idle period has elapsed if the report data has changed.
This commit is contained in:
parent
7184153e5d
commit
ee7bd5685e
|
@ -385,8 +385,9 @@ void ProcessLEDReport(uint8_t LEDReport)
|
|||
/** Sends the next HID report to the host, via the keyboard data endpoint. */
|
||||
static inline void SendNextReport(void)
|
||||
{
|
||||
USB_KeyboardReport_Data_t KeyboardReportData;
|
||||
bool SendReport = true;
|
||||
static USB_KeyboardReport_Data_t PrevKeyboardReportData;
|
||||
USB_KeyboardReport_Data_t KeyboardReportData;
|
||||
bool SendReport = true;
|
||||
|
||||
/* Create the next keyboard report for transmission to the host */
|
||||
CreateKeyboardReport(&KeyboardReportData);
|
||||
|
@ -402,11 +403,14 @@ static inline void SendNextReport(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Idle period not elapsed, indicate that a report must not be sent */
|
||||
SendReport = false;
|
||||
/* Idle period not elapsed, indicate that a report must not be sent unless the report has changed */
|
||||
SendReport = (memcmp(&PrevKeyboardReportData, &KeyboardReportData, sizeof(USB_KeyboardReport_Data_t)) != 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Save the current report data for later comparison to check for changes */
|
||||
PrevKeyboardReportData = KeyboardReportData;
|
||||
|
||||
/* Select the Keyboard Report Endpoint */
|
||||
Endpoint_SelectEndpoint(KEYBOARD_EPNUM);
|
||||
|
||||
|
|
|
@ -337,8 +337,9 @@ void CreateMouseReport(USB_MouseReport_Data_t* ReportData)
|
|||
/** Sends the next HID report to the host, via the keyboard data endpoint. */
|
||||
static inline void SendNextReport(void)
|
||||
{
|
||||
USB_MouseReport_Data_t MouseReportData;
|
||||
bool SendReport = true;
|
||||
static USB_MouseReport_Data_t PrevMouseReportData;
|
||||
USB_MouseReport_Data_t MouseReportData;
|
||||
bool SendReport = true;
|
||||
|
||||
/* Create the next mouse report for transmission to the host */
|
||||
CreateMouseReport(&MouseReportData);
|
||||
|
@ -354,10 +355,13 @@ static inline void SendNextReport(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Idle period not elapsed, indicate that a report must not be sent */
|
||||
SendReport = false;
|
||||
/* Idle period not elapsed, indicate that a report must not be sent unless the report has changed */
|
||||
SendReport = (memcmp(&PrevMouseReportData, &MouseReportData, sizeof(USB_MouseReport_Data_t)) != 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Save the current report data for later comparison to check for changes */
|
||||
PrevMouseReportData = MouseReportData;
|
||||
|
||||
/* Select the Mouse Report Endpoint */
|
||||
Endpoint_SelectEndpoint(MOUSE_EPNUM);
|
||||
|
|
Loading…
Reference in New Issue