Make Host mode Class drivers only set the class driver instance's state values once...
[pub/lufa.git] / LUFA / Drivers / USB / Class / Host / HIDParser.c
index 1492112..58ee000 100644 (file)
@@ -244,11 +244,11 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
                                        uint8_t ItemTag = (HIDReportItem & TAG_MASK);
 
                                        if (ItemTag == TAG_MAIN_INPUT)
-                                         NewReportItem.ItemType = REPORT_ITEM_TYPE_In;
+                                         NewReportItem.ItemType = HID_REPORT_ITEM_In;
                                        else if (ItemTag == TAG_MAIN_OUTPUT)
-                                         NewReportItem.ItemType = REPORT_ITEM_TYPE_Out;
+                                         NewReportItem.ItemType = HID_REPORT_ITEM_Out;
                                        else
-                                         NewReportItem.ItemType = REPORT_ITEM_TYPE_Feature;
+                                         NewReportItem.ItemType = HID_REPORT_ITEM_Feature;
                                        
                                        NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType];
 
@@ -276,7 +276,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
                {
                        UsageMinMax.Minimum = 0;
                        UsageMinMax.Maximum = 0;
-                       UsageListSize   = 0;
+                       UsageListSize       = 0;
                }
        }
        
@@ -292,9 +292,6 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
        uint16_t DataBitsRem  = ReportItem->Attributes.BitSize;
        uint16_t CurrentBit   = ReportItem->BitOffset;
        uint32_t BitMask      = (1 << 0);
-
-       ReportItem->PreviousValue = ReportItem->Value;
-       ReportItem->Value = 0;
        
        if (ReportItem->ReportID)
        {
@@ -304,6 +301,9 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
                ReportData++;
        }
 
+       ReportItem->PreviousValue = ReportItem->Value;
+       ReportItem->Value = 0;
+
        while (DataBitsRem--)
        {
                if (ReportData[CurrentBit / 8] & (1 << (CurrentBit % 8)))