Device update methods
A sensor driver supports methods that update the sensor device. The pseudocode demonstrates this using the following methods:
- DriverUpdateDeviceCRI
- DriverUpdateDeviceCS
- DriverUpdateDeviceLDA
- DriverUpdateDeviceRS
- DriverUpdateDevicePS
Device reporting reporting updates
The DriverUpdateDeviceCRI, DriverUpdateDeviceCS, and DriverUpdateDeviceLDA methods demonstrate how a driver updates the current report interval, change sensitivity, and location data accuracy fields on the device.
effectiveCRI DriverUpdateDeviceCRI(sensorID, requestedCRI)
{
if (sensor device is intelligent (ex. HID))
{
HIDSensorSetProperties(sensorID, requestedRS, requestedPS, requestedCRI, requestedCS[], requestedLDA) //Driver issues USB/HID "SET_FEATURE" command to the sensor device
}
else if (sensor device is simple (ex. SPB))
{
Set CRI via SPB
}
else if (sensor device is fusion)
{
//handle fusion sensor
}
else //is some other kind of sensor
{
//special action
}
return effectiveCRI
}
effectiveCS[] DriverUpdateDeviceCS(sensorID, requestedCSs)
{
if (sensor device is intelligent (ex. HID))
{
HIDSensorSetProperties(sensorID, requestedRS, requestedPS, requestedCRI, requestedCS[], requestedLDA) // Driver issues USB/HID "SET_FEATURE" command to the sensor device
}
else if (sensor device is simple (ex. SPB))
{
Set CS via SPB
}
else if (sensor device is fusion)
{
//handle fusion sensor
}
else //is some other kind of sensor
{
//special action
}
return effectiveCS[]
}
effectiveLDA DriverUpdateDeviceLDA(sensorID, requestedLDA)
{
if (sensor device is intelligent (ex. HID))
{
HIDSensorSetProperties(sensorID, requestedRS, requestedPS, requestedCRI, requestedCS[], requestedLDA) // Driver issues USB/HID "SET_FEATURE" command to the sensor device
}
else if (sensor device is simple (ex. SPB))
{
Set LDA via SPB
}
else if (sensor device is fusion)
{
//handle fusion sensor
}
else //is some other kind of sensor
{
//special action
}
return effectiveLDA
}
Device interrupt updates
The DriverUpdateDeviceRS method demonstrates how a driver enables or disables interrupts on the device.
effectiveRS DriverUpdateDeviceRS(sensorID, requestedRS)
{
if (sensor device is intelligent (ex. HID))
{
HIDSensorSetProperties(sensorID, requestedRS, requestedPS, requestedCRI, requestedCS[], requestedLDA) // Driver issues USB/HID "SET_FEATURE" command to the sensor device
}
else if (sensor device is simple (ex. SPB))
{
if (requestedRS == quiescent)
{
Disable SPB device interrupts
}
else if (requestedRS == eventing)
{
Enable SPB device interrupts for eventing
}
}
else if (sensor device is fusion)
{
//handle fusion sensor
}
else //is some other kind of sensor
{
//special action
}
return effectiveRS
}
Device power-state updates
The DriverUpdateDevicePS method demonstrates how a driver sets the power state on the device.
effectivePS DriverUpdateDevicePS(sensorID, requestedPS)
{
if (sensor device is intelligent (ex. HID))
{
HIDSensorSetProperties(sensorID, requestedRS, requestedPS, requestedCRI, requestedCS[], requestedLDA) // Driver issues USB/HID "SET_FEATURE" command to the sensor device
}
else if (sensor device is simple (ex. SPB))
{
Set power state via SPB
}
else if (sensor device is fusion)
{
//handle fusion sensor
}
else //is some other kind of sensor
{
//special action
}
return effectivePS
}
Related topics
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for