summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStan Rokita <srok@google.com>2019-09-10 14:54:36 -0700
committerStan Rokita <srok@google.com>2019-09-11 07:43:20 -0700
commit1638531dfbb242a48cd59441a8bab1b0b484f9b9 (patch)
treee9141d6b94bb67fdb4ac9bfbe2d5e9b91f542d58
parentd909580269eca0faee37bccc5823c002c3e0e829 (diff)
downloadplatform_hardware_interfaces-1638531dfbb242a48cd59441a8bab1b0b484f9b9.tar.gz
platform_hardware_interfaces-1638531dfbb242a48cd59441a8bab1b0b484f9b9.tar.bz2
platform_hardware_interfaces-1638531dfbb242a48cd59441a8bab1b0b484f9b9.zip
MultiHal 2.0 - proxying api calls helper methods
Create getSubHalForSensorHandle method which will get the proper subhal pointer by getting the subhal list index from the first byte of the sensor handle. Create the zeroOutFirstByte static helper method that will return a version of the sensor handle without the first byte when passed a handle. Test: Tested compilation. Bug: 136511617 Change-Id: I7d07003e1903aa1d8abaf904b778248c7b352653
-rw-r--r--sensors/2.0/multihal/HalProxy.cpp8
-rw-r--r--sensors/2.0/multihal/include/HalProxy.h18
2 files changed, 26 insertions, 0 deletions
diff --git a/sensors/2.0/multihal/HalProxy.cpp b/sensors/2.0/multihal/HalProxy.cpp
index 80d7296793..964f5893aa 100644
--- a/sensors/2.0/multihal/HalProxy.cpp
+++ b/sensors/2.0/multihal/HalProxy.cpp
@@ -218,6 +218,14 @@ Return<void> HalProxy::onDynamicSensorsDisconnected(
return Return<void>();
}
+ISensorsSubHal* HalProxy::getSubHalForSensorHandle(uint32_t sensorHandle) {
+ return mSubHalList[static_cast<size_t>(sensorHandle >> 24)];
+}
+
+uint32_t HalProxy::zeroOutFirstByte(uint32_t num) {
+ return num & 0x00FFFFFF;
+}
+
} // namespace implementation
} // namespace V2_0
} // namespace sensors
diff --git a/sensors/2.0/multihal/include/HalProxy.h b/sensors/2.0/multihal/include/HalProxy.h
index 9d5787c655..809d07e98b 100644
--- a/sensors/2.0/multihal/include/HalProxy.h
+++ b/sensors/2.0/multihal/include/HalProxy.h
@@ -118,6 +118,24 @@ struct HalProxy : public ISensors {
* SubHal object pointers that have been saved from vendor dynamic libraries.
*/
std::vector<ISensorsSubHal*> mSubHalList;
+
+ /*
+ * Get the subhal pointer which can be found by indexing into the mSubHalList vector
+ * using the index from the first byte of sensorHandle.
+ *
+ * @param sensorHandle The handle used to identify a sensor in one of the subhals.
+ */
+ ISensorsSubHal* getSubHalForSensorHandle(uint32_t sensorHandle);
+
+ /*
+ * Zero out the first (most significant) byte in a number. Used in modifying the sensor handles
+ * before passing them to subhals.
+ *
+ * @param num The uint32_t number to work with.
+ *
+ * @return The modified version of num param.
+ */
+ static uint32_t zeroOutFirstByte(uint32_t num);
};
} // namespace implementation