1 /* 2 Simple DirectMedia Layer 3 Copyright (C) 2020 Valve Corporation 4 5 This software is provided 'as-is', without any express or implied 6 warranty. In no event will the authors be held liable for any damages 7 arising from the use of this software. 8 9 Permission is granted to anyone to use this software for any purpose, 10 including commercial applications, and to alter it and redistribute it 11 freely, subject to the following restrictions: 12 13 1. The origin of this software must not be misrepresented; you must not 14 claim that you wrote the original software. If you use this software 15 in a product, an acknowledgment in the product documentation would be 16 appreciated but is not required. 17 2. Altered source versions must be plainly marked as such, and must not be 18 misrepresented as being the original software. 19 3. This notice may not be removed or altered from any source distribution. 20 */ 21 22 #ifndef _CONTROLLER_CONSTANTS_ 23 #define _CONTROLLER_CONSTANTS_ 24 25 #include "controller_structs.h" 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 #define FEATURE_REPORT_SIZE 64 32 33 #define VALVE_USB_VID 0x28DE 34 35 // Frame update rate (in ms). 36 #define FAST_SCAN_INTERVAL 6 37 #define SLOW_SCAN_INTERVAL 9 38 39 // Contains each of the USB PIDs for Valve controllers (only add to this enum and never change the order) 40 enum ValveControllerPID 41 { 42 BASTILLE_PID = 0x2202, 43 CHELL_PID = 0x1101, 44 D0G_PID = 0x1102, 45 ELI_PID = 0x1103, 46 FREEMAN_PID = 0x1104, 47 D0G_BLE_PID = 0x1105, 48 D0G_BLE2_PID = 0x1106, 49 D0GGLE_PID = 0x1142, 50 }; 51 52 // This enum contains all of the messages exchanged between the host and the target (only add to this enum and never change the order) 53 enum FeatureReportMessageIDs 54 { 55 ID_SET_DIGITAL_MAPPINGS = 0x80, 56 ID_CLEAR_DIGITAL_MAPPINGS = 0x81, 57 ID_GET_DIGITAL_MAPPINGS = 0x82, 58 ID_GET_ATTRIBUTES_VALUES = 0x83, 59 ID_GET_ATTRIBUTE_LABEL = 0x84, 60 ID_SET_DEFAULT_DIGITAL_MAPPINGS = 0x85, 61 ID_FACTORY_RESET = 0x86, 62 ID_SET_SETTINGS_VALUES = 0x87, 63 ID_CLEAR_SETTINGS_VALUES = 0x88, 64 ID_GET_SETTINGS_VALUES = 0x89, 65 ID_GET_SETTING_LABEL = 0x8A, 66 ID_GET_SETTINGS_MAXS = 0x8B, 67 ID_GET_SETTINGS_DEFAULTS = 0x8C, 68 ID_SET_CONTROLLER_MODE = 0x8D, 69 ID_LOAD_DEFAULT_SETTINGS = 0x8E, 70 ID_TRIGGER_HAPTIC_PULSE = 0x8F, 71 ID_TURN_OFF_CONTROLLER = 0x9F, 72 73 ID_GET_DEVICE_INFO = 0xA1, 74 75 ID_CALIBRATE_TRACKPADS = 0xA7, 76 ID_RESERVED_0 = 0xA8, 77 ID_SET_SERIAL_NUMBER = 0xA9, 78 ID_GET_TRACKPAD_CALIBRATION = 0xAA, 79 ID_GET_TRACKPAD_FACTORY_CALIBRATION = 0xAB, 80 ID_GET_TRACKPAD_RAW_DATA = 0xAC, 81 ID_ENABLE_PAIRING = 0xAD, 82 ID_GET_STRING_ATTRIBUTE = 0xAE, 83 ID_RADIO_ERASE_RECORDS = 0xAF, 84 ID_RADIO_WRITE_RECORD = 0xB0, 85 ID_SET_DONGLE_SETTING = 0xB1, 86 ID_DONGLE_DISCONNECT_DEVICE = 0xB2, 87 ID_DONGLE_COMMIT_DEVICE = 0xB3, 88 ID_DONGLE_GET_WIRELESS_STATE = 0xB4, 89 ID_CALIBRATE_GYRO = 0xB5, 90 ID_PLAY_AUDIO = 0xB6, 91 ID_AUDIO_UPDATE_START = 0xB7, 92 ID_AUDIO_UPDATE_DATA = 0xB8, 93 ID_AUDIO_UPDATE_COMPLETE = 0xB9, 94 ID_GET_CHIPID = 0xBA, 95 96 ID_CALIBRATE_JOYSTICK = 0xBF, 97 ID_CALIBRATE_ANALOG_TRIGGERS = 0xC0, 98 ID_SET_AUDIO_MAPPING = 0xC1, 99 ID_CHECK_GYRO_FW_LOAD = 0xC2, 100 ID_CALIBRATE_ANALOG = 0xC3, 101 ID_DONGLE_GET_CONNECTED_SLOTS = 0xC4, 102 }; 103 104 105 // Enumeration of all wireless dongle events 106 typedef enum WirelessEventTypes 107 { 108 WIRELESS_EVENT_DISCONNECT = 1, 109 WIRELESS_EVENT_CONNECT = 2, 110 WIRELESS_EVENT_PAIR = 3, 111 } EWirelessEventType; 112 113 114 // Enumeration of generic digital inputs - not all of these will be supported on all controllers (only add to this enum and never change the order) 115 typedef enum 116 { 117 IO_DIGITAL_BUTTON_NONE = -1, 118 IO_DIGITAL_BUTTON_RIGHT_TRIGGER, 119 IO_DIGITAL_BUTTON_LEFT_TRIGGER, 120 IO_DIGITAL_BUTTON_1, 121 IO_DIGITAL_BUTTON_Y=IO_DIGITAL_BUTTON_1, 122 IO_DIGITAL_BUTTON_2, 123 IO_DIGITAL_BUTTON_B=IO_DIGITAL_BUTTON_2, 124 IO_DIGITAL_BUTTON_3, 125 IO_DIGITAL_BUTTON_X=IO_DIGITAL_BUTTON_3, 126 IO_DIGITAL_BUTTON_4, 127 IO_DIGITAL_BUTTON_A=IO_DIGITAL_BUTTON_4, 128 IO_DIGITAL_BUTTON_RIGHT_BUMPER, 129 IO_DIGITAL_BUTTON_LEFT_BUMPER, 130 IO_DIGITAL_BUTTON_LEFT_JOYSTICK_CLICK, 131 IO_DIGITAL_BUTTON_ESCAPE, 132 IO_DIGITAL_BUTTON_STEAM, 133 IO_DIGITAL_BUTTON_MENU, 134 IO_DIGITAL_STICK_UP, 135 IO_DIGITAL_STICK_DOWN, 136 IO_DIGITAL_STICK_LEFT, 137 IO_DIGITAL_STICK_RIGHT, 138 IO_DIGITAL_TOUCH_1, 139 IO_DIGITAL_BUTTON_UP=IO_DIGITAL_TOUCH_1, 140 IO_DIGITAL_TOUCH_2, 141 IO_DIGITAL_BUTTON_RIGHT=IO_DIGITAL_TOUCH_2, 142 IO_DIGITAL_TOUCH_3, 143 IO_DIGITAL_BUTTON_LEFT=IO_DIGITAL_TOUCH_3, 144 IO_DIGITAL_TOUCH_4, 145 IO_DIGITAL_BUTTON_DOWN=IO_DIGITAL_TOUCH_4, 146 IO_DIGITAL_BUTTON_BACK_LEFT, 147 IO_DIGITAL_BUTTON_BACK_RIGHT, 148 IO_DIGITAL_LEFT_TRACKPAD_N, 149 IO_DIGITAL_LEFT_TRACKPAD_NE, 150 IO_DIGITAL_LEFT_TRACKPAD_E, 151 IO_DIGITAL_LEFT_TRACKPAD_SE, 152 IO_DIGITAL_LEFT_TRACKPAD_S, 153 IO_DIGITAL_LEFT_TRACKPAD_SW, 154 IO_DIGITAL_LEFT_TRACKPAD_W, 155 IO_DIGITAL_LEFT_TRACKPAD_NW, 156 IO_DIGITAL_RIGHT_TRACKPAD_N, 157 IO_DIGITAL_RIGHT_TRACKPAD_NE, 158 IO_DIGITAL_RIGHT_TRACKPAD_E, 159 IO_DIGITAL_RIGHT_TRACKPAD_SE, 160 IO_DIGITAL_RIGHT_TRACKPAD_S, 161 IO_DIGITAL_RIGHT_TRACKPAD_SW, 162 IO_DIGITAL_RIGHT_TRACKPAD_W, 163 IO_DIGITAL_RIGHT_TRACKPAD_NW, 164 IO_DIGITAL_LEFT_TRACKPAD_DOUBLE_TAP, 165 IO_DIGITAL_RIGHT_TRACKPAD_DOUBLE_TAP, 166 IO_DIGITAL_LEFT_TRACKPAD_OUTER_RADIUS, 167 IO_DIGITAL_RIGHT_TRACKPAD_OUTER_RADIUS, 168 IO_DIGITAL_LEFT_TRACKPAD_CLICK, 169 IO_DIGITAL_RIGHT_TRACKPAD_CLICK, 170 IO_DIGITAL_BATTERY_LOW, 171 IO_DIGITAL_LEFT_TRIGGER_THRESHOLD, 172 IO_DIGITAL_RIGHT_TRIGGER_THRESHOLD, 173 IO_DIGITAL_BUTTON_BACK_LEFT2, 174 IO_DIGITAL_BUTTON_BACK_RIGHT2, 175 IO_DIGITAL_BUTTON_ALWAYS_ON, 176 IO_DIGITAL_BUTTON_ANCILLARY_1, 177 IO_DIGITAL_BUTTON_MACRO_0, 178 IO_DIGITAL_BUTTON_MACRO_1, 179 IO_DIGITAL_BUTTON_MACRO_2, 180 IO_DIGITAL_BUTTON_MACRO_3, 181 IO_DIGITAL_BUTTON_MACRO_4, 182 IO_DIGITAL_BUTTON_MACRO_5, 183 IO_DIGITAL_BUTTON_MACRO_6, 184 IO_DIGITAL_BUTTON_MACRO_7, 185 IO_DIGITAL_BUTTON_MACRO_1FINGER, 186 IO_DIGITAL_BUTTON_MACRO_2FINGER, 187 IO_DIGITAL_COUNT 188 } DigitalIO ; 189 190 // Enumeration of generic analog inputs - not all of these will be supported on all controllers (only add to this enum and never change the order) 191 typedef enum 192 { 193 IO_ANALOG_LEFT_STICK_X, 194 IO_ANALOG_LEFT_STICK_Y, 195 IO_ANALOG_RIGHT_STICK_X, 196 IO_ANALOG_RIGHT_STICK_Y, 197 IO_ANALOG_LEFT_TRIGGER, 198 IO_ANALOG_RIGHT_TRIGGER, 199 IO_MOUSE1_X, 200 IO_MOUSE1_Y, 201 IO_MOUSE1_Z, 202 IO_ACCEL_X, 203 IO_ACCEL_Y, 204 IO_ACCEL_Z, 205 IO_GYRO_X, 206 IO_GYRO_Y, 207 IO_GYRO_Z, 208 IO_GYRO_QUAT_W, 209 IO_GYRO_QUAT_X, 210 IO_GYRO_QUAT_Y, 211 IO_GYRO_QUAT_Z, 212 IO_GYRO_STEERING_VEC, 213 IO_RAW_TRIGGER_LEFT, 214 IO_RAW_TRIGGER_RIGHT, 215 IO_RAW_JOYSTICK_X, 216 IO_RAW_JOYSTICK_Y, 217 IO_GYRO_TILT_VEC, 218 IO_ANALOG_COUNT 219 } AnalogIO; 220 221 222 // Contains list of all types of devices that the controller emulates (only add to this enum and never change the order) 223 enum DeviceTypes 224 { 225 DEVICE_KEYBOARD, 226 DEVICE_MOUSE, 227 DEVICE_GAMEPAD, 228 DEVICE_MODE_ADJUST, 229 DEVICE_COUNT 230 }; 231 232 // Scan codes for HID keyboards 233 enum HIDKeyboardKeys 234 { 235 KEY_INVALID, 236 KEY_FIRST = 0x04, 237 KEY_A = KEY_FIRST, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, 238 KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_1, KEY_2, 239 KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_RETURN, KEY_ESCAPE, KEY_BACKSPACE, KEY_TAB, KEY_SPACE, KEY_DASH, KEY_EQUALS, KEY_LEFT_BRACKET, 240 KEY_RIGHT_BRACKET, KEY_BACKSLASH, KEY_UNUSED1, KEY_SEMICOLON, KEY_SINGLE_QUOTE, KEY_BACK_TICK, KEY_COMMA, KEY_PERIOD, KEY_FORWARD_SLASH, KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, 241 KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_PRINT_SCREEN, KEY_SCROLL_LOCK, KEY_BREAK, KEY_INSERT, KEY_HOME, KEY_PAGE_UP, KEY_DELETE, KEY_END, KEY_PAGE_DOWN, KEY_RIGHT_ARROW, 242 KEY_LEFT_ARROW, KEY_DOWN_ARROW, KEY_UP_ARROW, KEY_NUM_LOCK, KEY_KEYPAD_FORWARD_SLASH, KEY_KEYPAD_ASTERISK, KEY_KEYPAD_DASH, KEY_KEYPAD_PLUS, KEY_KEYPAD_ENTER, KEY_KEYPAD_1, KEY_KEYPAD_2, KEY_KEYPAD_3, KEY_KEYPAD_4, KEY_KEYPAD_5, KEY_KEYPAD_6, KEY_KEYPAD_7, 243 KEY_KEYPAD_8, KEY_KEYPAD_9, KEY_KEYPAD_0, KEY_KEYPAD_PERIOD, 244 KEY_LALT, 245 KEY_LSHIFT, 246 KEY_LWIN, 247 KEY_LCONTROL, 248 KEY_RALT, 249 KEY_RSHIFT, 250 KEY_RWIN, 251 KEY_RCONTROL, 252 KEY_VOLUP, 253 KEY_VOLDOWN, 254 KEY_MUTE, 255 KEY_PLAY, 256 KEY_STOP, 257 KEY_NEXT, 258 KEY_PREV, 259 KEY_LAST = KEY_PREV 260 }; 261 262 enum ModifierMasks 263 { 264 KEY_LCONTROL_MASK = (1<<0), 265 KEY_LSHIFT_MASK = (1<<1), 266 KEY_LALT_MASK = (1<<2), 267 KEY_LWIN_MASK = (1<<3), 268 KEY_RCONTROL_MASK = (1<<4), 269 KEY_RSHIFT_MASK = (1<<5), 270 KEY_RALT_MASK = (1<<6), 271 KEY_RWIN_MASK = (1<<7) 272 }; 273 274 // Standard mouse buttons as specified in the HID mouse spec 275 enum MouseButtons 276 { 277 MOUSE_BTN_LEFT, 278 MOUSE_BTN_RIGHT, 279 MOUSE_BTN_MIDDLE, 280 MOUSE_BTN_BACK, 281 MOUSE_BTN_FORWARD, 282 MOUSE_SCROLL_UP, 283 MOUSE_SCROLL_DOWN, 284 MOUSE_BTN_COUNT 285 }; 286 287 // Gamepad buttons 288 enum GamepadButtons 289 { 290 GAMEPAD_BTN_TRIGGER_LEFT=1, 291 GAMEPAD_BTN_TRIGGER_RIGHT, 292 GAMEPAD_BTN_A, 293 GAMEPAD_BTN_B, 294 GAMEPAD_BTN_Y, 295 GAMEPAD_BTN_X, 296 GAMEPAD_BTN_SHOULDER_LEFT, 297 GAMEPAD_BTN_SHOULDER_RIGHT, 298 GAMEPAD_BTN_LEFT_JOYSTICK, 299 GAMEPAD_BTN_RIGHT_JOYSTICK, 300 GAMEPAD_BTN_START, 301 GAMEPAD_BTN_SELECT, 302 GAMEPAD_BTN_STEAM, 303 GAMEPAD_BTN_DPAD_UP, 304 GAMEPAD_BTN_DPAD_DOWN, 305 GAMEPAD_BTN_DPAD_LEFT, 306 GAMEPAD_BTN_DPAD_RIGHT, 307 GAMEPAD_BTN_LSTICK_UP, 308 GAMEPAD_BTN_LSTICK_DOWN, 309 GAMEPAD_BTN_LSTICK_LEFT, 310 GAMEPAD_BTN_LSTICK_RIGHT, 311 GAMEPAD_BTN_RSTICK_UP, 312 GAMEPAD_BTN_RSTICK_DOWN, 313 GAMEPAD_BTN_RSTICK_LEFT, 314 GAMEPAD_BTN_RSTICK_RIGHT, 315 GAMEPAD_BTN_COUNT 316 }; 317 318 // Mode adjust 319 enum ModeAdjustModes 320 { 321 MODE_ADJUST_SENSITITY=1, 322 MODE_ADJUST_LEFT_PAD_SECONDARY_MODE, 323 MODE_ADJUST_RIGHT_PAD_SECONDARY_MODE, 324 MODE_ADJUST_COUNT 325 }; 326 327 // Read-only attributes of controllers (only add to this enum and never change the order) 328 typedef enum 329 { 330 ATTRIB_UNIQUE_ID, 331 ATTRIB_PRODUCT_ID, 332 ATTRIB_PRODUCT_REVISON, // deprecated 333 ATTRIB_CAPABILITIES = ATTRIB_PRODUCT_REVISON, // intentional aliasing 334 ATTRIB_FIRMWARE_VERSION, // deprecated 335 ATTRIB_FIRMWARE_BUILD_TIME, 336 ATTRIB_RADIO_FIRMWARE_BUILD_TIME, 337 ATTRIB_RADIO_DEVICE_ID0, 338 ATTRIB_RADIO_DEVICE_ID1, 339 ATTRIB_DONGLE_FIRMWARE_BUILD_TIME, 340 ATTRIB_BOARD_REVISION, 341 ATTRIB_BOOTLOADER_BUILD_TIME, 342 ATTRIB_CONNECTION_INTERVAL_IN_US, 343 ATTRIB_COUNT 344 } ControllerAttributes; 345 346 // Read-only string attributes of controllers (only add to this enum and never change the order) 347 typedef enum 348 { 349 ATTRIB_STR_BOARD_SERIAL, 350 ATTRIB_STR_UNIT_SERIAL, 351 ATTRIB_STR_COUNT 352 } ControllerStringAttributes; 353 354 typedef enum 355 { 356 STATUS_CODE_NORMAL, 357 STATUS_CODE_CRITICAL_BATTERY, 358 STATUS_CODE_GYRO_INIT_ERROR, 359 } ControllerStatusEventCodes; 360 361 typedef enum 362 { 363 STATUS_STATE_LOW_BATTERY=0, 364 } ControllerStatusStateFlags; 365 366 typedef enum { 367 TRACKPAD_ABSOLUTE_MOUSE, 368 TRACKPAD_RELATIVE_MOUSE, 369 TRACKPAD_DPAD_FOUR_WAY_DISCRETE, 370 TRACKPAD_DPAD_FOUR_WAY_OVERLAP, 371 TRACKPAD_DPAD_EIGHT_WAY, 372 TRACKPAD_RADIAL_MODE, 373 TRACKPAD_ABSOLUTE_DPAD, 374 TRACKPAD_NONE, 375 TRACKPAD_GESTURE_KEYBOARD, 376 TRACKPAD_NUM_MODES 377 } TrackpadDPadMode; 378 379 // Read-write controller settings (only add to this enum and never change the order) 380 typedef enum 381 { 382 SETTING_MOUSE_SENSITIVITY, 383 SETTING_MOUSE_ACCELERATION, 384 SETTING_TRACKBALL_ROTATION_ANGLE, 385 SETTING_HAPTIC_INTENSITY, 386 SETTING_LEFT_GAMEPAD_STICK_ENABLED, 387 SETTING_RIGHT_GAMEPAD_STICK_ENABLED, 388 SETTING_USB_DEBUG_MODE, 389 SETTING_LEFT_TRACKPAD_MODE, 390 SETTING_RIGHT_TRACKPAD_MODE, 391 SETTING_MOUSE_POINTER_ENABLED, 392 SETTING_DPAD_DEADZONE, 393 SETTING_MINIMUM_MOMENTUM_VEL, 394 SETTING_MOMENTUM_DECAY_AMMOUNT, 395 SETTING_TRACKPAD_RELATIVE_MODE_TICKS_PER_PIXEL, 396 SETTING_HAPTIC_INCREMENT, 397 SETTING_DPAD_ANGLE_SIN, 398 SETTING_DPAD_ANGLE_COS, 399 SETTING_MOMENTUM_VERTICAL_DIVISOR, 400 SETTING_MOMENTUM_MAXIMUM_VELOCITY, 401 SETTING_TRACKPAD_Z_ON, 402 SETTING_TRACKPAD_Z_OFF, 403 SETTING_SENSITIVY_SCALE_AMMOUNT, 404 SETTING_LEFT_TRACKPAD_SECONDARY_MODE, 405 SETTING_RIGHT_TRACKPAD_SECONDARY_MODE, 406 SETTING_SMOOTH_ABSOLUTE_MOUSE, 407 SETTING_STEAMBUTTON_POWEROFF_TIME, 408 SETTING_UNUSED_1, 409 SETTING_TRACKPAD_OUTER_RADIUS, 410 SETTING_TRACKPAD_Z_ON_LEFT, 411 SETTING_TRACKPAD_Z_OFF_LEFT, 412 SETTING_TRACKPAD_OUTER_SPIN_VEL, 413 SETTING_TRACKPAD_OUTER_SPIN_RADIUS, 414 SETTING_TRACKPAD_OUTER_SPIN_HORIZONTAL_ONLY, 415 SETTING_TRACKPAD_RELATIVE_MODE_DEADZONE, 416 SETTING_TRACKPAD_RELATIVE_MODE_MAX_VEL, 417 SETTING_TRACKPAD_RELATIVE_MODE_INVERT_Y, 418 SETTING_TRACKPAD_DOUBLE_TAP_BEEP_ENABLED, 419 SETTING_TRACKPAD_DOUBLE_TAP_BEEP_PERIOD, 420 SETTING_TRACKPAD_DOUBLE_TAP_BEEP_COUNT, 421 SETTING_TRACKPAD_OUTER_RADIUS_RELEASE_ON_TRANSITION, 422 SETTING_RADIAL_MODE_ANGLE, 423 SETTING_HAPTIC_INTENSITY_MOUSE_MODE, 424 SETTING_LEFT_DPAD_REQUIRES_CLICK, 425 SETTING_RIGHT_DPAD_REQUIRES_CLICK, 426 SETTING_LED_BASELINE_BRIGHTNESS, 427 SETTING_LED_USER_BRIGHTNESS, 428 SETTING_ENABLE_RAW_JOYSTICK, 429 SETTING_ENABLE_FAST_SCAN, 430 SETTING_GYRO_MODE, 431 SETTING_WIRELESS_PACKET_VERSION, 432 SETTING_SLEEP_INACTIVITY_TIMEOUT, 433 SETTING_COUNT, 434 435 // This is a special setting value use for callbacks and should not be set/get explicitly. 436 SETTING_ALL=0xFF 437 } ControllerSettings; 438 439 typedef enum 440 { 441 SETTING_DEFAULT, 442 SETTING_MIN, 443 SETTING_MAX, 444 SETTING_DEFAULTMINMAXCOUNT 445 } SettingDefaultMinMax; 446 447 // Bitmask that define which IMU features to enable. 448 typedef enum 449 { 450 SETTING_GYRO_MODE_OFF = 0x0000, 451 SETTING_GYRO_MODE_STEERING = 0x0001, 452 SETTING_GYRO_MODE_TILT = 0x0002, 453 SETTING_GYRO_MODE_SEND_ORIENTATION = 0x0004, 454 SETTING_GYRO_MODE_SEND_RAW_ACCEL = 0x0008, 455 SETTING_GYRO_MODE_SEND_RAW_GYRO = 0x0010, 456 } SettingGyroMode; 457 458 // Bitmask for haptic pulse flags 459 typedef enum 460 { 461 HAPTIC_PULSE_NORMAL = 0x0000, 462 HAPTIC_PULSE_HIGH_PRIORITY = 0x0001, 463 HAPTIC_PULSE_VERY_HIGH_PRIORITY = 0x0002, 464 } SettingHapticPulseFlags; 465 466 typedef struct 467 { 468 // default,min,max in this array in that order 469 short defaultminmax[SETTING_DEFAULTMINMAXCOUNT]; 470 } SettingValueRange_t; 471 472 // below is from controller_constants.c which should be compiled into any code that uses this 473 extern const SettingValueRange_t g_DefaultSettingValues[SETTING_COUNT]; 474 475 // Read-write settings for dongle (only add to this enum and never change the order) 476 typedef enum 477 { 478 DONGLE_SETTING_MOUSE_KEYBOARD_ENABLED, 479 DONGLE_SETTING_COUNT, 480 } DongleSettings; 481 482 typedef enum 483 { 484 AUDIO_STARTUP = 0, 485 AUDIO_SHUTDOWN = 1, 486 AUDIO_PAIR = 2, 487 AUDIO_PAIR_SUCCESS = 3, 488 AUDIO_IDENTIFY = 4, 489 AUDIO_LIZARDMODE = 5, 490 AUDIO_NORMALMODE = 6, 491 492 AUDIO_MAX_SLOT = 15 493 } ControllerAudio; 494 495 #ifdef __cplusplus 496 } 497 #endif 498 499 #endif // _CONTROLLER_CONSTANTS_H 500