summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schwartz <bsschwar@google.com>2021-03-09 00:54:23 +0000
committerBenjamin Schwartz <bsschwar@google.com>2021-03-09 00:54:23 +0000
commit8b5e4744b55c14e4d57cdbe31383f51a91c25ec2 (patch)
tree332a41aa67640e69043b4980d1353fead794a7c6
parent6a35f191ebe3a783407bdb589e52aa43d8e7d739 (diff)
downloadpixel-8b5e4744b55c14e4d57cdbe31383f51a91c25ec2.tar.gz
Revert "powerstats: Create vendor state residency provider"
Revert submission 13807923-pixel provider Reason for revert: caused build breakage Reverted Changes: I6b0c1d350:bthal/1.1: Use PixelStateResidencyProvider Ia028e589b:powerstats: Create vendor state residency provider... Id99e6d2a9:powerstats: Add PixelStateResidencyDataProvider Change-Id: I42fd10828e1447bc3c85ecee86b34562e9fe8534
-rw-r--r--powerstats/Android.bp1
-rw-r--r--powerstats/PowerStatsAidl.cpp10
-rw-r--r--powerstats/aidl/Android.bp19
-rw-r--r--powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyCallback.aidl24
-rw-r--r--powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyProvider.aidl25
-rw-r--r--powerstats/dataproviders/DisplayStateResidencyDataProvider.cpp20
-rw-r--r--powerstats/dataproviders/PixelStateResidencyDataProvider.cpp158
-rw-r--r--powerstats/dataproviders/PowerStatsEnergyConsumer.cpp14
-rw-r--r--powerstats/include/PowerStatsAidl.h16
-rw-r--r--powerstats/include/dataproviders/DisplayStateResidencyDataProvider.h11
-rw-r--r--powerstats/include/dataproviders/PixelStateResidencyDataProvider.h75
-rw-r--r--powerstats/include/dataproviders/PowerStatsEnergyConsumer.h14
12 files changed, 48 insertions, 339 deletions
diff --git a/powerstats/Android.bp b/powerstats/Android.bp
index 2ea09a35..2acbdee9 100644
--- a/powerstats/Android.bp
+++ b/powerstats/Android.bp
@@ -48,7 +48,6 @@ cc_library {
"libhardware",
"liblog",
"libutils",
- "pixel_stateresidency_provider_aidl_interface-ndk_platform",
"android.hardware.power.stats-V1-ndk_platform",
],
} \ No newline at end of file
diff --git a/powerstats/PowerStatsAidl.cpp b/powerstats/PowerStatsAidl.cpp
index 8b0519dd..e61c6cc1 100644
--- a/powerstats/PowerStatsAidl.cpp
+++ b/powerstats/PowerStatsAidl.cpp
@@ -36,7 +36,7 @@ namespace hardware {
namespace power {
namespace stats {
-void PowerStats::addStateResidencyDataProvider(std::shared_ptr<IStateResidencyDataProvider> p) {
+void PowerStats::addStateResidencyDataProvider(sp<IStateResidencyDataProvider> p) {
if (!p) {
return;
}
@@ -109,14 +109,14 @@ ndk::ScopedAStatus PowerStats::getStateResidency(const std::vector<int32_t> &in_
return ndk::ScopedAStatus::fromStatus(err);
}
-void PowerStats::addEnergyConsumer(std::shared_ptr<IEnergyConsumer> p) {
+void PowerStats::addEnergyConsumer(sp<IEnergyConsumer> p) {
if (!p) {
return;
}
std::pair<EnergyConsumerType, std::string> info = p->getInfo();
-
- int32_t count = count_if(mEnergyConsumerInfos.begin(), mEnergyConsumerInfos.end(),
- [&info](const EnergyConsumer &c) { return info.first == c.type; });
+ int32_t count =
+ count_if(mEnergyConsumers.begin(), mEnergyConsumers.end(),
+ [info](sp<IEnergyConsumer> c) { return info.first == c->getInfo().first; });
int32_t id = mEnergyConsumers.size();
mEnergyConsumerInfos.emplace_back(
EnergyConsumer{.id = id, .ordinal = count, .type = info.first, .name = info.second});
diff --git a/powerstats/aidl/Android.bp b/powerstats/aidl/Android.bp
index 55c1a581..c499e41e 100644
--- a/powerstats/aidl/Android.bp
+++ b/powerstats/aidl/Android.bp
@@ -23,25 +23,12 @@ aidl_interface {
"android/vendor/powerstats/StateResidencyData.aidl",
],
- vendor_available: true,
-}
-
-aidl_interface {
- name: "pixel_stateresidency_provider_aidl_interface",
- unstable: true,
- imports: ["android.hardware.power.stats"],
- srcs: [
- "android/vendor/powerstats/IPixelStateResidencyProvider.aidl",
- "android/vendor/powerstats/IPixelStateResidencyCallback.aidl",
- ],
+// TODO(b/124131159): I get an error when I remove this
backend: {
- java: {
- platform_apis: true,
- },
- cpp: {
+ ndk: {
enabled: false,
},
},
-
vendor_available: true,
}
+
diff --git a/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyCallback.aidl b/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyCallback.aidl
deleted file mode 100644
index f4ae9e85..00000000
--- a/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyCallback.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source 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.
- */
-
-package android.vendor.powerstats;
-
-import android.hardware.power.stats.StateResidency;
-
-interface IPixelStateResidencyCallback
-{
- StateResidency[] getStateResidency();
-}
diff --git a/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyProvider.aidl b/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyProvider.aidl
deleted file mode 100644
index f2c0faf2..00000000
--- a/powerstats/aidl/android/vendor/powerstats/IPixelStateResidencyProvider.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source 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.
- */
-
-package android.vendor.powerstats;
-
-import android.vendor.powerstats.IPixelStateResidencyCallback;
-
-interface IPixelStateResidencyProvider
-{
- void registerCallback(in @utf8InCpp String entityName, in IPixelStateResidencyCallback cb);
- void unregisterCallback(in IPixelStateResidencyCallback cb);
-}
diff --git a/powerstats/dataproviders/DisplayStateResidencyDataProvider.cpp b/powerstats/dataproviders/DisplayStateResidencyDataProvider.cpp
index 6d2e118c..dcbf817f 100644
--- a/powerstats/dataproviders/DisplayStateResidencyDataProvider.cpp
+++ b/powerstats/dataproviders/DisplayStateResidencyDataProvider.cpp
@@ -34,7 +34,8 @@ namespace stats {
DisplayStateResidencyDataProvider::DisplayStateResidencyDataProvider(
std::string name, std::string path, std::vector<std::string> states)
- : mPath(std::move(path)),
+ : Thread(false),
+ mPath(std::move(path)),
mName(std::move(name)),
mStates(states),
mCurState(-1),
@@ -59,7 +60,9 @@ DisplayStateResidencyDataProvider::DisplayStateResidencyDataProvider(
// Run the thread that will poll for changes to display state
LOG(VERBOSE) << "Starting DisplayStateWatcherThread";
- mThread = std::thread(&DisplayStateResidencyDataProvider::pollLoop, this);
+ if (run("DisplayStateWatcherThread", ::android::PRIORITY_HIGHEST) != ::android::NO_ERROR) {
+ LOG(ERROR) << "DisplayStateWatcherThread start fail";
+ }
}
DisplayStateResidencyDataProvider::~DisplayStateResidencyDataProvider() {
@@ -138,14 +141,15 @@ void DisplayStateResidencyDataProvider::updateStats() {
} // release lock
}
-void DisplayStateResidencyDataProvider::pollLoop() {
+bool DisplayStateResidencyDataProvider::threadLoop() {
LOG(VERBOSE) << "DisplayStateResidencyDataProvider polling...";
- while (true) {
- // Poll for display state changes. Timeout set to poll indefinitely
- if (mLooper->pollOnce(-1) >= 0) {
- updateStats();
- }
+
+ // Poll for display state changes. Timeout set to poll indefinitely
+ if (mLooper->pollOnce(-1) >= 0) {
+ updateStats();
}
+
+ return true;
}
} // namespace stats
diff --git a/powerstats/dataproviders/PixelStateResidencyDataProvider.cpp b/powerstats/dataproviders/PixelStateResidencyDataProvider.cpp
deleted file mode 100644
index 3e267397..00000000
--- a/powerstats/dataproviders/PixelStateResidencyDataProvider.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source 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.
- */
-#define LOG_TAG "android.hardware.power.stats-service.pixel"
-
-#include <dataproviders/PixelStateResidencyDataProvider.h>
-
-#include <android-base/logging.h>
-#include <android-base/stringprintf.h>
-#include <android/binder_status.h>
-
-namespace aidl {
-namespace android {
-namespace hardware {
-namespace power {
-namespace stats {
-
-PixelStateResidencyDataProvider::PixelStateResidencyDataProvider() {}
-
-void PixelStateResidencyDataProvider::addEntity(std::string name, std::vector<State> states) {
- std::lock_guard<std::mutex> lock(mLock);
-
- mEntries.emplace_back(name, states);
-}
-
-void PixelStateResidencyDataProvider::start() {
- binder_status_t status = AServiceManager_addService(this->asBinder().get(), kInstance.c_str());
- if (status != STATUS_OK) {
- LOG(ERROR) << "Failed to start " << kInstance;
- }
-}
-
-::ndk::ScopedAStatus PixelStateResidencyDataProvider::getStateResidenciesTimed(
- const Entry &entry, std::vector<StateResidency> *residency) {
- const uint64_t MAX_LATENCY_US = 2000;
-
- if (!entry.mCallback) {
- LOG(ERROR) << "callback for " << entry.mName << " is not registered";
- return ndk::ScopedAStatus::fromStatus(STATUS_UNEXPECTED_NULL);
- }
-
- struct timespec then;
- struct timespec now;
-
- clock_gettime(CLOCK_BOOTTIME, &then);
- ::ndk::ScopedAStatus status = entry.mCallback->getStateResidency(residency);
- clock_gettime(CLOCK_BOOTTIME, &now);
-
- uint64_t timeElapsedUs =
- ((now.tv_sec - then.tv_sec) * 1000000) + ((now.tv_nsec - then.tv_nsec) / 1000);
- if (timeElapsedUs > MAX_LATENCY_US) {
- LOG(WARNING) << "getStateResidency latency for " << entry.mName
- << " exceeded time allowed: " << timeElapsedUs << "us";
- }
-
- return status;
-}
-
-bool PixelStateResidencyDataProvider::getStateResidencies(
- std::unordered_map<std::string, std::vector<StateResidency>> *residencies) {
- std::lock_guard<std::mutex> lock(mLock);
-
- size_t numResultsFound = 0;
- size_t numResults = mEntries.size();
- for (auto &entry : mEntries) {
- std::vector<StateResidency> residency;
- ::ndk::ScopedAStatus status = getStateResidenciesTimed(entry, &residency);
-
- if (!status.isOk()) {
- LOG(ERROR) << "getStateResidency for " << entry.mName << " failed";
-
- if (status.getStatus() == STATUS_DEAD_OBJECT) {
- LOG(ERROR) << "Unregistering dead callback for " << entry.mName;
- entry.mCallback = nullptr;
- }
- }
- if (!residency.empty()) {
- residencies->emplace(entry.mName, residency);
- numResultsFound++;
- }
- }
-
- return (numResultsFound == numResults);
-}
-
-std::unordered_map<std::string, std::vector<State>> PixelStateResidencyDataProvider::getInfo() {
- std::lock_guard<std::mutex> lock(mLock);
-
- std::unordered_map<std::string, std::vector<State>> ret;
- for (const auto &entry : mEntries) {
- ret.emplace(entry.mName, entry.mStates);
- }
-
- return ret;
-}
-
-::ndk::ScopedAStatus PixelStateResidencyDataProvider::registerCallback(
- const std::string &in_entityName,
- const std::shared_ptr<IPixelStateResidencyCallback> &in_cb) {
- std::lock_guard<std::mutex> lock(mLock);
-
- if (!in_cb) {
- return ndk::ScopedAStatus::fromStatus(STATUS_UNEXPECTED_NULL);
- }
-
- auto toRegister =
- std::find_if(mEntries.begin(), mEntries.end(),
- [&in_entityName](const auto &it) { return it.mName == in_entityName; });
-
- if (toRegister == mEntries.end()) {
- LOG(ERROR) << __func__ << " Invalid entityName: " << in_entityName;
- return ::ndk::ScopedAStatus::fromStatus(STATUS_BAD_VALUE);
- }
-
- toRegister->mCallback = in_cb;
-
- LOG(INFO) << __func__ << ": Registered " << in_entityName;
- return ::ndk::ScopedAStatus::ok();
-}
-
-::ndk::ScopedAStatus PixelStateResidencyDataProvider::unregisterCallback(
- const std::shared_ptr<IPixelStateResidencyCallback> &in_cb) {
- std::lock_guard<std::mutex> lock(mLock);
-
- if (!in_cb) {
- return ndk::ScopedAStatus::fromStatus(STATUS_UNEXPECTED_NULL);
- }
-
- auto toRemove = std::find_if(mEntries.begin(), mEntries.end(), [&in_cb](const auto &it) {
- return it.mCallback->asBinder().get() == in_cb->asBinder().get();
- });
-
- if (toRemove == mEntries.end()) {
- return ndk::ScopedAStatus::fromStatus(STATUS_BAD_VALUE);
- }
-
- toRemove->mCallback = nullptr;
-
- return ::ndk::ScopedAStatus::ok();
-}
-
-} // namespace stats
-} // namespace power
-} // namespace hardware
-} // namespace android
-} // namespace aidl
diff --git a/powerstats/dataproviders/PowerStatsEnergyConsumer.cpp b/powerstats/dataproviders/PowerStatsEnergyConsumer.cpp
index 53f1598c..9ad1c573 100644
--- a/powerstats/dataproviders/PowerStatsEnergyConsumer.cpp
+++ b/powerstats/dataproviders/PowerStatsEnergyConsumer.cpp
@@ -31,24 +31,23 @@ PowerStatsEnergyConsumer::PowerStatsEnergyConsumer(std::shared_ptr<PowerStats> p
bool attr)
: kType(type), kName(name), mPowerStats(p), mWithAttribution(attr) {}
-std::shared_ptr<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterConsumer(
+sp<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::set<std::string> channelNames) {
return createMeterAndEntityConsumer(p, type, name, channelNames, "", {});
}
-std::shared_ptr<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createEntityConsumer(
+sp<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createEntityConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::string powerEntityName, std::map<std::string, int32_t> stateCoeffs) {
return createMeterAndEntityConsumer(p, type, name, {}, powerEntityName, stateCoeffs);
}
-std::shared_ptr<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterAndEntityConsumer(
+sp<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterAndEntityConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::set<std::string> channelNames, std::string powerEntityName,
std::map<std::string, int32_t> stateCoeffs) {
- auto ret =
- std::shared_ptr<PowerStatsEnergyConsumer>(new PowerStatsEnergyConsumer(p, type, name));
+ sp<PowerStatsEnergyConsumer> ret = new PowerStatsEnergyConsumer(p, type, name);
if (ret->addEnergyMeter(channelNames) && ret->addPowerEntity(powerEntityName, stateCoeffs)) {
return ret;
}
@@ -57,12 +56,11 @@ std::shared_ptr<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterA
return nullptr;
}
-std::shared_ptr<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterAndAttrConsumer(
+sp<PowerStatsEnergyConsumer> PowerStatsEnergyConsumer::createMeterAndAttrConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::set<std::string> channelNames, std::unordered_map<int32_t, std::string> paths,
std::map<std::string, int32_t> stateCoeffs) {
- auto ret = std::shared_ptr<PowerStatsEnergyConsumer>(
- new PowerStatsEnergyConsumer(p, type, name, true));
+ sp<PowerStatsEnergyConsumer> ret = new PowerStatsEnergyConsumer(p, type, name, true);
if (ret->addEnergyMeter(channelNames) && ret->addAttribution(paths, stateCoeffs)) {
return ret;
}
diff --git a/powerstats/include/PowerStatsAidl.h b/powerstats/include/PowerStatsAidl.h
index ce71a096..17584db5 100644
--- a/powerstats/include/PowerStatsAidl.h
+++ b/powerstats/include/PowerStatsAidl.h
@@ -18,6 +18,8 @@
#include <aidl/android/hardware/power/stats/BnPowerStats.h>
+#include <utils/RefBase.h>
+
#include <optional>
#include <unordered_map>
@@ -27,9 +29,11 @@ namespace hardware {
namespace power {
namespace stats {
+using ::android::sp;
+
class PowerStats : public BnPowerStats {
public:
- class IStateResidencyDataProvider {
+ class IStateResidencyDataProvider : public virtual ::android::RefBase {
public:
virtual ~IStateResidencyDataProvider() = default;
virtual bool getStateResidencies(
@@ -37,7 +41,7 @@ class PowerStats : public BnPowerStats {
virtual std::unordered_map<std::string, std::vector<State>> getInfo() = 0;
};
- class IEnergyConsumer {
+ class IEnergyConsumer : public virtual ::android::RefBase {
public:
virtual ~IEnergyConsumer() = default;
virtual std::pair<EnergyConsumerType, std::string> getInfo() = 0;
@@ -55,8 +59,8 @@ class PowerStats : public BnPowerStats {
};
PowerStats() = default;
- void addStateResidencyDataProvider(std::shared_ptr<IStateResidencyDataProvider> p);
- void addEnergyConsumer(std::shared_ptr<IEnergyConsumer> p);
+ void addStateResidencyDataProvider(sp<IStateResidencyDataProvider> p);
+ void addEnergyConsumer(sp<IEnergyConsumer> p);
void setEnergyMeterDataProvider(std::unique_ptr<IEnergyMeterDataProvider> p);
// Methods from aidl::android::hardware::power::stats::IPowerStats
@@ -84,10 +88,10 @@ class PowerStats : public BnPowerStats {
void dumpEnergyConsumer(std::ostringstream &oss, bool delta);
void dumpEnergyMeter(std::ostringstream &oss, bool delta);
- std::vector<std::shared_ptr<IStateResidencyDataProvider>> mStateResidencyDataProviders;
+ std::vector<sp<IStateResidencyDataProvider>> mStateResidencyDataProviders;
std::vector<PowerEntity> mPowerEntityInfos;
- std::vector<std::shared_ptr<IEnergyConsumer>> mEnergyConsumers;
+ std::vector<sp<IEnergyConsumer>> mEnergyConsumers;
std::vector<EnergyConsumer> mEnergyConsumerInfos;
std::unique_ptr<IEnergyMeterDataProvider> mEnergyMeterDataProvider;
diff --git a/powerstats/include/dataproviders/DisplayStateResidencyDataProvider.h b/powerstats/include/dataproviders/DisplayStateResidencyDataProvider.h
index 70c814b9..41783216 100644
--- a/powerstats/include/dataproviders/DisplayStateResidencyDataProvider.h
+++ b/powerstats/include/dataproviders/DisplayStateResidencyDataProvider.h
@@ -33,7 +33,8 @@ namespace hardware {
namespace power {
namespace stats {
-class DisplayStateResidencyDataProvider : public PowerStats::IStateResidencyDataProvider {
+class DisplayStateResidencyDataProvider : public PowerStats::IStateResidencyDataProvider,
+ public ::android::Thread {
public:
// name = powerEntityName to be associated with this data provider
// path = path to the display state file descriptor
@@ -48,8 +49,8 @@ class DisplayStateResidencyDataProvider : public PowerStats::IStateResidencyData
std::unordered_map<std::string, std::vector<State>> getInfo() override;
private:
- // Poll for display state changes
- void pollLoop();
+ // Method associated with ::android::Thread. Poll for display state changes
+ bool threadLoop() override;
// Main function to update the stats when display state change is detected
void updateStats();
@@ -68,9 +69,7 @@ class DisplayStateResidencyDataProvider : public PowerStats::IStateResidencyData
// Index of current state
int mCurState;
// Looper to facilitate polling of display state file desciptor
- ::android::sp<::android::Looper> mLooper;
-
- std::thread mThread;
+ sp<::android::Looper> mLooper;
};
} // namespace stats
diff --git a/powerstats/include/dataproviders/PixelStateResidencyDataProvider.h b/powerstats/include/dataproviders/PixelStateResidencyDataProvider.h
deleted file mode 100644
index 2f55e7d1..00000000
--- a/powerstats/include/dataproviders/PixelStateResidencyDataProvider.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source 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.
- */
-
-#pragma once
-
-#include <PowerStatsAidl.h>
-#include <aidl/android/vendor/powerstats/BnPixelStateResidencyCallback.h>
-#include <aidl/android/vendor/powerstats/BnPixelStateResidencyProvider.h>
-
-#include <android/binder_manager.h>
-
-using ::aidl::android::vendor::powerstats::BnPixelStateResidencyProvider;
-using ::aidl::android::vendor::powerstats::IPixelStateResidencyCallback;
-
-namespace aidl {
-namespace android {
-namespace hardware {
-namespace power {
-namespace stats {
-
-class PixelStateResidencyDataProvider : public PowerStats::IStateResidencyDataProvider,
- public BnPixelStateResidencyProvider {
- public:
- PixelStateResidencyDataProvider();
- ~PixelStateResidencyDataProvider() = default;
- void addEntity(std::string name, std::vector<State> states);
- void start();
-
- // Methods from PowerStats::IStateResidencyDataProvider
- bool getStateResidencies(
- std::unordered_map<std::string, std::vector<StateResidency>> *residencies) override;
- std::unordered_map<std::string, std::vector<State>> getInfo() override;
-
- // Methods from BnPixelStateResidencyProvider
- ::ndk::ScopedAStatus registerCallback(
- const std::string &in_entityName,
- const std::shared_ptr<IPixelStateResidencyCallback> &in_cb) override;
- ::ndk::ScopedAStatus unregisterCallback(
- const std::shared_ptr<IPixelStateResidencyCallback> &in_cb) override;
-
- private:
- struct Entry {
- Entry(std::string name, std::vector<State> states)
- : mName(name), mStates(states), mCallback(nullptr) {}
- std::string mName;
- std::vector<State> mStates;
- std::shared_ptr<IPixelStateResidencyCallback> mCallback;
- };
-
- ::ndk::ScopedAStatus getStateResidenciesTimed(const Entry &entry,
- std::vector<StateResidency> *residency);
-
- const std::string kInstance = "power.stats-vendor";
- std::mutex mLock;
- std::vector<Entry> mEntries;
-};
-
-} // namespace stats
-} // namespace power
-} // namespace hardware
-} // namespace android
-} // namespace aidl
diff --git a/powerstats/include/dataproviders/PowerStatsEnergyConsumer.h b/powerstats/include/dataproviders/PowerStatsEnergyConsumer.h
index 89bbec90..349ca489 100644
--- a/powerstats/include/dataproviders/PowerStatsEnergyConsumer.h
+++ b/powerstats/include/dataproviders/PowerStatsEnergyConsumer.h
@@ -45,19 +45,20 @@ using ::android::sp;
*/
class PowerStatsEnergyConsumer : public PowerStats::IEnergyConsumer {
public:
- static std::shared_ptr<PowerStatsEnergyConsumer> createMeterConsumer(
- std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
- std::set<std::string> channelNames);
- static std::shared_ptr<PowerStatsEnergyConsumer> createEntityConsumer(
+ static sp<PowerStatsEnergyConsumer> createMeterConsumer(std::shared_ptr<PowerStats> p,
+ EnergyConsumerType type,
+ std::string name,
+ std::set<std::string> channelNames);
+ static sp<PowerStatsEnergyConsumer> createEntityConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::string powerEntityName, std::map<std::string, int32_t> stateCoeffs);
- static std::shared_ptr<PowerStatsEnergyConsumer> createMeterAndEntityConsumer(
+ static sp<PowerStatsEnergyConsumer> createMeterAndEntityConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::set<std::string> channelNames, std::string powerEntityName,
std::map<std::string, int32_t> stateCoeffs);
- static std::shared_ptr<PowerStatsEnergyConsumer> createMeterAndAttrConsumer(
+ static sp<PowerStatsEnergyConsumer> createMeterAndAttrConsumer(
std::shared_ptr<PowerStats> p, EnergyConsumerType type, std::string name,
std::set<std::string> channelNames, std::unordered_map<int32_t, std::string> paths,
std::map<std::string, int32_t> stateCoeffs);
@@ -67,7 +68,6 @@ class PowerStatsEnergyConsumer : public PowerStats::IEnergyConsumer {
std::optional<EnergyConsumerResult> getEnergyConsumed() override;
std::string getConsumerName() override;
-
private:
PowerStatsEnergyConsumer(std::shared_ptr<PowerStats> p, EnergyConsumerType type,
std::string name, bool attr = false);