aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Host
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-07-04 09:18:50 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-07-04 09:18:50 +0000
commit61861c548eabf6863af57a9aa20103fcd3a9aced (patch)
treeebbc80b96ffb5f1c6d452ece696282f46b004412 /LUFA/Drivers/USB/Class/Host
parentb7759958674db4c4256e6e3919431791709acee2 (diff)
downloadlufa-61861c548eabf6863af57a9aa20103fcd3a9aced.tar.gz
lufa-61861c548eabf6863af57a9aa20103fcd3a9aced.tar.bz2
lufa-61861c548eabf6863af57a9aa20103fcd3a9aced.zip
Added new HID_Host_SetIdlePeriod() function to the HID Host Class driver.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Host')
-rw-r--r--LUFA/Drivers/USB/Class/Host/HID.c16
-rw-r--r--LUFA/Drivers/USB/Class/Host/HID.h10
2 files changed, 26 insertions, 0 deletions
diff --git a/LUFA/Drivers/USB/Class/Host/HID.c b/LUFA/Drivers/USB/Class/Host/HID.c
index aab35b109..683458de5 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.c
+++ b/LUFA/Drivers/USB/Class/Host/HID.c
@@ -357,6 +357,22 @@ uint8_t HID_Host_SetBootProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceInf
return HOST_SENDCONTROL_Successful;
}
+uint8_t HID_Host_SetIdlePeriod(const uint16_t MS)
+{
+ USB_ControlRequest = (USB_Request_Header_t)
+ {
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE),
+ .bRequest = HID_REQ_SetIdle,
+ .wValue = ((MS << 6) & 0xFF00),
+ .wIndex = HIDInterfaceInfo->State.InterfaceNumber,
+ .wLength = 0,
+ };
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ return USB_Host_SendControlRequest(HIDReportData);
+}
+
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
uint8_t HID_Host_SetReportProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo)
{
diff --git a/LUFA/Drivers/USB/Class/Host/HID.h b/LUFA/Drivers/USB/Class/Host/HID.h
index 878a0990b..1c6c7d232 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.h
+++ b/LUFA/Drivers/USB/Class/Host/HID.h
@@ -251,6 +251,16 @@
*/
uint8_t HID_Host_SetBootProtocol(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
+ /** Sets the idle period for the attached HID device to the specified interval. The HID idle period determines the rate
+ * at which the device should send a report, when no state changes have ocurred; i.e. on HID keyboards, this sets the
+ * hardware key repeat interval.
+ *
+ * \param[in] MS Idle period as a multiple of four milliseconds, zero to disable hardware repeats
+ *
+ * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
+ */
+ uint8_t HID_Host_SetIdlePeriod(const uint16_t MS);
+
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
/** Switches the attached HID device's reporting protocol over to the standard Report protocol mode. This also retrieves
* and parses the device's HID report descriptor, so that the size of each report can be determined in advance.