Changed Audio Class driver sample read/write functions to be inline, to reduce the...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / HIDParser.h
index f598789..e9716f3 100644 (file)
                         *  makefile, and passing the define to the compiler using the -D compiler switch. Note that IN, OUT and FEATURE\r
                         *  items sharing the same report ID consume only one size item in the array.\r
                         */\r
-                       #define HID_MAX_REPORT_IDS  5\r
+                       #define HID_MAX_REPORT_IDS            10\r
                #endif\r
 \r
        /* Public Interface - May be used in end-application: */\r
                                HID_PARSE_InsufficientCollectionPaths = 5, /**< More than \ref HID_MAX_COLLECTIONS collections in the report. */\r
                                HID_PARSE_UsageStackOverflow          = 6, /**< More than \ref HID_USAGE_STACK_DEPTH usages listed in a row. */\r
                                HID_PARSE_InsufficientReportIDItems   = 7, /**< More than \ref HID_MAX_REPORT_IDS report IDs in the device. */\r
+                               HID_PARSE_NoUnfilteredReportItems     = 8, /**< All report items from the device were filtered by the filtering callback routine. */\r
                        };\r
                \r
                /* Type Defines: */             \r
                        typedef struct\r
                        {\r
                                uint8_t                      ReportID; /** Report ID of the report within the HID interface */\r
-                               uint8_t                      BitsIn; /** Total number of IN data bits in the current report ID */\r
-                               uint8_t                      BitsOut; /** Total number of OUT data bits in the current report ID */\r
-                               uint8_t                      BitsFeature; /** Total number of FEATURE data bits in the current report ID */\r
+                               uint8_t                      ReportSizeBits[3]; /** Total number of bits in each report type for the given Report ID,\r
+                                                                                *  indexed by the \ref HID_ReportItemTypes_t enum\r
+                                                                                                                                */\r
                        } HID_ReportSizeInfo_t;\r
 \r
                        /** Type define for a complete processed HID report, including all report item data and collections. */\r
                                HID_CollectionPath_t         CollectionPaths[HID_MAX_COLLECTIONS]; /**< All collection items, referenced\r
                                                                                                    *   by the report items.\r
                                                                                                    */\r
-                               uint8_t                      TotalDeviceReports; /** Number of reports within the HID interface */\r
-                               HID_ReportSizeInfo_t         ReportIDSizes[HID_MAX_REPORT_IDS]; /** Report sizes for each report in the interface */\r
+                               uint8_t                      TotalDeviceReports; /**< Number of reports within the HID interface */\r
+                               HID_ReportSizeInfo_t         ReportIDSizes[HID_MAX_REPORT_IDS]; /**< Report sizes for each report in the interface */\r
+                               uint16_t                     LargestReportSizeBits; /**< Largest report that the attached device will generate, in bits */\r
                                bool                         UsingReportIDs; /**< Indicates if the device has at least one REPORT ID\r
                                                                              *   element in its HID report descriptor.\r
                                                                              */\r
                         *\r
                         *  \return Size of the report in bytes, or 0 if the report does not exist\r
                         */\r
-                       uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData, uint8_t ReportID,\r
-                                                     uint8_t ReportType) ATTR_NON_NULL_PTR_ARG(1);\r
+                       uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData, const uint8_t ReportID,\r
+                                                     const uint8_t ReportType) ATTR_NON_NULL_PTR_ARG(1) ATTR_CONST;\r
 \r
                        /** Callback routine for the HID Report Parser. This callback <b>must</b> be implemented by the user code when\r
                         *  the parser is used, to determine what report IN, OUT and FEATURE item's information is stored into the user\r
                         *  HID_ReportInfo_t structure. This can be used to filter only those items the application will be using, so that\r
                         *  no RAM is wasted storing the attributes for report items which will never be referenced by the application.\r
                         *\r
-                        *  \param CurrentItemAttributes  Pointer to the current report item attributes for user checking\r
+                        *  \param[in] CurrentItemAttributes  Pointer to the current report item attributes for user checking\r
                         *\r
                         *  \return Boolean true if the item should be stored into the HID_ReportInfo_t structure, false if it should be ignored\r
                         */\r