diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-03-29 20:19:40 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-03-29 20:19:40 +0000 |
commit | f709e34b90b7ae243398bc01d3454213351d95af (patch) | |
tree | a377a6b5dd8293024ed017dc45debffa231b5bf6 /core | |
parent | c0b5023cb2b22565d437164a52ce60ec54b6e4c3 (diff) | |
parent | 05dcf052460ac3516aaca4f5a263cf84ff3f980f (diff) |
Merge "Fix mobile radio battery consumption double counting" into sc-v2-dev
Diffstat (limited to 'core')
-rw-r--r-- | core/java/com/android/internal/os/MobileRadioPowerCalculator.java | 11 | ||||
-rw-r--r-- | core/tests/coretests/src/com/android/internal/os/MobileRadioPowerCalculatorTest.java | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java index eb5993dc2d61..31b807201bb6 100644 --- a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java +++ b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java @@ -99,9 +99,9 @@ public class MobileRadioPowerCalculator extends PowerCalculator { calculateApp(app, uid, powerPerPacketMah, total, query); } - final long consumptionUC = batteryStats.getMobileRadioMeasuredBatteryConsumptionUC(); - final int powerModel = getPowerModel(consumptionUC, query); - calculateRemaining(total, powerModel, batteryStats, rawRealtimeUs, consumptionUC); + final long totalConsumptionUC = batteryStats.getMobileRadioMeasuredBatteryConsumptionUC(); + final int powerModel = getPowerModel(totalConsumptionUC, query); + calculateRemaining(total, powerModel, batteryStats, rawRealtimeUs, totalConsumptionUC); if (total.remainingPowerMah != 0 || total.totalAppPowerMah != 0) { builder.getAggregateBatteryConsumerBuilder( @@ -229,12 +229,13 @@ public class MobileRadioPowerCalculator extends PowerCalculator { private void calculateRemaining(PowerAndDuration total, @BatteryConsumer.PowerModel int powerModel, BatteryStats batteryStats, - long rawRealtimeUs, long consumptionUC) { + long rawRealtimeUs, long totalConsumptionUC) { long signalTimeMs = 0; double powerMah = 0; if (powerModel == BatteryConsumer.POWER_MODEL_MEASURED_ENERGY) { - powerMah = uCtoMah(consumptionUC); + powerMah = uCtoMah(totalConsumptionUC) - total.totalAppPowerMah; + if (powerMah < 0) powerMah = 0; } for (int i = 0; i < NUM_SIGNAL_STRENGTH_LEVELS; i++) { diff --git a/core/tests/coretests/src/com/android/internal/os/MobileRadioPowerCalculatorTest.java b/core/tests/coretests/src/com/android/internal/os/MobileRadioPowerCalculatorTest.java index 48a1da15d574..91fc4fbe3b45 100644 --- a/core/tests/coretests/src/com/android/internal/os/MobileRadioPowerCalculatorTest.java +++ b/core/tests/coretests/src/com/android/internal/os/MobileRadioPowerCalculatorTest.java @@ -166,8 +166,9 @@ public class MobileRadioPowerCalculatorTest { .isEqualTo(BatteryConsumer.POWER_MODEL_MEASURED_ENERGY); BatteryConsumer deviceConsumer = mStatsRule.getDeviceBatteryConsumer(); + // 10_000_000 micro-Coulomb * 1/1000 milli/micro * 1/3600 hour/second = 2.77778 mAh assertThat(deviceConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO)) - .isWithin(PRECISION).of(4.31711); + .isWithin(PRECISION).of(2.77778); assertThat(deviceConsumer.getPowerModel(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO)) .isEqualTo(BatteryConsumer.POWER_MODEL_MEASURED_ENERGY); |