summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-10-05 23:06:44 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-10-05 23:06:44 +0000
commit7098082db84902c7393cb6431ec363a77ffe80e4 (patch)
tree3ea2cf893dbcfa6915c6fc7c0c184f548191342d
parent68d4b07b529ca0659b68d7259bd8d7e554348b39 (diff)
parent35964ba0768558fe61fd225a51015c1b56656ddc (diff)
downloadlibhardware-7098082db84902c7393cb6431ec363a77ffe80e4.tar.gz
Snap for 7795143 from 35964ba0768558fe61fd225a51015c1b56656ddc to sc-d2-release
Change-Id: Ia822308a50d138a121c4cb10b7c784585226c46a
-rw-r--r--modules/sensors/dynamic_sensor/BaseSensorObject.cpp1
-rw-r--r--modules/sensors/dynamic_sensor/DynamicSensorManager.cpp20
-rw-r--r--modules/sensors/dynamic_sensor/DynamicSensorManager.h1
-rw-r--r--modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp7
4 files changed, 17 insertions, 12 deletions
diff --git a/modules/sensors/dynamic_sensor/BaseSensorObject.cpp b/modules/sensors/dynamic_sensor/BaseSensorObject.cpp
index 4ec76b27..69fc7d86 100644
--- a/modules/sensors/dynamic_sensor/BaseSensorObject.cpp
+++ b/modules/sensors/dynamic_sensor/BaseSensorObject.cpp
@@ -42,6 +42,7 @@ void BaseSensorObject::getUuid(uint8_t* uuid) const {
int BaseSensorObject::flush() {
static const sensors_event_t event = {
.type = SENSOR_TYPE_META_DATA,
+ .meta_data.what = META_DATA_FLUSH_COMPLETE,
.timestamp = TIMESTAMP_AUTO_FILL // timestamp will be filled at dispatcher
};
generateEvent(event);
diff --git a/modules/sensors/dynamic_sensor/DynamicSensorManager.cpp b/modules/sensors/dynamic_sensor/DynamicSensorManager.cpp
index 37b43132..be1a0044 100644
--- a/modules/sensors/dynamic_sensor/DynamicSensorManager.cpp
+++ b/modules/sensors/dynamic_sensor/DynamicSensorManager.cpp
@@ -76,7 +76,7 @@ bool DynamicSensorManager::owns(int handle) const {
int DynamicSensorManager::activate(int handle, bool enable) {
if (handle == mHandleRange.first) {
- // ignored
+ mMetaSensorActive = enable;
return 0;
}
@@ -109,13 +109,17 @@ int DynamicSensorManager::setDelay(int handle, nsecs_t sample_period) {
int DynamicSensorManager::flush(int handle) {
if (handle == mHandleRange.first) {
- // submit a flush complete here
- static const sensors_event_t event = {
- .sensor = mHandleRange.first,
- .type = SENSOR_TYPE_META_DATA,
- .timestamp = TIMESTAMP_AUTO_FILL, // timestamp will be filled at dispatcher
- };
- submitEvent(nullptr, event);
+ if (mMetaSensorActive) {
+ static const sensors_event_t event = {
+ .sensor = mHandleRange.first,
+ .type = SENSOR_TYPE_META_DATA,
+ .meta_data.what = META_DATA_FLUSH_COMPLETE,
+ .timestamp = TIMESTAMP_AUTO_FILL, // timestamp will be filled at dispatcher
+ };
+ submitEvent(nullptr, event);
+ } else {
+ return -EINVAL;
+ }
return 0;
}
return operateSensor(handle, [] (sp<BaseSensorObject> s)->int {return s->flush();});
diff --git a/modules/sensors/dynamic_sensor/DynamicSensorManager.h b/modules/sensors/dynamic_sensor/DynamicSensorManager.h
index b6f39da6..634c5234 100644
--- a/modules/sensors/dynamic_sensor/DynamicSensorManager.h
+++ b/modules/sensors/dynamic_sensor/DynamicSensorManager.h
@@ -111,6 +111,7 @@ private:
// available sensor handle space
const std::pair<int, int> mHandleRange;
sensor_t mMetaSensor;
+ bool mMetaSensorActive = false;
// immutable pointer to event callback, used in extention mode.
SensorEventCallback * const mCallback;
diff --git a/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp b/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
index d9e31824..d5a9b3c0 100644
--- a/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
+++ b/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
@@ -78,10 +78,9 @@ Return<Result> DynamicSensorsSubHal::batch(
return ResultFromStatus(rc);
}
-Return<Result> DynamicSensorsSubHal::flush(int32_t sensor_handle __unused) {
- ALOGE("DynamicSensorsSubHal::flush not supported.");
-
- return Result::INVALID_OPERATION;
+Return<Result> DynamicSensorsSubHal::flush(int32_t sensor_handle) {
+ int rc = mDynamicSensorManager->flush(sensor_handle);
+ return ResultFromStatus(rc);
}
Return<void> DynamicSensorsSubHal::registerDirectChannel(