| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | 
							- /*
 
-  * Copyright (c) 2006-2018, RT-Thread Development Team
 
-  *
 
-  * SPDX-License-Identifier: Apache-2.0
 
-  *
 
-  * Change Logs:
 
-  * Date           Author       Notes
 
-  * 2017-03-13     Urey         the first version
 
-  * 2017-11-16     ZYH          Update to common hid
 
-  */
 
- #ifndef _USBDEVICE_CLASS_HID_H_
 
- #define _USBDEVICE_CLASS_HID_H_
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- #define HID_DESCRIPTOR_TYPE             0x21
 
- #define HID_DESCRIPTOR_SIZE             0x09
 
- #define HID_OFF_HID_DESC                0x12
 
- #define USB_HID_SUBCLASS_BOOT           0x01
 
- #define USB_HID_SUBCLASS_NOBOOT         0x00
 
- #define USB_HID_PROTOCOL_NONE           0x00
 
- #define USB_HID_PROTOCOL_KEYBOARD       0x01
 
- #define USB_HID_PROTOCOL_MOUSE          0x02
 
- #define USB_HID_REQ_GET_REPORT      0x01
 
- #define USB_HID_REQ_GET_IDLE        0x02
 
- #define USB_HID_REQ_GET_PROTOCOL    0x03
 
- #define USB_HID_REQ_SET_REPORT      0x09
 
- #define USB_HID_REQ_SET_IDLE        0x0a
 
- #define USB_HID_REQ_SET_PROTOCOL    0x0b
 
- #define MAX_REPORT_SIZE             64
 
- #define HID_RX_BUFSIZE              64
 
- /* HID Report Types */
 
- #define HID_REPORT_INPUT            0x01
 
- #define HID_REPORT_OUTPUT           0x02
 
- #define HID_REPORT_FEATURE          0x03
 
- /* Usage Pages */
 
- #define USAGEPAGE_UNDEFINED        0x00
 
- #define USAGEPAGE_GENERIC          0x01
 
- #define USAGEPAGE_SIMULATION       0x02
 
- #define USAGEPAGE_VR               0x03
 
- #define USAGEPAGE_SPORT            0x04
 
- #define USAGEPAGE_GAME             0x05
 
- #define USAGEPAGE_DEV_CONTROLS     0x06
 
- #define USAGEPAGE_KEYBOARD         0x07
 
- #define USAGEPAGE_LED              0x08
 
- #define USAGEPAGE_BUTTON           0x09
 
- #define USAGEPAGE_ORDINAL          0x0A
 
- #define USAGEPAGE_TELEPHONY        0x0B
 
- #define USAGEPAGE_CONSUMER         0x0C
 
- #define USAGEPAGE_DIGITIZER        0x0D
 
- #define USAGEPAGE_PIDPAGE          0x0F
 
- #define USAGEPAGE_UNICODE          0x10
 
- #define USAGEPAGE_ALPHANUMERIC     0x14
 
- #define USAGEPAGE_BARCODESCANNER   0x8C
 
- /* Generic Desktop Page (0x01) */
 
- #define USAGE_GENERIC_POINTER               0x01
 
- #define USAGE_GENERIC_MOUSE                 0x02
 
- #define USAGE_GENERIC_JOYSTICK              0x04
 
- #define USAGE_GENERIC_GAMEPAD               0x05
 
- #define USAGE_GENERIC_KEYBOARD              0x06
 
- #define USAGE_GENERIC_KEYPAD                0x07
 
- #define USAGE_GENERIC_X                     0x30
 
- #define USAGE_GENERIC_Y                     0x31
 
- #define USAGE_GENERIC_Z                     0x32
 
- #define USAGE_GENERIC_RX                    0x33
 
- #define USAGE_GENERIC_RY                    0x34
 
- #define USAGE_GENERIC_RZ                    0x35
 
- #define USAGE_GENERIC_SLIDER                0x36
 
- #define USAGE_GENERIC_DIAL                  0x37
 
- #define USAGE_GENERIC_WHEEL                 0x38
 
- #define USAGE_GENERIC_HATSWITCH             0x39
 
- #define USAGE_GENERIC_COUNTED_BUFFER        0x3A
 
- #define USAGE_GENERIC_BYTE_COUNT            0x3B
 
- #define USAGE_GENERIC_MOTION_WAKEUP         0x3C
 
- #define USAGE_GENERIC_VX                    0x40
 
- #define USAGE_GENERIC_VY                    0x41
 
