31.08.2013 Views

HID Sensor Usage Tables - USB.org

HID Sensor Usage Tables - USB.org

HID Sensor Usage Tables - USB.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

94 <strong>HID</strong> <strong>Sensor</strong> <strong>Usage</strong>s<br />

1) The <strong>HID</strong> <strong>Sensor</strong> <strong>Usage</strong>, which can be placed in the<br />

<strong>HID</strong>_USAGE_SENSOR_DATA_CUSTOM_USAGE field. This can provide a hint to the application<br />

about the type of sensor that has been encapsulated<br />

2) An entry in a field of BOOLEAN values,<br />

<strong>HID</strong>_USAGE_SENSOR_DATA_CUSTOM_BOOLEAN_ARRAY. This field can be used if a large<br />

number of BOOLEAN values are supported by the sensor<br />

3) An entry in one of six (6) datafields, labeled <strong>HID</strong>_USAGE_SENSOR_DATA_CUSTOM_VALUE_n<br />

(where n is a number from 1 through 6.) This field provides for the use of the UnitExp usage. If<br />

the UnitExp usage = ‘0’ the encapsulated value is assumed to be an integer value; if the UnitExp<br />

usage is anything other than ‘0’ the encapsulated value is assumed to be the mantissa of a fixedpoint<br />

number the exponent of which is contained in the UnitExp field.<br />

Following is a Custom <strong>Sensor</strong> Report Descriptor that illustrates these concepts. If we apply this example,<br />

the encapsulated fields would be populated as follows for a Speedometer sensor (<strong>HID</strong> <strong>Usage</strong> =<br />

<strong>HID</strong>_USAGE_SENSOR_TYPE_MOTION_SPEEDOMETER).<br />

const unsigned char cus_report_descriptor[] = {<br />

<strong>HID</strong>_USAGE_PAGE_SENSOR, // USAGE_PAGE (<strong>Sensor</strong>)<br />

<strong>HID</strong>_USAGE_SENSOR_TYPE_SIMPLE_CUSTOM, // USAGE (Simple Custom)<br />

<strong>HID</strong>_COLLECTION(Physical),<br />

//feature reports (xmit/receive)<br />

<strong>HID</strong>_USAGE_PAGE_SENSOR,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE,<br />

<strong>HID</strong>_LOGICAL_MIN_8(0),<br />

<strong>HID</strong>_LOGICAL_MAX_8(5),<br />

<strong>HID</strong>_REPORT_SIZE(8),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

<strong>HID</strong>_COLLECTION(Logical),<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS_WAKE,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS_WAKE,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS_WAKE,<br />

<strong>HID</strong>_FEATURE(Data_Arr_Abs),<br />

<strong>HID</strong>_END_COLLECTION,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_SENSOR_STATUS,<br />

<strong>HID</strong>_LOGICAL_MIN_8(0),<br />

<strong>HID</strong>_LOGICAL_MAX_32(0xFF,0xFF,0xFF,0xFF),<br />

<strong>HID</strong>_REPORT_SIZE(32),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

<strong>HID</strong>_FEATURE(Data_Var_Abs), // up to VT_UI4 worth of status info<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_REPORT_INTERVAL,<br />

<strong>HID</strong>_LOGICAL_MIN_8(0),<br />

<strong>HID</strong>_LOGICAL_MAX_32(0xFF,0xFF,0xFF,0xFF),<br />

<strong>HID</strong>_REPORT_SIZE(32),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

// <strong>HID</strong>_USAGE_SENSOR_UNITS_MILLISECOND,<br />

<strong>HID</strong>_UNIT_EXPONENT(0),<br />

<strong>HID</strong>_FEATURE(Data_Var_Abs),<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_SENSOR_CONNECTION_TYPE, // NAry<br />

<strong>HID</strong>_LOGICAL_MIN_8(0),<br />

<strong>HID</strong>_LOGICAL_MAX_8(2),<br />

<strong>HID</strong>_REPORT_SIZE(8),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

<strong>HID</strong>_COLLECTION(Logical),<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_INTEGRATED,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_ATTACHED,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_CONNECTION_TYPE_PC_EXTERNAL,<br />

<strong>HID</strong>_FEATURE(Const_Arr_Abs),<br />

<strong>HID</strong>_END_COLLECTION,<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_CHANGE_SENSITIVITY_ABS,<br />

<strong>HID</strong>_LOGICAL_MIN_8(0),<br />

<strong>HID</strong>_LOGICAL_MAX_16(0xFF,0xFF),<br />

<strong>HID</strong>_REPORT_SIZE(16),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

<strong>HID</strong>_USAGE_SENSOR_UNITS_NOT_SPECIFIED,<br />

<strong>HID</strong>_UNIT_EXPONENT(0x0E), // scale unit to provide 2 digits past the decimal point<br />

<strong>HID</strong>_FEATURE(Data_Var_Abs),<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_RANGE_MAXIMUM,<br />

<strong>HID</strong>_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767)<br />

<strong>HID</strong>_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767)<br />

<strong>HID</strong>_REPORT_SIZE(16),<br />

<strong>HID</strong>_REPORT_COUNT(1),<br />

<strong>HID</strong>_USAGE_SENSOR_UNITS_NOT_SPECIFIED,<br />

<strong>HID</strong>_UNIT_EXPONENT(0x0E), // scale unit to provide 2 digits past the decimal point<br />

<strong>HID</strong>_FEATURE(Data_Var_Abs),<br />

<strong>HID</strong>_USAGE_SENSOR_PROPERTY_RANGE_MINIMUM,<br />

<strong>HID</strong>_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767)<br />

<strong>HID</strong>_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767)<br />

<strong>HID</strong>_REPORT_SIZE(16),

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!