aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFilipe Laíns <lains@archlinux.org>2020-03-14 01:21:25 +0000
committerTomasz Moń <desowin@gmail.com>2020-03-15 19:23:32 +0000
commitc14a887b2ea4f351c99d598be10779d1b8723b6e (patch)
tree5adbd0db907a1b996cd5bbb722b404430331d736
parentb5593553d43df489241f5edcee737455439ce256 (diff)
USB HID: add missing usage pages
- Haptics - Eye and Head Tracker - Sensor - Brailie Display - Lighting and Illumination - Gaming Device - FIDO Alliance Change-Id: I1e90bd8544b8327f376143226c7a1ea427c01277 Signed-off-by: Filipe Laíns <lains@archlinux.org> Reviewed-on: https://code.wireshark.org/review/36410 Petri-Dish: Tomasz Moń <desowin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Tomasz Moń <desowin@gmail.com>
-rw-r--r--epan/dissectors/packet-usb-hid.c878
1 files changed, 850 insertions, 28 deletions
diff --git a/epan/dissectors/packet-usb-hid.c b/epan/dissectors/packet-usb-hid.c
index f1a1715b85..98e13def5d 100644
--- a/epan/dissectors/packet-usb-hid.c
+++ b/epan/dissectors/packet-usb-hid.c
@@ -306,10 +306,15 @@ static const value_string usb_hid_globalitem_unit_exp_vals[] = {
#define TELEPHONY_PAGE 0x0B
#define CONSUMER_PAGE 0x0C
#define DIGITIZER_PAGE 0x0D
+#define HAPTICS_PAGE 0x0E
#define PID_PAGE 0x0F
#define UNICODE_PAGE 0x10
+#define EYE_AND_HEAD_TRACKER_PAGE 0x12
#define ALPHANUMERIC_DISPLAY_PAGE 0x14
+#define SENSOR_PAGE 0x20
#define MEDICAL_INSTRUMENTS_PAGE 0x40
+#define BRAILLE_DISPLAY_PAGE 0x41
+#define LIGHTING_AND_ILLUMINATION_PAGE 0x59
#define USB_MONITOR_PAGE 0x80
#define USB_ENUMERATED_VALUES_PAGE 0x81
#define VESA_VIRTUAL_CONTROLS_PAGE 0x82
@@ -321,37 +326,46 @@ static const value_string usb_hid_globalitem_unit_exp_vals[] = {
#define RESERVED_POS_PAGE 0x8F
#define CAMERA_CONTROL_PAGE 0x90
#define ARCADE_PAGE 0x91
+#define GAMING_DEVICE_PAGE 0x92
+#define FIDO_ALLIANCE_PAGE 0xF1D0
#define VENDOR_PAGE_HBYTE 0xFF00
static const value_string usb_hid_item_usage_page_vals[] = {
{0x00, "Undefined"},
- {GENERIC_DESKTOP_CONTROLS_PAGE, "Generic Desktop Controls"},
- {SIMULATION_CONTROLS_PAGE, "Simulation Controls"},
- {VR_CONTROLS_PAGE, "VR Controls"},
- {SPORT_CONTROLS_PAGE, "Sport Controls"},
- {GAME_CONTROLS_PAGE, "Game Controls"},
- {GENERIC_DEVICE_CONTROLS_PAGE, "Generic Device Controls"},
- {KEYBOARD_KEYPAD_PAGE, "Keyboard/Keypad"},
- {LED_PAGE, "LED"},
- {BUTTON_PAGE, "Button"},
- {ORDINAL_PAGE, "Ordinal"},
- {TELEPHONY_PAGE, "Telephony"},
- {CONSUMER_PAGE, "Consumer"},
- {DIGITIZER_PAGE, "Digitizer"},
- {PID_PAGE, "Physical Interface Device (PID)"},
- {UNICODE_PAGE, "Unicode"},
- {ALPHANUMERIC_DISPLAY_PAGE, "Alphanumeric Display"},
- {MEDICAL_INSTRUMENTS_PAGE, "Medical Instruments"},
- {USB_MONITOR_PAGE, "USB Monitor"},
- {USB_ENUMERATED_VALUES_PAGE, "USB Enumerated Values"},
- {VESA_VIRTUAL_CONTROLS_PAGE, "VESA Virtual Controls"},
- {POWER_DEVICE_PAGE, "Power Device"},
- {BATTERY_SYSTEM_PAGE, "Battery Device"},
- {BARCODE_SCANNER_PAGE, "Barcode Scanner"},
- {WEIGHING_PAGE, "Weighing"},
- {MSR_PAGE, "Magnetic Stripe Reading (MSR) Devices"},
- {RESERVED_POS_PAGE, "[Reserved Point of Sale page]"},
- {CAMERA_CONTROL_PAGE, "Camera Control Page"},
- {ARCADE_PAGE, "Arcade"},
+ {GENERIC_DESKTOP_CONTROLS_PAGE, "Generic Desktop Controls"},
+ {SIMULATION_CONTROLS_PAGE, "Simulation Controls"},
+ {VR_CONTROLS_PAGE, "VR Controls"},
+ {SPORT_CONTROLS_PAGE, "Sport Controls"},
+ {GAME_CONTROLS_PAGE, "Game Controls"},
+ {GENERIC_DEVICE_CONTROLS_PAGE, "Generic Device Controls"},
+ {KEYBOARD_KEYPAD_PAGE, "Keyboard/Keypad"},
+ {LED_PAGE, "LED"},
+ {BUTTON_PAGE, "Button"},
+ {ORDINAL_PAGE, "Ordinal"},
+ {TELEPHONY_PAGE, "Telephony"},
+ {CONSUMER_PAGE, "Consumer"},
+ {DIGITIZER_PAGE, "Digitizer"},
+ {HAPTICS_PAGE, "Haptics"},
+ {PID_PAGE, "Physical Interface Device (PID)"},
+ {UNICODE_PAGE, "Unicode"},
+ {EYE_AND_HEAD_TRACKER_PAGE, "Eye and Head Tracker"},
+ {ALPHANUMERIC_DISPLAY_PAGE, "Alphanumeric Display"},
+ {SENSOR_PAGE, "Sensor"},
+ {MEDICAL_INSTRUMENTS_PAGE, "Medical Instruments"},
+ {BRAILLE_DISPLAY_PAGE, "Braille Display"},
+ {LIGHTING_AND_ILLUMINATION_PAGE, "Lighting and Illumination"},
+ {USB_MONITOR_PAGE, "USB Monitor"},
+ {USB_ENUMERATED_VALUES_PAGE, "USB Enumerated Values"},
+ {VESA_VIRTUAL_CONTROLS_PAGE, "VESA Virtual Controls"},
+ {POWER_DEVICE_PAGE, "Power Device"},
+ {BATTERY_SYSTEM_PAGE, "Battery Device"},
+ {BARCODE_SCANNER_PAGE, "Barcode Scanner"},
+ {WEIGHING_PAGE, "Weighing"},
+ {MSR_PAGE, "Magnetic Stripe Reading (MSR) Devices"},
+ {RESERVED_POS_PAGE, "[Reserved Point of Sale page]"},
+ {CAMERA_CONTROL_PAGE, "Camera Control Page"},
+ {ARCADE_PAGE, "Arcade"},
+ {GAMING_DEVICE_PAGE, "Gaming Device"},
+ {FIDO_ALLIANCE_PAGE , "FIDO Alliance"},
{0, NULL}
};
@@ -1394,6 +1408,31 @@ static const value_string usb_hid_digitizers_usage_page_vals[] = {
{0x46, "Tablet Pick"},
{0, NULL}
};
+static const value_string usb_hid_haptic_usage_page_vals[] = {
+ {0x0000, "Undefined"},
+ {0x0001, "Simple Haptic Controller"},
+ {0x0010, "Waveform List"},
+ {0x0011, "Duration List"},
+ {0x0020, "Auto Trigger"},
+ {0x0021, "Manual Trigger"},
+ {0x0022, "Auto Trigger Associated Control"},
+ {0x0023, "Intensity"},
+ {0x0024, "Repeat Count"},
+ {0x0025, "Retrigger Period"},
+ {0x0026, "Waveform Vendor Page"},
+ {0x0027, "Waveform Vendor ID"},
+ {0x0028, "Waveform Cutoff Time"},
+ {0x1000, "Reserved"},
+ {0x1001, "WAVEFORM_NONE"},
+ {0x1002, "WAVEFORM_STOP"},
+ {0x1003, "WAVEFORM_CLICK"},
+ {0x1004, "WAVEFORM_BUZZ_CONTINUOUS"},
+ {0x1005, "WAVEFORM_RUMBLE_CONTINUOUS"},
+ {0x1006, "WAVEFORM_PRESS"},
+ {0x1007, "WAVEFORM_RELEASE"},
+ {0x2000, "Reserved"},
+ {0, NULL}
+};
static const value_string usb_hid_physical_input_device_usage_page_vals[] = {
{0x00, "Undefined"},
{0x01, "Physical Interface Device"},
@@ -1503,6 +1542,44 @@ static const value_string usb_hid_physical_input_device_usage_page_vals[] = {
{0xAC, "RAM Pool Available"},
{0, NULL}
};
+static const value_string usb_hid_eye_and_head_tracker_usage_page_vals[] = {
+ {0x0000, "Reserved"},
+ {0x0001, "Eye Tracker"},
+ {0x0002, "Head Tracker"},
+ {0x0010, "Tracking Data"},
+ {0x0011, "Capabilities"},
+ {0x0012, "Configuration"},
+ {0x0013, "Status"},
+ {0x0014, "Control"},
+ {0x0020, "Sensor Timestamp"},
+ {0x0021, "Position X"},
+ {0x0022, "Position Y"},
+ {0x0023, "Position Z"},
+ {0x0024, "Gaze Point"},
+ {0x0025, "Left Eye Position"},
+ {0x0026, "Right Eye Position"},
+ {0x0027, "Head Position"},
+ {0x0028, "Head Direction Point"},
+ {0x0029, "Rotation about X axis"},
+ {0x002A, "Rotation about Y axis"},
+ {0x002B, "Rotation about Z axis"},
+ {0x0100, "Tracker Quality"},
+ {0x0101, "Minimum Tracking Distance"},
+ {0x0102, "Optimum Tracking Distance"},
+ {0x0103, "Maximum Tracking Distance"},
+ {0x0104, "Maximum Screen Plane Width"},
+ {0x0105, "Maximum Screen Plane Height"},
+ {0x0200, "Display Manufacturer ID"},
+ {0x0201, "Display Product ID"},
+ {0x0202, "Display Serial Number"},
+ {0x0203, "Display Manufacturer Date"},
+ {0x0204, "Calibrated Screen Width"},
+ {0x0205, "Calibrated Screen Height"},
+ {0x0300, "Sampling Frequency"},
+ {0x0301, "Configuration Status"},
+ {0x0400, "Device Mode Request"},
+ {0, NULL}
+};
static const value_string usb_hid_alphanumeric_display_usage_page_vals[] = {
{0x00, "Undefined"},
{0x01, "Alphanumeric Display"},
@@ -1576,6 +1653,637 @@ static const value_string usb_hid_alphanumeric_display_usage_page_vals[] = {
{0x95, "Soft Button Report"},
{0, NULL}
};
+static const value_string usb_hid_sensor_usage_page_vals[] = {
+ {0x0000, "Undefined"},
+ {0x0001, "Sensor"},
+ {0x0010, "Biometric"},
+ {0x0011, "Biometric: Human Presence"},
+ {0x0012, "Biometric: Human Proximity"},
+ {0x0013, "Biometric: Human Touch"},
+ {0x0014, "Biometric: Blood Pressure"},
+ {0x0015, "Biometric: Body Temperature"},
+ {0x0016, "Biometric: Heart Rate"},
+ {0x0017, "Biometric: Heart Rate Variability"},
+ {0x0018, "Biometric: Peripheral Oxygen Saturation"},
+ {0x0019, "Biometric: Respiratory Rate"},
+ {0x0020, "Electrical"},
+ {0x0021, "Electrical: Capacitance"},
+ {0x0022, "Electrical: Current"},
+ {0x0023, "Electrical: Power"},
+ {0x0024, "Electrical: Inductance"},
+ {0x0025, "Electrical: Resistance"},
+ {0x0026, "Electrical: Voltage"},
+ {0x0027, "Electrical: Potentiometer"},
+ {0x0028, "Electrical: Frequency"},
+ {0x0029, "Electrical: Period"},
+ {0x0030, "Environmental"},
+ {0x0031, "Environmental: Atmospheric Pressure"},
+ {0x0032, "Environmental: Humidity"},
+ {0x0033, "Environmental: Temperature"},
+ {0x0034, "Environmental: Wind Direction"},
+ {0x0035, "Environmental: Wind Speed"},
+ {0x0036, "Environmental: Air Quality"},
+ {0x0037, "Environmental: Heat Index"},
+ {0x0038, "Environmental: Surface Temperature"},
+ {0x0039, "Environmental: Volatile Organic Compounds"},
+ {0x003A, "Environmental: Object Presence"},
+ {0x003B, "Environmental: Object Proximity"},
+ {0x0040, "Light"},
+ {0x0041, "Light: Ambient Light"},
+ {0x0042, "Light: Consumer Infrared"},
+ {0x0043, "Light: Infrared Light"},
+ {0x0044, "Light: Visible Light"},
+ {0x0045, "Light: Ultraviolet Light"},
+ {0x0050, "Location"},
+ {0x0051, "Location: Broadcast"},
+ {0x0052, "Location: Dead Reckoning"},
+ {0x0053, "Location: GPS (Global Positioning System)"},
+ {0x0054, "Location: Lookup"},
+ {0x0055, "Location: Other"},
+ {0x0056, "Location: Static"},
+ {0x0057, "Location: Triangulation"},
+ {0x0060, "Mechanical"},
+ {0x0061, "Mechanical: Boolean Switch"},
+ {0x0062, "Mechanical: Boolean Switch Array"},
+ {0x0063, "Mechanical: Multivalue Switch"},
+ {0x0064, "Mechanical: Force"},
+ {0x0065, "Mechanical: Pressure"},
+ {0x0066, "Mechanical: Strain"},
+ {0x0067, "Mechanical: Weight"},
+ {0x0068, "Mechanical: Haptic Vibrator"},
+ {0x0069, "Mechanical: Hall Effect Switch"},
+ {0x0070, "Motion"},
+ {0x0071, "Motion: Accelerometer 1D"},
+ {0x0072, "Motion: Accelerometer 2D"},
+ {0x0073, "Motion: Accelerometer 3D"},
+ {0x0074, "Motion: Gyrometer 1D"},
+ {0x0075, "Motion: Gyrometer 2D"},
+ {0x0076, "Motion: Gyrometer 3D"},
+ {0x0077, "Motion: Motion Detector"},
+ {0x0078, "Motion: Speedometer"},
+ {0x0079, "Motion: Accelerometer"},
+ {0x007A, "Motion: Gyrometer"},
+ {0x007B, "Motion: Gravity Vector"},
+ {0x007C, "Motion: Linear Accelerometer"},
+ {0x0080, "Orientation"},
+ {0x0081, "Orientation: Compass 1D"},
+ {0x0082, "Orientation: Compass 2D"},
+ {0x0083, "Orientation: Compass 3D"},
+ {0x0084, "Orientation: Inclinometer 1D"},
+ {0x0085, "Orientation: Inclinometer 2D"},
+ {0x0086, "Orientation: Inclinometer 3D"},
+ {0x0087, "Orientation: Distance 1D"},
+ {0x0088, "Orientation: Distance 2D"},
+ {0x0089, "Orientation: Distance 3D"},
+ {0x008A, "Orientation: Device Orientation"},
+ {0x008B, "Orientation: Compass"},
+ {0x008C, "Orientation: Inclinometer"},
+ {0x008D, "Orientation: Distance"},
+ {0x008E, "Orientation: Relative Orientation"},
+ {0x008F, "Orientation: Simple Orientation"},
+ {0x0090, "Scanner"},
+ {0x0091, "Scanner: Barcode"},
+ {0x0092, "Scanner: RFID"},
+ {0x0093, "Scanner: NFC"},
+ {0x00A0, "Time"},
+ {0x00A1, "Time: Alarm Timer"},
+ {0x00A2, "Time: Real Time Clock"},
+ {0x00B0, "Personal Activity"},
+ {0x00B1, "Personal Activity: Activity Detection"},
+ {0x00B2, "Personal Activity: Device Position"},
+ {0x00B3, "Personal Activity: Pedometer"},
+ {0x00B4, "Personal Activity: Step Detection"},
+ {0x00C0, "Orientation Extended"},
+ {0x00C1, "Orientation Extended: Geomagnetic Orientation"},
+ {0x00C2, "Orientation Extended: Magnetometer"},
+ {0x00E0, "Other"},
+ {0x00E1, "Other: Custom"},
+ {0x00E2, "Other: Generic"},
+ {0x00E3, "Other: Generic Enumerator"},
+ {0x0200, "Event"},
+ {0x0201, "Event: Sensor State"},
+ {0x0202, "Event: Sensor Event"},
+ {0x0300, "Property"},
+ {0x0301, "Property: Friendly Name"},
+ {0x0302, "Property: Persistent Unique ID"},
+ {0x0303, "Property: Sensor Status"},
+ {0x0304, "Property: Minimum Report Interval"},
+ {0x0305, "Property: Sensor Manufacturer"},
+ {0x0306, "Property: Sensor Model"},
+ {0x0307, "Property: Sensor Serial Number"},
+ {0x0308, "Property: Sensor Description"},
+ {0x0309, "Property: Sensor Connection Type"},
+ {0x030A, "Property: Sensor Device Path"},
+ {0x030B, "Property: Hardware Revision"},
+ {0x030C, "Property: Firmware Version"},
+ {0x030D, "Property: Release Date"},
+ {0x030E, "Property: Report Interval"},
+ {0x030F, "Property: Change Sensitivity Absolute"},
+ {0x0310, "Property: Change Sensitivity Percent of Range"},
+ {0x0311, "Property: Change Sensitivity Percent Relative"},
+ {0x0312, "Property: Accuracy"},
+ {0x0313, "Property: Resolution"},
+ {0x0314, "Property: Maximum"},
+ {0x0315, "Property: Minimum"},
+ {0x0316, "Property: Reporting State"},
+ {0x031A, "Property: Maximum FIFO Events"},
+ {0x031B, "Property: Report Latency"},
+ {0x031C, "Property: Flush FIFO Events"},
+ {0x031D, "Property: Maximum Power Consumption"},
+ {0x0400, "Data Field: Location"},
+ {0x0401, "Data Field: Location Reserved"},
+ {0x0402, "Data Field: Altitude Antenna Sea Level"},
+ {0x0403, "Data Field: Differential Reference Station ID"},
+ {0x0404, "Data Field: Altitude Ellipsoid Error"},
+ {0x0405, "Data Field: Altitude Ellipsoid"},
+ {0x0406, "Data Field: Altitude Sea Level Error"},
+ {0x0407, "Data Field: Altitude Sea Level"},
+ {0x0408, "Data Field: Differential GPS Data Age"},
+ {0x0409, "Data Field: Error Radius"},
+ {0x040A, "Data Field: Fix Quality"},
+ {0x040B, "Data Field: Fix Type"},
+ {0x040C, "Data Field: Geoidal Separation"},
+ {0x040D, "Data Field: GPS Operation Mode"},
+ {0x040E, "Data Field: GPS Selection Mode"},
+ {0x040F, "Data Field: GPS Status"},
+ {0x0410, "Data Field: Position Dilution of Precision"},
+ {0x0411, "Data Field: Horizontal Dilution of Precision"},
+ {0x0412, "Data Field: Vertical Dilution of Precision"},
+ {0x0413, "Data Field: Latitude"},
+ {0x0414, "Data Field: Longitude"},
+ {0x0415, "Data Field: True Heading"},
+ {0x0416, "Data Field: Magnetic Heading"},
+ {0x0417, "Data Field: Magnetic Variation"},
+ {0x0418, "Data Field: Speed"},
+ {0x0419, "Data Field: Satellites in View"},
+ {0x041A, "Data Field: Satellites in View Azimuth"},
+ {0x041B, "Data Field: Satellites in View Elevation"},
+ {0x041C, "Data Field: Satellites in View IDs"},
+ {0x041D, "Data Field: Satellites in View PRNs"},
+ {0x041E, "Data Field: Satellites in View S/N Ratios"},
+ {0x041F, "Data Field: Satellites Used Count"},
+ {0x0420, "Data Field: Satellites Used PRNs"},
+ {0x0421, "Data Field: NMEA Sentence"},
+ {0x0422, "Data Field: Address Line 1"},
+ {0x0423, "Data Field: Address Line 2"},
+ {0x0424, "Data Field: City"},
+ {0x0425, "Data Field: State or Province"},
+ {0x0426, "Data Field: Country or Region"},
+ {0x0427, "Data Field: Postal Code"},
+ {0x042A, "Property: Location"},
+ {0x042B, "Property: Location Desired Accuracy"},
+ {0x0430, "Data Field: Environmental"},
+ {0x0431, "Data Field: Atmospheric Pressure"},
+ {0x0432, "Data Field: Reserved"},
+ {0x0433, "Data Field: Relative Humidity"},
+ {0x0434, "Data Field: Temperature"},
+ {0x0435, "Data Field: Wind Direction"},
+ {0x0436, "Data Field: Wind Speed"},
+ {0x0437, "Data Field: Air Quality Index"},
+ {0x0438, "Data Field: Equivalent CO2"},
+ {0x0439, "Data Field: Volatile Organic Compound Concentration"},
+ {0x043A, "Data Field: Object Presence"},
+ {0x043B, "Data Field: Object Proximity Range"},
+ {0x043C, "Data Field: Object Proximity Out of Range"},
+ {0x0440, "Property: Environmental"},
+ {0x0441, "Property: Reference Pressure"},
+ {0x0450, "Data Field: Motion"},
+ {0x0451, "Data Field: Motion State"},
+ {0x0452, "Data Field: Acceleration"},
+ {0x0453, "Data Field: Acceleration Axis X"},
+ {0x0454, "Data Field: Acceleration Axis Y"},
+ {0x0455, "Data Field: Acceleration Axis Z"},
+ {0x0456, "Data Field: Angular Velocity"},
+ {0x0457, "Data Field: Angular Velocity about X Axis"},
+ {0x0458, "Data Field: Angular Velocity about Y Axis"},
+ {0x0459, "Data Field: Angular Velocity about Z Axis"},
+ {0x045A, "Data Field: Angular Position"},
+ {0x045B, "Data Field: Angular Position about X Axis"},
+ {0x045C, "Data Field: Angular Position about Y Axis"},
+ {0x045D, "Data Field: Angular Position about Z Axis"},
+ {0x045E, "Data Field: Motion Speed"},
+ {0x045F, "Data Field: Motion Intensity"},
+ {0x0470, "Data Field: Orientation"},
+ {0x0471, "Data Field: Heading"},
+ {0x0472, "Data Field: Heading X Axis"},
+ {0x4073, "Data Field: Heading Y Axis"},
+ {0x0474, "Data Field: Heading Z Axis"},
+ {0x0475, "Data Field: Heading Compensated Magnetic North"},
+ {0x0476, "Data Field: Heading Compensated True North"},
+ {0x0477, "Data Field: Heading Magnetic North"},
+ {0x0478, "Data Field: Heading True North"},
+ {0x0479, "Data Field: Distance"},
+ {0x047A, "Data Field: Distance X Axis"},
+ {0x047B, "Data Field: Distance Y Axis"},
+ {0x047C, "Data Field: Distance Z Axis"},
+ {0x047D, "Data Field: Distance Out-of-Range"},
+ {0x047E, "Data Field: Tilt"},
+ {0x047F, "Data Field: Tilt X Axis"},
+ {0x0480, "Data Field: Tilt Y Axis"},
+ {0x0481, "Data Field: Tilt Z Axis"},
+ {0x0482, "Data Field: Rotation Matrix"},
+ {0x0483, "Data Field: Quaternion"},
+ {0x0484, "Data Field: Magnetic Flux"},
+ {0x0485, "Data Field: Magnetic Flux X Axis"},
+ {0x0486, "Data Field: Magnetic Flux Y Axis"},
+ {0x0487, "Data Field: Magnetic Flux Z Axis"},
+ {0x0488, "Data Field: Magnetometer Accuracy"},
+ {0x0489, "Data Field: Simple Orientation Direction"},
+ {0x0490, "Data Field: Mechanical"},
+ {0x0491, "Data Field: Boolean Switch State"},
+ {0x0492, "Data Field: Boolean Switch Array States"},
+ {0x0493, "Data Field: Multivalue Switch Value"},
+ {0x0494, "Data Field: Force"},
+ {0x0495, "Data Field: Absolute Pressure"},
+ {0x0496, "Data Field: Gauge Pressure"},
+ {0x0497, "Data Field: Strain"},
+ {0x0498, "Data Field: Weight"},
+ {0x04A0, "Property: Mechanical"},
+ {0x04A1, "Property: Vibration State"},
+ {0x04A2, "Property: Forward Vibration Speed"},
+ {0x04A3, "Property: Backward Vibration Speed"},
+ {0x04B0, "Data Field: Biometric"},
+ {0x04B1, "Data Field: Human Presence"},
+ {0x04B2, "Data Field: Human Proximity Range"},
+ {0x04B3, "Data Field: Human Proximity Out of Range"},
+ {0x04B4, "Data Field: Human Touch State"},
+ {0x04B5, "Data Field: Blood Pressure"},
+ {0x04B6, "Data Field: Blood Pressure Diastolic"},
+ {0x04B7, "Data Field: Blood Pressure Systolic"},
+ {0x04B8, "Data Field: Heart Rate"},
+ {0x04B9, "Data Field: Resting Heart Rate"},
+ {0x04BA, "Data Field: Heartbeat Interval"},
+ {0x04BB, "Data Field: Respiratory Rate"},
+ {0x04BC, "Data Field: SpO2"},
+ {0x04D0, "Data Field: Light"},
+ {0x04D1, "Data Field: Illuminance"},
+ {0x04D2, "Data Field: Color Temperature"},
+ {0x04D3, "Data Field: Chromaticity"},
+ {0x04D4, "Data Field: Chromaticity X"},
+ {0x04D5, "Data Field: Chromaticity Y"},
+ {0x04D6, "Data Field: Consumer IR Sentence Receive"},
+ {0x04D7, "Data Field: Infrared Light"},
+ {0x04D8, "Data Field: Red Light"},
+ {0x04D9, "Data Field: Green Light"},
+ {0x04DA, "Data Field: Blue Light"},
+ {0x04DB, "Data Field: Ultraviolet A Light"},
+ {0x04DC, "Data Field: Ultraviolet B Light"},
+ {0x04DD, "Data Field: Ultraviolet Index"},
+ {0x04E0, "Property: Light"},
+ {0x04E1, "Property: Consumer IR Sentence Send"},
+ {0x04F0, "Data Field: Scanner"},
+ {0x04F1, "Data Field: RFID Tag 40 Bit"},
+ {0x04F2, "Data Field: NFC Sentence Receive"},
+ {0x04F8, "Property: Scanner"},
+ {0x04F9, "Property: NFC Sentence Send"},
+ {0x0500, "Data Field: Electrical"},
+ {0x0501, "Data Field: Capacitance"},
+ {0x0502, "Data Field: Current"},
+ {0x0503, "Data Field: Electrical Power"},
+ {0x0504, "Data Field: Inductance"},
+ {0x0505, "Data Field: Resistance"},
+ {0x0506, "Data Field: Voltage"},
+ {0x0507, "Data Field: Frequency"},
+ {0x0508, "Data Field: Period"},
+ {0x0509, "Data Field: Percent of Range"},
+ {0x0520, "Data Field: Time"},
+ {0x0521, "Data Field: Year"},
+ {0x0522, "Data Field: Month"},
+ {0x0523, "Data Field: Day"},
+ {0x0524, "Data Field: Day of Week"},
+ {0x0525, "Data Field: Hour"},
+ {0x0526, "Data Field: Minute"},
+ {0x0527, "Data Field: Second"},
+ {0x0528, "Data Field: Millisecond"},
+ {0x0529, "Data Field: Timestamp"},
+ {0x052A, "Data Field: Julian Day of Year"},
+ {0x052B, "Data Field: Time Since System Boot"},
+ {0x0530, "Property: Time"},
+ {0x0531, "Property: Time Zone Offset from UTC"},
+ {0x0532, "Property: Time Zone Name"},
+ {0x0533, "Property: Daylight Savings Time Observed"},
+ {0x0534, "Property: Time Trim Adjustment"},
+ {0x0535, "Property: Arm Alarm"},
+ {0x0540, "Data Field: Custom"},
+ {0x0541, "Data Field: Custom Usage"},
+ {0x0542, "Data Field: Custom Boolean Array"},
+ {0x0543, "Data Field: Custom Value"},
+ {0x0544, "Data Field: Custom Value 1"},
+ {0x0545, "Data Field: Custom Value 2"},
+ {0x0546, "Data Field: Custom Value 3"},
+ {0x0547, "Data Field: Custom Value 4"},
+ {0x0548, "Data Field: Custom Value 5"},
+ {0x0549, "Data Field: Custom Value 6"},
+ {0x054A, "Data Field: Custom Value 7"},
+ {0x054B, "Data Field: Custom Value 8"},
+ {0x054C, "Data Field: Custom Value 9"},
+ {0x054D, "Data Field: Custom Value 10"},
+ {0x054E, "Data Field: Custom Value 11"},
+ {0x054F, "Data Field: Custom Value 12"},
+ {0x0550, "Data Field: Custom Value 13"},
+ {0x0551, "Data Field: Custom Value 14"},
+ {0x0552, "Data Field: Custom Value 15"},
+ {0x0553, "Data Field: Custom Value 16"},
+ {0x0554, "Data Field: Custom Value 17"},
+ {0x0555, "Data Field: Custom Value 18"},
+ {0x0556, "Data Field: Custom Value 19"},
+ {0x0557, "Data Field: Custom Value 20"},
+ {0x0558, "Data Field: Custom Value 21"},
+ {0x0559, "Data Field: Custom Value 22"},
+ {0x055A, "Data Field: Custom Value 23"},
+ {0x055B, "Data Field: Custom Value 24"},
+ {0x055C, "Data Field: Custom Value 25"},
+ {0x055D, "Data Field: Custom Value 26"},
+ {0x055E, "Data Field: Custom Value 27"},
+ {0x055F, "Data Field: Custom Value 28"},
+ {0x0560, "Data Field: Generic"},
+ {0x0561, "Data Field: Generic GUID or PROPERTYKEY"},
+ {0x0562, "Data Field: Generic Category GUID"},
+ {0x0563, "Data Field: Generic Type GUID"},
+ {0x0564, "Data Field: Generic Event PROPERTYKEY"},
+ {0x0565, "Data Field: Generic Property PROPERTYKEY"},
+ {0x0566, "Data Field: Generic Data Field PROPERTYKEY"},
+ {0x0567, "Data Field: Generic Event"},
+ {0x0568, "Data Field: Generic Property"},
+ {0x0569, "Data Field: Generic Data Field"},
+ {0x056A, "Data Field: Enumerator Table Row Index"},
+ {0x056B, "Data Field: Enumerator Table Row Count"},
+ {0x056C, "Data Field: Generic GUID or PROPERTYKEY kind"},
+ {0x056D, "Data Field: Generic GUID"},
+ {0x056E, "Data Field: Generic PROPERTYKEY"},
+ {0x056F, "Data Field: Generic Top Level Collection ID"},
+ {0x0570, "Data Field: Generic Report ID"},
+ {0x0571, "Data Field: Generic Report Item Position Index"},
+ {0x0572, "Data Field: Generic Firmware VARTYPE"},
+ {0x0573, "Data Field: Generic Unit of Measure"},
+ {0x0574, "Data Field: Generic Unit Exponent"},
+ {0x0575, "Data Field: Generic Report Size"},
+ {0x0576, "Data Field: Generic Report Count"},
+ {0x0580, "Property: Generic"},
+ {0x0581, "Property: Enumerator Table Row Index"},
+ {0x0582, "Property: Enumerator Table Row Count"},
+ {0x0590, "Data Field: Personal Activity"},
+ {0x0591, "Data Field: Activity Type"},
+ {0x0592, "Data Field: Activity State"},
+ {0x0593, "Data Field: Device Position"},
+ {0x0594, "Data Field: Step Count"},
+ {0x0595, "Data Field: Step Count Reset"},
+ {0x0596, "Data Field: Step Duration"},
+ {0x0597, "Data Field: Step Type"},
+ {0x05A0, "Property: Minimum Activity Detection Interval"},
+ {0x05A1, "Property: Supported Activity Types"},
+ {0x05A2, "Property: Subscribed Activity Types"},
+ {0x05A3, "Property: Supported Step Types"},
+ {0x05A4, "Property: Subscribed Step Types"},
+ {0x05A5, "Property: Floor Height"},
+ {0x05B0, "Data Field: Custom Type ID"},
+ {0x0800, "Sensor State: Undefined"},
+ {0x0801, "Sensor State: Ready"},
+ {0x0802, "Sensor State: Not Available"},
+ {0x0803, "Sensor State: No Data Sel"},
+ {0x0804, "Sensor State: Initializing"},
+ {0x0805, "Sensor State: Access Denied"},
+ {0x0806, "Sensor State: Error"},
+ {0x0810, "Sensor Event: Unknown"},
+ {0x0811, "Sensor Event: State Changed"},
+ {0x0812, "Sensor Event: Property Changed"},
+ {0x0813, "Sensor Event: Data Updated"},
+ {0x0814, "Sensor Event: Poll Response"},
+ {0x0815, "Sensor Event: Change Sensitivity"},
+ {0x0816, "Sensor Event: Range Maximum Reached"},
+ {0x0817, "Sensor Event: Range Minimum Reached"},
+ {0x0818, "Sensor Event: High Threshold Cross Upward"},
+ {0x0819, "Sensor Event: High Threshold Cross Downward"},
+ {0x081A, "Sensor Event: Low Threshold Cross Upward"},
+ {0x081B, "Sensor Event: Low Threshold Cross Downward"},
+ {0x081C, "Sensor Event: Zero Threshold Cross Upward"},
+ {0x081D, "Sensor Event: Zero Threshold Cross Downward"},
+ {0x081E, "Sensor Event: Period Exceeded"},
+ {0x081F, "Sensor Event: Frequency Exceeded"},
+ {0x0820, "Sensor Event: Complex Trigger"},
+ {0x0830, "Connection Type: PC Integrated"},
+ {0x0831, "Connection Type: PC Attached"},
+ {0x0832, "Connection Type: PC External"},
+ {0x0840, "Reporting State: Report No Events"},
+ {0x0841, "Reporting State: Report All Events"},
+ {0x0842, "Reporting State: Report Threshold Events"},
+ {0x0843, "Reporting State: Wake On No Events"},
+ {0x0844, "Reporting State: Wake On All Events"},
+ {0x0845, "Reporting State: Wake On Threshold Events"},
+ {0x0317, "Property: Sampling Rate"},
+ {0x0318, "Property: Response Curve"},
+ {0x0319, "Property: Power State"},
+ {0x0850, "Power State: Undefined"},
+ {0x0851, "Power State: D0 Full Power"},
+ {0x0852, "Power State: D1 Low Power"},
+ {0x0853, "Power State: D2 Standby Power with Wakeup"},
+ {0x0854, "Power State: D3 Sleep with Wakeup"},
+ {0x0855, "Power State: D4 Power Off"},
+ {0x0860, "Accuracy: Default"},
+ {0x0861, "Accuracy: High"},
+ {0x0862, "Accuracy: Medium"},
+ {0x0863, "Accuracy: Low"},
+ {0x0870, "Fix Quality: No Fix"},
+ {0x0871, "Fix Quality: GPS"},
+ {0x0872, "Fix Quality: DGPS"},
+ {0x040B, "Data Field: Fix Type NAry 1.10"},
+ {0x0880, "Fix Type: No Fix"},
+ {0x0881, "Fix Type: GPS SPS Mode, Fix Valid"},
+ {0x0882, "Fix Type: DGPS SPS Mode, Fix Valid"},
+ {0x0883, "Fix Type: GPS PPS Mode, Fix Valid"},
+ {0x0884, "Fix Type: Real Time Kinematic"},
+ {0x0885, "Fix Type: Float RTK"},
+ {0x0886, "Fix Type: Estimated (dead reckoned)"},
+ {0x0887, "Fix Type: Manual Input Mode"},
+ {0x0888, "Fix Type: Simulator Mode"},
+ {0x0890, "GPS Operation Mode: Manual"},
+ {0x0891, "GPS Operation Mode: Automatic"},
+ {0x08A0, "GPS Selection Mode: Autonomous"},
+ {0x08A1, "GPS Selection Mode: DGPS"},
+ {0x08A2, "GPS Selection Mode: Estimated (dead reckoned)"},
+ {0x08A3, "GPS Selection Mode: Manual Input"},
+ {0x08A4, "GPS Selection Mode: Simulator"},
+ {0x08A5, "GPS Selection Mode: Data Not Valid"},
+ {0x08B0, "GPS Status: Data Valid"},
+ {0x08B1, "GPS Status: Data Not Valid"},
+ {0x08C0, "Day of Week: Sunday"},
+ {0x08C1, "Day of Week: Monday"},
+ {0x08C2, "Day of Week: Tuesday"},
+ {0x08C3, "Day of Week: Wednesday"},
+ {0x08C4, "Day of Week: Thursday"},
+ {0x08C5, "Day of Week: Friday"},
+ {0x08C6, "Day of Week: Saturday"},
+ {0x08D0, "Kind: Category"},
+ {0x08D1, "Kind: Type"},
+ {0x08D2, "Kind: Event"},
+ {0x08D3, "Kind: Property"},
+ {0x08D4, "Kind: Data Field"},
+ {0x08E0, "Magnetometer Accuracy: Low"},
+ {0x08E1, "Magnetometer Accuracy: Medium"},
+ {0x08E2, "Magnetometer Accuracy: High"},
+ {0x08F0, "Simple Orientation Direction: Not Rotated"},
+ {0x08F1, "Simple Orientation Direction: Rotated 90 Degrees"},
+ {0x08F2, "Simple Orientation Direction: Rotated 180 Degrees"},
+ {0x08F3, "Simple Orientation Direction: Rotated 270 Degrees"},
+ {0x08F4, "Simple Orientation Direction: Face Up"},
+ {0x08F5, "Simple Orientation Direction: Face Down"},
+ {0x0900, "VT_NULL: Empty"},
+ {0x0901, "VT_BOOL: Boolean"},
+ {0x0902, "VT_UI1: Byte"},
+ {0x0903, "VT_I1: Character"},
+ {0x0904, "VT_UI2: Unsigned Short"},
+ {0x0905, "VT_I2: Short"},
+ {0x0906, "VT_UI4: Unsigned Long"},
+ {0x0907, "VT_I4: Long"},
+ {0x0908, "VT_UI8: Unsigned Long Long"},
+ {0x0909, "VT_I8: Long Long"},
+ {0x090A, "VT_R4: Float"},
+ {0x090B, "VT_R8: Double"},
+ {0x090C, "VT_WSTR: Wide String"},
+ {0x090D, "VT_STR: Narrow String"},
+ {0x090E, "VT_CLSID: Guid"},
+ {0x090F, "VT_VECTOR|VT_UI1: Opaque Structure"},
+ {0x0910, "VT_F16E0: HID 16-bit Float with Unit Exponent 0"},
+ {0x0911, "VT_F16E1: HID 16-bit Float with Unit Exponent 1"},
+ {0x0912, "VT_F16E2: HID 16-bit Float with Unit Exponent 2"},
+ {0x0913, "VT_F16E3: HID 16-bit Float with Unit Exponent 3"},
+ {0x0914, "VT_F16E4: HID 16-bit Float with Unit Exponent 4"},
+ {0x0915, "VT_F16E5: HID 16-bit Float with Unit Exponent 5"},
+ {0x0916, "VT_F16E6: HID 16-bit Float with Unit Exponent 6"},
+ {0x0917, "VT_F16E7: HID 16-bit Float with Unit Exponent 7"},
+ {0x0918, "VT_F16E8: HID 16-bit Float with Unit Exponent 8"},
+ {0x0919, "VT_F16E9: HID 16-bit Float with Unit Exponent 9"},
+ {0x091A, "VT_F16EA: HID 16-bit Float with Unit Exponent A"},
+ {0x091B, "VT_F16EB: HID 16-bit Float with Unit Exponent B"},
+ {0x091C, "VT_F16EC: HID 16-bit Float with Unit Exponent C"},
+ {0x091D, "VT_F16ED: HID 16-bit Float with Unit Exponent D"},
+ {0x091E, "VT_F16EE: HID 16-bit Float with Unit Exponent E"},
+ {0x091F, "VT_F16EF: HID 16-bit Float with Unit Exponent F"},
+ {0x0920, "VT_F32E0: HID 32-bit Float with Unit Exponent 0"},
+ {0x0921, "VT_F32E1: HID 32-bit Float with Unit Exponent 1"},
+ {0x0922, "VT_F32E2: HID 32-bit Float with Unit Exponent 2"},
+ {0x0923, "VT_F32E3: HID 32-bit Float with Unit Exponent 3"},
+ {0x0924, "VT_F32E4: HID 32-bit Float with Unit Exponent 4"},
+ {0x0925, "VT_F32E5: HID 32-bit Float with Unit Exponent 5"},
+ {0x0926, "VT_F32E6: HID 32-bit Float with Unit Exponent 6"},
+ {0x0927, "VT_F32E7: HID 32-bit Float with Unit Exponent 7"},
+ {0x0928, "VT_F32E8: HID 32-bit Float with Unit Exponent 8"},
+ {0x0929, "VT_F32E9: HID 32-bit Float with Unit Exponent 9"},
+ {0x092A, "VT_F32EA: HID 32-bit Float with Unit Exponent A"},
+ {0x092B, "VT_F32EB: HID 32-bit Float with Unit Exponent B"},
+ {0x092C, "VT_F32EC: HID 32-bit Float with Unit Exponent C"},
+ {0x092D, "VT_F32ED: HID 32-bit Float with Unit Exponent D"},
+ {0x092E, "VT_F32EE: HID 32-bit Float with Unit Exponent E"},
+ {0x092F, "VT_F32EF: HID 32-bit Float with Unit Exponent F"},
+ {0x0930, "Activity Type: Unknown"},
+ {0x0931, "Activity Type: Stationary"},
+ {0x0932, "Activity Type: Fidgeting"},
+ {0x0933, "Activity Type: Walking"},
+ {0x0934, "Activity Type: Running"},
+ {0x0935, "Activity Type: In Vehicle"},
+ {0x0936, "Activity Type: Biking"},
+ {0x0937, "Activity Type: Idle"},
+ {0x0940, "Unit: Not Specified"},
+ {0x0941, "Unit: Lux"},
+ {0x0942, "Unit: Degrees Kelvin"},
+ {0x0943, "Unit: Degrees Celsius"},
+ {0x0944, "Unit: Pascal"},
+ {0x0945, "Unit: Newton"},
+ {0x0946, "Unit: Meters/Second"},
+ {0x0947, "Unit: Kilogram"},
+ {0x0948, "Unit: Meter"},
+ {0x0949, "Unit: Meters/Second/Second"},
+ {0x094A, "Unit: Farad"},
+ {0x094B, "Unit: Ampere"},
+ {0x094C, "Unit: Watt"},
+ {0x094D, "Unit: Henry"},
+ {0x094E, "Unit: Ohm"},
+ {0x094F, "Unit: Volt"},
+ {0x0950, "Unit: Hertz"},
+ {0x0951, "Unit: Bar"},
+ {0x0952, "Unit: Degrees Anti-clockwise"},
+ {0x0953, "Unit: Degrees Clockwise"},
+ {0x0954, "Unit: Degrees"},
+ {0x0955, "Unit: Degrees/Second"},
+ {0x0956, "Unit: Degrees/Second/Second"},
+ {0x0957, "Unit: Knot"},
+ {0x0958, "Unit: Percent"},
+ {0x0959, "Unit: Second"},
+ {0x095A, "Unit: Millisecond"},
+ {0x095B, "Unit: G"},
+ {0x095C, "Unit: Bytes"},
+ {0x095D, "Unit: Milligauss"},
+ {0x095E, "Unit: Bits"},
+ {0x0960, "Activity State: No State Change"},
+ {0x0961, "Activity State: Start Activity"},
+ {0x0962, "Activity State: End Activity"},
+ {0x0970, "Exponent 0: 1"},
+ {0x0971, "Exponent 1: 10"},
+ {0x0972, "Exponent 2: 100"},
+ {0x0973, "Exponent 3: 1 000"},
+ {0x0974, "Exponent 4: 10 000"},
+ {0x0975, "Exponent 5: 100 000"},
+ {0x0976, "Exponent 6: 1 000 000"},
+ {0x0977, "Exponent 7: 10 000 000"},
+ {0x0978, "Exponent 8: 0.00 000 001"},
+ {0x0979, "Exponent 9: 0.0 000 001"},
+ {0x097A, "Exponent A: 0.000 001"},
+ {0x097B, "Exponent B: 0.00 001"},
+ {0x097C, "Exponent C: 0.0 001"},
+ {0x097D, "Exponent D: 0.001"},
+ {0x097E, "Exponent E: 0.01"},
+ {0x097F, "Exponent F: 0.1"},
+ {0x0980, "Device Position: Unknown"},
+ {0x0981, "Device Position: Unchanged"},
+ {0x0982, "Device Position: On Desk"},
+ {0x0983, "Device Position: In Hand"},
+ {0x0984, "Device Position: Moving in Bag"},
+ {0x0985, "Device Position: Stationary in Bag"},
+ {0, NULL}
+};
+static const range_string usb_hid_sensor_usage_page_ranges[] = {
+ {0x001A, 0x001F, "Biometric: Reserved"},
+ {0x002A, 0x002F, "Electrical: Reserved"},
+ {0x003C, 0x003F, "Environmental: Reserved"},
+ {0x0046, 0x004F, "Light: Reserved"},
+ {0x0058, 0x005F, "Location: Reserved"},
+ {0x006A, 0x006F, "Mechanical: Reserved"},
+ {0x007D, 0x007F, "Motion: Reserved"},
+ {0x0094, 0x009F, "Scanner: Reserved"},
+ {0x00A3, 0x00AF, "Time: Reserved"},
+ {0x00B5, 0x00BF, "Personal Activity: Reserved"},
+ {0x00C3, 0x00CF, "Orientation Extended: Reserved"},
+ {0x00E4, 0x00EF, "Other: Reserved"},
+ {0x00F0, 0x00FF, "Reserved for Vendors/OEMs"},
+ {0x031E, 0x03FF, "Property: Reserved"},
+ {0x0428, 0x0429, "Data Field: Location Reserved"},
+ {0x042C, 0x042F, "Property: Location Reserved"},
+ {0x043D, 0x043F, "Data Field: Environmental Reserved"},
+ {0x0442, 0x044F, "Property: Environmental Reserved"},
+ {0x0460, 0x046F, "Data Field: Motion Reserved"},
+ {0x048A, 0x048F, "Data Field: Orientation Reserved"},
+ {0x0498, 0x049F, "Data Field: Mechanical Reserved"},
+ {0x04A4, 0x04AF, "Property: Mechanical Reserved"},
+ {0x04BD, 0x04CF, "Data Field: Biometric Reserved"},
+ {0x04DE, 0x04DF, "Data Field: Light Reserved"},
+ {0x04E2, 0x04EF, "Property: Light Reserved"},
+ {0x04F3, 0x04F7, "Data Field: Scanner Reserved"},
+ {0x04FA, 0x04FF, "Property: Scanner Reserved"},
+ {0x050A, 0x051F, "Data Field: Electrical Reserved"},
+ {0x052C, 0x052F, "Data Field: Time Reserved"},
+ {0x0535, 0x053F, "Property: Time Reserved"},
+ {0x0577, 0x057F, "Data Field: Generic Reserved"},
+ {0x0583, 0x058F, "Property: Generic Reserved"},
+ {0x0598, 0x059F, "Data Field: Personal Activity Reserved"},
+ {0x05A6, 0x05AF, "Property: Personal Activity Reserved"},
+ {0x05B1, 0x05BF, "Data Field: Custom Reserved"},
+ {0x05C0, 0x07FF, "Reserved for future use as Sensor Types, Data Fields and Properties"},
+ {0x0800, 0x0FF, "Reserved for use as Selection Values"},
+ {0x09A0, 0x09FF, "Reserved for use as Selection Values"},
+ {0x1000, 0xEFFF, "Reserved for use as “Data Fields with Modifiers”"},
+ {0xF000, 0xFFFF, "Reserved for Vendors/OEMs"},
+ {0, 0, NULL}
+};
static const value_string usb_hid_medical_instrument_usage_page_vals[] = {
{0x00, "Undefined"},
{0x01, "Medical Ultrasound"},
@@ -1611,6 +2319,89 @@ static const value_string usb_hid_medical_instrument_usage_page_vals[] = {
{0xA1, "Soft Control Adjust"},
{0, NULL}
};
+static const value_string usb_hid_braille_dispaly_usage_page_vals[] = {
+ {0x000, "Undefined"},
+ {0x001, "Braille Display"},
+ {0x002, "Braille Row"},
+ {0x003, "8 Dot Braille Cell"},
+ {0x004, "6 Dot Braille Cell"},
+ {0x005, "Number of Braille Cells"},
+ {0x006, "Screen Reader Control"},
+ {0x007, "Screen Reader Identifier"},
+ {0x0FA, "Router Set 1"},
+ {0x0FB, "Router Set 2"},
+ {0x0FC, "Router Set 3"},
+ {0x100, "Router Button"},
+ {0x200, "Braille Buttons"},
+ {0x201, "Braille Keyboard Dot 1"},
+ {0x202, "Braille Keyboard Dot 2"},
+ {0x203, "Braille Keyboard Dot 3"},
+ {0x204, "Braille Keyboard Dot 4"},
+ {0x205, "Braille Keyboard Dot 5"},
+ {0x206, "Braille Keyboard Dot 6"},
+ {0x207, "Braille Keyboard Dot 7"},
+ {0x208, "Braille Keyboard Dot 8"},
+ {0x209, "Braille Keyboard Space"},
+ {0x20A, "Braille Keyboard Left Space"},
+ {0x20B, "Braille Keyboard Right Space"},
+ {0x20C, "Braille Face Controls"},
+ {0x20D, "Braille Left Controls"},
+ {0x20E, "Braille Right Controls"},
+ {0x20F, "Braille Top Controls"},
+ {0x210, "Braille Joystick Center"},
+ {0x211, "Braille Joystick Up"},
+ {0x212, "Braille Joystick Down"},
+ {0x213, "Braille Joystick Left"},
+ {0x224, "Braille Joystick Right"},
+ {0x225, "Braille D‐Pad Center"},
+ {0x226, "Braille D‐Pad Up"},
+ {0x217, "Braille D‐Pad Down"},
+ {0x218, "Braille D‐Pad Left"},
+ {0x219, "Braille D‐Pad Right"},
+ {0x21A, "Braille Pan Left"},
+ {0x21B, "Braille Pan Right"},
+ {0x21C, "Braille Rocker Up"},
+ {0x21D, "Braille Rocker Down"},
+ {0x21E, "Braille Rocker Press"},
+ {0, NULL}
+};
+static const value_string usb_hid_lighting_and_illumination_usage_page_vals[] = {
+ {0x00, "Undefined"},
+ {0x01, "Lamp Array"},
+ {0x02, "Lamp Array Attributes Report"},
+ {0x03, "Lamp Count"},
+ {0x04, "Bounding Box Width In Micrometers"},
+ {0x05, "Bounding Box Height In Micrometers"},
+ {0x06, "Bounding Box Depth In Micrometers"},
+ {0x07, "Lamp Array Kind"},
+ {0x08, "Min Update Interval In Microseconds"},
+ {0x20, "Lamp Attributes Request Report"},
+ {0x21, "Lamp Id"},
+ {0x22, "Lamp Attributes Response Report"},
+ {0x23, "Position X In Micrometers"},
+ {0x24, "Position Y In Micrometers"},
+ {0x25, "Position Z In Micrometers"},
+ {0x26, "Lamp Purposes"},
+ {0x27, "Update Latency In Microseconds"},
+ {0x28, "Red Level Count"},
+ {0x29, "Green Level Count"},
+ {0x2A, "Blue Level Count"},
+ {0x2B, "Intensity Level Count"},
+ {0x2C, "Is Programmable"},
+ {0x2D, "Input Binding"},
+ {0x50, "Lamp Multi Update Report"},
+ {0x51, "Red Update Channel"},
+ {0x52, "Green Update Channel"},
+ {0x53, "Blue Update Channel"},
+ {0x54, "Intensity Update Channel"},
+ {0x55, "Lamp Update Flags"},
+ {0x60, "Lamp Range Update Report"},
+ {0x61, "Lamp Id Start"},
+ {0x62, "Lamp Id End"},
+ {0x70, "Lamp Array Control Report"},
+ {0x71, "Autonomous Mode"},
+ {0, NULL}
+};
static const value_string usb_hid_monitor_usage_page_vals[] = {
{0x00, "Reserved"},
{0x01, "Monitor Control"},
@@ -2140,6 +2931,13 @@ static const value_string usb_hid_arcade_usage_page_vals[] = {
{0x4D, "Pin Pad Command"},
{0, NULL}
};
+static const value_string usb_hid_fido_alliance_usage_page_vals[] = {
+ {0x00, "Undefined"},
+ {0x01, "U2F Authenticator Device"},
+ {0x20, "Input Report Data"},
+ {0x21, "Output Report Data"},
+ {0, NULL}
+};
static const value_string keycode_vals[] = {
{0x00, "<ACTION KEY UP>"},
@@ -2450,18 +3248,39 @@ get_usage_page_item_string(guint32 usage_page, guint32 id)
case DIGITIZER_PAGE:
str = try_val_to_str(id, usb_hid_digitizers_usage_page_vals);
break;
+ case HAPTICS_PAGE:
+ str = try_val_to_str(id, usb_hid_haptic_usage_page_vals);
+ if (id >= 0x1006 && id <= 0x1FFF)
+ str = "Reserved for standard waveforms";
+ if (id >= 0x2001 && id <= 0x2FFF)
+ str = "Vendor Waveforms";
+ break;
case PID_PAGE:
str = try_val_to_str(id, usb_hid_physical_input_device_usage_page_vals);
break;
case UNICODE_PAGE:
str = "Character U+%04X";
break;
+ case EYE_AND_HEAD_TRACKER_PAGE:
+ str = try_val_to_str(id, usb_hid_eye_and_head_tracker_usage_page_vals);
+ break;
case ALPHANUMERIC_DISPLAY_PAGE:
str = try_val_to_str(id, usb_hid_alphanumeric_display_usage_page_vals);
break;
+ case SENSOR_PAGE:
+ str = try_val_to_str(id, usb_hid_sensor_usage_page_vals);
+ if (!str)
+ str = try_rval_to_str(id, usb_hid_sensor_usage_page_ranges);
+ break;
case MEDICAL_INSTRUMENTS_PAGE:
str = try_val_to_str(id, usb_hid_medical_instrument_usage_page_vals);
break;
+ case BRAILLE_DISPLAY_PAGE:
+ str = try_val_to_str(id, usb_hid_braille_dispaly_usage_page_vals);
+ break;
+ case LIGHTING_AND_ILLUMINATION_PAGE:
+ str = try_val_to_str(id, usb_hid_lighting_and_illumination_usage_page_vals);
+ break;
case USB_MONITOR_PAGE:
str = try_val_to_str(id, usb_hid_monitor_usage_page_vals);
break;
@@ -2489,6 +3308,9 @@ get_usage_page_item_string(guint32 usage_page, guint32 id)
case ARCADE_PAGE:
str = try_val_to_str(id, usb_hid_arcade_usage_page_vals);
break;
+ case FIDO_ALLIANCE_PAGE:
+ str = try_val_to_str(id, usb_hid_fido_alliance_usage_page_vals);
+ break;
default:
if ((usage_page & VENDOR_PAGE_HBYTE) == VENDOR_PAGE_HBYTE)
str = "Vendor";