diff options
| author | Dmitri Plotnikov <dplotnikov@google.com> | 2021-02-21 17:33:31 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-02-21 17:33:31 +0000 |
| commit | 919528f4017ebd15f1ae4cfd2c4fb477df85164b (patch) | |
| tree | 14db76154c00d99a4b29724d16ce71256f0d6b7d /core/java | |
| parent | 758c663e8fe43d9e9f659d77c43086f9bc04a087 (diff) | |
| parent | 66a11604f5c5acfb668e40399ca2d59ca83a0aba (diff) | |
Merge "Copy custom measured power to BatteryUsageStats" into sc-dev
Diffstat (limited to 'core/java')
3 files changed, 46 insertions, 2 deletions
diff --git a/core/java/android/os/SystemBatteryConsumer.java b/core/java/android/os/SystemBatteryConsumer.java index a02f97f593f5..06cff904a215 100644 --- a/core/java/android/os/SystemBatteryConsumer.java +++ b/core/java/android/os/SystemBatteryConsumer.java @@ -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; diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java index db87a057175d..eef9fa74e83a 100644 --- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java +++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java @@ -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 = diff --git a/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java b/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java index 4babe8d5fe96..2606d80eaa09 100644 --- a/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java +++ b/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java @@ -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 @@ -26,6 +31,38 @@ public class CustomMeasuredPowerCalculator extends PowerCalculator { } @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) { updateCustomMeasuredPowerMah(app, u.getCustomMeasuredEnergiesMicroJoules()); |
