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

Commit 3c63db15 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Automerger Merge Worker
Browse files

Merge "Copy custom measured power to BatteryUsageStats" into sc-dev am: 919528f4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13564227

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id2337ed3ba20a6fb9bcb10a37e0ea033e7373eb4
parents 02efc92c 919528f4
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