Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
usb_hid.h
00001 /** 00002 * @file usb_hid.h 00003 * @brief USB hid driver header 00004 * 00005 * DAPLink Interface Firmware 00006 * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved 00007 * SPDX-License-Identifier: Apache-2.0 00008 * 00009 * Licensed under the Apache License, Version 2.0 (the "License"); you may 00010 * not use this file except in compliance with the License. 00011 * You may obtain a copy of the License at 00012 * 00013 * http://www.apache.org/licenses/LICENSE-2.0 00014 * 00015 * Unless required by applicable law or agreed to in writing, software 00016 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 00017 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00018 * See the License for the specific language governing permissions and 00019 * limitations under the License. 00020 */ 00021 00022 #ifndef __USB_HID_H__ 00023 #define __USB_HID_H__ 00024 00025 00026 /* HID Subclass Codes */ 00027 #define HID_SUBCLASS_NONE 0x00 00028 #define HID_SUBCLASS_BOOT 0x01 00029 00030 /* HID Protocol Codes */ 00031 #define HID_PROTOCOL_NONE 0x00 00032 #define HID_PROTOCOL_BOOT 0x00 00033 #define HID_PROTOCOL_KEYBOARD 0x01 00034 #define HID_PROTOCOL_REPORT 0x01 00035 #define HID_PROTOCOL_MOUSE 0x02 00036 00037 00038 /* HID Descriptor Types */ 00039 #define HID_HID_DESCRIPTOR_TYPE 0x21 00040 #define HID_REPORT_DESCRIPTOR_TYPE 0x22 00041 #define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 00042 00043 00044 /* HID Descriptor */ 00045 typedef __packed struct _HID_DESCRIPTOR { 00046 U8 bLength; 00047 U8 bDescriptorType; 00048 U16 bcdHID; 00049 U8 bCountryCode; 00050 U8 bNumDescriptors; 00051 /* Array of one or more descriptors */ 00052 __packed struct _HID_DESCRIPTOR_LIST { 00053 U8 bDescriptorType; 00054 U16 wDescriptorLength; 00055 } DescriptorList[1]; 00056 } HID_DESCRIPTOR; 00057 00058 00059 /* HID Request Codes */ 00060 #define HID_REQUEST_GET_REPORT 0x01 00061 #define HID_REQUEST_GET_IDLE 0x02 00062 #define HID_REQUEST_GET_PROTOCOL 0x03 00063 #define HID_REQUEST_SET_REPORT 0x09 00064 #define HID_REQUEST_SET_IDLE 0x0A 00065 #define HID_REQUEST_SET_PROTOCOL 0x0B 00066 00067 /* HID Report Types */ 00068 #define HID_REPORT_INPUT 0x01 00069 #define HID_REPORT_OUTPUT 0x02 00070 #define HID_REPORT_FEATURE 0x03 00071 00072 00073 /* Usage Pages */ 00074 #define HID_USAGE_PAGE_UNDEFINED 0x00 00075 #define HID_USAGE_PAGE_GENERIC 0x01 00076 #define HID_USAGE_PAGE_SIMULATION 0x02 00077 #define HID_USAGE_PAGE_VR 0x03 00078 #define HID_USAGE_PAGE_SPORT 0x04 00079 #define HID_USAGE_PAGE_GAME 0x05 00080 #define HID_USAGE_PAGE_DEV_CONTROLS 0x06 00081 #define HID_USAGE_PAGE_KEYBOARD 0x07 00082 #define HID_USAGE_PAGE_LED 0x08 00083 #define HID_USAGE_PAGE_BUTTON 0x09 00084 #define HID_USAGE_PAGE_ORDINAL 0x0A 00085 #define HID_USAGE_PAGE_TELEPHONY 0x0B 00086 #define HID_USAGE_PAGE_CONSUMER 0x0C 00087 #define HID_USAGE_PAGE_DIGITIZER 0x0D 00088 #define HID_USAGE_PAGE_UNICODE 0x10 00089 #define HID_USAGE_PAGE_ALPHANUMERIC 0x14 00090 /* ... */ 00091 00092 00093 /* Generic Desktop Page (0x01) */ 00094 #define HID_USAGE_GENERIC_POINTER 0x01 00095 #define HID_USAGE_GENERIC_MOUSE 0x02 00096 #define HID_USAGE_GENERIC_JOYSTICK 0x04 00097 #define HID_USAGE_GENERIC_GAMEPAD 0x05 00098 #define HID_USAGE_GENERIC_KEYBOARD 0x06 00099 #define HID_USAGE_GENERIC_KEYPAD 0x07 00100 #define HID_USAGE_GENERIC_X 0x30 00101 #define HID_USAGE_GENERIC_Y 0x31 00102 #define HID_USAGE_GENERIC_Z 0x32 00103 #define HID_USAGE_GENERIC_RX 0x33 00104 #define HID_USAGE_GENERIC_RY 0x34 00105 #define HID_USAGE_GENERIC_RZ 0x35 00106 #define HID_USAGE_GENERIC_SLIDER 0x36 00107 #define HID_USAGE_GENERIC_DIAL 0x37 00108 #define HID_USAGE_GENERIC_WHEEL 0x38 00109 #define HID_USAGE_GENERIC_HATSWITCH 0x39 00110 #define HID_USAGE_GENERIC_COUNTED_BUFFER 0x3A 00111 #define HID_USAGE_GENERIC_BYTE_COUNT 0x3B 00112 #define HID_USAGE_GENERIC_MOTION_WAKEUP 0x3C 00113 #define HID_USAGE_GENERIC_VX 0x40 00114 #define HID_USAGE_GENERIC_VY 0x41 00115 #define HID_USAGE_GENERIC_VZ 0x42 00116 #define HID_USAGE_GENERIC_VBRX 0x43 00117 #define HID_USAGE_GENERIC_VBRY 0x44 00118 #define HID_USAGE_GENERIC_VBRZ 0x45 00119 #define HID_USAGE_GENERIC_VNO 0x46 00120 #define HID_USAGE_GENERIC_SYSTEM_CTL 0x80 00121 #define HID_USAGE_GENERIC_SYSCTL_POWER 0x81 00122 #define HID_USAGE_GENERIC_SYSCTL_SLEEP 0x82 00123 #define HID_USAGE_GENERIC_SYSCTL_WAKE 0x83 00124 #define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU 0x84 00125 #define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU 0x85 00126 #define HID_USAGE_GENERIC_SYSCTL_APP_MENU 0x86 00127 #define HID_USAGE_GENERIC_SYSCTL_HELP_MENU 0x87 00128 #define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT 0x88 00129 #define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT 0x89 00130 #define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT 0x8A 00131 #define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT 0x8B 00132 #define HID_USAGE_GENERIC_SYSCTL_MENU_UP 0x8C 00133 #define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN 0x8D 00134 /* ... */ 00135 00136 /* Simulation Controls Page (0x02) */ 00137 /* ... */ 00138 #define HID_USAGE_SIMULATION_RUDDER 0xBA 00139 #define HID_USAGE_SIMULATION_THROTTLE 0xBB 00140 /* ... */ 00141 00142 /* Virtual Reality Controls Page (0x03) */ 00143 /* ... */ 00144 00145 /* Sport Controls Page (0x04) */ 00146 /* ... */ 00147 00148 /* Game Controls Page (0x05) */ 00149 /* ... */ 00150 00151 /* Generic Device Controls Page (0x06) */ 00152 /* ... */ 00153 00154 /* Keyboard/Keypad Page (0x07) */ 00155 00156 /* Keyboard Usage Keys */ 00157 extern const unsigned char HID_KEYBOARD_ID_TO_ASCII[256]; 00158 extern const unsigned char HID_KEYBOARD_ALT_ID_TO_ASCII[57]; 00159 00160 /* Error "Keys" */ 00161 #define HID_USAGE_KEYBOARD_NOEVENT 0x00 00162 #define HID_USAGE_KEYBOARD_ROLLOVER 0x01 00163 #define HID_USAGE_KEYBOARD_POSTFAIL 0x02 00164 #define HID_USAGE_KEYBOARD_UNDEFINED 0x03 00165 00166 /* Letters */ 00167 #define HID_USAGE_KEYBOARD_aA 0x04 00168 #define HID_USAGE_KEYBOARD_zZ 0x1D 00169 00170 /* Numbers */ 00171 #define HID_USAGE_KEYBOARD_ONE 0x1E 00172 #define HID_USAGE_KEYBOARD_ZERO 0x27 00173 00174 #define HID_USAGE_KEYBOARD_RETURN 0x28 00175 #define HID_USAGE_KEYBOARD_ESCAPE 0x29 00176 #define HID_USAGE_KEYBOARD_DELETE 0x2A 00177 00178 /* Funtion Keys */ 00179 #define HID_USAGE_KEYBOARD_F1 0x3A 00180 #define HID_USAGE_KEYBOARD_F12 0x45 00181 00182 #define HID_USAGE_KEYBOARD_PRINT_SCREEN 0x46 00183 00184 /* Modifier Keys */ 00185 #define HID_USAGE_KEYBOARD_LCTRL 0xE0 00186 #define HID_USAGE_KEYBOARD_LSHFT 0xE1 00187 #define HID_USAGE_KEYBOARD_LALT 0xE2 00188 #define HID_USAGE_KEYBOARD_LGUI 0xE3 00189 #define HID_USAGE_KEYBOARD_RCTRL 0xE4 00190 #define HID_USAGE_KEYBOARD_RSHFT 0xE5 00191 #define HID_USAGE_KEYBOARD_RALT 0xE6 00192 #define HID_USAGE_KEYBOARD_RGUI 0xE7 00193 #define HID_USAGE_KEYBOARD_SCROLL_LOCK 0x47 00194 #define HID_USAGE_KEYBOARD_NUM_LOCK 0x53 00195 #define HID_USAGE_KEYBOARD_CAPS_LOCK 0x39 00196 00197 /* Modifier Keys (values) */ 00198 #define HID_USAGE_KEYBOARD_MOD_LCTRL 0x01 00199 #define HID_USAGE_KEYBOARD_MOD_LSHIFT 0x02 00200 #define HID_USAGE_KEYBOARD_MOD_LALTL 0x04 00201 #define HID_USAGE_KEYBOARD_MOD_LGUI 0x08 00202 #define HID_USAGE_KEYBOARD_MOD_RCTRL 0x10 00203 #define HID_USAGE_KEYBOARD_MOD_RSHIFT 0x20 00204 #define HID_USAGE_KEYBOARD_MOD_RALTL 0x40 00205 #define HID_USAGE_KEYBOARD_MOD_RGUI 0x80 00206 00207 /* ... */ 00208 00209 /* LED Page (0x08) */ 00210 #define HID_USAGE_LED_NUM_LOCK 0x01 00211 #define HID_USAGE_LED_CAPS_LOCK 0x02 00212 #define HID_USAGE_LED_SCROLL_LOCK 0x03 00213 #define HID_USAGE_LED_COMPOSE 0x04 00214 #define HID_USAGE_LED_KANA 0x05 00215 #define HID_USAGE_LED_POWER 0x06 00216 #define HID_USAGE_LED_SHIFT 0x07 00217 #define HID_USAGE_LED_DO_NOT_DISTURB 0x08 00218 #define HID_USAGE_LED_MUTE 0x09 00219 #define HID_USAGE_LED_TONE_ENABLE 0x0A 00220 #define HID_USAGE_LED_HIGH_CUT_FILTER 0x0B 00221 #define HID_USAGE_LED_LOW_CUT_FILTER 0x0C 00222 #define HID_USAGE_LED_EQUALIZER_ENABLE 0x0D 00223 #define HID_USAGE_LED_SOUND_FIELD_ON 0x0E 00224 #define HID_USAGE_LED_SURROUND_FIELD_ON 0x0F 00225 #define HID_USAGE_LED_REPEAT 0x10 00226 #define HID_USAGE_LED_STEREO 0x11 00227 #define HID_USAGE_LED_SAMPLING_RATE_DETECT 0x12 00228 #define HID_USAGE_LED_SPINNING 0x13 00229 #define HID_USAGE_LED_CAV 0x14 00230 #define HID_USAGE_LED_CLV 0x15 00231 #define HID_USAGE_LED_RECORDING_FORMAT_DET 0x16 00232 #define HID_USAGE_LED_OFF_HOOK 0x17 00233 #define HID_USAGE_LED_RING 0x18 00234 #define HID_USAGE_LED_MESSAGE_WAITING 0x19 00235 #define HID_USAGE_LED_DATA_MODE 0x1A 00236 #define HID_USAGE_LED_BATTERY_OPERATION 0x1B 00237 #define HID_USAGE_LED_BATTERY_OK 0x1C 00238 #define HID_USAGE_LED_BATTERY_LOW 0x1D 00239 #define HID_USAGE_LED_SPEAKER 0x1E 00240 #define HID_USAGE_LED_HEAD_SET 0x1F 00241 #define HID_USAGE_LED_HOLD 0x20 00242 #define HID_USAGE_LED_MICROPHONE 0x21 00243 #define HID_USAGE_LED_COVERAGE 0x22 00244 #define HID_USAGE_LED_NIGHT_MODE 0x23 00245 #define HID_USAGE_LED_SEND_CALLS 0x24 00246 #define HID_USAGE_LED_CALL_PICKUP 0x25 00247 #define HID_USAGE_LED_CONFERENCE 0x26 00248 #define HID_USAGE_LED_STAND_BY 0x27 00249 #define HID_USAGE_LED_CAMERA_ON 0x28 00250 #define HID_USAGE_LED_CAMERA_OFF 0x29 00251 #define HID_USAGE_LED_ON_LINE 0x2A 00252 #define HID_USAGE_LED_OFF_LINE 0x2B 00253 #define HID_USAGE_LED_BUSY 0x2C 00254 #define HID_USAGE_LED_READY 0x2D 00255 #define HID_USAGE_LED_PAPER_OUT 0x2E 00256 #define HID_USAGE_LED_PAPER_JAM 0x2F 00257 #define HID_USAGE_LED_REMOTE 0x30 00258 #define HID_USAGE_LED_FORWARD 0x31 00259 #define HID_USAGE_LED_REVERSE 0x32 00260 #define HID_USAGE_LED_STOP 0x33 00261 #define HID_USAGE_LED_REWIND 0x34 00262 #define HID_USAGE_LED_FAST_FORWARD 0x35 00263 #define HID_USAGE_LED_PLAY 0x36 00264 #define HID_USAGE_LED_PAUSE 0x37 00265 #define HID_USAGE_LED_RECORD 0x38 00266 #define HID_USAGE_LED_ERROR 0x39 00267 #define HID_USAGE_LED_SELECTED_INDICATOR 0x3A 00268 #define HID_USAGE_LED_IN_USE_INDICATOR 0x3B 00269 #define HID_USAGE_LED_MULTI_MODE_INDICATOR 0x3C 00270 #define HID_USAGE_LED_INDICATOR_ON 0x3D 00271 #define HID_USAGE_LED_INDICATOR_FLASH 0x3E 00272 #define HID_USAGE_LED_INDICATOR_SLOW_BLINK 0x3F 00273 #define HID_USAGE_LED_INDICATOR_FAST_BLINK 0x40 00274 #define HID_USAGE_LED_INDICATOR_OFF 0x41 00275 #define HID_USAGE_LED_FLASH_ON_TIME 0x42 00276 #define HID_USAGE_LED_SLOW_BLINK_ON_TIME 0x43 00277 #define HID_USAGE_LED_SLOW_BLINK_OFF_TIME 0x44 00278 #define HID_USAGE_LED_FAST_BLINK_ON_TIME 0x45 00279 #define HID_USAGE_LED_FAST_BLINK_OFF_TIME 0x46 00280 #define HID_USAGE_LED_INDICATOR_COLOR 0x47 00281 #define HID_USAGE_LED_RED 0x48 00282 #define HID_USAGE_LED_GREEN 0x49 00283 #define HID_USAGE_LED_AMBER 0x4A 00284 #define HID_USAGE_LED_GENERIC_INDICATOR 0x4B 00285 00286 /* Button Page (0x09) */ 00287 /* There is no need to label these usages. */ 00288 00289 /* Ordinal Page (0x0A) */ 00290 /* There is no need to label these usages. */ 00291 00292 /* Telephony Device Page (0x0B) */ 00293 #define HID_USAGE_TELEPHONY_PHONE 0x01 00294 #define HID_USAGE_TELEPHONY_ANSWERING_MACHINE 0x02 00295 #define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS 0x03 00296 #define HID_USAGE_TELEPHONY_HANDSET 0x04 00297 #define HID_USAGE_TELEPHONY_HEADSET 0x05 00298 #define HID_USAGE_TELEPHONY_KEYPAD 0x06 00299 #define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON 0x07 00300 /* ... */ 00301 00302 /* Consumer Page (0x0C) */ 00303 #define HID_USAGE_CONSUMER_CONTROL 0x01 00304 /* ... */ 00305 00306 /* and others ... */ 00307 00308 00309 /* HID Report Item Macros */ 00310 00311 /* Main Items */ 00312 #define HID_Input(x) 0x81,x 00313 #define HID_Output(x) 0x91,x 00314 #define HID_Feature(x) 0xB1,x 00315 #define HID_Collection(x) 0xA1,x 00316 #define HID_EndCollection 0xC0 00317 00318 /* Data (Input, Output, Feature) */ 00319 #define HID_Data 0<<0 00320 #define HID_Constant 1<<0 00321 #define HID_Array 0<<1 00322 #define HID_Variable 1<<1 00323 #define HID_Absolute 0<<2 00324 #define HID_Relative 1<<2 00325 #define HID_NoWrap 0<<3 00326 #define HID_Wrap 1<<3 00327 #define HID_Linear 0<<4 00328 #define HID_NonLinear 1<<4 00329 #define HID_PreferredState 0<<5 00330 #define HID_NoPreferred 1<<5 00331 #define HID_NoNullPosition 0<<6 00332 #define HID_NullState 1<<6 00333 #define HID_NonVolatile 0<<7 00334 #define HID_Volatile 1<<7 00335 00336 /* Collection Data */ 00337 #define HID_Physical 0x00 00338 #define HID_Application 0x01 00339 #define HID_Logical 0x02 00340 #define HID_Report 0x03 00341 #define HID_NamedArray 0x04 00342 #define HID_UsageSwitch 0x05 00343 #define HID_UsageModifier 0x06 00344 00345 /* Global Items */ 00346 #define HID_UsagePage(x) 0x05,x 00347 #define HID_UsagePageVendor(x) 0x06,x,0xFF 00348 #define HID_LogicalMin(x) 0x15,x 00349 #define HID_LogicalMinS(x) 0x16,(x&0xFF),((x>>8)&0xFF) 00350 #define HID_LogicalMinL(x) 0x17,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00351 #define HID_LogicalMax(x) 0x25,x 00352 #define HID_LogicalMaxS(x) 0x26,(x&0xFF),((x>>8)&0xFF) 00353 #define HID_LogicalMaxL(x) 0x27,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00354 #define HID_PhysicalMin(x) 0x35,x 00355 #define HID_PhysicalMinS(x) 0x36,(x&0xFF),((x>>8)&0xFF) 00356 #define HID_PhysicalMinL(x) 0x37,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00357 #define HID_PhysicalMax(x) 0x45,x 00358 #define HID_PhysicalMaxS(x) 0x46,(x&0xFF),((x>>8)&0xFF) 00359 #define HID_PhysicalMaxL(x) 0x47,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00360 #define HID_UnitExponent(x) 0x55,x 00361 #define HID_Unit(x) 0x65,x 00362 #define HID_UnitS(x) 0x66,(x&0xFF),((x>>8)&0xFF) 00363 #define HID_UnitL(x) 0x67,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00364 #define HID_ReportSize(x) 0x75,x 00365 #define HID_ReportSizeS(x) 0x76,(x&0xFF),((x>>8)&0xFF) 00366 #define HID_ReportSizeL(x) 0x77,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00367 #define HID_ReportID(x) 0x85,x 00368 #define HID_ReportCount(x) 0x95,x 00369 #define HID_ReportCountS(x) 0x96,(x&0xFF),((x>>8)&0xFF) 00370 #define HID_ReportCountL(x) 0x97,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF) 00371 #define HID_Push 0xA4 00372 #define HID_Pop 0xB4 00373 00374 /* Local Items */ 00375 #define HID_Usage(x) 0x09,x 00376 #define HID_UsageMin(x) 0x19,x 00377 #define HID_UsageMax(x) 0x29,x 00378 00379 00380 #endif /* __USB_HID_H__ */
Generated on Tue Jul 12 2022 15:37:26 by
 1.7.2
 1.7.2