diff options
author | Benjamin Schwartz <bsschwar@google.com> | 2021-03-09 00:54:23 +0000 |
---|---|---|
committer | Benjamin Schwartz <bsschwar@google.com> | 2021-03-09 00:54:23 +0000 |
commit | 8b5e4744b55c14e4d57cdbe31383f51a91c25ec2 (patch) | |
tree | 332a41aa67640e69043b4980d1353fead794a7c6 | |
parent | 6a35f191ebe3a783407bdb589e52aa43d8e7d739 (diff) | |
download | pixel-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
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); |