summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/os/BluetoothPowerCalculator.java31
1 files changed, 19 insertions, 12 deletions
diff --git a/core/java/com/android/internal/os/BluetoothPowerCalculator.java b/core/java/com/android/internal/os/BluetoothPowerCalculator.java
index 6e99bbbf2331..c322258eda85 100644
--- a/core/java/com/android/internal/os/BluetoothPowerCalculator.java
+++ b/core/java/com/android/internal/os/BluetoothPowerCalculator.java
@@ -51,7 +51,7 @@ public class BluetoothPowerCalculator extends PowerCalculator {
@Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
- if (!mHasBluetoothPowerController || !batteryStats.hasBluetoothActivityReporting()) {
+ if (!batteryStats.hasBluetoothActivityReporting()) {
return;
}
@@ -69,8 +69,8 @@ public class BluetoothPowerCalculator extends PowerCalculator {
final ControllerActivityCounter activityCounter =
batteryStats.getBluetoothControllerActivity();
final long systemDurationMs = calculateDuration(activityCounter);
- final double systemPowerMah =
- calculatePowerMah(powerModel, measuredChargeUC, activityCounter);
+ final double systemPowerMah = calculatePowerMah(powerModel, measuredChargeUC,
+ activityCounter, query.shouldForceUsePowerProfileModel());
// Subtract what the apps used, but clamp to 0.
final long systemComponentDurationMs = Math.max(0, systemDurationMs - total.durationMs);
@@ -100,7 +100,8 @@ public class BluetoothPowerCalculator extends PowerCalculator {
final ControllerActivityCounter activityCounter =
app.getBatteryStatsUid().getBluetoothControllerActivity();
final long durationMs = calculateDuration(activityCounter);
- final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter);
+ final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter,
+ query.shouldForceUsePowerProfileModel());
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, durationMs)
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, powerMah, powerModel);
@@ -132,7 +133,7 @@ public class BluetoothPowerCalculator extends PowerCalculator {
batteryStats.getBluetoothControllerActivity();
final long systemDurationMs = calculateDuration(activityCounter);
final double systemPowerMah =
- calculatePowerMah(powerModel, measuredChargeUC, activityCounter);
+ calculatePowerMah(powerModel, measuredChargeUC, activityCounter, false);
// Subtract what the apps used, but clamp to 0.
final double powerMah = Math.max(0, systemPowerMah - total.powerMah);
@@ -165,7 +166,8 @@ public class BluetoothPowerCalculator extends PowerCalculator {
final int powerModel = getPowerModel(measuredChargeUC);
final ControllerActivityCounter activityCounter = u.getBluetoothControllerActivity();
final long durationMs = calculateDuration(activityCounter);
- final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter);
+ final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter,
+ false);
app.bluetoothRunningTimeMs = durationMs;
app.bluetoothPowerMah = powerMah;
@@ -188,7 +190,7 @@ public class BluetoothPowerCalculator extends PowerCalculator {
/** Returns bluetooth power usage based on the best data available. */
private double calculatePowerMah(@BatteryConsumer.PowerModel int powerModel,
- long measuredChargeUC, ControllerActivityCounter counter) {
+ long measuredChargeUC, ControllerActivityCounter counter, boolean ignoreReportedPower) {
if (powerModel == BatteryConsumer.POWER_MODEL_MEASURED_ENERGY) {
return uCtoMah(measuredChargeUC);
}
@@ -197,12 +199,17 @@ public class BluetoothPowerCalculator extends PowerCalculator {
return 0;
}
- final double powerMah =
- counter.getPowerCounter().getCountLocked(BatteryStats.STATS_SINCE_CHARGED)
- / (double) (1000 * 60 * 60);
+ if (!ignoreReportedPower) {
+ final double powerMah =
+ counter.getPowerCounter().getCountLocked(BatteryStats.STATS_SINCE_CHARGED)
+ / (double) (1000 * 60 * 60);
+ if (powerMah != 0) {
+ return powerMah;
+ }
+ }
- if (powerMah != 0) {
- return powerMah;
+ if (!mHasBluetoothPowerController) {
+ return 0;
}
final long idleTimeMs =