From b79d2be2ed5e71a8ddfcab749d938d7048cec75a Mon Sep 17 00:00:00 2001 From: ryantheleach Date: Wed, 27 Jul 2022 19:02:46 +0930 Subject: [PATCH] Cleaned up USB HID Reports and added usages --- src/usb_descriptors.c | 105 +++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 57 deletions(-) diff --git a/src/usb_descriptors.c b/src/usb_descriptors.c index 0b15036..ed480cd 100644 --- a/src/usb_descriptors.c +++ b/src/usb_descriptors.c @@ -64,68 +64,59 @@ uint8_t const * tud_descriptor_device_cb(void) //--------------------------------------------------------------------+ // HID Report Descriptor //--------------------------------------------------------------------+ +#define PEDAL_INPUT_FLAGS HID_DATA | HID_VARIABLE | HID_ABSOLUTE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION +#define PEDAL_OUTPUT_FLAGS HID_DATA | HID_VARIABLE | HID_ABSOLUTE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE +#define PEDAL_FEATURE_FLAGS HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE +#define PEDAL_REPORT_FIELD() HID_LOGICAL_MIN ( 0 ), HID_LOGICAL_MAX ( 0xFF ), HID_REPORT_SIZE ( 8 ), + #define TUD_HID_REPORT_DESC_PEDAL() \ HID_USAGE_PAGE ( HID_USAGE_PAGE_CONSUMER ), \ HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ HID_COLLECTION ( HID_COLLECTION_APPLICATION ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT_N( 1023, 2) , \ - HID_REPORT_ID ( 2 ) \ - HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ) ,\ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 7 ), \ - HID_REPORT_ID (0x01) \ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE| HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x03) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x06) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x07) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x05) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x04) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ - HID_LOGICAL_MIN ( 0 ), \ - HID_LOGICAL_MAX ( 0xFF ), \ - HID_REPORT_SIZE ( 8 ), \ - HID_REPORT_COUNT ( 31 ), \ - HID_REPORT_ID (0x08) \ - HID_FEATURE ( HID_DATA | HID_ARRAY | HID_RELATIVE | HID_WRAP_NO | HID_LINEAR | HID_PREFERRED_STATE | HID_NO_NULL_POSITION | HID_NON_VOLATILE ), \ - HID_COLLECTION_END \ + /** Uses Vendor Page for whole collection unless redefined. **/ \ + HID_USAGE_PAGE_N(HID_USAGE_PAGE_VENDOR, 2), \ + PEDAL_REPORT_FIELD() \ + HID_REPORT_COUNT_N( 1023, 2) , \ + HID_REPORT_ID ( 2 ) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_OUTPUT ( PEDAL_OUTPUT_FLAGS ) ,\ + \ + HID_REPORT_COUNT ( 7 ), \ + HID_REPORT_ID (0x01) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_INPUT ( PEDAL_INPUT_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x03) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x06) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x07) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x05) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x04) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ + \ + HID_REPORT_COUNT ( 31 ), \ + HID_REPORT_ID (0x08) \ + HID_USAGE ( HID_USAGE_CONSUMER_CONTROL ), \ + HID_FEATURE ( PEDAL_FEATURE_FLAGS ), \ +HID_COLLECTION_END \ uint8_t const desc_hid_report[] = {