Added SensorManager.getMinDelay()
Exposed the new "min delay" sensor property through native and java sensor apis. This allows the caller to know what is the maximum rate at which a sensor can return events, or, if a sensor works in "update" mode (events returned only when the value changes). Also augmented SensorManager.regusterSensorEvent() so that it can accept a value in microsecond in addition to the 4 constants already defined. Change-Id: If425e9979892666df8c989d7de3c362230fa19e0
This commit is contained in:
parent
27065359e3
commit
a48bcf62b6
@ -63,6 +63,7 @@ public:
|
|||||||
float getMaxValue() const;
|
float getMaxValue() const;
|
||||||
float getResolution() const;
|
float getResolution() const;
|
||||||
float getPowerUsage() const;
|
float getPowerUsage() const;
|
||||||
|
int32_t getMinDelay() const;
|
||||||
|
|
||||||
// Flattenable interface
|
// Flattenable interface
|
||||||
virtual size_t getFlattenedSize() const;
|
virtual size_t getFlattenedSize() const;
|
||||||
@ -81,6 +82,7 @@ private:
|
|||||||
float mMaxValue;
|
float mMaxValue;
|
||||||
float mResolution;
|
float mResolution;
|
||||||
float mPower;
|
float mPower;
|
||||||
|
int32_t mMinDelay;
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -65,7 +65,7 @@ public:
|
|||||||
status_t setEventRate(Sensor const* sensor, nsecs_t ns) const;
|
status_t setEventRate(Sensor const* sensor, nsecs_t ns) const;
|
||||||
|
|
||||||
// these are here only to support SensorManager.java
|
// these are here only to support SensorManager.java
|
||||||
status_t enableSensor(int32_t handle, int32_t ms) const;
|
status_t enableSensor(int32_t handle, int32_t us) const;
|
||||||
status_t disableSensor(int32_t handle) const;
|
status_t disableSensor(int32_t handle) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -32,7 +32,7 @@ namespace android {
|
|||||||
Sensor::Sensor()
|
Sensor::Sensor()
|
||||||
: mHandle(0), mType(0),
|
: mHandle(0), mType(0),
|
||||||
mMinValue(0), mMaxValue(0), mResolution(0),
|
mMinValue(0), mMaxValue(0), mResolution(0),
|
||||||
mPower(0)
|
mPower(0), mMinDelay(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,6 +46,7 @@ Sensor::Sensor(struct sensor_t const* hwSensor)
|
|||||||
mMaxValue = hwSensor->maxRange; // FIXME: maxValue
|
mMaxValue = hwSensor->maxRange; // FIXME: maxValue
|
||||||
mResolution = hwSensor->resolution;
|
mResolution = hwSensor->resolution;
|
||||||
mPower = hwSensor->power;
|
mPower = hwSensor->power;
|
||||||
|
mMinDelay = hwSensor->minDelay;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensor::~Sensor()
|
Sensor::~Sensor()
|
||||||
@ -84,12 +85,17 @@ float Sensor::getPowerUsage() const {
|
|||||||
return mPower;
|
return mPower;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t Sensor::getMinDelay() const {
|
||||||
|
return mMinDelay;
|
||||||
|
}
|
||||||
|
|
||||||
size_t Sensor::getFlattenedSize() const
|
size_t Sensor::getFlattenedSize() const
|
||||||
{
|
{
|
||||||
return sizeof(int32_t) + ((mName.length() + 3) & ~3) +
|
return sizeof(int32_t) + ((mName.length() + 3) & ~3) +
|
||||||
sizeof(int32_t) + ((mVendor.length() + 3) & ~3) +
|
sizeof(int32_t) + ((mVendor.length() + 3) & ~3) +
|
||||||
sizeof(int32_t) * 2 +
|
sizeof(int32_t) * 2 +
|
||||||
sizeof(float) * 4;
|
sizeof(float) * 4 +
|
||||||
|
sizeof(int32_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t Sensor::getFdCount() const
|
size_t Sensor::getFdCount() const
|
||||||
@ -132,6 +138,7 @@ status_t Sensor::flatten(void* buffer, size_t size,
|
|||||||
offset += write(buffer, offset, mMaxValue);
|
offset += write(buffer, offset, mMaxValue);
|
||||||
offset += write(buffer, offset, mResolution);
|
offset += write(buffer, offset, mResolution);
|
||||||
offset += write(buffer, offset, mPower);
|
offset += write(buffer, offset, mPower);
|
||||||
|
offset += write(buffer, offset, mMinDelay);
|
||||||
|
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
}
|
}
|
||||||
@ -169,6 +176,7 @@ status_t Sensor::unflatten(void const* buffer, size_t size,
|
|||||||
offset += read(buffer, offset, &mMaxValue);
|
offset += read(buffer, offset, &mMaxValue);
|
||||||
offset += read(buffer, offset, &mResolution);
|
offset += read(buffer, offset, &mResolution);
|
||||||
offset += read(buffer, offset, &mPower);
|
offset += read(buffer, offset, &mPower);
|
||||||
|
offset += read(buffer, offset, &mMinDelay);
|
||||||
|
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -114,10 +114,10 @@ status_t SensorEventQueue::disableSensor(Sensor const* sensor) const {
|
|||||||
return mSensorEventConnection->enableDisable(sensor->getHandle(), false);
|
return mSensorEventConnection->enableDisable(sensor->getHandle(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t SensorEventQueue::enableSensor(int32_t handle, int32_t ms) const {
|
status_t SensorEventQueue::enableSensor(int32_t handle, int32_t us) const {
|
||||||
status_t err = mSensorEventConnection->enableDisable(handle, true);
|
status_t err = mSensorEventConnection->enableDisable(handle, true);
|
||||||
if (err == NO_ERROR) {
|
if (err == NO_ERROR) {
|
||||||
mSensorEventConnection->setEventRate(handle, ms2ns(ms));
|
mSensorEventConnection->setEventRate(handle, us2ns(us));
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user