DO NOT MERGE ANYWHERE: Fix batterystats battery level int packing
We introduced some new flag at the lowest significant bit of the battery level int but failed to account for it when unpacking. Bug:25596467 Change-Id: I4320e6fcc208ec6de249b14fe3e399ab2f32d839
This commit is contained in:
@@ -105,7 +105,7 @@ public final class BatteryStatsImpl extends BatteryStats {
|
|||||||
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
|
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
|
||||||
|
|
||||||
// Current on-disk Parcel version
|
// Current on-disk Parcel version
|
||||||
private static final int VERSION = 132 + (USE_OLD_HISTORY ? 1000 : 0);
|
private static final int VERSION = 133 + (USE_OLD_HISTORY ? 1000 : 0);
|
||||||
|
|
||||||
// Maximum number of items we will record in the history.
|
// Maximum number of items we will record in the history.
|
||||||
private static final int MAX_HISTORY_ITEMS = 2000;
|
private static final int MAX_HISTORY_ITEMS = 2000;
|
||||||
@@ -1968,8 +1968,14 @@ public final class BatteryStatsImpl extends BatteryStats {
|
|||||||
|
|
||||||
private int buildBatteryLevelInt(HistoryItem h) {
|
private int buildBatteryLevelInt(HistoryItem h) {
|
||||||
return ((((int)h.batteryLevel)<<25)&0xfe000000)
|
return ((((int)h.batteryLevel)<<25)&0xfe000000)
|
||||||
| ((((int)h.batteryTemperature)<<14)&0x01ff8000)
|
| ((((int)h.batteryTemperature)<<15)&0x01ff8000)
|
||||||
| ((((int)h.batteryVoltage)<<1)&0x00007fff);
|
| ((((int)h.batteryVoltage)<<1)&0x00007ffe);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void readBatteryLevelInt(int batteryLevelInt, HistoryItem out) {
|
||||||
|
out.batteryLevel = (byte)((batteryLevelInt & 0xfe000000) >>> 25);
|
||||||
|
out.batteryTemperature = (short)((batteryLevelInt & 0x01ff8000) >>> 15);
|
||||||
|
out.batteryVoltage = (char)((batteryLevelInt & 0x00007ffe) >>> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int buildStateInt(HistoryItem h) {
|
private int buildStateInt(HistoryItem h) {
|
||||||
@@ -2110,9 +2116,7 @@ public final class BatteryStatsImpl extends BatteryStats {
|
|||||||
final int batteryLevelInt;
|
final int batteryLevelInt;
|
||||||
if ((firstToken&DELTA_BATTERY_LEVEL_FLAG) != 0) {
|
if ((firstToken&DELTA_BATTERY_LEVEL_FLAG) != 0) {
|
||||||
batteryLevelInt = src.readInt();
|
batteryLevelInt = src.readInt();
|
||||||
cur.batteryLevel = (byte)((batteryLevelInt>>25)&0x7f);
|
readBatteryLevelInt(batteryLevelInt, cur);
|
||||||
cur.batteryTemperature = (short)((batteryLevelInt<<7)>>21);
|
|
||||||
cur.batteryVoltage = (char)(batteryLevelInt&0x3fff);
|
|
||||||
cur.numReadInts += 1;
|
cur.numReadInts += 1;
|
||||||
if (DEBUG) Slog.i(TAG, "READ DELTA: batteryToken=0x"
|
if (DEBUG) Slog.i(TAG, "READ DELTA: batteryToken=0x"
|
||||||
+ Integer.toHexString(batteryLevelInt)
|
+ Integer.toHexString(batteryLevelInt)
|
||||||
|
|||||||
Reference in New Issue
Block a user