- #define USAGE_GENERIC_VZ                    0x42
 
- #define USAGE_GENERIC_VBRX                  0x43
 
- #define USAGE_GENERIC_VBRY                  0x44
 
- #define USAGE_GENERIC_VBRZ                  0x45
 
- #define USAGE_GENERIC_VNO                   0x46
 
- #define USAGE_GENERIC_SYSTEM_CTL            0x80
 
- #define USAGE_GENERIC_SYSCTL_POWER          0x81
 
- #define USAGE_GENERIC_SYSCTL_SLEEP          0x82
 
- #define USAGE_GENERIC_SYSCTL_WAKE           0x83
 
- #define USAGE_GENERIC_SYSCTL_CONTEXT_MENU   0x84
 
- #define USAGE_GENERIC_SYSCTL_MAIN_MENU      0x85
 
- #define USAGE_GENERIC_SYSCTL_APP_MENU       0x86
 
- #define USAGE_GENERIC_SYSCTL_HELP_MENU      0x87
 
- #define USAGE_GENERIC_SYSCTL_MENU_EXIT      0x88
 
- #define USAGE_GENERIC_SYSCTL_MENU_SELECT    0x89
 
- #define USAGE_GENERIC_SYSCTL_MENU_RIGHT     0x8A
 
- #define USAGE_GENERIC_SYSCTL_MENU_LEFT      0x8B
 
- #define USAGE_GENERIC_SYSCTL_MENU_UP        0x8C
 
- #define USAGE_GENERIC_SYSCTL_MENU_DOWN      0x8D
 
- /* Simulation Controls Page(0x02) */
 
- #define USAGE_SIMCTRL_THROTTLE              0xBB
 
- /* HID Report Items */
 
- /* Main Items */
 
- #define HID_Input(x)           0x81,x
 
- #define HID_Output(x)          0x91,x
 
- #define HID_Feature(x)         0xB1,x
 
- #define HID_Collection(x)      0xA1,x
 
- #define HID_EndCollection()    0xC0
 
- /* Local Items */
 
- #define HID_Usage(x)           0x09,x
 
- #define HID_UsageMin(x)        0x19,x
 
- #define HID_UsageMax(x)        0x29,x
 
- /* Global Items */
 
- #define HID_UsagePage(x)       0x05,x
 
- #define HID_UsagePageVendor(x) 0x06,x,0xFF
 
- #define HID_LogicalMin(x)      0x15,x
 
- #define HID_LogicalMinS(x)     0x16,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_LogicalMinL(x)     0x17,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_LogicalMax(x)      0x25,x
 
- #define HID_LogicalMaxS(x)     0x26,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_LogicalMaxL(x)     0x27,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_PhysicalMin(x)     0x35,x
 
- #define HID_PhysicalMinS(x)    0x36,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_PhysicalMinL(x)    0x37,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_PhysicalMax(x)     0x45,x
 
- #define HID_PhysicalMaxS(x)    0x46,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_PhysicalMaxL(x)    0x47,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_UnitExponent(x)    0x55,x
 
- #define HID_Unit(x)            0x65,x
 
- #define HID_UnitS(x)           0x66,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_UnitL(x)           0x67,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_ReportSize(x)      0x75,x
 
- #define HID_ReportSizeS(x)     0x76,(x&0xFF),((x>>8)&0xFF))
 
- #define HID_ReportSizeL(x)     0x77,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_ReportID(x)        0x85,x
 
- #define HID_ReportCount(x)     0x95,x
 
- #define HID_ReportCountS(x)    0x96,(x&0xFF),((x>>8)&0xFF)
 
- #define HID_ReportCountL(x)    0x97,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
 
- #define HID_Push()             0xA4
 
- #define HID_Pop()              0xB4
 
- /* Input, Output, Feature Data */
 
- #define HID_DATA               (0<<0)
 
- #define HID_CONST              (1<<0)
 
- #define HID_ARRAY              (0<<1)
 
- #define HID_VAR                (1<<1)
 
- #define HID_ABS                (0<<2)
 
- #define HID_REL                (1<<2)
 
- #define HID_NOWRAP             (0<<3)
 
- #define HID_WRAP               (1<<3)
 
- #define HID_LINEAR             (0<<4)
 
- #define HID_NONLINEAR          (1<<4)
 
- #define HID_PREFERREDSTATE     (0<<5)
 
- #define HID_NOPREFERRED        (1<<5)
 
