Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 931e1e1d authored by Benjamin Schwartz's avatar Benjamin Schwartz Committed by Automerger Merge Worker
Browse files

power/stats: Index the state residency data providers am: 3bad1229 am: 82a8c674

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

Change-Id: Iff6ede9bcdd6b877b1b85b173a038d369a6a3429
parents 93c84945 82a8c674
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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;