diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-06-05 07:56:39 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-06-05 07:56:39 +0000 |
commit | f1199200e167a737a4676378da184387e543830c (patch) | |
tree | 9d49d9d0f932ccef70da579e70c19b0f03c9a88d /Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c | |
parent | f51017f8fb5a02029bce577e3d7226cb5158d830 (diff) | |
download | lufa-f1199200e167a737a4676378da184387e543830c.tar.gz lufa-f1199200e167a737a4676378da184387e543830c.tar.bz2 lufa-f1199200e167a737a4676378da184387e543830c.zip |
Copy existing Host mode demos to new ClassDriver and LowLevel subfolders.
Diffstat (limited to 'Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c')
-rw-r--r-- | Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c b/Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c new file mode 100644 index 000000000..6ac1f5a65 --- /dev/null +++ b/Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.c @@ -0,0 +1,72 @@ +/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2009.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.fourwalledcubicle.com
+*/
+
+/*
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, and distribute this software
+ and its documentation for any purpose and without fee is hereby
+ granted, provided that the above copyright notice appear in all
+ copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+#include "HIDReport.h"
+
+/** Size in bytes of the attached device's HID report descriptor */
+uint16_t HIDReportSize;
+
+/** Processed HID report descriptor items structure, containing information on each HID report element */
+HID_ReportInfo_t HIDReportInfo;
+
+
+/** Function to read in the HID report descriptor from the attached device, and process it into easy-to-read
+ * structures via the HID parser routines in the LUFA library.
+ *
+ * \return A value from the KeyboardHostWithParser_GetHIDReportDataCodes_t enum
+ */
+uint8_t GetHIDReportData(void)
+{
+ /* Create a buffer big enough to hold the entire returned HID report */
+ uint8_t HIDReportData[HIDReportSize];
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ {
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE),
+ .bRequest = REQ_GetDescriptor,
+ .wValue = (DTYPE_Report << 8),
+ .wIndex = 0,
+ .wLength = HIDReportSize,
+ };
+
+ /* Select the control pipe for the request transfer */
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ /* Send control request to retrieve the HID report from the attached device */
+ if (USB_Host_SendControlRequest(HIDReportData) != HOST_SENDCONTROL_Successful)
+ return ParseControlError;
+
+ /* Send the HID report to the parser for processing */
+ if (USB_ProcessHIDReport(HIDReportData, HIDReportSize, &HIDReportInfo) != HID_PARSE_Successful)
+ return ParseError;
+
+ return ParseSuccessful;
+}
+
|