Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1dc38be0 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix DivisionByZero error when battery voltage is unknown

Bug: 348041735
Test: atest PowerStatsTests; atest PowerStatsTestsRavenwood
Flag: com.android.server.power.optimization.streamlined_misc_battery_stats
Change-Id: I267013dca784d542ee53eb6c899fae67398ff894
parent 43ef074d
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -128,6 +128,16 @@ public class EnergyConsumerPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        int voltageMv = mVoltageSupplier.getAsInt();
        int averageVoltage = mLastVoltageMv != 0 ? (mLastVoltageMv + voltageMv) / 2 : voltageMv;
        if (averageVoltage <= 0) {
            Slog.wtf(TAG, "Unexpected battery voltage (" + voltageMv
                    + " mV) when querying energy consumers");
            return null;
        }

        mLastVoltageMv = voltageMv;

        EnergyConsumerResult[] energy =
                    mConsumedEnergyRetriever.getConsumedEnergy(mEnergyConsumerIds);
        long consumedEnergy = 0;
@@ -151,15 +161,6 @@ public class EnergyConsumerPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        int voltageMv = mVoltageSupplier.getAsInt();
        if (voltageMv <= 0) {
            Slog.wtf(TAG, "Unexpected battery voltage (" + voltageMv
                    + " mV) when querying energy consumers");
            voltageMv = 0;
        }

        int averageVoltage = mLastVoltageMv != 0 ? (mLastVoltageMv + voltageMv) / 2 : voltageMv;
        mLastVoltageMv = voltageMv;
        mLayout.setConsumedEnergy(mPowerStats.stats, 0, uJtoUc(energyDelta, averageVoltage));

        for (int i = mPowerStats.uidStats.size() - 1; i >= 0; i--) {