Added standard stream example to the ClassDriver CDC device demo.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / HID.h
index 56bf04f..344c06f 100644 (file)
 /** \ingroup Group_USBClassHID\r
  *  @defgroup Group_USBClassHIDHost HID Class Host Mode Driver\r
  *\r
+ *  \section Sec_Dependencies Module Source Dependencies\r
+ *  The following files must be built with any user project that uses this module:\r
+ *    - LUFA/Drivers/USB/Class/Host/HID.c\r
+ *\r
  *  \section Module Description\r
  *  Host Mode USB Class driver framework interface, for the HID USB Class driver.\r
  *\r
                #endif\r
 \r
        /* Public Interface - May be used in end-application: */\r
+               /* Type Defines: */\r
+                       /** Class state structure. An instance of this structure should be made within the user application,\r
+                        *  and passed to each of the HID class driver functions as the HIDInterfaceInfo parameter. This\r
+                        *  stores each HID interface's configuration and state information.\r
+                        */\r
+                       typedef struct\r
+                       {\r
+                               const struct\r
+                               {\r
+                                       uint8_t  DataINPipeNumber; /**< Pipe number of the HID interface's IN data pipe */\r
+                                       uint8_t  DataOUTPipeNumber; /**< Pipe number of the HID interface's OUT data pipe */\r
+                                       \r
+                                       bool     MatchInterfaceProtocol; /**< Indicates whether the driver should match the device's\r
+                                                                         *   HID interface protocol's value to the \ref HIDInterfaceProtocol\r
+                                                                         *   suppled (otherwise just accept all HID class devices)\r
+                                                                         */\r
+                                       uint8_t  HIDInterfaceProtocol; /**< HID interface protocol value to match against if the\r
+                                                                       *   \ref MatchInterfaceProtocol is set to true (ignored otherwise)\r
+                                                                       */\r
+                               } Config; /**< Config data for the USB class interface within the device. All elements in this section\r
+                                          *   <b>must</b> be set or the interface will fail to enumerate and operate correctly.\r
+                                          */\r
+                               struct\r
+                               {\r
+                                       uint16_t DataINPipeSize; /**< Size in bytes of the HID interface's IN data pipe */\r
+                                       uint16_t DataOUTPipeSize;  /**< Size in bytes of the HID interface's OUT data pipe */\r
+                               } State; /**< State data for the USB class interface within the device. All elements in this section\r
+                                                 *   <b>may</b> be set to initial values, but may also be ignored to default to sane values when\r
+                                                 *   the interface is enumerated.\r
+                                                 */\r
+                       } USB_ClassInfo_HID_Host_t;\r
+\r
+               /* Enums: */\r
+                       enum\r
+                       {\r
+                               HID_ENUMERROR_NoError                    = 0, /**< Configuration Descriptor was processed successfully */\r
+                               HID_ENUMERROR_InvalidConfigDescriptor    = 1, /**< The device returned an invalid Configuration Descriptor */\r
+                               HID_ENUMERROR_NoHIDInterfaceFound        = 2, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
+                               HID_ENUMERROR_EndpointsNotFound          = 3, /**< Compatible HID endpoints were not found in the device's CDC interface */\r
+                       } CDCHost_EnumerationFailure_ErrorCodes_t;\r
+       \r
                /* Function Prototypes: */\r
+                       void HID_Host_USBTask(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo);\r
+                       uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t ConfigDescriptorLength,\r
+                                                       uint8_t* DeviceConfigDescriptor);\r
                \r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */\r
+                       #define HID_INTERFACE_CLASS             0x03\r
+                       \r
+                       #define HID_FOUND_DATAPIPE_IN           (1 << 0)\r
+                       #define HID_FOUND_DATAPIPE_OUT          (1 << 1)\r
+\r
+               /* Function Prototypes: */\r
+                       #if defined(INCLUDE_FROM_HID_CLASS_HOST_C)\r
+                               static uint8_t DComp_HID_Host_NextHIDInterface(void* CurrentDescriptor);\r
+                               static uint8_t DComp_HID_Host_NextInterfaceHIDDataEndpoint(void* CurrentDescriptor);\r
+                       #endif  \r
+       #endif  \r
+       \r
        /* Disable C linkage for C++ Compilers: */\r
                #if defined(__cplusplus)\r
                        }\r