diff options
| author | 2018-02-17 03:11:27 +0000 | |
|---|---|---|
| committer | 2018-02-17 03:11:27 +0000 | |
| commit | 8b0012bc2c7eefff6d9ee73791a6c83d22130e5a (patch) | |
| tree | 15cf8b229f3f738eac597d4b2c4434d2848b6f00 | |
| parent | c84c7eb3b3d99db5bcd77bcbfd06ef81cd9d7b43 (diff) | |
| parent | a54e54dceed9056d8dbad126450ac7063dedfe08 (diff) | |
Merge "fix ModemActivityInfo should be delta"
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index be94dbb53c69..4e515918a0cd 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -11240,6 +11240,25 @@ public class BatteryStatsImpl extends BatteryStats { private ModemActivityInfo mLastModemActivityInfo = new ModemActivityInfo(0, 0, 0, new int[0], 0, 0); + private ModemActivityInfo getDeltaModemActivityInfo(ModemActivityInfo activityInfo) { + if (activityInfo == null) { + return null; + } + int[] txTimeMs = new int[ModemActivityInfo.TX_POWER_LEVELS]; + for (int i = 0; i < ModemActivityInfo.TX_POWER_LEVELS; i++) { + txTimeMs[i] = activityInfo.getTxTimeMillis()[i] + - mLastModemActivityInfo.getTxTimeMillis()[i]; + } + ModemActivityInfo deltaInfo = new ModemActivityInfo(activityInfo.getTimestamp(), + activityInfo.getSleepTimeMillis() - mLastModemActivityInfo.getSleepTimeMillis(), + activityInfo.getIdleTimeMillis() - mLastModemActivityInfo.getIdleTimeMillis(), + txTimeMs, + activityInfo.getRxTimeMillis() - mLastModemActivityInfo.getRxTimeMillis(), + activityInfo.getEnergyUsed() - mLastModemActivityInfo.getEnergyUsed()); + mLastModemActivityInfo = activityInfo; + return deltaInfo; + } + /** * Distribute Cell radio energy info and network traffic to apps. */ @@ -11247,9 +11266,10 @@ public class BatteryStatsImpl extends BatteryStats { if (DEBUG_ENERGY) { Slog.d(TAG, "Updating mobile radio stats with " + activityInfo); } + ModemActivityInfo deltaInfo = getDeltaModemActivityInfo(activityInfo); // Add modem tx power to history. - addModemTxPowerToHistory(activityInfo); + addModemTxPowerToHistory(deltaInfo); // Grab a separate lock to acquire the network stats, which may do I/O. NetworkStats delta = null; @@ -11263,22 +11283,6 @@ public class BatteryStatsImpl extends BatteryStats { } } - int rxTimeMs = 0; - int[] txTimeMs = new int[ModemActivityInfo.TX_POWER_LEVELS]; - int idleTimeMs = 0; - int sleepTimeMs = 0; - if (activityInfo != null) { - rxTimeMs = activityInfo.getRxTimeMillis() - mLastModemActivityInfo.getRxTimeMillis(); - for (int i = 0; i < ModemActivityInfo.TX_POWER_LEVELS; i++) { - txTimeMs[i] = activityInfo.getTxTimeMillis()[i] - - mLastModemActivityInfo.getTxTimeMillis()[i]; - } - idleTimeMs = - activityInfo.getIdleTimeMillis() - mLastModemActivityInfo.getIdleTimeMillis(); - sleepTimeMs = - activityInfo.getSleepTimeMillis() - mLastModemActivityInfo.getSleepTimeMillis(); - } - synchronized (this) { if (!mOnBatteryInternal) { if (delta != null) { @@ -11287,14 +11291,14 @@ public class BatteryStatsImpl extends BatteryStats { return; } - if (activityInfo != null) { + if (deltaInfo != null) { mHasModemReporting = true; mModemActivity.getIdleTimeCounter().addCountLocked( - idleTimeMs); - mModemActivity.getRxTimeCounter().addCountLocked(rxTimeMs); + deltaInfo.getIdleTimeMillis()); + mModemActivity.getRxTimeCounter().addCountLocked(deltaInfo.getRxTimeMillis()); for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { mModemActivity.getTxTimeCounters()[lvl] - .addCountLocked(txTimeMs[lvl]); + .addCountLocked(deltaInfo.getTxTimeMillis()[lvl]); } // POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V. @@ -11302,16 +11306,17 @@ public class BatteryStatsImpl extends BatteryStats { PowerProfile.POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE) / 1000.0; if (opVolt != 0) { double energyUsed = - sleepTimeMs * + deltaInfo.getSleepTimeMillis() * mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_SLEEP) - + idleTimeMs * + + deltaInfo.getIdleTimeMillis() * mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_IDLE) - + rxTimeMs * + + deltaInfo.getRxTimeMillis() * mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_RX); + int[] txTimeMs = deltaInfo.getTxTimeMillis(); for (int i = 0; i < Math.min(txTimeMs.length, - SignalStrength.NUM_SIGNAL_STRENGTH_BINS); i++) { + SignalStrength.NUM_SIGNAL_STRENGTH_BINS); i++) { energyUsed += txTimeMs[i] * mPowerProfile.getAveragePower( - PowerProfile.POWER_MODEM_CONTROLLER_TX, i); + PowerProfile.POWER_MODEM_CONTROLLER_TX, i); } // We store the power drain as mAms. @@ -11387,11 +11392,11 @@ public class BatteryStatsImpl extends BatteryStats { radioTime -= appRadioTime; totalPackets -= appPackets; - if (activityInfo != null) { + if (deltaInfo != null) { ControllerActivityCounterImpl activityCounter = u.getOrCreateModemControllerActivityLocked(); if (totalRxPackets > 0 && entry.rxPackets > 0) { - final long rxMs = (entry.rxPackets * rxTimeMs) + final long rxMs = (entry.rxPackets * deltaInfo.getRxTimeMillis()) / totalRxPackets; activityCounter.getRxTimeCounter().addCountLocked(rxMs); } @@ -11399,7 +11404,7 @@ public class BatteryStatsImpl extends BatteryStats { if (totalTxPackets > 0 && entry.txPackets > 0) { for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { long txMs = - entry.txPackets * txTimeMs[lvl]; + entry.txPackets * deltaInfo.getTxTimeMillis()[lvl]; txMs /= totalTxPackets; activityCounter.getTxTimeCounters()[lvl].addCountLocked(txMs); } |