| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661 |
- //*****************************************************************************
- //
- // usbhid.h - Definitions used by HID class devices and hosts.
- //
- // Copyright (c) 2008-2010 Texas Instruments Incorporated. All rights reserved.
- // Software License Agreement
- //
- // Texas Instruments (TI) is supplying this software for use solely and
- // exclusively on TI's microcontroller products. The software is owned by
- // TI and/or its suppliers, and is protected under applicable copyright
- // laws. You may not combine this software with "viral" open-source
- // software in order to form a larger program.
- //
- // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
- // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
- // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
- // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
- // DAMAGES, FOR ANY REASON WHATSOEVER.
- //
- // This is part of AM1808 StarterWare USB Library and reused from revision 6288
- // of the Stellaris USB Library.
- //
- //*****************************************************************************
- #ifndef __USBHID_H__
- #define __USBHID_H__
- //*****************************************************************************
- //
- // If building with a C++ compiler, make all of the definitions in this header
- // have a C binding.
- //
- //*****************************************************************************
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- //*****************************************************************************
- //
- //! \addtogroup hid_device_class_api
- //! @{
- //
- //*****************************************************************************
- //*****************************************************************************
- //
- // HID Interface descriptor Subclasses.
- //
- //*****************************************************************************
- #define USB_HID_SCLASS_NONE 0x00
- #define USB_HID_SCLASS_BOOT 0x01
- //*****************************************************************************
- //
- // USB Interface descriptor HID protocols.
- //
- //*****************************************************************************
- #define USB_HID_PROTOCOL_NONE 0
- #define USB_HID_PROTOCOL_KEYB 1
- #define USB_HID_PROTOCOL_MOUSE 2
- //*****************************************************************************
- //
- // HID Class descriptor types.
- //
- //*****************************************************************************
- #define USB_HID_DTYPE_HID 0x21
- #define USB_HID_DTYPE_REPORT 0x22
- #define USB_HID_DTYPE_PHYSICAL 0x23
- //*****************************************************************************
- //
- // HID USB requests.
- //
- //*****************************************************************************
- #define USBREQ_GET_REPORT 0x01
- #define USBREQ_GET_IDLE 0x02
- #define USBREQ_GET_PROTOCOL 0x03
- #define USBREQ_SET_REPORT 0x09
- #define USBREQ_SET_IDLE 0x0a
- #define USBREQ_SET_PROTOCOL 0x0b
- //*****************************************************************************
- //
- // GET_REPORT or SET_REPORT Definitions.
- //
- //*****************************************************************************
- #define USB_HID_REPORT_IN 0x01
- #define USB_HID_REPORT_OUTPUT 0x02
- #define USB_HID_REPORT_FEATURE 0x03
- //*****************************************************************************
- //
- // GET_PROTOCOL or SET_PROTOCOL Definitions.
- //
- //*****************************************************************************
- #define USB_HID_PROTOCOL_BOOT 0
- #define USB_HID_PROTOCOL_REPORT 1
- //*****************************************************************************
- //
- // Report Values used with the Report macros.
- //
- //*****************************************************************************
- #define USB_HID_GENERIC_DESKTOP 0x01
- #define USB_HID_BUTTONS 0x09
- #define USB_HID_X 0x30
- #define USB_HID_Y 0x31
- #define USB_HID_POINTER 0x01
- #define USB_HID_MOUSE 0x02
- #define USB_HID_KEYBOARD 0x06
- #define USB_HID_APPLICATION 0x01
- #define USB_HID_PHYSICAL 0x00
- #define USB_HID_USAGE_POINTER 0x0109
- #define USB_HID_USAGE_BUTTONS 0x0509
- #define USB_HID_USAGE_LEDS 0x0508
- #define USB_HID_USAGE_KEYCODES 0x0507
- //*****************************************************************************
- //
- // HID mouse button definitions as used in the first byte of the output report
- // used in the BIOS mouse protocol.
- //
- //*****************************************************************************
- #define HID_MOUSE_BUTTON_1 0x01
- #define HID_MOUSE_BUTTON_2 0x02
- #define HID_MOUSE_BUTTON_3 0x04
- //*****************************************************************************
- //
- // HID Keyboard LED definitions as used in the first byte of the output report
- // used in the BIOS keyboard protocol.
- //
- //*****************************************************************************
- #define HID_KEYB_NUM_LOCK 0x01
- #define HID_KEYB_CAPS_LOCK 0x02
- #define HID_KEYB_SCROLL_LOCK 0x04
- #define HID_KEYB_COMPOSE 0x08
- #define HID_KEYB_KANA 0x10
- //*****************************************************************************
- //
- // HID Keyboard key modifiers as provided in the first byte of the input report
- // used in the BIOS keyboard protocol.
- //
- //*****************************************************************************
- #define HID_KEYB_LEFT_CTRL 0x01
- #define HID_KEYB_LEFT_SHIFT 0x02
- #define HID_KEYB_LEFT_ALT 0x04
- #define HID_KEYB_LEFT_GUI 0x08
- #define HID_KEYB_RIGHT_CTRL 0x10
- #define HID_KEYB_RIGHT_SHIFT 0x20
- #define HID_KEYB_RIGHT_ALT 0x40
- #define HID_KEYB_RIGHT_GUI 0x80
- //*****************************************************************************
- //
- // A subset of the HID keyboard usage IDs.
- //
- //*****************************************************************************
- #define HID_KEYB_USAGE_RESERVED 0x00
- #define HID_KEYB_USAGE_ROLLOVER 0x01
- #define HID_KEYB_USAGE_A 0x04
- #define HID_KEYB_USAGE_B 0x05
- #define HID_KEYB_USAGE_C 0x06
- #define HID_KEYB_USAGE_D 0x07
- #define HID_KEYB_USAGE_E 0x08
- #define HID_KEYB_USAGE_F 0x09
- #define HID_KEYB_USAGE_G 0x0A
- #define HID_KEYB_USAGE_H 0x0B
- #define HID_KEYB_USAGE_I 0x0C
- #define HID_KEYB_USAGE_J 0x0D
- #define HID_KEYB_USAGE_K 0x0E
- #define HID_KEYB_USAGE_L 0x0F
- #define HID_KEYB_USAGE_M 0x10
- #define HID_KEYB_USAGE_N 0x11
- #define HID_KEYB_USAGE_O 0x12
- #define HID_KEYB_USAGE_P 0x13
- #define HID_KEYB_USAGE_Q 0x14
- #define HID_KEYB_USAGE_R 0x15
- #define HID_KEYB_USAGE_S 0x16
- #define HID_KEYB_USAGE_T 0x17
- #define HID_KEYB_USAGE_U 0x18
- #define HID_KEYB_USAGE_V 0x19
- #define HID_KEYB_USAGE_W 0x1A
- #define HID_KEYB_USAGE_X 0x1B
- #define HID_KEYB_USAGE_Y 0x1C
- #define HID_KEYB_USAGE_Z 0x1D
- #define HID_KEYB_USAGE_1 0x1E
- #define HID_KEYB_USAGE_2 0x1F
- #define HID_KEYB_USAGE_3 0x20
- #define HID_KEYB_USAGE_4 0x21
- #define HID_KEYB_USAGE_5 0x22
- #define HID_KEYB_USAGE_6 0x23
- #define HID_KEYB_USAGE_7 0x24
- #define HID_KEYB_USAGE_8 0x25
- #define HID_KEYB_USAGE_9 0x26
- #define HID_KEYB_USAGE_0 0x27
- #define HID_KEYB_USAGE_ENTER 0x28
- #define HID_KEYB_USAGE_ESCAPE 0x29
- #define HID_KEYB_USAGE_BACKSPACE \
- 0x2A
- #define HID_KEYB_USAGE_TAB 0x2B
- #define HID_KEYB_USAGE_SPACE 0x2C
- #define HID_KEYB_USAGE_MINUS 0x2D
- #define HID_KEYB_USAGE_EQUAL 0x2E
- #define HID_KEYB_USAGE_LBRACKET 0x2F
- #define HID_KEYB_USAGE_RBRACKET 0x30
- #define HID_KEYB_USAGE_BSLASH 0x31
- #define HID_KEYB_USAGE_SEMICOLON \
- 0x33
- #define HID_KEYB_USAGE_FQUOTE 0x34
- #define HID_KEYB_USAGE_BQUOTE 0x35
- #define HID_KEYB_USAGE_COMMA 0x36
- #define HID_KEYB_USAGE_PERIOD 0x37
- #define HID_KEYB_USAGE_FSLASH 0x38
- #define HID_KEYB_USAGE_CAPSLOCK 0x39
- #define HID_KEYB_USAGE_F1 0x3A
- #define HID_KEYB_USAGE_F2 0x3B
- #define HID_KEYB_USAGE_F3 0x3C
- #define HID_KEYB_USAGE_F4 0x3D
- #define HID_KEYB_USAGE_F5 0x3E
- #define HID_KEYB_USAGE_F6 0x3F
- #define HID_KEYB_USAGE_F7 0x40
- #define HID_KEYB_USAGE_F8 0x41
- #define HID_KEYB_USAGE_F9 0x42
- #define HID_KEYB_USAGE_F10 0x43
- #define HID_KEYB_USAGE_F11 0x44
- #define HID_KEYB_USAGE_F12 0x45
- #define HID_KEYB_USAGE_RIGHT_ARROW \
- 0x4F
- #define HID_KEYB_USAGE_LEFT_ARROW \
- 0x50
- #define HID_KEYB_USAGE_DOWN_ARROW \
- 0x51
- #define HID_KEYB_USAGE_UP_ARROW 0x52
- #define HID_KEYB_USAGE_KEYPAD_SLASH \
- 0x54
- #define HID_KEYB_USAGE_KEYPAD_STAR \
- 0x55
- #define HID_KEYB_USAGE_KEYPAD_MINUS \
- 0x56
- #define HID_KEYB_USAGE_KEYPAD_PLUS \
- 0x57
- #define HID_KEYB_USAGE_KEPAD_ENTER \
- 0x58
- #define HID_KEYB_USAGE_KEYPAD_1 0x59
- #define HID_KEYB_USAGE_KEYPAD_2 0x5A
- #define HID_KEYB_USAGE_KEYPAD_3 0x5B
- #define HID_KEYB_USAGE_KEYPAD_4 0x5C
- #define HID_KEYB_USAGE_KEYPAD_5 0x5D
- #define HID_KEYB_USAGE_KEYPAD_6 0x5E
- #define HID_KEYB_USAGE_KEYPAD_7 0x5F
- #define HID_KEYB_USAGE_KEYPAD_8 0x60
- #define HID_KEYB_USAGE_KEYPAD_9 0x61
- #define HID_KEYB_USAGE_KEYPAD_0 0x62
- #define HID_KEYB_USAGE_KEPAD_PERIOD \
- 0x63
- //*****************************************************************************
- //
- // HID descriptor country codes (most of these are described as "countries" in
- // the HID specification even though they are really languages).
- //
- //*****************************************************************************
- #define USB_HID_COUNTRY_NONE 0x00
- #define USB_HID_COUNTRY_ARABIC 0x01
- #define USB_HID_COUNTRY_BELGIAN 0x02
- #define USB_HID_COUNTRY_CANADA_BI \
- 0x03
- #define USB_HID_COUNTRY_CANADA_FR \
- 0x04
- #define USB_HID_COUNTRY_CZECH_REPUBLIC \
- 0x05
- #define USB_HID_COUNTRY_DANISH 0x06
- #define USB_HID_COUNTRY_FINNISH 0x07
- #define USB_HID_COUNTRY_FRENCH 0x08
- #define USB_HID_COUNTRY_GERMAN 0x09
- #define USB_HID_COUNTRY_GREEK 0x0A
- #define USB_HID_COUNTRY_HEBREW 0x0B
- #define USB_HID_COUNTRY_HUNGARY 0x0C
- #define USB_HID_COUNTRY_INTERNATIONAL_ISO \
- 0x0D
- #define USB_HID_COUNTRY_ITALIAN 0x0E
- #define USB_HID_COUNTRY_JAPAN_KATAKANA \
- 0x0F
- #define USB_HID_COUNTRY_KOREAN 0x10
- #define USB_HID_COUNTRY_LATIN_AMERICAN \
- 0x11
- #define USB_HID_COUNTRY_NETHERLANDS \
- 0x12
- #define USB_HID_COUNTRY_NORWEGIAN \
- 0x13
- #define USB_HID_COUNTRY_PERSIAN 0x14
- #define USB_HID_COUNTRY_POLAND 0x15
- #define USB_HID_COUNTRY_PORTUGUESE \
- 0x16
- #define USB_HID_COUNTRY_RUSSIA 0x17
- #define USB_HID_COUNTRY_SLOVAKIA \
- 0x18
- #define USB_HID_COUNTRY_SPANISH 0x19
- #define USB_HID_COUNTRY_SWEDISH 0x1A
- #define USB_HID_COUNTRY_SWISS_FRENCH \
- 0x1B
- #define USB_HID_COUNTRY_SWISS_GERMAN \
- 0x1C
- #define USB_HID_COUNTRY_SWITZERLAND \
- 0x1D
- #define USB_HID_COUNTRY_TAIWAN 0x1E
- #define USB_HID_COUNTRY_TURKISH_Q \
- 0x1F
- #define USB_HID_COUNTRY_UK 0x20
- #define USB_HID_COUNTRY_US 0x21
- #define USB_HID_COUNTRY_YUGOSLAVIA \
- 0x22
- #define USB_HID_COUNTRY_TURKISH_F \
- 0x23
- //*****************************************************************************
- //
- // Data flags used in Input item tags within report descriptors.
- //
- //*****************************************************************************
- #define USB_HID_INPUT_DATA 0x0000
- #define USB_HID_INPUT_CONSTANT 0x0001
- #define USB_HID_INPUT_ARRAY 0x0000
- #define USB_HID_INPUT_VARIABLE 0x0002
- #define USB_HID_INPUT_ABS 0x0000
- #define USB_HID_INPUT_RELATIVE 0x0004
- #define USB_HID_INPUT_NOWRAP 0x0000
- #define USB_HID_INPUT_WRAP 0x0008
- #define USB_HID_INPUT_LINEAR 0x0000
- #define USB_HID_INPUT_NONLINEAR 0x0010
- #define USB_HID_INPUT_PREFER 0x0000
- #define USB_HID_INPUT_NONPREFER 0x0020
- #define USB_HID_INPUT_NONULL 0x0000
- #define USB_HID_INPUT_NULL 0x0040
- #define USB_HID_INPUT_NONVOLATILE 0x0000
- #define USB_HID_INPUT_VOLATILE 0x0080
- #define USB_HID_INPUT_BITF 0x0000
- #define USB_HID_INPUT_BYTES 0x0100
- //*****************************************************************************
- //
- // Data flags used in Feature item tags within report descriptors.
- //
- //*****************************************************************************
- #define USB_HID_FEATURE_DATA 0x0000
- #define USB_HID_FEATURE_CONSTANT \
- 0x0001
- #define USB_HID_FEATURE_ARRAY 0x0000
- #define USB_HID_FEATURE_VARIABLE \
- 0x0002
- #define USB_HID_FEATURE_ABS 0x0000
- #define USB_HID_FEATURE_RELATIVE \
- 0x0004
- #define USB_HID_FEATURE_NOWRAP 0x0000
- #define USB_HID_FEATURE_WRAP 0x0008
- #define USB_HID_FEATURE_LINEAR 0x0000
- #define USB_HID_FEATURE_NONLINEAR \
- 0x0010
- #define USB_HID_FEATURE_PREFER 0x0000
- #define USB_HID_FEATURE_NONPREFER \
- 0x0020
- #define USB_HID_FEATURE_NONULL 0x0000
- #define USB_HID_FEATURE_NULL 0x0040
- #define USB_HID_FEATURE_NONVOLATILE 0x0000
- #define USB_HID_FEATURE_VOLATILE 0x0080
- #define USB_HID_FEATURE_BITF 0x0000
- #define USB_HID_FEATURE_BYTES 0x0100
- //*****************************************************************************
- //
- // Data flags used in Output item tags within report descriptors.
- //
- //*****************************************************************************
- #define USB_HID_OUTPUT_DATA 0x0000
- #define USB_HID_OUTPUT_CONSTANT 0x0001
- #define USB_HID_OUTPUT_ARRAY 0x0000
- #define USB_HID_OUTPUT_VARIABLE 0x0002
- #define USB_HID_OUTPUT_ABS 0x0000
- #define USB_HID_OUTPUT_RELATIVE 0x0004
- #define USB_HID_OUTPUT_NOWRAP 0x0000
- #define USB_HID_OUTPUT_WRAP 0x0008
- #define USB_HID_OUTPUT_LINEAR 0x0000
- #define USB_HID_OUTPUT_NONLINEAR \
- 0x0010
- #define USB_HID_OUTPUT_PREFER 0x0000
- #define USB_HID_OUTPUT_NONPREFER \
- 0x0020
- #define USB_HID_OUTPUT_NONULL 0x0000
- #define USB_HID_OUTPUT_NULL 0x0040
- #define USB_HID_OUTPUT_NONVOLATILE 0x0000
- #define USB_HID_OUTPUT_VOLATILE 0x0080
- #define USB_HID_OUTPUT_BITF 0x0000
- #define USB_HID_OUTPUT_BYTES 0x0100
- //*****************************************************************************
- //
- // Physical descriptor bias values.
- //
- //*****************************************************************************
- #define USB_HID_BIAS_NOT_APPLICABLE \
- 0x00
- #define USB_HID_BIAS_RIGHT_HAND 0x01
- #define USB_HID_BIAS_LEFT_HAND 0x02
- #define USB_HID_BIAS_BOTH_HANDS 0x03
- #define USB_HID_BIAS_EITHER_HAND \
- 0x04
- //*****************************************************************************
- //
- // Physical descriptor designator values.
- //
- //*****************************************************************************
- #define USB_HID_DESIGNATOR_NONE 0x00
- #define USB_HID_DESIGNATOR_HAND 0x01
- #define USB_HID_DESIGNATOR_EYEBALL \
- 0x02
- #define USB_HID_DESIGNATOR_EYEBROW \
- 0x03
- #define USB_HID_DESIGNATOR_EYELID \
- 0x04
- #define USB_HID_DESIGNATOR_EAR 0x05
- #define USB_HID_DESIGNATOR_NOSE 0x06
- #define USB_HID_DESIGNATOR_MOUTH \
- 0x07
- #define USB_HID_DESIGNATOR_UPPER_LIP \
- 0x08
- #define USB_HID_DESIGNATOR_LOWER_LIP \
- 0x09
- #define USB_HID_DESIGNATOR_JAW 0x0A
- #define USB_HID_DESIGNATOR_NECK 0x0B
- #define USB_HID_DESIGNATOR_UPPER_ARM \
- 0x0C
- #define USB_HID_DESIGNATOR_ELBOW \
- 0x0D
- #define USB_HID_DESIGNATOR_FOREARM \
- 0x0E
- #define USB_HID_DESIGNATOR_WRIST \
- 0x0F
- #define USB_HID_DESIGNATOR_PALM 0x10
- #define USB_HID_DESIGNATOR_THUMB \
- 0x11
- #define USB_HID_DESIGNATOR_INDEX_FINGER \
- 0x12
- #define USB_HID_DESIGNATOR_MIDDLE_FINGER \
- 0x13
- #define USB_HID_DESIGNATOR_RING_FINGER \
- 0x14
- #define USB_HID_DESIGNATOR_LITTLE_FINGER \
- 0x15
- #define USB_HID_DESIGNATOR_HEAD 0x16
- #define USB_HID_DESIGNATOR_SHOULDER \
- 0x17
- #define USB_HID_DESIGNATOR_HIP 0x18
- #define USB_HID_DESIGNATOR_WAIST \
- 0x19
- #define USB_HID_DESIGNATOR_THIGH \
- 0x1A
- #define USB_HID_DESIGNATOR_KNEE 0x1B
- #define USB_HID_DESIGNATOR_CALF 0x1C
- #define USB_HID_DESIGNATOR_ANKLE \
- 0x1D
- #define USB_HID_DESIGNATOR_FOOT 0x1E
- #define USB_HID_DESIGNATOR_HEEL 0x1F
- #define USB_HID_DESIGNATOR_BALL_OF_FOOT \
- 0x20
- #define USB_HID_DESIGNATOR_BIG_TOE \
- 0x21
- #define USB_HID_DESIGNATOR_SECOND_TOE \
- 0x22
- #define USB_HID_DESIGNATOR_THIRD_TOE \
- 0x23
- #define USB_HID_DESIGNATOR_FOURTH_TOE \
- 0x24
- #define USB_HID_DESIGNATOR_LITTLE_TOE \
- 0x25
- #define USB_HID_DESIGNATOR_BROW 0x26
- #define USB_HID_DESIGNATOR_CHEEK \
- 0x27
- //*****************************************************************************
- //
- // Physical descriptor qualifier values.
- //
- //*****************************************************************************
- #define USB_HID_QUALIFIER_NOT_APPLICABLE \
- (0x00 << 5)
- #define USB_HID_QUALIFIER_RIGHT (0x01 << 5)
- #define USB_HID_QUALIFIER_LEFT (0x02 << 5)
- #define USB_HID_QUALIFIER_BOTH (0x03 << 5)
- #define USB_HID_QUALIFIER_EITHER \
- (0x04 << 5)
- #define USB_HID_QUALIFIER_CENTER \
- (0x05 << 5)
- //*****************************************************************************
- //
- // This is the maximum value for a usage code.
- //
- //*****************************************************************************
- #define USBH_HID_MAX_USAGE 256
- #define USBH_HID_CAPS_ARRAY_SZ (USBH_HID_MAX_USAGE/sizeof(unsigned int))
- //*****************************************************************************
- //
- // All structures defined in this section of the header require byte packing of
- // fields. This is usually a ccomplished using the USBLIB_PACKED macro but, for IAR
- // Embedded Workbench, this requires a pragma.
- //
- //*****************************************************************************
- #if defined(ewarm) || defined(__IAR_SYSTEMS_ICC__)
- #pragma pack(1)
- #endif
- //*****************************************************************************
- //
- //! The class descriptor information structure is used to announce the presence
- //! of HID-specific class descriptors within the HID descriptor.
- //
- //*****************************************************************************
- typedef struct
- {
- //
- //! The type of HID class descriptor. This will be USB_HID_DTYPE_REPORT or
- //! USB_HID_DTYPE_PHYSICAL.
- //
- unsigned char bDescriptorType;
- //
- //! The total length of the HID class descriptor.
- //
- unsigned short wDescriptorLength;
- }
- USBLIB_PACKED tHIDClassDescriptorInfo;
- //*****************************************************************************
- //
- //! The HID descriptor is inserted following the interface descriptor and
- //! before the endpoint descriptors for a HID class device.
- //
- //*****************************************************************************
- typedef struct
- {
- //
- //! The length of this descriptor in bytes.
- //
- unsigned char bLength;
- //
- //! The type of the descriptor. For a HID descriptor, this will be
- //! USB_HID_DTYPE_HID (0x21).
- //
- unsigned char bDescriptorType;
- //
- //! A BCD value identifying the HID Class specification release supported
- //! by the device. For version 1.11, for example, this value would be
- //! 0x0111.
- //
- unsigned short bcdHID;
- //
- //! The country code for which this hardware is localized or 0 if no
- //! localization has been performed. Valid country (or language) codes are
- //! in labels of the form USB_HID_COUNTRY_xxx.
- unsigned char bCountryCode;
- //
- //! The number of class-specific descriptors that exist for this device.
- //! This indicates the number of class descriptor information structures
- //! that are appended to this structure and must be at least 1 (since all
- //! HID devices must publish at least 1 report descriptor).
- //
- unsigned char bNumDescriptors;
- //
- //! A table announcing each of the class-specific descriptors that this
- //! device publishes. The actual number of entries in the array is given
- //! by the bNumDescriptors field.
- //
- tHIDClassDescriptorInfo sClassDescriptor[1];
- }
- USBLIB_PACKED tHIDDescriptor;
- //*****************************************************************************
- //
- // Return to default packing when using the IAR Embedded Workbench compiler.
- //
- //*****************************************************************************
- #if defined(ewarm) || defined(__IAR_SYSTEMS_ICC__)
- #pragma pack()
- #endif
- //*****************************************************************************
- //
- //! This structure defines the mapping of USB usage identifiers to printable
- //! characters. The structure has three members that hold this information.
- //! The ucBytesPerChar, indicates the number of bytes per character in
- //! the table. The pulCapsLock array holds a packed bit array of usage
- //! identifiers that can be modified by the Caps Lock key. The pCharMapping
- //! array is treated as a double indexed array with two "columns". In the case
- //! of a single byte character it is treated as pairs of 8 bit values for
- //! unshifted and shifted values. In the case of a double byte characters it is
- //! treated as pairs of 16 bit values.
- //
- //*****************************************************************************
- typedef struct
- {
- //
- //! Number of bytes per character in the pCharMapping table of this
- //! structure.
- //
- unsigned char ucBytesPerChar;
- //
- //! This is a packed bitmasked structure with a one bit flags that
- //! indicates if the corresponding Usage ID is affected by the Caps Lock
- //! key.
- //
- unsigned int pulCapsLock[USBH_HID_CAPS_ARRAY_SZ];
- //
- //! This is the indexed table of Usage ID to character value. It must be
- //! at least ucBytesPerChar * 2 * USBH_HID_MAX_USAGE bytes in size as it
- //! is treated as a double indexed array.
- //
- void *pCharMapping;
- }
- tHIDKeyboardUsageTable;
- //*****************************************************************************
- //
- // The US Keyboard mapping used by USB keyboard usage ID to character mapping.
- //
- //*****************************************************************************
- extern const tHIDKeyboardUsageTable g_sUSKeyboardMap;
- //*****************************************************************************
- //
- // Close the Doxygen group.
- //! @}
- //
- //*****************************************************************************
- //*****************************************************************************
- //
- // Mark the end of the C bindings section for C++ compilers.
- //
- //*****************************************************************************
- #ifdef __cplusplus
- }
- #endif
- #endif // __USBHID_H__
|