From 00a548d4470b5efb7b7752313642a2da7a8348da Mon Sep 17 00:00:00 2001 From: Shumao Hou Date: Wed, 9 Nov 2022 12:43:14 +0800 Subject: BatteryStatsImpl: Avoid dividing by 0.0 in updateWifiState. If the variable opVolt is 0.0 in the method updateWifiState, the local variable monitoredRailChargeConsumedMaMs may be computed to a large value. The logic here should be the same as the method noteModemControlllerActivity. The variable opVolt being 0.0 should be avoided as a divisor. Bug: N/A Test: Manual Change-Id: I95ce75b960bace4c37acea89062cb21aab21aa30 --- .../com/android/internal/os/BatteryStatsImpl.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 08e36db5d92e..af54f6b3e0e4 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -13659,17 +13659,17 @@ public class BatteryStatsImpl extends BatteryStats { // We store the power drain as mAms. controllerMaMs = info.getControllerEnergyUsedMicroJoules() / opVolt; mWifiActivity.getPowerCounter().addCountLocked((long) controllerMaMs); + // Converting uWs to mAms. + // Conversion: (uWs * (1000ms / 1s) * (1mW / 1000uW)) / mV = mAms + long monitoredRailChargeConsumedMaMs = + (long) (mTmpRailStats.getWifiTotalEnergyUseduWs() / opVolt); + mWifiActivity.getMonitoredRailChargeConsumedMaMs().addCountLocked( + monitoredRailChargeConsumedMaMs); + mHistoryCur.wifiRailChargeMah += + (monitoredRailChargeConsumedMaMs / MILLISECONDS_IN_HOUR); + addHistoryRecordLocked(elapsedRealtimeMs, uptimeMs); + mTmpRailStats.resetWifiTotalEnergyUsed(); } - // Converting uWs to mAms. - // Conversion: (uWs * (1000ms / 1s) * (1mW / 1000uW)) / mV = mAms - long monitoredRailChargeConsumedMaMs = - (long) (mTmpRailStats.getWifiTotalEnergyUseduWs() / opVolt); - mWifiActivity.getMonitoredRailChargeConsumedMaMs().addCountLocked( - monitoredRailChargeConsumedMaMs); - mHistoryCur.wifiRailChargeMah += - (monitoredRailChargeConsumedMaMs / MILLISECONDS_IN_HOUR); - addHistoryRecordLocked(elapsedRealtimeMs, uptimeMs); - mTmpRailStats.resetWifiTotalEnergyUsed(); if (uidEstimatedConsumptionMah != null) { totalEstimatedConsumptionMah = Math.max(controllerMaMs / MILLISECONDS_IN_HOUR, -- cgit v1.2.3