Add user-filtering to the HID report parser, so that the user code can decide which...
[pub/lufa.git] / Demos / Host / LowLevel / KeyboardHostWithParser / HIDReport.c
index 6ac1f5a..2623878 100644 (file)
@@ -70,3 +70,25 @@ uint8_t GetHIDReportData(void)
        return ParseSuccessful;\r
 }\r
 \r
+/** Callback for the HID Report Parser. This function is called each time the HID report parser is about to store\r
+ *  an IN, OUT or FEATURE item into the HIDReportInfo structure. To save on RAM, we are able to filter out items\r
+ *  we aren't interested in (preventing us from being able to extract them later on, but saving on the RAM they would\r
+ *  have occupied).\r
+ *\r
+ *  \param CurrentItemAttributes  Pointer to the attrbutes of the item the HID report parser is currently working with\r
+ *\r
+ *  \return Boolean true if the item should be stored into the HID report structure, false if it should be discarded\r
+ */\r
+bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_Attributes_t* CurrentItemAttributes)\r
+{\r
+       /* Check the attributes of the current item - see if we are interested in it or not */\r
+       if (CurrentItemAttributes->Usage.Page == USAGE_PAGE_KEYBOARD)\r
+       {\r
+               /* Only store KEYBOARD usage page items into the Processed HID Report structure to save RAM */\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r