X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f1b6ddb7107fd9534cc6a8d6ab2d46f349d9cdb7..9da01ee78b59bcaed0d73e3f77d2f284885bfc76:/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 d3e7d0226..4b4667b4f 100644 --- a/LUFA/Drivers/USB/Class/Common/HIDParser.c +++ b/LUFA/Drivers/USB/Class/Common/HIDParser.c @@ -53,7 +53,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, while (ReportSize) { uint8_t HIDReportItem = *ReportData; - uint32_t ReportItemData = 0; + uint32_t ReportItemData; ReportData++; ReportSize--; @@ -61,20 +61,27 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, switch (HIDReportItem & HID_RI_DATA_SIZE_MASK) { case HID_RI_DATA_BITS_32: - ReportItemData = le32_to_cpu(*((uint32_t*)ReportData)); + ReportItemData = (((uint32_t)ReportData[3] << 24) | ((uint32_t)ReportData[2] << 16) | + ((uint16_t)ReportData[1] << 8) | ReportData[0]); ReportSize -= 4; ReportData += 4; break; + case HID_RI_DATA_BITS_16: - ReportItemData = le16_to_cpu(*((uint16_t*)ReportData)); + ReportItemData = (((uint16_t)ReportData[1] << 8) | (ReportData[0])); ReportSize -= 2; ReportData += 2; break; + case HID_RI_DATA_BITS_8: - ReportItemData = *((uint8_t*)ReportData); + ReportItemData = ReportData[0]; ReportSize -= 1; ReportData += 1; break; + + default: + ReportItemData = 0; + break; } switch (HIDReportItem & (HID_RI_TYPE_MASK | HID_RI_TAG_MASK)) @@ -268,6 +275,9 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, } break; + + default: + break; } if ((HIDReportItem & HID_RI_TYPE_MASK) == HID_RI_TYPE_MAIN)