fastcharge: Make user setting persistent
authorBruno Martins <bgcngm@gmail.com>
Mon, 18 Jan 2021 22:31:07 +0000 (22:31 +0000)
committerFrancescodario Cuzzocrea <bosconovic@gmail.com>
Fri, 22 Jan 2021 20:23:45 +0000 (21:23 +0100)
Change-Id: I4ff051d6f9685e94022eab32035bfe86a65264b8

hidl/fastcharge/Android.mk
hidl/fastcharge/FastCharge.cpp
hidl/fastcharge/FastCharge.h
hidl/fastcharge/include/samsung_fastcharge.h

index 4250c2317258bbc3bd8def0e3e86794b9cfd265f..08ab6e8ca362223fd7eb5c3d999879eb93924908 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2020 The LineageOS Project
+# Copyright (C) 2020-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.
@@ -28,6 +28,7 @@ LOCAL_C_INCLUDES := \
 LOCAL_SHARED_LIBRARIES := \
     libbase \
     libbinder \
+    libcutils \
     libhidlbase \
     libhidltransport \
     libutils \
index f0402163fcdfc8bb1de5052613f3facfd5e76db9..283b85b338939cf2291029033f97781ab0fd65a1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2020 The LineageOS Project
+ * Copyright (C) 2020-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.
@@ -18,6 +18,8 @@
 
 #include "FastCharge.h"
 #include <android-base/logging.h>
+#include <cutils/properties.h>
+
 #include <fstream>
 #include <iostream>
 #include "samsung_fastcharge.h"
@@ -28,6 +30,8 @@ namespace fastcharge {
 namespace V1_0 {
 namespace implementation {
 
+static constexpr const char* kFastChargingProp = "persist.vendor.sec.fastchg_enabled";
+
 /*
  * Write value to path and close file.
  */
@@ -71,6 +75,10 @@ static T get(const std::string& path, const T& def) {
     }
 }
 
+FastCharge::FastCharge() {
+    setEnabled(property_get_bool(kFastChargingProp, FASTCHARGE_DEFAULT_SETTING));
+}
+
 Return<bool> FastCharge::isEnabled() {
     return get(FASTCHARGE_PATH, 0) < 1;
 }
@@ -78,7 +86,10 @@ Return<bool> FastCharge::isEnabled() {
 Return<bool> FastCharge::setEnabled(bool enable) {
     set(FASTCHARGE_PATH, enable ? 0 : 1);
 
-    return isEnabled();
+    bool enabled = isEnabled();
+    property_set(kFastChargingProp, enabled ? "true" : "false");
+
+    return enabled;
 }
 
 }  // namespace implementation
index ae4d0495602dd4726879acc5b23961355839332d..2d5a6536ca9ac8f4a2e6390dacaf4bc115e061ad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2020 The LineageOS Project
+ * Copyright (C) 2020-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.
@@ -39,6 +39,8 @@ using ::vendor::lineage::fastcharge::V1_0::IFastCharge;
 
 
 struct FastCharge : public IFastCharge {
+    FastCharge();
+
     Return<bool> isEnabled() override;
     Return<bool> setEnabled(bool enable) override;
 };
index e38c190f897e5caa1ce38510199ba26c8178698d..1eec12962ada5137e13d1c4a3c0c37a946fed5cf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2020 The LineageOS Project
+ * Copyright (C) 2020-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.
@@ -17,6 +17,7 @@
 #ifndef SAMSUNG_FASTCHARGE_H
 #define SAMSUNG_FASTCHARGE_H
 
+#define FASTCHARGE_DEFAULT_SETTING true
 #define FASTCHARGE_PATH "/sys/class/sec/switch/afc_disable"
 
 #endif // SAMSUNG_FASTCHARGE_H