* Granted correct permissions on fb0 by default * Enabled suspend according to https://android.googlesource.com/platform/hardware/interfaces/+/refs/tags/android-13.0.0_r3/health/aidl#charger-enable-suspend Change-Id: I41b84840a03a57d46beb1a7520182de2bb29d2f5urubino
parent
e67f844874
commit
f302a32df3
@ -0,0 +1,47 @@ |
|||||||
|
/* |
||||||
|
* 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
cc_defaults { |
||||||
|
name: "android.hardware.health-service.samsung-defaults", |
||||||
|
defaults: [ |
||||||
|
"libhealth_aidl_impl_user", |
||||||
|
"libhealth_aidl_charger_defaults", |
||||||
|
], |
||||||
|
relative_install_path: "hw", |
||||||
|
vintf_fragments: ["android.hardware.health-service.samsung.xml"], |
||||||
|
srcs: [ |
||||||
|
"Health.cpp", |
||||||
|
], |
||||||
|
static_libs: [ |
||||||
|
"libhealth_aidl_impl", |
||||||
|
], |
||||||
|
} |
||||||
|
|
||||||
|
cc_binary { |
||||||
|
name: "android.hardware.health-service.samsung", |
||||||
|
defaults: ["android.hardware.health-service.samsung-defaults"], |
||||||
|
vendor: true, |
||||||
|
init_rc: ["android.hardware.health-service.samsung.rc"], |
||||||
|
overrides: ["charger"], |
||||||
|
} |
||||||
|
|
||||||
|
cc_binary { |
||||||
|
name: "android.hardware.health-service.samsung-recovery", |
||||||
|
defaults: ["android.hardware.health-service.samsung-defaults"], |
||||||
|
recovery: true, |
||||||
|
init_rc: ["android.hardware.health-service.samsung-recovery.rc"], |
||||||
|
overrides: ["charger.recovery"], |
||||||
|
} |
@ -0,0 +1,77 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 The Android Open Source Project |
||||||
|
* 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 <android-base/logging.h> |
||||||
|
#include <android/binder_interface_utils.h> |
||||||
|
#include <health-impl/Health.h> |
||||||
|
#include <health/utils.h> |
||||||
|
|
||||||
|
#ifndef CHARGER_FORCE_NO_UI |
||||||
|
#define CHARGER_FORCE_NO_UI 0 |
||||||
|
#endif |
||||||
|
|
||||||
|
#if !CHARGER_FORCE_NO_UI |
||||||
|
#include <health-impl/ChargerUtils.h> |
||||||
|
#endif |
||||||
|
|
||||||
|
using aidl::android::hardware::health::HalHealthLoop; |
||||||
|
using aidl::android::hardware::health::Health; |
||||||
|
|
||||||
|
#if !CHARGER_FORCE_NO_UI |
||||||
|
using aidl::android::hardware::health::charger::ChargerCallback; |
||||||
|
using aidl::android::hardware::health::charger::ChargerModeMain; |
||||||
|
#endif |
||||||
|
|
||||||
|
static constexpr const char* gInstanceName = "default"; |
||||||
|
static constexpr std::string_view gChargerArg{"--charger"}; |
||||||
|
|
||||||
|
#if !CHARGER_FORCE_NO_UI |
||||||
|
namespace aidl::android::hardware::health { |
||||||
|
class ChargerCallbackImpl : public ChargerCallback { |
||||||
|
public: |
||||||
|
using ChargerCallback::ChargerCallback; |
||||||
|
bool ChargerEnableSuspend() override { return true; } |
||||||
|
}; |
||||||
|
} // namespace aidl::android::hardware::health
|
||||||
|
#endif |
||||||
|
|
||||||
|
int main(int argc, char** argv) { |
||||||
|
#ifdef __ANDROID_RECOVERY__ |
||||||
|
android::base::InitLogging(argv, android::base::KernelLogger); |
||||||
|
#endif |
||||||
|
|
||||||
|
// make a default health service
|
||||||
|
auto config = std::make_unique<healthd_config>(); |
||||||
|
::android::hardware::health::InitHealthdConfig(config.get()); |
||||||
|
auto binder = ndk::SharedRefBase::make<Health>(gInstanceName, std::move(config)); |
||||||
|
|
||||||
|
if (argc >= 2 && argv[1] == gChargerArg) { |
||||||
|
#if !CHARGER_FORCE_NO_UI |
||||||
|
// If charger shouldn't have UI for your device, simply drop the line below
|
||||||
|
// for your service implementation. This corresponds to
|
||||||
|
// ro.charger.no_ui=true
|
||||||
|
return ChargerModeMain(binder, std::make_shared<aidl::android::hardware::health::ChargerCallbackImpl>(binder)); |
||||||
|
#endif |
||||||
|
|
||||||
|
LOG(INFO) << "Starting charger mode without UI."; |
||||||
|
} else { |
||||||
|
LOG(INFO) << "Starting health HAL."; |
||||||
|
} |
||||||
|
|
||||||
|
auto hal_health_loop = std::make_shared<HalHealthLoop>(binder, binder); |
||||||
|
return hal_health_loop->StartLoop(); |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
service vendor.health-samsung /system/bin/hw/android.hardware.health-service.samsung-recovery |
||||||
|
class hal |
||||||
|
seclabel u:r:hal_health_default:s0 |
||||||
|
user system |
||||||
|
group system |
||||||
|
capabilities WAKE_ALARM BLOCK_SUSPEND |
||||||
|
file /dev/kmsg w |
@ -0,0 +1,20 @@ |
|||||||
|
service vendor.health-samsung /vendor/bin/hw/android.hardware.health-service.samsung |
||||||
|
class hal |
||||||
|
user system |
||||||
|
group system |
||||||
|
capabilities WAKE_ALARM BLOCK_SUSPEND |
||||||
|
file /dev/kmsg w |
||||||
|
|
||||||
|
service vendor.charger /vendor/bin/hw/android.hardware.health-service.samsung --charger |
||||||
|
class charger |
||||||
|
seclabel u:r:charger_vendor:s0 |
||||||
|
user system |
||||||
|
group system wakelock input |
||||||
|
capabilities SYS_BOOT |
||||||
|
file /dev/kmsg w |
||||||
|
file /sys/fs/pstore/console-ramoops-0 r |
||||||
|
file /sys/fs/pstore/console-ramoops r |
||||||
|
file /proc/last_kmsg r |
||||||
|
|
||||||
|
on charger |
||||||
|
chown system system /dev/graphics/fb0 |
@ -0,0 +1,7 @@ |
|||||||
|
<manifest version="1.0" type="device"> |
||||||
|
<hal format="aidl"> |
||||||
|
<name>android.hardware.health</name> |
||||||
|
<version>1</version> |
||||||
|
<fqname>IHealth/default</fqname> |
||||||
|
</hal> |
||||||
|
</manifest> |
Loading…
Reference in new issue