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
diff --git a/libs/sensor/SensorManager.cpp b/libs/sensor/SensorManager.cpp
index b6e9fa1..9309275 100644
--- a/libs/sensor/SensorManager.cpp
+++ b/libs/sensor/SensorManager.cpp
@@ -247,27 +247,24 @@
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) {