diff options
author | 2023-10-06 05:34:14 +0000 | |
---|---|---|
committer | 2023-10-06 05:34:14 +0000 | |
commit | 8b919d0eb0e816bdd67f11855e649ce3723930ee (patch) | |
tree | b9785db180fb54b3a776f645cbb2a7ef480e0cb9 /services/powermanager/PowerHalLoader.cpp | |
parent | e4b64ebecf894e3047e46894a83ab8d37feabd3e (diff) | |
parent | 1961b2f7b191744f3fc6bb4d32f0da0ce3ee0567 (diff) |
Merge "Merge Android 14" into main
Diffstat (limited to 'services/powermanager/PowerHalLoader.cpp')
-rw-r--r-- | services/powermanager/PowerHalLoader.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/services/powermanager/PowerHalLoader.cpp b/services/powermanager/PowerHalLoader.cpp index 1f1b43a607..6bd40f8ff2 100644 --- a/services/powermanager/PowerHalLoader.cpp +++ b/services/powermanager/PowerHalLoader.cpp @@ -17,6 +17,8 @@ #define LOG_TAG "PowerHalLoader" #include <android/hardware/power/1.1/IPower.h> +#include <android/hardware/power/1.2/IPower.h> +#include <android/hardware/power/1.3/IPower.h> #include <android/hardware/power/IPower.h> #include <binder/IServiceManager.h> #include <hardware/power.h> @@ -55,12 +57,16 @@ std::mutex PowerHalLoader::gHalMutex; sp<IPower> PowerHalLoader::gHalAidl = nullptr; sp<V1_0::IPower> PowerHalLoader::gHalHidlV1_0 = nullptr; sp<V1_1::IPower> PowerHalLoader::gHalHidlV1_1 = nullptr; +sp<V1_2::IPower> PowerHalLoader::gHalHidlV1_2 = nullptr; +sp<V1_3::IPower> PowerHalLoader::gHalHidlV1_3 = nullptr; void PowerHalLoader::unloadAll() { std::lock_guard<std::mutex> lock(gHalMutex); gHalAidl = nullptr; gHalHidlV1_0 = nullptr; gHalHidlV1_1 = nullptr; + gHalHidlV1_2 = nullptr; + gHalHidlV1_3 = nullptr; } sp<IPower> PowerHalLoader::loadAidl() { @@ -82,6 +88,20 @@ sp<V1_1::IPower> PowerHalLoader::loadHidlV1_1() { return loadHal<V1_1::IPower>(gHalExists, gHalHidlV1_1, loadFn, "HIDL v1.1"); } +sp<V1_2::IPower> PowerHalLoader::loadHidlV1_2() { + std::lock_guard<std::mutex> lock(gHalMutex); + static bool gHalExists = true; + static auto loadFn = []() { return V1_2::IPower::castFrom(loadHidlV1_0Locked()); }; + return loadHal<V1_2::IPower>(gHalExists, gHalHidlV1_2, loadFn, "HIDL v1.2"); +} + +sp<V1_3::IPower> PowerHalLoader::loadHidlV1_3() { + std::lock_guard<std::mutex> lock(gHalMutex); + static bool gHalExists = true; + static auto loadFn = []() { return V1_3::IPower::castFrom(loadHidlV1_0Locked()); }; + return loadHal<V1_3::IPower>(gHalExists, gHalHidlV1_3, loadFn, "HIDL v1.3"); +} + sp<V1_0::IPower> PowerHalLoader::loadHidlV1_0Locked() { static bool gHalExists = true; static auto loadFn = []() { return V1_0::IPower::getService(); }; |