diff options
author | Filipe Laíns <lains@archlinux.org> | 2020-03-14 01:21:25 +0000 |
---|---|---|
committer | Tomasz Moń <desowin@gmail.com> | 2020-03-15 19:23:32 +0000 |
commit | c14a887b2ea4f351c99d598be10779d1b8723b6e (patch) | |
tree | 5adbd0db907a1b996cd5bbb722b404430331d736 | |
parent | b5593553d43df489241f5edcee737455439ce256 (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.c | 878 |
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"; |