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

Commit 9601383b authored by Adam Bookatz's avatar Adam Bookatz
Browse files

Fix error in MeasuredEnergySnapshot voltage

The voltage algorithm didn't seem quite right; e.g.
if avgVoltageMV == 1, this would give the wrong value.
We presumably should round off, not up. Indeed, the tests
in MeasuredEnergySnapshotTest already do so.

Bug: 173765509
Test: atest BatteryStatsTests
Change-Id: Iefc5011d2df01b2f24dd13145d39fdc4de34753f
parent 1bdbcffa
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -241,7 +241,7 @@ public class MeasuredEnergySnapshot {
    /**
     * For a consumer of type {@link EnergyConsumerType#OTHER}, updates
     * {@link #mAttributionSnapshots} with freshly measured energies (per uid) and returns the
     * charge consumed (in microcouloumbs) between the previously stored values and the passed-in
     * charge consumed (in microcoulombs) between the previously stored values and the passed-in
     * values.
     *
     * @param consumerInfo a consumer of type {@link EnergyConsumerType#OTHER}.
@@ -341,11 +341,11 @@ public class MeasuredEnergySnapshot {
        return numOrdinals;
    }

    /** Calculate charge consumption (in microcouloumbs) from a given energy and voltage */
    /** Calculate charge consumption (in microcoulombs) from a given energy and voltage */
    private long calculateChargeConsumedUC(long deltaEnergyUJ, int avgVoltageMV) {
        // To overflow, a 3.7V 10000mAh battery would need to completely drain 69244 times
        // since the last snapshot. Round up to the nearest whole long.
        return (deltaEnergyUJ * MILLIVOLTS_PER_VOLT + (avgVoltageMV + 1) / 2) / avgVoltageMV;
        // since the last snapshot. Round off to the nearest whole long.
        return (deltaEnergyUJ * MILLIVOLTS_PER_VOLT + (avgVoltageMV / 2)) / avgVoltageMV;
    }

}