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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user