From c86491af8b24679984a3fc5effc7675779652e4c Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 11 Aug 2009 09:12:29 +0000 Subject: Add new functions to the HID host class driver, refine HID interface protocol matching. Remove stray state variable from the CDC host class driver. --- LUFA/Drivers/USB/Class/Host/HID.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to '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..d94fa2e0e 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. @@ -103,7 +108,8 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, uint16_t ConfigDescriptorLength, uint8_t* DeviceConfigDescriptor); - bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo); + bool HID_Host_IsReportReceived(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo); + uint8_t USB_HID_Host_SetProtocol(USB_ClassInfo_HID_Host_t* HIDInterfaceInfo, bool UseReportProtocol); /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) -- cgit v1.2.3