From c94a08f8caf3cc34decd2467f289425728ea55b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Tue, 1 Mar 2016 20:29:29 +0100 Subject: [PATCH] Use the LUFA generic HID descriptor. --- right/usb_class_generic_hid.h | 10 +++++++ right/usb_descriptor_generic_hid_report.c | 36 ++++++++++++----------- right/usb_descriptor_generic_hid_report.h | 7 ++++- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/right/usb_class_generic_hid.h b/right/usb_class_generic_hid.h index da6c350..e64c533 100644 --- a/right/usb_class_generic_hid.h +++ b/right/usb_class_generic_hid.h @@ -1,6 +1,16 @@ #ifndef __USB_CLASS_GENERIC_HID_H__ #define __USB_CLASS_GENERIC_HID_H__ +// Includes: + + #include "usb_device_config.h" + #include "usb.h" + #include "usb_device.h" + #include "include/usb/usb_device_class.h" + #include "include/usb/usb_device_hid.h" + #include "usb_descriptor_device.h" + #include "usb_class_keyboard.h" + // Macros: #define USB_GENERIC_HID_CLASS (0x03U) diff --git a/right/usb_descriptor_generic_hid_report.c b/right/usb_descriptor_generic_hid_report.c index de9ad78..429bf5f 100644 --- a/right/usb_descriptor_generic_hid_report.c +++ b/right/usb_descriptor_generic_hid_report.c @@ -1,24 +1,26 @@ #include +#include "usb_report_item_macros.h" +#include "usb_class_generic_hid.h" #include "usb_descriptor_generic_hid_report.h" uint8_t UsbGenericHidReportDescriptor[USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH] = { - 0x05U, 0x81U, /* Usage Page (Vendor defined)*/ - 0x09U, 0x82U, /* Usage (Vendor defined) */ - 0xA1U, 0x01U, /* Collection (Application) */ - 0x09U, 0x83U, /* Usage (Vendor defined) */ + HID_RI_USAGE_PAGE(16, (0xFF00 | USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX)), + HID_RI_USAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION), + HID_RI_COLLECTION(8, HID_RI_COLLECTION_APPLICATION), - 0x09U, 0x84U, /* Usage (Vendor defined) */ - 0x15U, 0x80U, /* Logical Minimum (-128) */ - 0x25U, 0x7FU, /* Logical Maximum (127) */ - 0x75U, 0x08U, /* Report Size (8U) */ - 0x95U, 0x08U, /* Report Count (8U) */ - 0x81U, 0x02U, /* Input(Data, Variable, Absolute) */ + HID_RI_USAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_IN), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, USB_GENERIC_HID_INTERRUPT_IN_PACKET_SIZE), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), - 0x09U, 0x84U, /* Usage (Vendor defined) */ - 0x15U, 0x80U, /* logical Minimum (-128) */ - 0x25U, 0x7FU, /* logical Maximum (127) */ - 0x75U, 0x08U, /* Report Size (8U) */ - 0x95U, 0x08U, /* Report Count (8U) */ - 0x91U, 0x02U, /* Input (Data, Variable, Absolute) */ - 0xC0U, /* End collection */ + HID_RI_USAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_OUT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, USB_GENERIC_HID_INTERRUPT_OUT_PACKET_SIZE), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + + HID_RI_END_COLLECTION(0) }; diff --git a/right/usb_descriptor_generic_hid_report.h b/right/usb_descriptor_generic_hid_report.h index 0c96424..b08671a 100644 --- a/right/usb_descriptor_generic_hid_report.h +++ b/right/usb_descriptor_generic_hid_report.h @@ -3,7 +3,12 @@ // Macros: - #define USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH (33U) + #define USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH (32U) + + #define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX 0x80U + #define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION 0x81U + #define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_IN 0x82U + #define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_OUT 0x83U // Variables: