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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

4.2.5 <strong>Sensor</strong> Collections<br />

This simple example illustrates a hypothetical device containing two sensors: an accelerometer and an<br />

ambient light sensor.<br />

Each sensor is described by its own <strong>HID</strong> collection. In this example, each sensor has a single Input Report<br />

and a single Feature Report. Report ID 0x01 is used for the accelerometer sensor, and Report ID 0x02 is<br />

used for the ambient light sensor.<br />

Using this technique, a single sensor device board can support multiple different sensors, and present these<br />

as individually identifiable sensors to the Operating System. The platform driver can use this to instantiate<br />

a separate “logical sensor object” for each described <strong>HID</strong> collection.<br />

The first example shows a single Top Level Collection with the individual sensors represented as nested<br />

sub-collections:<br />

// For reference: Complete <strong>HID</strong> report descriptor<br />

// Two sensor example: 3D Accelerometer & AmbientLight<br />

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

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

<strong>HID</strong>_USAGE_SENSOR_TYPE_COLLECTION,<br />

<strong>HID</strong>_COLLECTION(Application), // Top Level Collection for holding 2 sensors as nested collections<br />

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

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

<strong>HID</strong>_USAGE_SENSOR_TYPE_MOTION_ACCELEROMETER_3D,<br />

<strong>HID</strong>_COLLECTION(Physical), // first nested sub-collection, for accelerometer<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_G,<br />

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

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

<strong>HID</strong>_USAGE_SENSOR_DATA(<strong>HID</strong>_USAGE_SENSOR_DATA_MOTION_ACCELERATION,<strong>HID</strong>_USAGE_SENSOR_DATA_MOD_MAX),<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!