Skip to content
Snippets Groups Projects
Commit 7227e133 authored by Dean Camera's avatar Dean Camera
Browse files

Ensure that the previous HID reports in the HID device class driver are kept...

Ensure that the previous HID reports in the HID device class driver are kept per-instance, rather than per-device.
parent 72932e27
No related branches found
No related tags found
No related merge requests found
......@@ -150,8 +150,6 @@ bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfac
void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
{
static uint8_t PreviousReportINData[HID_MAX_REPORT_SIZE];
if (USB_DeviceState != DEVICE_STATE_Configured)
return;
......@@ -167,10 +165,10 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
ReportINSize = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData);
bool StatesChanged = (memcmp(ReportINData, PreviousReportINData, ReportINSize) != 0);
bool StatesChanged = (memcmp(ReportINData, HIDInterfaceInfo->State.PreviousReportINData, ReportINSize) != 0);
bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));
memcpy(PreviousReportINData, ReportINData, ReportINSize);
memcpy(HIDInterfaceInfo->State.PreviousReportINData, ReportINData, ReportINSize);
if (ReportINSize && (StatesChanged || IdlePeriodElapsed))
{
......
......@@ -88,7 +88,9 @@
bool UsingReportProtocol; /**< Indicates if the HID interface is set to Boot or Report protocol mode */
uint16_t IdleCount; /**< Report idle period, in mS, set by the host */
uint16_t IdleMSRemaining; /**< Total number of mS remaining before the idle period elapsed - this should be
* decremented by the user application if non-zero each millisecond */
* decremented by the user application if non-zero each millisecond */
uint8_t PreviousReportINData[HID_MAX_REPORT_SIZE]; /**< Previously generated report from the HID interface */
} State; /**< State data for the USB class interface within the device. All elements in this section
* are reset to their defaults when the interface is enumerated.
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment