* 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: I41b84840a03a57d46beb1a7520182de2bb29d2f5tirimbino
parent
22ffc81c3b
commit
fa64c99049
@ -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