diff options
author | Peng Xu <pengxu@google.com> | 2017-03-05 01:48:11 -0800 |
---|---|---|
committer | Peng Xu <pengxu@google.com> | 2017-03-07 14:15:57 -0800 |
commit | d9c8a864e193d7ae3d0a04c1aa7ff15da955fb0f (patch) | |
tree | 854c56048b751cd4b248efb74ebeebc2fca7d8e9 /libs/sensor/SensorManager.cpp | |
parent | da8385cb97ba40ab87e7e9b8d5b7c8f0ba5ba0fd (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.cpp | 37 |
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) { |