uint16_t ReportINSize = 0;\r
uint8_t ReportID = (USB_ControlRequest.wValue & 0xFF);\r
uint8_t ReportType = (USB_ControlRequest.wValue >> 8) - 1;\r
+ uint8_t ReportINData[HIDInterfaceInfo->Config.PrevReportINBufferSize];\r
+\r
+ memset(ReportINData, 0, sizeof(ReportINData));\r
\r
- memset(HIDInterfaceInfo->Config.PrevReportINBuffer, 0, HIDInterfaceInfo->Config.PrevReportINBufferSize);\r
- \r
CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType,\r
HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);\r
+ \r
+ if (HIDInterfaceInfo->Config.PrevReportINBuffer != NULL)\r
+ memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINData, HIDInterfaceInfo->Config.PrevReportINBufferSize);\r
\r
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);\r
Endpoint_Write_Control_Stream_LE(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINSize);\r
if (HIDInterfaceInfo->Config.PrevReportINBuffer != NULL)\r
{\r
StatesChanged = (memcmp(ReportINData, HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINSize) != 0);\r
- memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINData, ReportINSize);\r
+ memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINData, HIDInterfaceInfo->Config.PrevReportINBufferSize);\r
}\r
\r
if (ReportINSize && (ForceSend || StatesChanged || IdlePeriodElapsed))\r