Loading core/java/android/os/SystemBatteryConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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; Loading core/java/com/android/internal/os/BatteryUsageStatsProvider.java +7 −2 Original line number Diff line number Diff line Loading @@ -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 = Loading core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java +37 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.junit.runners.Suite; BstatsCpuTimesValidationTest.class, CameraPowerCalculatorTest.class, CpuPowerCalculatorTest.class, CustomMeasuredPowerCalculatorTest.class, DischargedPowerCalculatorTest.class, FlashlightPowerCalculatorTest.class, GnssPowerCalculatorTest.class, Loading core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java +7 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
core/java/android/os/SystemBatteryConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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; Loading
core/java/com/android/internal/os/BatteryUsageStatsProvider.java +7 −2 Original line number Diff line number Diff line Loading @@ -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 = Loading
core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java +37 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) { Loading
core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import org.junit.runners.Suite; BstatsCpuTimesValidationTest.class, CameraPowerCalculatorTest.class, CpuPowerCalculatorTest.class, CustomMeasuredPowerCalculatorTest.class, DischargedPowerCalculatorTest.class, FlashlightPowerCalculatorTest.class, GnssPowerCalculatorTest.class, Loading
core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java +7 −1 Original line number Diff line number Diff line Loading @@ -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