power/stats: Index the state residency data providers am: 3bad122962

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1663119

Change-Id: Ie15a72e82306e08208f5c3ffc9d49599a8bb8884
This commit is contained in:
Benjamin Schwartz
2021-04-02 06:06:43 +00:00
committed by Automerger Merge Worker
2 changed files with 10 additions and 3 deletions

View File

@@ -32,15 +32,19 @@ void PowerStats::addStateResidencyDataProvider(std::unique_ptr<IStateResidencyDa
}
int32_t id = mPowerEntityInfos.size();
auto info = p->getInfo();
for (const auto& [entityName, states] : p->getInfo()) {
size_t index = mStateResidencyDataProviders.size();
mStateResidencyDataProviders.emplace_back(std::move(p));
for (const auto& [entityName, states] : info) {
PowerEntity i = {
.id = id++,
.name = entityName,
.states = states,
};
mPowerEntityInfos.emplace_back(i);
mStateResidencyDataProviders.emplace_back(std::move(p));
mStateResidencyDataProviderIndex.emplace_back(index);
}
}
@@ -92,7 +96,8 @@ ndk::ScopedAStatus PowerStats::getStateResidency(const std::vector<int32_t>& in_
// Check to see if we already have data for the given id
std::string powerEntityName = mPowerEntityInfos[id].name;
if (stateResidencies.find(powerEntityName) == stateResidencies.end()) {
mStateResidencyDataProviders[id]->getStateResidencies(&stateResidencies);
mStateResidencyDataProviders.at(mStateResidencyDataProviderIndex.at(id))
->getStateResidencies(&stateResidencies);
}
// Append results if we have them

View File

@@ -73,6 +73,8 @@ class PowerStats : public BnPowerStats {
private:
std::vector<std::unique_ptr<IStateResidencyDataProvider>> mStateResidencyDataProviders;
std::vector<PowerEntity> mPowerEntityInfos;
/* Index that maps each power entity id to an entry in mStateResidencyDataProviders */
std::vector<size_t> mStateResidencyDataProviderIndex;
std::vector<std::unique_ptr<IEnergyConsumer>> mEnergyConsumers;
std::vector<EnergyConsumer> mEnergyConsumerInfos;