summaryrefslogtreecommitdiff
path: root/libs/sensor/SensorManager.cpp
diff options
context:
space:
mode:
authorPeng Xu <pengxu@google.com>2017-03-05 01:48:11 -0800
committerPeng Xu <pengxu@google.com>2017-03-07 14:15:57 -0800
commitd9c8a864e193d7ae3d0a04c1aa7ff15da955fb0f (patch)
tree854c56048b751cd4b248efb74ebeebc2fca7d8e9 /libs/sensor/SensorManager.cpp
parentda8385cb97ba40ab87e7e9b8d5b7c8f0ba5ba0fd (diff)
Sensor direct report with HardwareBuffer channel
Implement creation of sensor direct channel in sensor service for sensor direct report feature. Bug: 30985702 Test: cts-tradefed run cts --module CtsSensorTestCases --test android.hardware.cts.SensorDirectReportTest Test: cts-tradefed run cts --module CtsSensorTestCases --test android.hardware.cts.SensorNativeTest Change-Id: I52350811df538986cea7f5e1fb336fad53234c86
Diffstat (limited to 'libs/sensor/SensorManager.cpp')
-rw-r--r--libs/sensor/SensorManager.cpp37
1 files changed, 17 insertions, 20 deletions
diff --git a/libs/sensor/SensorManager.cpp b/libs/sensor/SensorManager.cpp
index b6e9fa1c72..9309275d35 100644
--- a/libs/sensor/SensorManager.cpp
+++ b/libs/sensor/SensorManager.cpp
@@ -247,27 +247,24 @@ int SensorManager::createDirectChannel(
return NO_INIT;
}
- switch (channelType) {
- case SENSOR_DIRECT_MEM_TYPE_ASHMEM: {
- sp<ISensorEventConnection> conn =
- mSensorServer->createSensorDirectConnection(mOpPackageName,
- static_cast<uint32_t>(size),
- static_cast<int32_t>(channelType),
- SENSOR_DIRECT_FMT_SENSORS_EVENT, resourceHandle);
- if (conn == nullptr) {
- return NO_MEMORY;
- }
- int nativeHandle = mDirectConnectionHandle++;
- mDirectConnection.emplace(nativeHandle, conn);
- return nativeHandle;
- }
- case SENSOR_DIRECT_MEM_TYPE_GRALLOC:
- LOG_FATAL("%s: Finish implementation of ION and GRALLOC or remove", __FUNCTION__);
- return BAD_VALUE;
- default:
- ALOGE("Bad channel shared memory type %d", channelType);
- return BAD_VALUE;
+ if (channelType != SENSOR_DIRECT_MEM_TYPE_ASHMEM
+ && channelType != SENSOR_DIRECT_MEM_TYPE_GRALLOC) {
+ ALOGE("Bad channel shared memory type %d", channelType);
+ return BAD_VALUE;
}
+
+ sp<ISensorEventConnection> conn =
+ mSensorServer->createSensorDirectConnection(mOpPackageName,
+ static_cast<uint32_t>(size),
+ static_cast<int32_t>(channelType),
+ SENSOR_DIRECT_FMT_SENSORS_EVENT, resourceHandle);
+ if (conn == nullptr) {
+ return NO_MEMORY;
+ }
+
+ int nativeHandle = mDirectConnectionHandle++;
+ mDirectConnection.emplace(nativeHandle, conn);
+ return nativeHandle;
}
void SensorManager::destroyDirectChannel(int channelNativeHandle) {