X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/a2001ac1ccf4d4919c8243fbc69aff0b68973d3f..665fe11f128b95874befdd59492379a0f5d8105e:/LUFA/Drivers/USB/Class/Host/HID.h
diff --git a/LUFA/Drivers/USB/Class/Host/HID.h b/LUFA/Drivers/USB/Class/Host/HID.h
index e67103a69..56b27df79 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.h
+++ b/LUFA/Drivers/USB/Class/Host/HID.h
@@ -66,23 +66,28 @@
{
uint8_t DataINPipeNumber; /**< Pipe number of the HID interface's IN data pipe */
uint8_t DataOUTPipeNumber; /**< Pipe number of the HID interface's OUT data pipe */
-
- bool MatchInterfaceProtocol; /**< Indicates whether the driver should match the device's
- * HID interface protocol's value to the \ref HIDInterfaceProtocol
- * suppled (otherwise just accept all HID class devices)
- */
- uint8_t HIDInterfaceProtocol; /**< HID interface protocol value to match against if the
- * \ref MatchInterfaceProtocol is set to true (ignored otherwise)
+
+ uint8_t HIDInterfaceProtocol; /**< HID interface protocol value to match against if a specific
+ * boot subclass protocol is required (e.g. keyboard, mouse), or
+ * leave as 0 to match against the first HID interface found
*/
} Config; /**< Config data for the USB class interface within the device. All elements in this section
* must be set or the interface will fail to enumerate and operate correctly.
*/
struct
{
- bool Active; /**< Indicates if the current interface instance is connected to an attached device */
+ bool Active; /**< Indicates if the current interface instance is connected to an attached device, valid
+ * after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the
+ * Configured state
+ */
+ uint8_t InterfaceNumber; /**< Interface index of the HID interface within the attached device */
uint16_t DataINPipeSize; /**< Size in bytes of the HID interface's IN data pipe */
uint16_t DataOUTPipeSize; /**< Size in bytes of the HID interface's OUT data pipe */
+
+ bool SupportsBootSubClass; /**< Indicates if the current interface instance supports the HID Boot
+ * Protocol when enabled via \ref USB_HID_Host_SetProtocol()
+ */
} State; /**< State data for the USB class interface within the device. All elements in this section
* may be set to initial values, but may also be ignored to default to sane values when
* the interface is enumerated.
@@ -90,20 +95,21 @@
} USB_ClassInfo_HID_Host_t;
/* Enums: */
- enum
+ enum HIDHost_EnumerationFailure_ErrorCodes_t
{
HID_ENUMERROR_NoError = 0, /**< Configuration Descriptor was processed successfully */
HID_ENUMERROR_InvalidConfigDescriptor = 1, /**< The device returned an invalid Configuration Descriptor */
HID_ENUMERROR_NoHIDInterfaceFound = 2, /**< A compatible HID interface was not found in the device's Configuration Descriptor */
- HID_ENUMERROR_EndpointsNotFound = 3, /**< Compatible HID endpoints were not found in the device's CDC interface */
- } HIDHost_EnumerationFailure_ErrorCodes_t;
+ HID_ENUMERROR_EndpointsNotFound = 3, /**< Compatible HID endpoints were not found in the device's HID interface */
+ };
/* Function Prototypes: */
- void HID_Host_USBTask(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo);
+ void HID_Host_USBTask(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t ConfigDescriptorLength,
- uint8_t* DeviceConfigDescriptor);
+ uint8_t* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1, 3);
- bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo);
+ bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
+ uint8_t USB_HID_Host_SetProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, bool UseReportProtocol) ATTR_NON_NULL_PTR_ARG(1);
/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)
@@ -115,8 +121,8 @@
/* Function Prototypes: */
#if defined(INCLUDE_FROM_HID_CLASS_HOST_C)
- static uint8_t DComp_HID_Host_NextHIDInterface(void* CurrentDescriptor);
- static uint8_t DComp_HID_Host_NextInterfaceHIDDataEndpoint(void* CurrentDescriptor);
+ static uint8_t DComp_HID_Host_NextHIDInterface(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
+ static uint8_t DComp_HID_Host_NextInterfaceHIDDataEndpoint(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
#endif
#endif