X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/039a714ee46268c07928c79b30403f29d4040fe8..2e76ad721e494f3a14ece73100ea9a2144c6fe8e:/LUFA/Drivers/USB/Class/Common/HIDParser.c diff --git a/LUFA/Drivers/USB/Class/Common/HIDParser.c b/LUFA/Drivers/USB/Class/Common/HIDParser.c index 7b13f1a75..b90f89eb2 100644 --- a/LUFA/Drivers/USB/Class/Common/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Common/HIDParser.c @@ -61,12 +61,12 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, switch (HIDReportItem & HID_RI_DATA_SIZE_MASK) { case HID_RI_DATA_BITS_32: - ReportItemData = *((uint32_t*)ReportData); + ReportItemData = le32_to_cpu(*((uint32_t*)ReportData)); ReportSize -= 4; ReportData += 4; break; case HID_RI_DATA_BITS_16: - ReportItemData = *((uint16_t*)ReportData); + ReportItemData = le16_to_cpu(*((uint16_t*)ReportData)); ReportSize -= 2; ReportData += 2; break; @@ -96,6 +96,9 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, CurrStateTable--; break; case HID_RI_USAGE_PAGE(0): + if ((HIDReportItem & HID_RI_DATA_SIZE_MASK) == HID_RI_DATA_BITS_32) + CurrStateTable->Attributes.Usage.Page = (ReportItemData >> 16); + CurrStateTable->Attributes.Usage.Page = ReportItemData; break; case HID_RI_LOGICAL_MINIMUM(0): @@ -348,7 +351,7 @@ uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData, uint16_t ReportSizeBits = ParserData->ReportIDSizes[i].ReportSizeBits[ReportType]; if (ParserData->ReportIDSizes[i].ReportID == ReportID) - return ((ReportSizeBits >> 3) + ((ReportSizeBits & 0x07) ? 1 : 0)); + return (ReportSizeBits / 8) + ((ReportSizeBits % 8) ? 1 : 0); } return 0;