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

Commit 2b29041f authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Add EnergyConsumer collection to CpuPowerStatsCollector

Bug: 302013436
Test: atest PowerStatsTests
Change-Id: Ie1c4c3e8f98609174a5317a88e51ddc3c70a86e2
parent 44e23ae2
Loading
Loading
Loading
Loading
+24 −104
Original line number Original line Diff line number Diff line
@@ -44,7 +44,6 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashMap;
import java.util.Locale;


/**
/**
 * Reports power consumption values for various device activities. Reads values from an XML file.
 * Reports power consumption values for various device activities. Reads values from an XML file.
@@ -295,7 +294,7 @@ public class PowerProfile {


    private static final long SUBSYSTEM_FIELDS_MASK = 0xFFFF_FFFF;
    private static final long SUBSYSTEM_FIELDS_MASK = 0xFFFF_FFFF;


    private static final int DEFAULT_CPU_POWER_BRACKET_NUMBER = 3;
    public static final int POWER_BRACKETS_UNSPECIFIED = -1;


    /**
    /**
     * A map from Power Use Item to its power consumption.
     * A map from Power Use Item to its power consumption.
@@ -361,7 +360,7 @@ public class PowerProfile {
        }
        }
        initCpuClusters();
        initCpuClusters();
        initCpuScalingPolicies();
        initCpuScalingPolicies();
        initCpuPowerBrackets(DEFAULT_CPU_POWER_BRACKET_NUMBER);
        initCpuPowerBrackets();
        initDisplays();
        initDisplays();
        initModem();
        initModem();
    }
    }
@@ -560,8 +559,7 @@ public class PowerProfile {
    /**
    /**
     * Parses or computes CPU power brackets: groups of states with similar power requirements.
     * Parses or computes CPU power brackets: groups of states with similar power requirements.
     */
     */
    @VisibleForTesting
    private void initCpuPowerBrackets() {
    public void initCpuPowerBrackets(int defaultCpuPowerBracketNumber) {
        boolean anyBracketsSpecified = false;
        boolean anyBracketsSpecified = false;
        boolean allBracketsSpecified = true;
        boolean allBracketsSpecified = true;
        for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
        for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
@@ -580,8 +578,12 @@ public class PowerProfile {
                    "Power brackets should be specified for all scaling policies or none");
                    "Power brackets should be specified for all scaling policies or none");
        }
        }


        if (!allBracketsSpecified) {
            mCpuPowerBracketCount = POWER_BRACKETS_UNSPECIFIED;
            return;
        }

        mCpuPowerBracketCount = 0;
        mCpuPowerBracketCount = 0;
        if (allBracketsSpecified) {
        for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
        for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
            int policy = mCpuScalingPolicies.keyAt(i);
            int policy = mCpuScalingPolicies.keyAt(i);
            CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
            CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
@@ -602,57 +604,6 @@ public class PowerProfile {
            }
            }
        }
        }
        mCpuPowerBracketCount++;
        mCpuPowerBracketCount++;
        } else {
            double minPower = Double.MAX_VALUE;
            double maxPower = Double.MIN_VALUE;
            int stateCount = 0;
            for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
                int policy = mCpuScalingPolicies.keyAt(i);
                CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
                final int steps = cpuScalingPolicyPower.stepPower.length;
                for (int step = 0; step < steps; step++) {
                    final double power = getAveragePowerForCpuScalingStep(policy, step);
                    if (power < minPower) {
                        minPower = power;
                    }
                    if (power > maxPower) {
                        maxPower = power;
                    }
                }
                stateCount += steps;
            }

            if (stateCount <= defaultCpuPowerBracketNumber) {
                mCpuPowerBracketCount = stateCount;
                int bracket = 0;
                for (int i = 0; i < mCpuScalingPolicies.size(); i++) {
                    CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
                    final int steps = cpuScalingPolicyPower.stepPower.length;
                    for (int step = 0; step < steps; step++) {
                        cpuScalingPolicyPower.powerBrackets[step] = bracket++;
                    }
                }
            } else {
                mCpuPowerBracketCount = defaultCpuPowerBracketNumber;
                final double minLogPower = Math.log(minPower);
                final double logBracket = (Math.log(maxPower) - minLogPower)
                        / defaultCpuPowerBracketNumber;

                for (int i = mCpuScalingPolicies.size() - 1; i >= 0; i--) {
                    int policy = mCpuScalingPolicies.keyAt(i);
                    CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
                    final int steps = cpuScalingPolicyPower.stepPower.length;
                    for (int step = 0; step < steps; step++) {
                        final double power = getAveragePowerForCpuScalingStep(policy, step);
                        int bracket = (int) ((Math.log(power) - minLogPower) / logBracket);
                        if (bracket >= defaultCpuPowerBracketNumber) {
                            bracket = defaultCpuPowerBracketNumber - 1;
                        }
                        cpuScalingPolicyPower.powerBrackets[step] = bracket;
                    }
                }
            }
        }
    }
    }


    private static class CpuScalingPolicyPower {
    private static class CpuScalingPolicyPower {
@@ -771,43 +722,12 @@ public class PowerProfile {


    /**
    /**
     * Returns the number of CPU power brackets: groups of states with similar power requirements.
     * Returns the number of CPU power brackets: groups of states with similar power requirements.
     * If power brackets are not specified, returns {@link #POWER_BRACKETS_UNSPECIFIED}
     */
     */
    public int getCpuPowerBracketCount() {
    public int getCpuPowerBracketCount() {
        return mCpuPowerBracketCount;
        return mCpuPowerBracketCount;
    }
    }


    /**
     * Description of a CPU power bracket: which cluster/frequency combinations are included.
     */
    public String getCpuPowerBracketDescription(CpuScalingPolicies cpuScalingPolicies,
            int powerBracket) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mCpuScalingPolicies.size(); i++) {
            int policy = mCpuScalingPolicies.keyAt(i);
            CpuScalingPolicyPower cpuScalingPolicyPower = mCpuScalingPolicies.valueAt(i);
            int[] brackets = cpuScalingPolicyPower.powerBrackets;
            int[] freqs = cpuScalingPolicies.getFrequencies(policy);
            for (int step = 0; step < brackets.length; step++) {
                if (brackets[step] == powerBracket) {
                    if (sb.length() != 0) {
                        sb.append(", ");
                    }
                    if (mCpuScalingPolicies.size() > 1) {
                        sb.append(policy).append('/');
                    }
                    if (step < freqs.length) {
                        sb.append(freqs[step] / 1000);
                    }
                    sb.append('(');
                    sb.append(String.format(Locale.US, "%.1f",
                            getAveragePowerForCpuScalingStep(policy, step)));
                    sb.append(')');
                }
            }
        }
        return sb.toString();
    }

    /**
    /**
     * Returns the CPU power bracket corresponding to the specified scaling policy and frequency
     * Returns the CPU power bracket corresponding to the specified scaling policy and frequency
     * step
     * step
+0 −66
Original line number Original line Diff line number Diff line
@@ -21,16 +21,12 @@ import static com.android.internal.os.PowerProfile.POWER_GROUP_DISPLAY_AMBIENT;
import static com.android.internal.os.PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL;
import static com.android.internal.os.PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL;
import static com.android.internal.os.PowerProfile.POWER_GROUP_DISPLAY_SCREEN_ON;
import static com.android.internal.os.PowerProfile.POWER_GROUP_DISPLAY_SCREEN_ON;


import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.junit.Assert.fail;


import android.annotation.XmlRes;
import android.annotation.XmlRes;
import android.content.Context;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.content.res.XmlResourceParser;
import android.util.SparseArray;


import androidx.test.InstrumentationRegistry;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;
@@ -540,66 +536,4 @@ public class PowerProfileTest {
    private void assertEquals(double expected, double actual) {
    private void assertEquals(double expected, double actual) {
        Assert.assertEquals(expected, actual, 0.1);
        Assert.assertEquals(expected, actual, 0.1);
    }
    }

    @Test
    public void powerBrackets_specifiedInPowerProfile() {
        mProfile.forceInitForTesting(mContext, R.xml.power_profile_test_power_brackets);
        mProfile.initCpuPowerBrackets(8);

        int cpuPowerBracketCount = mProfile.getCpuPowerBracketCount();
        assertThat(cpuPowerBracketCount).isEqualTo(2);
        assertThat(new int[]{
                mProfile.getCpuPowerBracketForScalingStep(0, 0),
                mProfile.getCpuPowerBracketForScalingStep(4, 0),
                mProfile.getCpuPowerBracketForScalingStep(4, 1),
        }).isEqualTo(new int[]{1, 1, 0});
    }

    @Test
    public void powerBrackets_automatic() {
        mProfile.forceInitForTesting(mContext, R.xml.power_profile_test);
        CpuScalingPolicies scalingPolicies = new CpuScalingPolicies(
                new SparseArray<>() {{
                    put(0, new int[]{0, 1, 2});
                    put(3, new int[]{3, 4});
                }},
                new SparseArray<>() {{
                    put(0, new int[]{300000, 1000000, 2000000});
                    put(3, new int[]{300000, 1000000, 2500000, 3000000});
                }});

        assertThat(mProfile.getCpuPowerBracketCount()).isEqualTo(3);
        assertThat(mProfile.getCpuPowerBracketDescription(scalingPolicies, 0))
                .isEqualTo("0/300(10.0)");
        assertThat(mProfile.getCpuPowerBracketDescription(scalingPolicies, 1))
                .isEqualTo("0/1000(20.0), 0/2000(30.0), 3/300(25.0)");
        assertThat(mProfile.getCpuPowerBracketDescription(scalingPolicies, 2))
                .isEqualTo("3/1000(35.0), 3/2500(50.0), 3/3000(60.0)");
        assertThat(new int[]{
                mProfile.getCpuPowerBracketForScalingStep(0, 0),
                mProfile.getCpuPowerBracketForScalingStep(0, 1),
                mProfile.getCpuPowerBracketForScalingStep(0, 2),
                mProfile.getCpuPowerBracketForScalingStep(3, 0),
                mProfile.getCpuPowerBracketForScalingStep(3, 1),
                mProfile.getCpuPowerBracketForScalingStep(3, 2),
                mProfile.getCpuPowerBracketForScalingStep(3, 3),
        }).isEqualTo(new int[]{0, 1, 1, 1, 2, 2, 2});
    }

    @Test
    public void powerBrackets_moreBracketsThanStates() {
        mProfile.forceInitForTesting(mContext, R.xml.power_profile_test);
        mProfile.initCpuPowerBrackets(8);

        assertThat(mProfile.getCpuPowerBracketCount()).isEqualTo(7);
        assertThat(new int[]{
                mProfile.getCpuPowerBracketForScalingStep(0, 0),
                mProfile.getCpuPowerBracketForScalingStep(0, 1),
                mProfile.getCpuPowerBracketForScalingStep(0, 2),
                mProfile.getCpuPowerBracketForScalingStep(3, 0),
                mProfile.getCpuPowerBracketForScalingStep(3, 1),
                mProfile.getCpuPowerBracketForScalingStep(3, 2),
                mProfile.getCpuPowerBracketForScalingStep(3, 3),
        }).isEqualTo(new int[]{0, 1, 2, 3, 4, 5, 6});
    }
}
}
+7 −15
Original line number Original line Diff line number Diff line
@@ -10937,7 +10937,8 @@ public class BatteryStatsImpl extends BatteryStats {
        }
        }
        mCpuPowerStatsCollector = new CpuPowerStatsCollector(mCpuScalingPolicies, mPowerProfile,
        mCpuPowerStatsCollector = new CpuPowerStatsCollector(mCpuScalingPolicies, mPowerProfile,
                mHandler, mBatteryStatsConfig.getPowerStatsThrottlePeriodCpu());
                () -> mBatteryVoltageMv, mHandler,
                mBatteryStatsConfig.getPowerStatsThrottlePeriodCpu());
        mCpuPowerStatsCollector.addConsumer(this::recordPowerStats);
        mCpuPowerStatsCollector.addConsumer(this::recordPowerStats);
        mStartCount++;
        mStartCount++;
@@ -14437,6 +14438,7 @@ public class BatteryStatsImpl extends BatteryStats {
            final int level, /* not final */ int temp, final int voltageMv, final int chargeUah,
            final int level, /* not final */ int temp, final int voltageMv, final int chargeUah,
            final int chargeFullUah, final long chargeTimeToFullSeconds,
            final int chargeFullUah, final long chargeTimeToFullSeconds,
            final long elapsedRealtimeMs, final long uptimeMs, final long currentTimeMs) {
            final long elapsedRealtimeMs, final long uptimeMs, final long currentTimeMs) {
        // Temperature is encoded without the signed bit, so clamp any negative temperatures to 0.
        // Temperature is encoded without the signed bit, so clamp any negative temperatures to 0.
        temp = Math.max(0, temp);
        temp = Math.max(0, temp);
@@ -15621,18 +15623,6 @@ public class BatteryStatsImpl extends BatteryStats {
        }
        }
    }
    }
    @GuardedBy("this")
    private void dumpCpuPowerBracketsLocked(PrintWriter pw) {
        pw.println("CPU power brackets; cluster/freq in MHz(avg current in mA):");
        final int bracketCount = mPowerProfile.getCpuPowerBracketCount();
        for (int bracket = 0; bracket < bracketCount; bracket++) {
            pw.print("    ");
            pw.print(bracket);
            pw.print(": ");
            pw.println(mPowerProfile.getCpuPowerBracketDescription(mCpuScalingPolicies, bracket));
        }
    }
    /**
    /**
     * Dump EnergyConsumer stats
     * Dump EnergyConsumer stats
     */
     */
