Add new MouseHost Class Driver demo, unfinished, to allow for better testing of the...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / HID.h
index 5e44e0a..9ae1f14 100644 (file)
                #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;\r
+                                       uint8_t  HIDInterfaceProtocol;\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_ControlError               = 1, /**< A control request to the device failed to complete successfully */\r
+                               HID_ENUMERROR_DescriptorTooLarge         = 2, /**< The device's Configuration Descriptor is too large to process */\r
+                               HID_ENUMERROR_InvalidConfigDataReturned  = 3, /**< The device returned an invalid Configuration Descriptor */\r
+                               HID_ENUMERROR_NoHIDInterfaceFound        = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
+                               HID_ENUMERROR_EndpointsNotFound          = 5, /**< 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 MaxConfigBufferSize);\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