From 57123001a416509ea7680501424d2ddf3ae55088 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Fri, 12 Jun 2015 16:12:07 -0700 Subject: [PATCH] BatteryStatsHelper: Fix some lost power Looks like we were losing some power calculations from the CPU side of Bluetooth and WiFi if there was no controller activity ocurring. Also add finer breakdown of power to BatteryStats dumpsys for WiFi and Bluetooth. Change-Id: Ic3ce3e4e3b854f17f9a32fd4bdc47a8ea74ca439 --- core/java/android/os/BatteryStats.java | 9 ++++++++- .../com/android/internal/os/BatteryStatsHelper.java | 11 +++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index f76192e3f1d32..d165240e2394f 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -3541,8 +3541,15 @@ public abstract class BatteryStats implements Parcelable { } printmAh(pw, bs.totalPowerMah); - if (bs.drainType == BatterySipper.DrainType.APP) { + if (bs.usagePowerMah != bs.totalPowerMah) { + // If the usage (generic power) isn't the whole amount, we list out + // what components are involved in the calculation. + pw.print(" ("); + if (bs.usagePowerMah != 0) { + pw.print(" usage="); + printmAh(pw, bs.usagePowerMah); + } if (bs.cpuPowerMah != 0) { pw.print(" cpu="); printmAh(pw, bs.cpuPowerMah); diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java index 4290e22e0b84b..6a85afbdb322b 100644 --- a/core/java/com/android/internal/os/BatteryStatsHelper.java +++ b/core/java/com/android/internal/os/BatteryStatsHelper.java @@ -587,6 +587,7 @@ public final class BatteryStatsHelper { bs.add(wbs); } bs.computeMobilemspp(); + bs.sumPower(); } private void addIdleUsage() { @@ -612,9 +613,8 @@ public final class BatteryStatsHelper { private void addWiFiUsage() { BatterySipper bs = new BatterySipper(DrainType.WIFI, null, 0); mWifiPowerCalculator.calculateRemaining(bs, mStats, mRawRealtime, mRawUptime, mStatsType); - bs.sumPower(); - if (bs.totalPowerMah > 0 || !mWifiSippers.isEmpty()) { - aggregateSippers(bs, mWifiSippers, "WIFI"); + aggregateSippers(bs, mWifiSippers, "WIFI"); + if (bs.totalPowerMah > 0) { mUsageList.add(bs); } } @@ -627,8 +627,8 @@ public final class BatteryStatsHelper { BatterySipper bs = new BatterySipper(BatterySipper.DrainType.BLUETOOTH, null, 0); mBluetoothPowerCalculator.calculateRemaining(bs, mStats, mRawRealtime, mRawUptime, mStatsType); - if (bs.sumPower() > 0) { - aggregateSippers(bs, mBluetoothSippers, "Bluetooth"); + aggregateSippers(bs, mBluetoothSippers, "Bluetooth"); + if (bs.totalPowerMah > 0) { mUsageList.add(bs); } } @@ -639,7 +639,6 @@ public final class BatteryStatsHelper { BatterySipper bs = new BatterySipper(DrainType.USER, null, 0); bs.userId = userId; aggregateSippers(bs, mUserSippers.valueAt(i), "User"); - bs.sumPower(); mUsageList.add(bs); } }