sensors: route sensor handle for multi-hal event injection
Change-Id: Iad65c8b7eea7fbe89747123bd3364b6dcde8b839
Merged-In: Iad65c8b7eea7fbe89747123bd3364b6dcde8b839
diff --git a/modules/sensors/multihal.cpp b/modules/sensors/multihal.cpp
index 4d6013f..1cea7ae 100644
--- a/modules/sensors/multihal.cpp
+++ b/modules/sensors/multihal.cpp
@@ -445,7 +445,11 @@
sensors_poll_device_1_t* v1 = this->get_v1_device_by_handle(data->sensor);
if (halIsAPILevelCompliant(this, data->sensor, SENSORS_DEVICE_API_VERSION_1_4) &&
local_handle >= 0 && v1) {
- retval = v1->inject_sensor_data(v1, data);
+ // if specific sensor is used, we have to replace global sensor handle
+ // with local one, before passing to concrete HAL
+ sensors_event_t data_copy = *data;
+ data_copy.sensor = local_handle;
+ retval = v1->inject_sensor_data(v1, &data_copy);
} else {
ALOGE("IGNORED inject_sensor_data(type=%d, handle=%d) call to non-API-compliant sensor",
data->type, data->sensor);