/** Buffer to hold the previously generated HID report, for comparison purposes inside the HID class driver. */\r
uint8_t PrevHIDReportBuffer[GENERIC_REPORT_SIZE];\r
\r
+/** Structure to contain reports from the host, so that they can be echoed back upon request */\r
+struct\r
+{\r
+ uint8_t ReportID;\r
+ uint16_t ReportSize;\r
+ uint8_t ReportData[GENERIC_REPORT_SIZE];\r
+} HIDReportEcho;\r
+\r
/** LUFA HID Class driver interface configuration and state information. This structure is\r
* passed to all HID Class driver functions, so that multiple instances of the same class\r
* within a device can be differentiated from one another.\r
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
void* ReportData, uint16_t* ReportSize)\r
{\r
- // Create generic HID report here\r
+ if (HIDReportEcho.ReportID)\r
+ *ReportID = HIDReportEcho.ReportID;\r
+\r
+ memcpy(ReportData, HIDReportEcho.ReportData, HIDReportEcho.ReportSize);\r
\r
- *ReportSize = 0;\r
+ *ReportSize = HIDReportEcho.ReportSize;\r
return true;\r
}\r
\r
void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID,\r
const void* ReportData, const uint16_t ReportSize)\r
{\r
- // Process received generic HID report here\r
+ HIDReportEcho.ReportID = ReportID;\r
+ HIDReportEcho.ReportSize = ReportSize;\r
+ memcpy(HIDReportEcho.ReportData, ReportData, ReportSize);\r
}\r
*\r
* Generic HID device demonstration application. This gives a simple reference application\r
* for implementing a generic HID device, using the basic USB HID drivers in all modern\r
- * OSes (i.e. no special drivers required). It accepts and sends up to 255 byte reports to\r
- * and from a USB Host, and by default transmits the last sent report back to the host.\r
+ * OSes (i.e. no special drivers required). By default it accepts and sends up to 8 byte reports\r
+ * to and from a USB Host, and transmits the last sent report back to the host.\r
* \r
* On start-up the system will automatically enumerate and function as a vendor HID device.\r
* When controlled by a custom HID class application, reports can be sent and received by\r
*\r
* Generic HID device demonstration application. This gives a simple reference application\r
* for implementing a generic HID device, using the basic USB HID drivers in all modern\r
- * OSes (i.e. no special drivers required). It accepts and sends up to 255 byte reports to\r
- * and from a USB Host, and by default transmits the last sent report back to the host.\r
+ * OSes (i.e. no special drivers required). By default it accepts and sends up to 8 byte reports\r
+ * to and from a USB Host, and transmits the last sent report back to the host.\r
* \r
* On start-up the system will automatically enumerate and function as a vendor HID device.\r
* When controlled by a custom HID class application, reports can be sent and received by\r