/** Writes a report to the attached device.\r
*\r
* \param ReportOUTData Buffer containing the report to send to the device\r
+ * \param ReportIndex Index of the report in the device (zero if the device does not use multiple reports)\r
+ * \param ReportType Type of report to send, either HID_REPORTTYPE_OUTPUT or HID_REPORTTYPE_FEATURE\r
* \param ReportLength Length of the report to send\r
*/\r
-void WriteNextReport(uint8_t* ReportOUTData, uint16_t ReportLength)\r
+void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t ReportType, uint16_t ReportLength)\r
{\r
/* Select and unfreeze HID data OUT pipe */\r
Pipe_SelectPipe(HID_DATA_OUT_PIPE);\r
\r
return;\r
}\r
+ \r
+ /* If the report index is used, send it before the report data */\r
+ if (ReportIndex)\r
+ Pipe_Write_Byte(ReportIndex);\r
\r
- /* Read in HID report data */\r
+ /* Write out HID report data */\r
Pipe_Write_Stream_LE(ReportOUTData, ReportLength); \r
\r
/* Clear the OUT endpoint, send last data packet */\r
{\r
bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
bRequest: REQ_SetReport,\r
- wValue: 0,\r
+ wValue: ((ReportType << 8) | ReportIndex),\r
wIndex: 0,\r
wLength: ReportLength,\r
};\r