sm8750-common: sensors: hook IHalProxyCallback

Change-Id: I9ca272f8fc6eeb13fc327b35c83c034d71e2785c
This commit is contained in:
dianlujitao
2025-02-08 16:52:15 +08:00
committed by Bruno Martins
parent 4e7078ac03
commit 0f4919dc51
3 changed files with 38 additions and 2 deletions

View File

@@ -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",

View File

@@ -8,6 +8,7 @@
#include <android-base/logging.h>
#include <dlfcn.h>
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<Result> SensorsSubHal::initialize(const sp<IHalProxyCallback>& hal_proxy_callback) {
return impl_->initialize(hal_proxy_callback);
hal_proxy_callback_ = hal_proxy_callback;
return impl_->initialize(this);
}
Return<void> SensorsSubHal::onDynamicSensorsConnected(
const hidl_vec<V1_0::SensorInfo>& sensor_infos) {
return hal_proxy_callback_->onDynamicSensorsConnected(sensor_infos);
}
Return<void> SensorsSubHal::onDynamicSensorsDisconnected(const hidl_vec<int32_t>& sensor_handles) {
return hal_proxy_callback_->onDynamicSensorsDisconnected(sensor_handles);
}
Return<void> SensorsSubHal::onDynamicSensorsConnected_2_1(
const hidl_vec<V2_1::SensorInfo>& sensor_infos) {
return hal_proxy_callback_->onDynamicSensorsConnected_2_1(sensor_infos);
}
void SensorsSubHal::postEvents(const std::vector<Event>& 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

View File

@@ -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<Result> initialize(const sp<IHalProxyCallback>& hal_proxy_callback) override;
// ISensorsCallback
Return<void> onDynamicSensorsConnected(const hidl_vec<V1_0::SensorInfo>& sensor_infos) override;
Return<void> onDynamicSensorsDisconnected(const hidl_vec<int32_t>& sensor_handles) override;
Return<void> onDynamicSensorsConnected_2_1(
const hidl_vec<V2_1::SensorInfo>& sensor_infos) override;
// IHalProxyCallback
void postEvents(const std::vector<Event>& events, ScopedWakelock wakelock) override;
ScopedWakelock createScopedWakelock(bool lock) override;
private:
std::unique_ptr<void, std::function<void(void*)>> lib_handle_;
V2_1::implementation::ISensorsSubHal* impl_;
sp<IHalProxyCallback> hal_proxy_callback_;
};
} // namespace qsh_wrapper