Fix USB_SetHIDReportItemInfo() function.
authore-chip <egor.gorlin@gmail.com>
Wed, 28 Sep 2016 08:12:33 +0000 (14:12 +0600)
committere-chip <egor.gorlin@gmail.com>
Wed, 28 Sep 2016 08:12:33 +0000 (14:12 +0600)
Bits applying loop worked incorrect on large reports. Seems to me like a
copy/paste problem from USB_GetHIDReportItemInfo().

LUFA/Drivers/USB/Class/Common/HIDParser.c

index c01ceaf..00100a6 100644 (file)
@@ -364,8 +364,8 @@ void USB_SetHIDReportItemInfo(uint8_t* ReportData,
 
        while (DataBitsRem--)
        {
-               if (ReportItem->Value & (1 << (CurrentBit % 8)))
-                 ReportData[CurrentBit / 8] |= BitMask;
+               if (ReportItem->Value & BitMask)
+                 ReportData[CurrentBit / 8] |= (1 << (CurrentBit % 8));
 
                CurrentBit++;
                BitMask <<= 1;