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
......@@ -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))
{
......
......@@ -89,6 +89,8 @@
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 */
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.
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment