From 21edb37c1f075fc3cf9ff18964bc943aca6601fa Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Sat, 18 Sep 2021 04:48:30 +0200 Subject: [PATCH] livedisplay: Implement ISunlightEnhancement interface Change-Id: I728653099f9a57a85f1ce2ffa93b4e62981208fa --- hidl/livedisplay/Android.bp | 1 + hidl/livedisplay/SunlightEnhancement.cpp | 56 +++++++++++++++++++ hidl/livedisplay/SunlightEnhancement.h | 47 ++++++++++++++++ hidl/livedisplay/service.cpp | 12 ++++ ....lineage.livedisplay@2.0-service.oplus.xml | 4 ++ 5 files changed, 120 insertions(+) create mode 100644 hidl/livedisplay/SunlightEnhancement.cpp create mode 100644 hidl/livedisplay/SunlightEnhancement.h diff --git a/hidl/livedisplay/Android.bp b/hidl/livedisplay/Android.bp index a555c11..dee4188 100644 --- a/hidl/livedisplay/Android.bp +++ b/hidl/livedisplay/Android.bp @@ -21,6 +21,7 @@ cc_binary { srcs: [ ":vendor.lineage.livedisplay@2.0-sdm-pa", ":vendor.lineage.livedisplay@2.0-sdm-utils", + "SunlightEnhancement.cpp", "service.cpp", ], shared_libs: [ diff --git a/hidl/livedisplay/SunlightEnhancement.cpp b/hidl/livedisplay/SunlightEnhancement.cpp new file mode 100644 index 0000000..78d0323 --- /dev/null +++ b/hidl/livedisplay/SunlightEnhancement.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2022 The LineageOS Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "SunlightEnhancement.h" +#include +#include + +using ::android::base::ReadFileToString; +using ::android::base::Trim; +using ::android::base::WriteStringToFile; + +namespace { + +constexpr const char* kHbmPath = "/sys/kernel/oplus_display/hbm"; + +} // anonymous namespace + +namespace vendor { +namespace lineage { +namespace livedisplay { +namespace V2_0 { +namespace implementation { + +Return SunlightEnhancement::isEnabled() { + std::string tmp; + int32_t contents = 0; + + if (ReadFileToString(kHbmPath, &tmp)) { + contents = std::stoi(Trim(tmp)); + } + + return contents > 0; +} + +Return SunlightEnhancement::setEnabled(bool enabled) { + return WriteStringToFile(std::to_string(enabled), kHbmPath, true); +} + +} // namespace implementation +} // namespace V2_0 +} // namespace livedisplay +} // namespace lineage +} // namespace vendor diff --git a/hidl/livedisplay/SunlightEnhancement.h b/hidl/livedisplay/SunlightEnhancement.h new file mode 100644 index 0000000..4fc68be --- /dev/null +++ b/hidl/livedisplay/SunlightEnhancement.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2019-2021 The LineageOS Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef VENDOR_LINEAGE_LIVEDISPLAY_V2_0_SUNLIGHTENHANCEMENT_H +#define VENDOR_LINEAGE_LIVEDISPLAY_V2_0_SUNLIGHTENHANCEMENT_H + +#include +#include +#include + +namespace vendor { +namespace lineage { +namespace livedisplay { +namespace V2_0 { +namespace implementation { + +using ::android::hardware::Return; +using ::android::hardware::Void; +using ::android::sp; + +class SunlightEnhancement : public ISunlightEnhancement { + public: + // Methods from ::vendor::lineage::livedisplay::V2_0::ISunlightEnhancement follow. + Return isEnabled() override; + Return setEnabled(bool enabled) override; +}; + +} // namespace implementation +} // namespace V2_0 +} // namespace livedisplay +} // namespace lineage +} // namespace vendor + +#endif // VENDOR_LINEAGE_LIVEDISPLAY_V2_0_SUNLIGHTENHANCEMENT_H diff --git a/hidl/livedisplay/service.cpp b/hidl/livedisplay/service.cpp index c2358a6..8230f49 100644 --- a/hidl/livedisplay/service.cpp +++ b/hidl/livedisplay/service.cpp @@ -21,6 +21,8 @@ #include #include +#include "SunlightEnhancement.h" + using ::android::OK; using ::android::sp; using ::android::status_t; @@ -29,6 +31,8 @@ using ::android::hardware::joinRpcThreadpool; using ::vendor::lineage::livedisplay::V2_0::sdm::PictureAdjustment; using ::vendor::lineage::livedisplay::V2_0::sdm::SDMController; +using ::vendor::lineage::livedisplay::V2_0::ISunlightEnhancement; +using ::vendor::lineage::livedisplay::V2_0::implementation::SunlightEnhancement; int main() { status_t status = OK; @@ -40,6 +44,7 @@ int main() { std::shared_ptr controller = std::make_shared(); sp pa = new PictureAdjustment(controller); + sp se = new SunlightEnhancement(); configureRpcThreadpool(1, true /*callerWillJoin*/); @@ -50,6 +55,13 @@ int main() { goto shutdown; } + status = se->registerAsService(); + if (status != OK) { + LOG(ERROR) << "Could not register service for LiveDisplay HAL SunlightEnhancement Iface (" + << status << ")"; + goto shutdown; + } + LOG(INFO) << "LiveDisplay HAL service is ready."; joinRpcThreadpool(); // Should not pass this line diff --git a/hidl/livedisplay/vendor.lineage.livedisplay@2.0-service.oplus.xml b/hidl/livedisplay/vendor.lineage.livedisplay@2.0-service.oplus.xml index f4f389a..f29a1b1 100644 --- a/hidl/livedisplay/vendor.lineage.livedisplay@2.0-service.oplus.xml +++ b/hidl/livedisplay/vendor.lineage.livedisplay@2.0-service.oplus.xml @@ -3,5 +3,9 @@ vendor.lineage.livedisplay hwbinder 2.0 + + ISunlightEnhancement + default +