uint16_t UsageStack[HID_USAGE_STACK_DEPTH];\r
uint8_t UsageStackSize = 0;\r
\r
- ParserData->TotalReportItems = 0;\r
- ParserData->TotalDeviceReports = 1;\r
- ParserData->UsingReportIDs = false;\r
- \r
- for (uint8_t CurrCollection = 0; CurrCollection < HID_MAX_COLLECTIONS; CurrCollection++)\r
- ParserData->CollectionPaths[CurrCollection].Parent = NULL;\r
-\r
+ memset(ParserData, 0x00, sizeof(HID_ReportInfo_t));\r
memset(CurrStateTable, 0x00, sizeof(HID_StateTable_t));\r
memset(CurrReportIDInfo, 0x00, sizeof(HID_ReportSizeInfo_t));\r
\r
+ ParserData->TotalDeviceReports = 1; \r
+\r
while (ReportSize)\r
{\r
uint8_t HIDReportItem = *ReportData;\r
\r
CurrCollectionPath = &ParserData->CollectionPaths[1];\r
\r
- while (CurrCollectionPath->Parent != NULL);\r
+ while (CurrCollectionPath->Parent != NULL)\r
{\r
if (CurrCollectionPath == &ParserData->CollectionPaths[HID_MAX_COLLECTIONS - 1])\r
return HID_PARSE_InsufficientCollectionPaths;\r
\r
UsageStackSize--;\r
}\r
- else\r
- {\r
- CurrCollectionPath->Usage.Usage = 0;\r
- }\r
\r
break;\r
case (TYPE_MAIN | TAG_MAIN_ENDCOLLECTION):\r
return HID_PARSE_UnexpectedEndCollection;\r
\r
CurrCollectionPath = CurrCollectionPath->Parent;\r
-\r
break;\r
case (TYPE_MAIN | TAG_MAIN_INPUT):\r
case (TYPE_MAIN | TAG_MAIN_OUTPUT):\r
\r
UsageStackSize--;\r
}\r
- else\r
- {\r
- NewReportItem.Attributes.Usage.Usage = 0;\r
- }\r
-\r
- uint8_t ReportSizeIndex = 0;\r
\r
switch (HIDReportItem & TAG_MASK)\r
{\r
case TAG_MAIN_INPUT:\r
NewReportItem.ItemType = REPORT_ITEM_TYPE_In;\r
- NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[REPORT_ITEM_TYPE_In];\r
- \r
- ReportSizeIndex = REPORT_ITEM_TYPE_In;\r
break;\r
case TAG_MAIN_OUTPUT:\r
NewReportItem.ItemType = REPORT_ITEM_TYPE_Out;\r
- NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[REPORT_ITEM_TYPE_Out];\r
- \r
- ReportSizeIndex = REPORT_ITEM_TYPE_Out;\r
break;\r
case TAG_MAIN_FEATURE:\r
NewReportItem.ItemType = REPORT_ITEM_TYPE_Feature; \r
- NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[REPORT_ITEM_TYPE_Feature];\r
- \r
- ReportSizeIndex = REPORT_ITEM_TYPE_Feature;\r
break;\r
}\r
\r
- CurrReportIDInfo->ReportSizeBits[ReportSizeIndex] += CurrStateTable->Attributes.BitSize;\r
+ NewReportItem.BitOffset = CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType];\r
+\r
+ CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType] += CurrStateTable->Attributes.BitSize;\r
\r
- if (ParserData->LargestReportSizeBits < CurrReportIDInfo->ReportSizeBits[ReportSizeIndex])\r
- ParserData->LargestReportSizeBits = CurrReportIDInfo->ReportSizeBits[ReportSizeIndex];\r
+ if (ParserData->LargestReportSizeBits < NewReportItem.BitOffset)\r
+ ParserData->LargestReportSizeBits = NewReportItem.BitOffset;\r
\r
if (!(ReportItemData & IOF_CONSTANT) && CALLBACK_HIDParser_FilterHIDReportItem(&NewReportItem))\r
{ \r
}\r
}\r
\r
- UsageStackSize = 0;\r
- \r
break;\r
}\r
\r