From efd57cfe51ec0501d4378d01e019f3e23b989274 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 17 Jan 2011 19:44:48 +0000 Subject: [PATCH] Abuse the the C preprocessor so that the HID macros can automatically encode data into the array from the HID macros automagically, by specifying the bit-width of the data, and the data itself as a single integer value of that width. --- .../ClassDriver/GenericHID/Descriptors.c | 31 +++-- .../Device/ClassDriver/Joystick/Descriptors.c | 46 +++---- .../Device/ClassDriver/Keyboard/Descriptors.c | 65 +++++----- .../ClassDriver/KeyboardMouse/Descriptors.c | 119 +++++++++--------- .../MassStorageKeyboard/Descriptors.c | 65 +++++----- Demos/Device/ClassDriver/Mouse/Descriptors.c | 54 ++++---- .../VirtualSerialMouse/Descriptors.c | 54 ++++---- .../Device/LowLevel/GenericHID/Descriptors.c | 31 +++-- Demos/Device/LowLevel/Joystick/Descriptors.c | 46 +++---- Demos/Device/LowLevel/Keyboard/Descriptors.c | 65 +++++----- .../LowLevel/KeyboardMouse/Descriptors.c | 119 +++++++++--------- Demos/Device/LowLevel/Mouse/Descriptors.c | 54 ++++---- .../ClassDriver/MouseHostDevice/Descriptors.c | 52 ++++---- LUFA/Drivers/USB/Class/Common/HIDReportData.h | 73 ++++++----- Projects/Magstripe/Descriptors.c | 65 +++++----- Projects/TempDataLogger/Descriptors.c | 31 +++-- 16 files changed, 474 insertions(+), 496 deletions(-) diff --git a/Demos/Device/ClassDriver/GenericHID/Descriptors.c b/Demos/Device/ClassDriver/GenericHID/Descriptors.c index 0716ae9ca2..aeec36db1f 100644 --- a/Demos/Device/ClassDriver/GenericHID/Descriptors.c +++ b/Demos/Device/ClassDriver/GenericHID/Descriptors.c @@ -45,22 +45,21 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = { - HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ - HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ - HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ - HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */ + HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */ + HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */ + HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/Joystick/Descriptors.c b/Demos/Device/ClassDriver/Joystick/Descriptors.c index e2b528e1c8..17c1495280 100644 --- a/Demos/Device/ClassDriver/Joystick/Descriptors.c +++ b/Demos/Device/ClassDriver/Joystick/Descriptors.c @@ -45,30 +45,30 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x04, /* Joystick */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -100, - HID_RI_LOGICAL_MAXIMUM(8), 100, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x04), /* Joystick */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -100), + HID_RI_LOGICAL_MAXIMUM(8, 100), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE(8), 0x02, /* Button 1 */ - HID_RI_USAGE(8), 0x01, /* Button 2 */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_SIZE(8), 6, - HID_RI_REPORT_COUNT(8), 1, - HID_RI_INPUT(8), HID_IOF_CONSTANT, + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE(8, 0x02), /* Button 1 */ + HID_RI_USAGE(8, 0x01), /* Button 2 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_SIZE(8, 0x06), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_INPUT(8, HID_IOF_CONSTANT), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/Keyboard/Descriptors.c b/Demos/Device/ClassDriver/Keyboard/Descriptors.c index 640479a235..16ca1955e8 100644 --- a/Demos/Device/ClassDriver/Keyboard/Descriptors.c +++ b/Demos/Device/ClassDriver/Keyboard/Descriptors.c @@ -45,40 +45,37 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.c b/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.c index e7f2562156..be2b7e0855 100644 --- a/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.c +++ b/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.c @@ -47,34 +47,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; @@ -82,40 +80,37 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.c b/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.c index 3d766b6b5e..a5d7973da3 100644 --- a/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.c +++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.c @@ -58,40 +58,37 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/Mouse/Descriptors.c b/Demos/Device/ClassDriver/Mouse/Descriptors.c index 58a4ae4dc2..26ba10fb49 100644 --- a/Demos/Device/ClassDriver/Mouse/Descriptors.c +++ b/Demos/Device/ClassDriver/Mouse/Descriptors.c @@ -45,34 +45,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c index 7cf15e0e11..22f29b95af 100644 --- a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c +++ b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.c @@ -57,34 +57,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/LowLevel/GenericHID/Descriptors.c b/Demos/Device/LowLevel/GenericHID/Descriptors.c index 3a018d9adb..c1505bc5ce 100644 --- a/Demos/Device/LowLevel/GenericHID/Descriptors.c +++ b/Demos/Device/LowLevel/GenericHID/Descriptors.c @@ -45,22 +45,21 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = { - HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ - HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ - HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ - HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */ + HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */ + HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */ + HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/LowLevel/Joystick/Descriptors.c b/Demos/Device/LowLevel/Joystick/Descriptors.c index bc0b430b3b..5b85be5ba2 100644 --- a/Demos/Device/LowLevel/Joystick/Descriptors.c +++ b/Demos/Device/LowLevel/Joystick/Descriptors.c @@ -45,30 +45,30 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x04, /* Joystick */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -100, - HID_RI_LOGICAL_MAXIMUM(8), 100, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x04), /* Joystick */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -100), + HID_RI_LOGICAL_MAXIMUM(8, 100), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE(8), 0x02, /* Button 1 */ - HID_RI_USAGE(8), 0x01, /* Button 2 */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_SIZE(8), 6, - HID_RI_REPORT_COUNT(8), 1, - HID_RI_INPUT(8), HID_IOF_CONSTANT, + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE(8, 0x02), /* Button 1 */ + HID_RI_USAGE(8, 0x01), /* Button 2 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_SIZE(8, 0x06), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_INPUT(8, HID_IOF_CONSTANT), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/LowLevel/Keyboard/Descriptors.c b/Demos/Device/LowLevel/Keyboard/Descriptors.c index 8e5cf15248..24d53549cd 100644 --- a/Demos/Device/LowLevel/Keyboard/Descriptors.c +++ b/Demos/Device/LowLevel/Keyboard/Descriptors.c @@ -46,40 +46,37 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c index 2d8fd44cda..55cf30d38b 100644 --- a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c +++ b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c @@ -48,34 +48,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; @@ -83,40 +81,37 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = /** Same as the MouseReport structure, but defines the keyboard HID interface's report structure. */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/Device/LowLevel/Mouse/Descriptors.c b/Demos/Device/LowLevel/Mouse/Descriptors.c index 58a4ae4dc2..26ba10fb49 100644 --- a/Demos/Device/LowLevel/Mouse/Descriptors.c +++ b/Demos/Device/LowLevel/Mouse/Descriptors.c @@ -45,34 +45,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -1, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_PHYSICAL_MINIMUM(8), -1, - HID_RI_PHYSICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; diff --git a/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.c b/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.c index 314953eaed..39688dc623 100644 --- a/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.c +++ b/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.c @@ -45,32 +45,32 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM MouseReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x02, /* Mouse */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE(8), 0x01, /* Pointer */ - HID_RI_COLLECTION(8), 0x00, /* Physical */ - HID_RI_USAGE_PAGE(8), 0x09, /* Button */ - HID_RI_USAGE_MINIMUM(8), 0x01, - HID_RI_USAGE_MAXIMUM(8), 0x03, - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_COUNT(8), 3, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 5, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x30, /* Usage X */ - HID_RI_USAGE(8), 0x31, /* Usage Y */ - HID_RI_LOGICAL_MINIMUM(8), -128, - HID_RI_LOGICAL_MAXIMUM(8), 127, - HID_RI_REPORT_COUNT(8), 2, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x02), /* Mouse */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x01), /* Pointer */ + HID_RI_COLLECTION(8, 0x00), /* Physical */ + HID_RI_USAGE_PAGE(8, 0x09), /* Button */ + HID_RI_USAGE_MINIMUM(8, 0x01), + HID_RI_USAGE_MAXIMUM(8, 0x03), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x03), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x05), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x30), /* Usage X */ + HID_RI_USAGE(8, 0x31), /* Usage Y */ + HID_RI_LOGICAL_MINIMUM(8, -1), + HID_RI_LOGICAL_MAXIMUM(8, 1), + HID_RI_PHYSICAL_MINIMUM(8, -1), + HID_RI_PHYSICAL_MAXIMUM(8, 1), + HID_RI_REPORT_COUNT(8, 0x02), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), HID_RI_END_COLLECTION(0), }; diff --git a/LUFA/Drivers/USB/Class/Common/HIDReportData.h b/LUFA/Drivers/USB/Class/Common/HIDReportData.h index a4c5d31408..24401b68cd 100644 --- a/LUFA/Drivers/USB/Class/Common/HIDReportData.h +++ b/LUFA/Drivers/USB/Class/Common/HIDReportData.h @@ -49,19 +49,28 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ - #define HID_RI_DATA_SIZE_MASK 0x03 - #define HID_RI_TYPE_MASK 0x0C - #define HID_RI_TAG_MASK 0xF0 + #define HID_RI_DATA_SIZE_MASK 0x03 + #define HID_RI_TYPE_MASK 0x0C + #define HID_RI_TAG_MASK 0xF0 - #define HID_RI_TYPE_MAIN 0x00 - #define HID_RI_TYPE_GLOBAL 0x04 - #define HID_RI_TYPE_LOCAL 0x08 + #define HID_RI_TYPE_MAIN 0x00 + #define HID_RI_TYPE_GLOBAL 0x04 + #define HID_RI_TYPE_LOCAL 0x08 - #define HID_RI_DATA_BITS_0 0x00 - #define HID_RI_DATA_BITS_8 0x01 - #define HID_RI_DATA_BITS_16 0x02 - #define HID_RI_DATA_BITS_32 0x03 - #define HID_RI_DATA_BITS(DataBits) HID_RI_DATA_BITS_ ## DataBits + #define HID_RI_DATA_BITS_0 0x00 + #define HID_RI_DATA_BITS_8 0x01 + #define HID_RI_DATA_BITS_16 0x02 + #define HID_RI_DATA_BITS_32 0x03 + #define HID_RI_DATA_BITS(DataBits) HID_RI_DATA_BITS_ ## DataBits + + #define _HID_RI_ENCODE_0(Data) /* No Data */ + #define _HID_RI_ENCODE_8(Data) , (Data & 0xFF) + #define _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_8(Data >> 8) _HID_RI_ENCODE_8(Data) + #define _HID_RI_ENCODE_32(Data) _HID_RI_ENCODE_16(Data >> 16) _HID_RI_ENCODE_16(Data) + #define _HID_RI_ENCODE(DataBits, ...) _HID_RI_ENCODE_ ## DataBits(__VA_ARGS__) + + #define _HID_RI_ENTRY(Type, Tag, DataBits, ...) \ + (Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__)) #endif /* Public Interface - May be used in end-application: */ @@ -90,28 +99,28 @@ /** \name HID Report Descriptor Item Macros */ //@{ - #define HID_RI_INPUT(DataBits) (HID_RI_TYPE_MAIN | 0x80 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_OUTPUT(DataBits) (HID_RI_TYPE_MAIN | 0x90 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_COLLECTION(DataBits) (HID_RI_TYPE_MAIN | 0xA0 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_FEATURE(DataBits) (HID_RI_TYPE_MAIN | 0xB0 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_END_COLLECTION(DataBits) (HID_RI_TYPE_MAIN | 0xC0 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_USAGE_PAGE(DataBits) (HID_RI_TYPE_GLOBAL | 0x00 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_LOGICAL_MINIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x10 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_LOGICAL_MAXIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x20 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_PHYSICAL_MINIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x30 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_PHYSICAL_MAXIMUM(DataBits) (HID_RI_TYPE_GLOBAL | 0x40 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_UNIT_EXPONENT(DataBits) (HID_RI_TYPE_GLOBAL | 0x50 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_UNIT(DataBits) (HID_RI_TYPE_GLOBAL | 0x60 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_REPORT_SIZE(DataBits) (HID_RI_TYPE_GLOBAL | 0x70 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_REPORT_ID(DataBits) (HID_RI_TYPE_GLOBAL | 0x80 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_REPORT_COUNT(DataBits) (HID_RI_TYPE_GLOBAL | 0x90 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_PUSH(DataBits) (HID_RI_TYPE_GLOBAL | 0xA0 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_POP(DataBits) (HID_RI_TYPE_GLOBAL | 0xB0 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_USAGE(DataBits) (HID_RI_TYPE_LOCAL | 0x00 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_USAGE_MINIMUM(DataBits) (HID_RI_TYPE_LOCAL | 0x10 | HID_RI_DATA_BITS(DataBits)) - #define HID_RI_USAGE_MAXIMUM(DataBits) (HID_RI_TYPE_LOCAL | 0x20 | HID_RI_DATA_BITS(DataBits)) + #define HID_RI_INPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x80, DataBits, __VA_ARGS__) + #define HID_RI_OUTPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x90, DataBits, __VA_ARGS__) + #define HID_RI_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xA0, DataBits, __VA_ARGS__) + #define HID_RI_FEATURE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xB0, DataBits, __VA_ARGS__) + #define HID_RI_END_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xC0, DataBits, __VA_ARGS__) + #define HID_RI_USAGE_PAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x00, DataBits, __VA_ARGS__) + #define HID_RI_LOGICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x10, DataBits, __VA_ARGS__) + #define HID_RI_LOGICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x20, DataBits, __VA_ARGS__) + #define HID_RI_PHYSICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x30, DataBits, __VA_ARGS__) + #define HID_RI_PHYSICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x40, DataBits, __VA_ARGS__) + #define HID_RI_UNIT_EXPONENT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x50, DataBits, __VA_ARGS__) + #define HID_RI_UNIT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x60, DataBits, __VA_ARGS__) + #define HID_RI_REPORT_SIZE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x70, DataBits, __VA_ARGS__) + #define HID_RI_REPORT_ID(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x80, DataBits, __VA_ARGS__) + #define HID_RI_REPORT_COUNT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x90, DataBits, __VA_ARGS__) + #define HID_RI_PUSH(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xA0, DataBits, __VA_ARGS__) + #define HID_RI_POP(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xB0, DataBits, __VA_ARGS__) + #define HID_RI_USAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__) + #define HID_RI_USAGE_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__) + #define HID_RI_USAGE_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__) //@} - + /** @} */ #endif diff --git a/Projects/Magstripe/Descriptors.c b/Projects/Magstripe/Descriptors.c index 7feae8ce6a..c7b21fdbf9 100644 --- a/Projects/Magstripe/Descriptors.c +++ b/Projects/Magstripe/Descriptors.c @@ -46,40 +46,37 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = { - HID_RI_USAGE_PAGE(8), 0x01, /* Generic Desktop */ - HID_RI_USAGE(8), 0x06, /* Keyboard */ - HID_RI_COLLECTION(8), 0x01, /* Application */ - HID_RI_USAGE_PAGE(8), 0x07, /* Key Codes */ - HID_RI_USAGE_MINIMUM(8), 0xE0, /* Keyboard Left Control */ - HID_RI_USAGE_MAXIMUM(8), 0xE7, /* Keyboard Right GUI */ - HID_RI_LOGICAL_MINIMUM(8), 0, - HID_RI_LOGICAL_MAXIMUM(8), 1, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_REPORT_COUNT(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), HID_IOF_CONSTANT, - - HID_RI_USAGE_PAGE(8), 0x08, /* LEDs */ - HID_RI_USAGE_MINIMUM(8), 0x01, /* Num Lock */ - HID_RI_USAGE_MAXIMUM(8), 0x05, /* Kana */ - HID_RI_REPORT_COUNT(8), 5, - HID_RI_REPORT_SIZE(8), 1, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), - HID_RI_REPORT_COUNT(8), 1, - HID_RI_REPORT_SIZE(8), 3, - HID_RI_OUTPUT(8), HID_IOF_CONSTANT, - - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0x65, - HID_RI_USAGE_PAGE(8), 0x07, /* Keyboard */ - HID_RI_USAGE_MINIMUM(8), 0x00, /* Reserved (no event indicated) */ - HID_RI_USAGE_MAXIMUM(8), 0x65, /* Keyboard Application */ - HID_RI_REPORT_COUNT(8), 6, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ + HID_RI_USAGE(8, 0x06), /* Keyboard */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ + HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ + HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_CONSTANT), + HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ + HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ + HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ + HID_RI_REPORT_COUNT(8, 0x05), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x03), + HID_RI_OUTPUT(8, HID_IOF_CONSTANT), + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x65), + HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ + HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ + HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), HID_RI_END_COLLECTION(0), }; diff --git a/Projects/TempDataLogger/Descriptors.c b/Projects/TempDataLogger/Descriptors.c index a0252be564..1e61df117e 100644 --- a/Projects/TempDataLogger/Descriptors.c +++ b/Projects/TempDataLogger/Descriptors.c @@ -57,22 +57,21 @@ */ USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = { - HID_RI_USAGE_PAGE(16), 0x00, 0xFF, /* Vendor Page 1 */ - HID_RI_USAGE(8), 0x01, /* Vendor Usage 1 */ - HID_RI_COLLECTION(8), 0x01, /* Vendor Usage 1 */ - HID_RI_USAGE(8), 0x02, /* Vendor Usage 2 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_INPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), - - HID_RI_USAGE(8), 0x03, /* Vendor Usage 3 */ - HID_RI_LOGICAL_MINIMUM(8), 0x00, - HID_RI_LOGICAL_MAXIMUM(8), 0xFF, - HID_RI_REPORT_SIZE(8), 8, - HID_RI_REPORT_COUNT(8), GENERIC_REPORT_SIZE, - HID_RI_OUTPUT(8), (HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE_PAGE(16, 0x00FF), /* Vendor Page 1 */ + HID_RI_USAGE(8, 0x01), /* Vendor Usage 1 */ + HID_RI_COLLECTION(8, 0x01), /* Vendor Usage 1 */ + HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), + HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0xFF), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_REPORT_COUNT(8, GENERIC_REPORT_SIZE), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_VOLATILE), HID_RI_END_COLLECTION(0), };