Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei).
- DHCPOptionsINStart += ((DHCPOptionsINStart[0] == DHCP_OPTION_PAD) ? 1 : (DHCPOptionsINStart[1] + 2));\r
+ DHCPOptions += ((DHCPOptions[0] == DHCP_OPTION_PAD) ? 1 : (DHCPOptions[1] + 2));\r
/** Writes a report to the attached device.\r
*\r
* \param ReportOUTData Buffer containing the report to send to the device\r
/** 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
* \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
/* Select and unfreeze HID data OUT pipe */\r
Pipe_SelectPipe(HID_DATA_OUT_PIPE);\r
+ \r
+ /* If the report index is used, send it before the report data */\r
+ if (ReportIndex)\r
+ Pipe_Write_Byte(ReportIndex);\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
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
{\r
bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
bRequest: REQ_SetReport,\r
+ wValue: ((ReportType << 8) | ReportIndex),\r
wIndex: 0,\r
wLength: ReportLength,\r
};\r
wIndex: 0,\r
wLength: ReportLength,\r
};\r
/** HID Class specific request to send a HID report to the device. */\r
#define REQ_SetReport 0x09\r
\r
/** HID Class specific request to send a HID report to the device. */\r
#define REQ_SetReport 0x09\r
\r
+ /** HID Report type specifier, for output reports to a device */\r
+ #define HID_REPORTTYPE_OUTPUT 0x02\r
+ \r
+ /** HID Report type specifier, for feature reports to a device */\r
+ #define HID_REPORTTYPE_FEATURE 0x03\r
+\r
/* Task Definitions: */\r
TASK(USB_HID_Host);\r
\r
/* Task Definitions: */\r
TASK(USB_HID_Host);\r
\r
* - Added support to the CDCHost demo for devices with mutiple CDC interfaces which are not the correct ACM type preceeding the desired\r
* ACM CDC interface\r
* - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen)\r
* - Added support to the CDCHost demo for devices with mutiple CDC interfaces which are not the correct ACM type preceeding the desired\r
* ACM CDC interface\r
* - Fixed GenericHID demo not starting USB and HID management tasks when not using interrupt driven modes (thanks to Carl Kjeldsen)\r
- * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan)\r
+ * - Fixed RNDISEthenet demo checking the incorrect message field for packet size constraints (thanks to Jonathan Oakley)\r
* - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint\r
* - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet,\r
* and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis)\r
* - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type\r
* pipes can be used with the function\r
* - The USB Host management task now saves and restores the currently selected pipe before and after the task completes\r
* - Fixed WriteNextReport code in the GenericHIDHost demo using incorrect parameter types and not selecting the correct endpoint\r
* - Adjusted sample CTC timer calculations in the AudioOutput and AudioInput demos to match the CTC calculations in the AVR datasheet,\r
* and to fix instances where rounding caused the endpoint to underflow (thanks to Robin Theunis)\r
* - The USB_Host_SendControlRequest() function no longer automatically selects the Control pipe (pipe 0), so that other control type\r
* pipes can be used with the function\r
* - The USB Host management task now saves and restores the currently selected pipe before and after the task completes\r
+ * - Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei)\r
*\r
* \section Sec_ChangeLog090401 Version 090401\r
*\r
*\r
* \section Sec_ChangeLog090401 Version 090401\r
*\r