@@ -16989,8 +16979,10 @@ public class BatteryStatsImpl extends BatteryStats {
            pw.println();
            pw.println();
            dumpConstantsLocked(pw);
            dumpConstantsLocked(pw);
            if (mCpuPowerStatsCollector != null) {
                pw.println();
                pw.println();
            dumpCpuPowerBracketsLocked(pw);
                mCpuPowerStatsCollector.dumpCpuPowerBracketsLocked(pw);
            }
            pw.println();
            pw.println();
            dumpEnergyConsumerStatsLocked(pw);
            dumpEnergyConsumerStatsLocked(pw);
+29 −22
Original line number Original line Diff line number Diff line
@@ -36,10 +36,6 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
    private final int mCpuClusterCount;
    private final int mCpuClusterCount;
    // Total number of CPU scaling steps across all clusters
    // Total number of CPU scaling steps across all clusters
    private final int mCpuScalingStepCount;
    private final int mCpuScalingStepCount;
    // Number of CPU power brackets used for compression of time-in-state data
    private final int mCpuPowerBracketCount;
    // Map of scaling step to the corresponding power brackets mScalingStepToBracket[step]->bracket
    private final int[] mScalingStepToBracket;
    // Map of scaling step to the corresponding core cluster mScalingStepToCluster[step]->cluster
    // Map of scaling step to the corresponding core cluster mScalingStepToCluster[step]->cluster
    private final int[] mScalingStepToCluster;
    private final int[] mScalingStepToCluster;
    // Average power consumed by the CPU when it is powered up (per power_profile.xml)
    // Average power consumed by the CPU when it is powered up (per power_profile.xml)
@@ -64,13 +60,10 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces


    public CpuAggregatedPowerStatsProcessor(PowerProfile powerProfile,
    public CpuAggregatedPowerStatsProcessor(PowerProfile powerProfile,
            CpuScalingPolicies scalingPolicies) {
            CpuScalingPolicies scalingPolicies) {
        int[] scalingStepToPowerBracketMap = CpuPowerStatsCollector.getScalingStepToPowerBracketMap(
                powerProfile, scalingPolicies);
        mCpuScalingStepCount = scalingPolicies.getScalingStepCount();
        mCpuScalingStepCount = scalingPolicies.getScalingStepCount();
        mCpuPowerBracketCount = powerProfile.getCpuPowerBracketCount();
        mScalingStepToCluster = new int[mCpuScalingStepCount];
        mScalingStepToCluster = new int[scalingStepToPowerBracketMap.length];
        mPowerMultipliersByScalingStep = new double[mCpuScalingStepCount];
        mScalingStepToBracket = new int[scalingStepToPowerBracketMap.length];

        mPowerMultipliersByScalingStep = new double[scalingStepToPowerBracketMap.length];
        int step = 0;
        int step = 0;
        int[] policies = scalingPolicies.getPolicies();
        int[] policies = scalingPolicies.getPolicies();
        mCpuClusterCount = policies.length;
        mCpuClusterCount = policies.length;
@@ -84,8 +77,6 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
                mScalingStepToCluster[step] = cluster;
                mScalingStepToCluster[step] = cluster;
                mPowerMultipliersByScalingStep[step] =
                mPowerMultipliersByScalingStep[step] =
                        powerProfile.getAveragePowerForCpuScalingStep(policy, i) / HOUR_IN_MILLIS;
                        powerProfile.getAveragePowerForCpuScalingStep(policy, i) / HOUR_IN_MILLIS;
                mScalingStepToBracket[step] =
                        powerProfile.getCpuPowerBracketForScalingStep(policy, i);
                step++;
                step++;
            }
            }
        }
        }
