summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Staats <estaats@google.com>2021-09-30 06:50:43 -0700
committerErik Staats <estaats@google.com>2021-09-30 06:50:43 -0700
commit43bc7bccdc3e4ee224d5c22ef8f18b0f2fbeb1e0 (patch)
tree6f939182fe3228bd63e1dc8fff6a21b7c3b21c49
parent7b29add5f73449e3fdcb462f030b7f44c985815e (diff)
downloadlibhardware-43bc7bccdc3e4ee224d5c22ef8f18b0f2fbeb1e0.tar.gz
dynamic_sensor: Add multi-HAL 2.1 sampling support.
Bug: 195964858 Test: Paired a Sony PS4 controller and verified it can be sampled as an accelerometer. The first subscription always returns all 0's, but subsequent subscriptions return proper accel samples. Change-Id: I4bbc4695c988f600a62502f9fccabaa68f42c72b
-rw-r--r--modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp b/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
index 4f0cc481..d9e31824 100644
--- a/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
+++ b/modules/sensors/dynamic_sensor/DynamicSensorsSubHal.cpp
@@ -35,6 +35,21 @@ using ::android::hardware::Void;
namespace android {
namespace SensorHalExt {
+static Result ResultFromStatus(status_t err) {
+ switch (err) {
+ case ::android::OK:
+ return Result::OK;
+ case ::android::PERMISSION_DENIED:
+ return Result::PERMISSION_DENIED;
+ case ::android::NO_MEMORY:
+ return Result::NO_MEMORY;
+ case ::android::BAD_VALUE:
+ return Result::BAD_VALUE;
+ default:
+ return Result::INVALID_OPERATION;
+ }
+}
+
DynamicSensorsSubHal::DynamicSensorsSubHal() {
// initialize dynamic sensor manager
mDynamicSensorManager.reset(
@@ -49,19 +64,18 @@ Return<Result> DynamicSensorsSubHal::setOperationMode(OperationMode mode) {
Result::OK : Result::BAD_VALUE);
}
-Return<Result> DynamicSensorsSubHal::activate(int32_t sensor_handle __unused,
- bool enabled __unused) {
- ALOGE("DynamicSensorsSubHal::activate not supported.");
-
- return Result::INVALID_OPERATION;
+Return<Result> DynamicSensorsSubHal::activate(int32_t sensor_handle,
+ bool enabled) {
+ int rc = mDynamicSensorManager->activate(sensor_handle, enabled);
+ return ResultFromStatus(rc);
}
Return<Result> DynamicSensorsSubHal::batch(
- int32_t sensor_handle __unused, int64_t sampling_period_ns __unused,
- int64_t max_report_latency_ns __unused) {
- ALOGE("DynamicSensorsSubHal::batch not supported.");
-
- return Result::INVALID_OPERATION;
+ int32_t sensor_handle, int64_t sampling_period_ns,
+ int64_t max_report_latency_ns) {
+ int rc = mDynamicSensorManager->batch(sensor_handle, sampling_period_ns,
+ max_report_latency_ns);
+ return ResultFromStatus(rc);
}
Return<Result> DynamicSensorsSubHal::flush(int32_t sensor_handle __unused) {