Fixed minor issue with the RNDISEthernet demo DHCP protocol decoder routine using...
authorDean Camera <dean@fourwalledcubicle.com>
Wed, 15 Apr 2009 00:56:12 +0000 (00:56 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Wed, 15 Apr 2009 00:56:12 +0000 (00:56 +0000)
Fixed GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei).

Demos/Device/RNDISEthernet/ProtocolDecoders.c
Demos/Host/GenericHIDHost/GenericHIDHost.c
Demos/Host/GenericHIDHost/GenericHIDHost.h
LUFA/ChangeLog.txt

index db5da3c..add0333 100644 (file)
@@ -273,7 +273,7 @@ void DecodeDHCPHeader(void* InDataStart)
                        }\r
                }\r
                \r
-               DHCPOptionsINStart += ((DHCPOptionsINStart[0] == DHCP_OPTION_PAD) ? 1 : (DHCPOptionsINStart[1] + 2));\r
+               DHCPOptions += ((DHCPOptions[0] == DHCP_OPTION_PAD) ? 1 : (DHCPOptions[1] + 2));\r
        }\r
 \r
        #endif\r
index 4d2fefb..716f1c3 100644 (file)
@@ -219,9 +219,11 @@ void ReadNextReport(void)
 /** 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
@@ -240,8 +242,12 @@ void WriteNextReport(uint8_t* ReportOUTData, uint16_t ReportLength)
                        \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
@@ -257,7 +263,7 @@ void WriteNextReport(uint8_t* ReportOUTData, uint16_t ReportLength)
                        {\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
index d0f3e7a..99b4599 100644 (file)
                /** 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
index e85b35c..0b4b6d6 100644 (file)
   *  - 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 GenericHIDHost demo report write routine incorrect for control type requests (thanks to Andrei)\r
   *\r
   *  \section Sec_ChangeLog090401 Version 090401\r
   *\r