diff options
author | Stan Rokita <srok@google.com> | 2019-09-10 14:54:36 -0700 |
---|---|---|
committer | Stan Rokita <srok@google.com> | 2019-09-11 07:43:20 -0700 |
commit | 1638531dfbb242a48cd59441a8bab1b0b484f9b9 (patch) | |
tree | e9141d6b94bb67fdb4ac9bfbe2d5e9b91f542d58 /sensors/2.0 | |
parent | d909580269eca0faee37bccc5823c002c3e0e829 (diff) | |
download | platform_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
Diffstat (limited to 'sensors/2.0')
-rw-r--r-- | sensors/2.0/multihal/HalProxy.cpp | 8 | ||||
-rw-r--r-- | sensors/2.0/multihal/include/HalProxy.h | 18 |
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 |