summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2021-02-21 17:33:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-02-21 17:33:31 +0000
commit919528f4017ebd15f1ae4cfd2c4fb477df85164b (patch)
tree14db76154c00d99a4b29724d16ce71256f0d6b7d /core/java
parent758c663e8fe43d9e9f659d77c43086f9bc04a087 (diff)
parent66a11604f5c5acfb668e40399ca2d59ca83a0aba (diff)
Merge "Copy custom measured power to BatteryUsageStats" into sc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/SystemBatteryConsumer.java2
-rw-r--r--core/java/com/android/internal/os/BatteryUsageStatsProvider.java9
-rw-r--r--core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java37
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());