@@ -248,14 +239,16 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
    private void estimatePowerByDeviceState(PowerComponentAggregatedPowerStats stats,
    private void estimatePowerByDeviceState(PowerComponentAggregatedPowerStats stats,
            Intermediates intermediates) {
            Intermediates intermediates) {
        int cpuScalingStepCount = mStatsLayout.getCpuScalingStepCount();
        int cpuScalingStepCount = mStatsLayout.getCpuScalingStepCount();
        int powerBracketCount = mStatsLayout.getCpuPowerBracketCount();
        int[] scalingStepToBracketMap = mStatsLayout.getScalingStepToPowerBracketMap();
        List<DeviceStateEstimation> deviceStateEstimations = mPlan.deviceStateEstimations;
        List<DeviceStateEstimation> deviceStateEstimations = mPlan.deviceStateEstimations;
        for (int dse = deviceStateEstimations.size() - 1; dse >= 0; dse--) {
        for (int dse = deviceStateEstimations.size() - 1; dse >= 0; dse--) {
            DeviceStateEstimation deviceStateEstimation = deviceStateEstimations.get(dse);
            DeviceStateEstimation deviceStateEstimation = deviceStateEstimations.get(dse);
            deviceStateEstimation.intermediates = new DeviceStatsIntermediates();
            deviceStateEstimation.intermediates = new DeviceStatsIntermediates();
            DeviceStatsIntermediates deviceStatsIntermediates =
            DeviceStatsIntermediates deviceStatsIntermediates =
                    (DeviceStatsIntermediates) deviceStateEstimation.intermediates;
                    (DeviceStatsIntermediates) deviceStateEstimation.intermediates;
            deviceStatsIntermediates.timeByBracket = new long[mCpuPowerBracketCount];
            deviceStatsIntermediates.timeByBracket = new long[powerBracketCount];
            deviceStatsIntermediates.powerByBracket = new double[mCpuPowerBracketCount];
            deviceStatsIntermediates.powerByBracket = new double[powerBracketCount];


            stats.getDeviceStats(mTmpDeviceStatsArray, deviceStateEstimation.stateValues);
            stats.getDeviceStats(mTmpDeviceStatsArray, deviceStateEstimation.stateValues);
            double power = 0;
            double power = 0;
@@ -265,12 +258,13 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
                }
                }


                long timeInStep = mStatsLayout.getTimeByScalingStep(mTmpDeviceStatsArray, step);
                long timeInStep = mStatsLayout.getTimeByScalingStep(mTmpDeviceStatsArray, step);
                deviceStatsIntermediates.timeByBracket[mScalingStepToBracket[step]] += timeInStep;

                double stepPower = intermediates.powerByScalingStep[step] * timeInStep
                double stepPower = intermediates.powerByScalingStep[step] * timeInStep
                                   / intermediates.timeByScalingStep[step];
                                   / intermediates.timeByScalingStep[step];
                power += stepPower;
                power += stepPower;
                deviceStatsIntermediates.powerByBracket[mScalingStepToBracket[step]] += stepPower;

                int bracket = scalingStepToBracketMap[step];
                deviceStatsIntermediates.timeByBracket[bracket] += timeInStep;
                deviceStatsIntermediates.powerByBracket[bracket] += stepPower;
            }
            }
            deviceStatsIntermediates.power = power;
            deviceStatsIntermediates.power = power;
            mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray, power);
            mStatsLayout.setDevicePowerEstimate(mTmpDeviceStatsArray, power);
