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

Commit 919528f4 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Copy custom measured power to BatteryUsageStats" into sc-dev

parents 758c663e 66a11604
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ public class SystemBatteryConsumer extends BatteryConsumer implements Parcelable
            // Reserved: UNACCOUNTED,
            // Reserved: USER,
            DRAIN_TYPE_WIFI,
            DRAIN_TYPE_CUSTOM,
    })
    @Retention(RetentionPolicy.SOURCE)
    public static @interface DrainType {
@@ -66,6 +67,7 @@ public class SystemBatteryConsumer extends BatteryConsumer implements Parcelable
    public static final int DRAIN_TYPE_PHONE = 9;
    public static final int DRAIN_TYPE_SCREEN = 10;
    public static final int DRAIN_TYPE_WIFI = 13;
    public static final int DRAIN_TYPE_CUSTOM = 14;

    @DrainType
    private final int mDrainType;
+7 −2
Original line number Diff line number Diff line
@@ -113,8 +113,13 @@ public class BatteryUsageStatsProvider {
    }

    private BatteryUsageStats getBatteryUsageStats(BatteryUsageStatsQuery query) {
        // TODO(b/174186358): read extra power component number from configuration
        final int customPowerComponentCount = 0;
        final long[] customMeasuredEnergiesMicroJoules =
                mStats.getCustomMeasuredEnergiesMicroJoules();
        final int customPowerComponentCount = customMeasuredEnergiesMicroJoules != null
                        ? customMeasuredEnergiesMicroJoules.length
                        : 0;

        // TODO(b/174186358): read extra time component number from configuration
        final int customTimeComponentCount = 0;

        final BatteryUsageStats.Builder batteryUsageStatsBuilder =
+37 −0
Original line number Diff line number Diff line
@@ -15,7 +15,12 @@
 */
package com.android.internal.os;

import android.os.BatteryConsumer;
import android.os.BatteryStats;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
import android.os.SystemBatteryConsumer;
import android.os.UidBatteryConsumer;

/**
 * Calculates the amount of power consumed by custom energy consumers (i.e. consumers of type
@@ -25,6 +30,38 @@ public class CustomMeasuredPowerCalculator extends PowerCalculator {
    public CustomMeasuredPowerCalculator(PowerProfile powerProfile) {
    }

    @Override
    public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
            long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
        super.calculate(builder, batteryStats, rawRealtimeUs, rawUptimeUs, query);
        final double[] customMeasuredPowerMah = calculateMeasuredEnergiesMah(
                batteryStats.getCustomMeasuredEnergiesMicroJoules());
        if (customMeasuredPowerMah != null) {
            final SystemBatteryConsumer.Builder systemBatteryConsumerBuilder =
                    builder.getOrCreateSystemBatteryConsumerBuilder(
                            SystemBatteryConsumer.DRAIN_TYPE_CUSTOM);
            for (int i = 0; i < customMeasuredPowerMah.length; i++) {
                systemBatteryConsumerBuilder.setConsumedPowerForCustomComponent(
                        BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + i,
                        customMeasuredPowerMah[i]);
            }
        }
    }

    @Override
    protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u,
            long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
        final double[] customMeasuredPowerMah = calculateMeasuredEnergiesMah(
                u.getCustomMeasuredEnergiesMicroJoules());
        if (customMeasuredPowerMah != null) {
            for (int i = 0; i < customMeasuredPowerMah.length; i++) {
                app.setConsumedPowerForCustomComponent(
                        BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + i,
                        customMeasuredPowerMah[i]);
            }
        }
    }

    @Override
    protected void calculateApp(BatterySipper app, BatteryStats.Uid u, long rawRealtimeUs,
            long rawUptimeUs, int statsType) {
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import org.junit.runners.Suite;
        BstatsCpuTimesValidationTest.class,
        CameraPowerCalculatorTest.class,
        CpuPowerCalculatorTest.class,
        CustomMeasuredPowerCalculatorTest.class,
        DischargedPowerCalculatorTest.class,
        FlashlightPowerCalculatorTest.class,
        GnssPowerCalculatorTest.class,
+7 −1
Original line number Diff line number Diff line
@@ -146,7 +146,13 @@ public class BatteryUsageStatsRule implements TestRule {
    }

    BatteryUsageStats apply(BatteryUsageStatsQuery query, PowerCalculator... calculators) {
        BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(0, 0);
        final long[] customMeasuredEnergiesMicroJoules =
                mBatteryStats.getCustomMeasuredEnergiesMicroJoules();
        final int customMeasuredEnergiesCount = customMeasuredEnergiesMicroJoules != null
                ? customMeasuredEnergiesMicroJoules.length
                : 0;
        BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(
                customMeasuredEnergiesCount, 0);
        SparseArray<? extends BatteryStats.Uid> uidStats = mBatteryStats.getUidStats();
        for (int i = 0; i < uidStats.size(); i++) {
            builder.getOrCreateUidBatteryConsumerBuilder(uidStats.valueAt(i));
Loading