| 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 __cplusplusextern "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_ */
 |