@@ -283,8 +277,9 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
            CombinedDeviceStateEstimate cdse = mPlan.combinedDeviceStateEstimations.get(i);
            CombinedDeviceStateEstimate cdse = mPlan.combinedDeviceStateEstimations.get(i);
            DeviceStatsIntermediates cdseIntermediates =
            DeviceStatsIntermediates cdseIntermediates =
                    new DeviceStatsIntermediates();
                    new DeviceStatsIntermediates();
            cdseIntermediates.timeByBracket = new long[mCpuPowerBracketCount];
            int bracketCount = mStatsLayout.getCpuPowerBracketCount();
            cdseIntermediates.powerByBracket = new double[mCpuPowerBracketCount];
            cdseIntermediates.timeByBracket = new long[bracketCount];
            cdseIntermediates.powerByBracket = new double[bracketCount];
            cdse.intermediates = cdseIntermediates;
            cdse.intermediates = cdseIntermediates;
            List<DeviceStateEstimation> deviceStateEstimations = cdse.deviceStateEstimations;
            List<DeviceStateEstimation> deviceStateEstimations = cdse.deviceStateEstimations;
            for (int j = deviceStateEstimations.size() - 1; j >= 0; j--) {
            for (int j = deviceStateEstimations.size() - 1; j >= 0; j--) {
@@ -292,7 +287,7 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
                DeviceStatsIntermediates intermediates =
                DeviceStatsIntermediates intermediates =
                        (DeviceStatsIntermediates) dse.intermediates;
                        (DeviceStatsIntermediates) dse.intermediates;
                cdseIntermediates.power += intermediates.power;
                cdseIntermediates.power += intermediates.power;
                for (int k = 0; k < intermediates.powerByBracket.length; k++) {
                for (int k = 0; k < bracketCount; k++) {
                    cdseIntermediates.timeByBracket[k] += intermediates.timeByBracket[k];
                    cdseIntermediates.timeByBracket[k] += intermediates.timeByBracket[k];
                    cdseIntermediates.powerByBracket[k] += intermediates.powerByBracket[k];
                    cdseIntermediates.powerByBracket[k] += intermediates.powerByBracket[k];
                }
                }
@@ -319,7 +314,8 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
                    continue;
                    continue;
                }
                }


                long timeInBracket = mStatsLayout.getTimeByPowerBracket(mTmpUidStatsArray, bracket);
                long timeInBracket = mStatsLayout.getUidTimeByPowerBracket(mTmpUidStatsArray,
                        bracket);
                if (timeInBracket == 0) {
                if (timeInBracket == 0) {
                    continue;
                    continue;
                }
                }
