Merge cherrypicks of ['googleplex-android-review.googlesource.com/31035549'] into 25Q1-release.

Change-Id: I86eea9508a50a27fefb0346cd271e64a49836e0a
diff --git a/dumpstate/dump_power.cpp b/dumpstate/dump_power.cpp
index e8e4a38..b522cf7 100644
--- a/dumpstate/dump_power.cpp
+++ b/dumpstate/dump_power.cpp
@@ -276,6 +276,48 @@
         files.clear();
     }
 }
+void dumpBatteryCaretaker() {
+    const char* aacpConfig [][3] {
+            {"AACP Version",
+                    "/sys/devices/platform/google,battery/power_supply/battery/", "aacp_"},
+            {"AACR Config",
+                    "/sys/devices/platform/google,battery/power_supply/battery/", "aacr_"},
+            {"AAFV Config",
+                    "/sys/devices/platform/google,battery/power_supply/battery/", "aafv_"},
+            {"AACT Config",
+                    "/sys/devices/platform/google,battery/power_supply/battery/", "aact_"},
+            {"AACC",
+                    "/sys/devices/platform/google,battery/power_supply/battery/", "aacc"},
+    };
+    std::vector<std::string> files;
+    struct dirent *entry;
+    std::string content;
+    std::string fileLocation;
+    for (auto &config : aacpConfig) {
+        DIR *dir = opendir(config[1]);
+        if (dir == NULL)
+            continue;
+        printTitle(config[0]);
+        while ((entry = readdir(dir)) != NULL) {
+            if (std::string(entry->d_name).find(config[2]) != std::string::npos &&
+                    strncmp(config[2], entry->d_name, strlen(config[2])) == 0) {
+                files.push_back(entry->d_name);
+            }
+        }
+        closedir(dir);
+        sort(files.begin(), files.end());
+        for (auto &file : files) {
+            fileLocation = std::string(config[1]) + std::string(file);
+            if (!android::base::ReadFileToString(fileLocation, &content) || content.empty()) {
+                content = "\n";
+            }
+            printf("%s: %s", file.c_str(), content.c_str());
+            if (content.back() != '\n')
+                printf("\n");
+        }
+        files.clear();
+    }
+}
 void printValuesOfDirectory(const char *directory, std::string debugfs, const char *strMatch) {
     std::vector<std::string> files;
     auto info = directory;
@@ -732,6 +774,7 @@
     dumpPdEngine();
     dumpBatteryHealth();
     dumpBatteryDefend();
+    dumpBatteryCaretaker();
     dumpChg();
     dumpChgUserDebug();
     dumpBatteryEeprom();