- #define HID_NONULLPOSITION     (0<<6)
 
- #define HID_NULLSTATE          (1<<6)
 
- #define HID_NONVOLATILE        (0<<7)
 
- #define HID_VOLATILE           (1<<7)
 
- /* Collection Data */
 
- #define HID_PHYSICAL           0x00
 
- #define HID_APPLICATION        0x01
 
- #define HID_LOGICAL            0x02
 
- #define HID_REPORT             0x03
 
- #define HID_NAMEDARRAY         0x04
 
- #define HID_USAGESWITCH        0x05
 
- #define HID_USAGEMODIFIER      0x06
 
- //HID_MBED_DEFINE
 
- #define HID_VERSION_1_11    (0x0111)
 
- /* HID Class */
 
- #define HID_CLASS             (3)
 
- #define HID_SUBCLASS_NONE     (0)
 
- #define HID_SUBCLASS_BOOT     (1)
 
- #define HID_PROTOCOL_NONE     (0)
 
- #define HID_PROTOCOL_KEYBOARD (1)
 
- #define HID_PROTOCOL_MOUSE    (2)
 
- /* Descriptors */
 
- #define HID_DESCRIPTOR          (33)
 
- #define HID_DESCRIPTOR_LENGTH   (0x09)
 
- #define REPORT_DESCRIPTOR       (34)
 
- /* Class requests */
 
- #define GET_REPORT (0x1)
 
- #define GET_IDLE   (0x2)
 
- #define SET_REPORT (0x9)
 
- #define SET_IDLE   (0xa)
 
- /* HID Class Report Descriptor */
 
- /* Short items: size is 0, 1, 2 or 3 specifying 0, 1, 2 or 4 (four) bytes */
 
- /* of data as per HID Class standard */
 
- /* Main items */
 
- #define INPUT(size)             (0x80 | size)
 
- #define OUTPUT(size)            (0x90 | size)
 
- #define FEATURE(size)           (0xb0 | size)
 
- #define COLLECTION(size)        (0xa0 | size)
 
- #define END_COLLECTION(size)    (0xc0 | size)
 
- /* Global items */
 
- #define USAGE_PAGE(size)        (0x04 | size)
 
- #define LOGICAL_MINIMUM(size)   (0x14 | size)
 
- #define LOGICAL_MAXIMUM(size)   (0x24 | size)
 
- #define PHYSICAL_MINIMUM(size)  (0x34 | size)
 
- #define PHYSICAL_MAXIMUM(size)  (0x44 | size)
 
- #define UNIT_EXPONENT(size)     (0x54 | size)
 
- #define UNIT(size)              (0x64 | size)
 
- #define REPORT_SIZE(size)       (0x74 | size)
 
- #define REPORT_ID(size)         (0x84 | size)
 
- #define REPORT_COUNT(size)      (0x94 | size)
 
- #define PUSH(size)              (0xa4 | size)
 
- #define POP(size)               (0xb4 | size)
 
- /* Local items */
 
- #define USAGE(size)                 (0x08 | size)
 
- #define USAGE_MINIMUM(size)         (0x18 | size)
 
- #define USAGE_MAXIMUM(size)         (0x28 | size)
 
- #define DESIGNATOR_INDEX(size)      (0x38 | size)
 
- #define DESIGNATOR_MINIMUM(size)    (0x48 | size)
 
- #define DESIGNATOR_MAXIMUM(size)    (0x58 | size)
 
- #define STRING_INDEX(size)          (0x78 | size)
 
- #define STRING_MINIMUM(size)        (0x88 | size)
 
- #define STRING_MAXIMUM(size)        (0x98 | size)
 
- #define DELIMITER(size)             (0xa8 | size)
 
- #define LSB(n)  ((n)&0xff)
 
- #define MSB(n)  (((n)&0xff00)>>8)
 
- struct uhid_comm_descriptor
 
- {
 
- #ifdef RT_USB_DEVICE_COMPOSITE
 
-     struct uiad_descriptor iad_desc;
 
- #endif
 
-     struct uinterface_descriptor    intf_desc;
 
-     struct uhid_descriptor          hid_desc;
 
-     struct uendpoint_descriptor     ep_in_desc;
 
-     struct uendpoint_descriptor     ep_out_desc;
 
- };
 
- typedef struct uhid_comm_descriptor* uhid_comm_desc_t;
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
- #endif /* _USBDEVICE_CLASS_HID_H_ */
 
 
  |