From 0f4919dc5109a71d82ca731d41df4736caee2fbb Mon Sep 17 00:00:00 2001 From: dianlujitao Date: Sat, 8 Feb 2025 16:52:15 +0800 Subject: [PATCH] sm8750-common: sensors: hook IHalProxyCallback Change-Id: I9ca272f8fc6eeb13fc327b35c83c034d71e2785c --- sensors/Android.bp | 1 + sensors/SensorsSubHal.cpp | 26 +++++++++++++++++++++++++- sensors/SensorsSubHal.h | 13 ++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/sensors/Android.bp b/sensors/Android.bp index 85b1e69..1e8c400 100644 --- a/sensors/Android.bp +++ b/sensors/Android.bp @@ -12,6 +12,7 @@ cc_library_shared { ], shared_libs: [ "android.hardware.sensors@2.0", + "android.hardware.sensors@2.0-ScopedWakelock", "android.hardware.sensors@2.1", "libbase", "libhidlbase", diff --git a/sensors/SensorsSubHal.cpp b/sensors/SensorsSubHal.cpp index f1a14ed..932420c 100644 --- a/sensors/SensorsSubHal.cpp +++ b/sensors/SensorsSubHal.cpp @@ -8,6 +8,7 @@ #include #include +using ::android::hardware::sensors::V2_0::implementation::ScopedWakelock; using ::android::hardware::sensors::V2_1::implementation::ISensorsSubHal; namespace android { @@ -85,7 +86,30 @@ const std::string SensorsSubHal::getName() { } Return SensorsSubHal::initialize(const sp& hal_proxy_callback) { - return impl_->initialize(hal_proxy_callback); + hal_proxy_callback_ = hal_proxy_callback; + return impl_->initialize(this); +} + +Return SensorsSubHal::onDynamicSensorsConnected( + const hidl_vec& sensor_infos) { + return hal_proxy_callback_->onDynamicSensorsConnected(sensor_infos); +} + +Return SensorsSubHal::onDynamicSensorsDisconnected(const hidl_vec& sensor_handles) { + return hal_proxy_callback_->onDynamicSensorsDisconnected(sensor_handles); +} + +Return SensorsSubHal::onDynamicSensorsConnected_2_1( + const hidl_vec& sensor_infos) { + return hal_proxy_callback_->onDynamicSensorsConnected_2_1(sensor_infos); +} + +void SensorsSubHal::postEvents(const std::vector& events, ScopedWakelock wakelock) { + hal_proxy_callback_->postEvents(events, std::move(wakelock)); +} + +ScopedWakelock SensorsSubHal::createScopedWakelock(bool lock) { + return hal_proxy_callback_->createScopedWakelock(lock); } } // namespace qsh_wrapper diff --git a/sensors/SensorsSubHal.h b/sensors/SensorsSubHal.h index 849e79c..46b145f 100644 --- a/sensors/SensorsSubHal.h +++ b/sensors/SensorsSubHal.h @@ -23,7 +23,7 @@ using ::android::hardware::sensors::V2_1::Event; using ::android::hardware::sensors::V2_1::implementation::IHalProxyCallback; using ::android::hardware::sensors::V2_1::implementation::ISensorsSubHal; -class SensorsSubHal : public ISensorsSubHal { +class SensorsSubHal : public ISensorsSubHal, public IHalProxyCallback { public: SensorsSubHal(); @@ -46,9 +46,20 @@ class SensorsSubHal : public ISensorsSubHal { const std::string getName() override; Return initialize(const sp& hal_proxy_callback) override; + // ISensorsCallback + Return onDynamicSensorsConnected(const hidl_vec& sensor_infos) override; + Return onDynamicSensorsDisconnected(const hidl_vec& sensor_handles) override; + Return onDynamicSensorsConnected_2_1( + const hidl_vec& sensor_infos) override; + + // IHalProxyCallback + void postEvents(const std::vector& events, ScopedWakelock wakelock) override; + ScopedWakelock createScopedWakelock(bool lock) override; + private: std::unique_ptr> lib_handle_; V2_1::implementation::ISensorsSubHal* impl_; + sp hal_proxy_callback_; }; } // namespace qsh_wrapper