From 3c648c4673bb98c910e0f4d45d4f6c83e4302716 Mon Sep 17 00:00:00 2001 From: Siddharth Ray Date: Mon, 2 Oct 2017 17:30:58 -0700 Subject: Cleanup of Cellular/Wifi aggregate statistics Cleanup of Cellular/Wifi aggregate statistics in Batterystats dumpsys Cellular - Modification of field names to improve clarity - Removed count "x" values - Added power values to Rx signal strength - Added power values to Tx power - Added "Cellular Sleep time" - Removed erroneous battery field (This is being fixed in b/67213886, b/67213967) - Removed the following fields (Mobile radio active unknown time, Mobile radio active adjusted time, Signal scanning time) Wifi - Modification of field names to improve clarity - Removed count "x" values - Added power values to Rx signal strength - Removed the following field (Wifi on, Wifi running) BUG:67322291 Change-Id: I9630f154a73c7e3cb4bae4779609302f3674602f --- core/java/android/os/BatteryStats.java | 245 +++++++++++++++++++-------------- 1 file changed, 138 insertions(+), 107 deletions(-) diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 66b6b47887b9..c578b5f7299e 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -3019,71 +3019,104 @@ public abstract class BatteryStats implements Parcelable { final long idleTimeMs = counter.getIdleTimeCounter().getCountLocked(which); final long rxTimeMs = counter.getRxTimeCounter().getCountLocked(which); final long powerDrainMaMs = counter.getPowerCounter().getCountLocked(which); + // Battery real time + final long totalControllerActivityTimeMs + = computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which) / 1000; long totalTxTimeMs = 0; for (LongCounter txState : counter.getTxTimeCounters()) { totalTxTimeMs += txState.getCountLocked(which); } + final long sleepTimeMs + = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + totalTxTimeMs); - final long totalTimeMs = idleTimeMs + rxTimeMs + totalTxTimeMs; + sb.setLength(0); + sb.append(prefix); + sb.append(" "); + sb.append(controllerName); + sb.append(" Sleep time: "); + formatTimeMs(sb, sleepTimeMs); + sb.append("("); + sb.append(formatRatioLocked(sleepTimeMs, totalControllerActivityTimeMs)); + sb.append(")"); + pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Idle time: "); formatTimeMs(sb, idleTimeMs); sb.append("("); - sb.append(formatRatioLocked(idleTimeMs, totalTimeMs)); + sb.append(formatRatioLocked(idleTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Rx time: "); formatTimeMs(sb, rxTimeMs); sb.append("("); - sb.append(formatRatioLocked(rxTimeMs, totalTimeMs)); + sb.append(formatRatioLocked(rxTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Tx time: "); - formatTimeMs(sb, totalTxTimeMs); - sb.append("("); - sb.append(formatRatioLocked(totalTxTimeMs, totalTimeMs)); - sb.append(")"); - pw.println(sb.toString()); - final int numTxLvls = counter.getTxTimeCounters().length; + String [] powerLevel; + switch(controllerName) { + case "Cellular": + powerLevel = new String[] { + " less than 0dBm: ", + " 0dBm to 8dBm: ", + " 8dBm to 15dBm: ", + " 15dBm to 20dBm: ", + " above 20dBm: "}; + break; + default: + powerLevel = new String[] {"[0]", "[1]", "[2]", "[3]", "[4]"}; + break; + } + final int numTxLvls = Math.min(counter.getTxTimeCounters().length, powerLevel.length); if (numTxLvls > 1) { + pw.println(sb.toString()); for (int lvl = 0; lvl < numTxLvls; lvl++) { final long txLvlTimeMs = counter.getTxTimeCounters()[lvl].getCountLocked(which); sb.setLength(0); sb.append(prefix); - sb.append(" ["); - sb.append(lvl); - sb.append("] "); + sb.append(" "); + sb.append(powerLevel[lvl]); + sb.append(" "); formatTimeMs(sb, txLvlTimeMs); sb.append("("); - sb.append(formatRatioLocked(txLvlTimeMs, totalTxTimeMs)); + sb.append(formatRatioLocked(txLvlTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); } + } else { + final long txLvlTimeMs = counter.getTxTimeCounters()[0].getCountLocked(which); + formatTimeMs(sb, txLvlTimeMs); + sb.append("("); + sb.append(formatRatioLocked(txLvlTimeMs, totalControllerActivityTimeMs)); + sb.append(")"); + pw.println(sb.toString()); } - sb.setLength(0); - sb.append(prefix); - sb.append(" "); - sb.append(controllerName); - sb.append(" Power drain: ").append( + if (powerDrainMaMs > 0) { + sb.setLength(0); + sb.append(prefix); + sb.append(" "); + sb.append(controllerName); + sb.append(" Battery drain: ").append( BatteryStatsHelper.makemAh(powerDrainMaMs / (double) (1000*60*60))); - sb.append("mAh"); - pw.println(sb.toString()); + sb.append("mAh"); + pw.println(sb.toString()); + } } /** @@ -4127,51 +4160,50 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } + pw.println(""); pw.print(prefix); - pw.print(" Mobile total received: "); pw.print(formatBytesLocked(mobileRxTotalBytes)); - pw.print(", sent: "); pw.print(formatBytesLocked(mobileTxTotalBytes)); - pw.print(" (packets received "); pw.print(mobileRxTotalPackets); - pw.print(", sent "); pw.print(mobileTxTotalPackets); pw.println(")"); sb.setLength(0); sb.append(prefix); - sb.append(" Phone signal levels:"); - didOne = false; - for (int i=0; i