diff options
| author | Dmitri Plotnikov <dplotnikov@google.com> | 2021-05-12 22:52:41 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-05-12 22:52:41 +0000 |
| commit | dd9dcdfb72b89002122ecbe03606b78d4012899f (patch) | |
| tree | a40a673c84f0b7890d1672241873413caa0f5331 /core/java | |
| parent | 79d74a64482d0002ddc3b489de9789227e8d7090 (diff) | |
| parent | 59dd00ce469c8d571e11cac4b59f8025793e614a (diff) | |
Merge "Fix device-level wakelock battery attribution" into sc-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/os/WakelockPowerCalculator.java | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/core/java/com/android/internal/os/WakelockPowerCalculator.java b/core/java/com/android/internal/os/WakelockPowerCalculator.java index d5941072acf9..e0ef1291800d 100644 --- a/core/java/com/android/internal/os/WakelockPowerCalculator.java +++ b/core/java/com/android/internal/os/WakelockPowerCalculator.java @@ -75,22 +75,29 @@ public class WakelockPowerCalculator extends PowerCalculator { // this remainder to the OS, if possible. calculateRemaining(result, batteryStats, rawRealtimeUs, rawUptimeUs, BatteryStats.STATS_SINCE_CHARGED, osPowerMah, osDurationMs, totalAppDurationMs); + final double remainingPowerMah = result.powerMah; if (osBatteryConsumer != null) { osBatteryConsumer.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.durationMs) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.powerMah); + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, remainingPowerMah); } - final long wakeTimeMillis = - calculateWakeTimeMillis(batteryStats, rawRealtimeUs, rawUptimeUs); - final double powerMah = mPowerEstimator.calculatePower(wakeTimeMillis); + long wakeTimeMs = calculateWakeTimeMillis(batteryStats, rawRealtimeUs, rawUptimeUs); + if (wakeTimeMs < 0) { + wakeTimeMs = 0; + } builder.getAggregateBatteryConsumerBuilder( BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE) - .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, wakeTimeMillis) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, powerMah); + .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + wakeTimeMs) + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + appPowerMah + remainingPowerMah); builder.getAggregateBatteryConsumerBuilder( BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, appPowerMah); + .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + totalAppDurationMs) + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + appPowerMah); } @Override @@ -167,9 +174,16 @@ public class WakelockPowerCalculator extends PowerCalculator { } result.durationMs = osDurationMs + wakeTimeMillis; result.powerMah = osPowerMah + power; + } else { + result.durationMs = 0; + result.powerMah = 0; } } + /** + * Return on-battery/screen-off time. May be negative if the screen-on time exceeds + * the on-battery time. + */ private long calculateWakeTimeMillis(BatteryStats batteryStats, long rawRealtimeUs, long rawUptimeUs) { final long batteryUptimeUs = batteryStats.getBatteryUptime(rawUptimeUs); |