@@ -354,6 +350,17 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
            sb.append(mStatsLayout.getTimeByCluster(stats, cluster));
            sb.append(mStatsLayout.getTimeByCluster(stats, cluster));
        }
        }
        sb.append("] uptime: ").append(mStatsLayout.getUptime(stats));
        sb.append("] uptime: ").append(mStatsLayout.getUptime(stats));
        int energyConsumerCount = mStatsLayout.getEnergyConsumerCount();
        if (energyConsumerCount > 0) {
            sb.append(" energy: [");
            for (int i = 0; i < energyConsumerCount; i++) {
                if (i != 0) {
                    sb.append(", ");
                }
                sb.append(mStatsLayout.getConsumedEnergy(stats, i));
            }
            sb.append("]");
        }
        sb.append(" power: ").append(
        sb.append(" power: ").append(
                BatteryStats.formatCharge(mStatsLayout.getDevicePowerEstimate(stats)));
                BatteryStats.formatCharge(mStatsLayout.getDevicePowerEstimate(stats)));
        return sb.toString();
        return sb.toString();
@@ -369,7 +376,7 @@ public class CpuAggregatedPowerStatsProcessor extends AggregatedPowerStatsProces
            if (bracket != 0) {
            if (bracket != 0) {
                sb.append(", ");
                sb.append(", ");
            }
            }
            sb.append(mStatsLayout.getTimeByPowerBracket(stats, bracket));
            sb.append(mStatsLayout.getUidTimeByPowerBracket(stats, bracket));
        }
        }
        sb.append("] power: ").append(
        sb.append("] power: ").append(
                BatteryStats.formatCharge(mStatsLayout.getUidPowerEstimate(stats)));
                BatteryStats.formatCharge(mStatsLayout.getUidPowerEstimate(stats)));
+397 −52

File changed.

Preview size limit exceeded, changes collapsed.

Loading