Loading core/java/android/os/BatteryStats.java +138 −107 Original line number Diff line number Diff line Loading @@ -3054,12 +3054,26 @@ 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); Loading @@ -3068,7 +3082,7 @@ public abstract class BatteryStats implements Parcelable { 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()); Loading @@ -3079,7 +3093,7 @@ public abstract class BatteryStats implements Parcelable { 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()); Loading @@ -3088,38 +3102,57 @@ public abstract class BatteryStats implements Parcelable { 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()); } if (powerDrainMaMs > 0) { sb.setLength(0); sb.append(prefix); sb.append(" "); sb.append(controllerName); sb.append(" Power drain: ").append( sb.append(" Battery drain: ").append( BatteryStatsHelper.makemAh(powerDrainMaMs / (double) (1000*60*60))); sb.append("mAh"); pw.println(sb.toString()); } } /** * Temporary for settings. Loading Loading @@ -4186,44 +4219,43 @@ 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<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) { final long time = getPhoneSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; } sb.append("\n "); sb.append(" CONNECTIVITY POWER SUMMARY START"); pw.println(sb.toString()); pw.print(prefix); sb.setLength(0); sb.append(prefix); didOne = true; sb.append(SignalStrength.SIGNAL_STRENGTH_NAMES[i]); sb.append(" "); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getPhoneSignalStrengthCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); sb.append(" Logging duration for connectivity statistics: "); formatTimeMs(sb, whichBatteryRealtime / 1000); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Signal scanning time: "); formatTimeMsNoSpace(sb, getPhoneSignalScanningTime(rawRealtime, which) / 1000); sb.append(" Cellular Statistics:"); pw.println(sb.toString()); pw.print(prefix); sb.setLength(0); sb.append(prefix); sb.append(" Radio types:"); sb.append(" Cellular kernel active time: "); final long mobileActiveTime = getMobileRadioActiveTime(rawRealtime, which); formatTimeMs(sb, mobileActiveTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveTime, whichBatteryRealtime)); sb.append(")"); pw.println(sb.toString()); pw.print(" Cellular data received: "); pw.println(formatBytesLocked(mobileRxTotalBytes)); pw.print(" Cellular data sent: "); pw.println(formatBytesLocked(mobileTxTotalBytes)); pw.print(" Cellular packets received: "); pw.println(mobileRxTotalPackets); pw.print(" Cellular packets sent: "); pw.println(mobileTxTotalPackets); sb.setLength(0); sb.append(prefix); sb.append(" Cellular Radio Access Technology:"); didOne = false; for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { final long time = getPhoneDataConnectionTime(i, rawRealtime, which); Loading @@ -4239,63 +4271,54 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getPhoneDataConnectionCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Mobile radio active time: "); final long mobileActiveTime = getMobileRadioActiveTime(rawRealtime, which); formatTimeMs(sb, mobileActiveTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveTime, whichBatteryRealtime)); sb.append(") "); sb.append(getMobileRadioActiveCount(which)); sb.append("x"); pw.println(sb.toString()); final long mobileActiveUnknownTime = getMobileRadioActiveUnknownTime(which); if (mobileActiveUnknownTime != 0) { sb.setLength(0); sb.append(prefix); sb.append(" Mobile radio active unknown time: "); formatTimeMs(sb, mobileActiveUnknownTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveUnknownTime, whichBatteryRealtime)); sb.append(") "); sb.append(getMobileRadioActiveUnknownCount(which)); sb.append("x"); pw.println(sb.toString()); sb.append(" Cellular Rx signal strength (RSRP):"); final String[] cellularRxSignalStrengthDescription = new String[]{ "very poor (less than -128dBm): ", "poor (-128dBm to -118dBm): ", "moderate (-118dBm to -108dBm): ", "good (-108dBm to -98dBm): ", "great (greater than -98dBm): "}; didOne = false; final int numCellularRxBins = Math.min(SignalStrength.NUM_SIGNAL_STRENGTH_BINS, cellularRxSignalStrengthDescription.length); for (int i=0; i<numCellularRxBins; i++) { final long time = getPhoneSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; } final long mobileActiveAdjustedTime = getMobileRadioActiveAdjustedTime(which); if (mobileActiveAdjustedTime != 0) { sb.setLength(0); sb.append("\n "); sb.append(prefix); sb.append(" Mobile radio active adjusted time: "); formatTimeMs(sb, mobileActiveAdjustedTime / 1000); didOne = true; sb.append(cellularRxSignalStrengthDescription[i]); sb.append(" "); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveAdjustedTime, whichBatteryRealtime)); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); pw.println(sb.toString()); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); printControllerActivity(pw, sb, prefix, "Radio", getModemControllerActivity(), which); printControllerActivity(pw, sb, prefix, "Cellular", getModemControllerActivity(), which); pw.print(prefix); pw.print(" Wi-Fi total received: "); pw.print(formatBytesLocked(wifiRxTotalBytes)); pw.print(", sent: "); pw.print(formatBytesLocked(wifiTxTotalBytes)); pw.print(" (packets received "); pw.print(wifiRxTotalPackets); pw.print(", sent "); pw.print(wifiTxTotalPackets); pw.println(")"); sb.setLength(0); sb.append(prefix); sb.append(" Wifi on: "); formatTimeMs(sb, wifiOnTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiOnTime, whichBatteryRealtime)); sb.append("), Wifi running: "); formatTimeMs(sb, wifiRunningTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiRunningTime, whichBatteryRealtime)); sb.append(")"); sb.append(" Wifi Statistics:"); pw.println(sb.toString()); pw.print(" Wifi data received: "); pw.println(formatBytesLocked(wifiRxTotalBytes)); pw.print(" Wifi data sent: "); pw.println(formatBytesLocked(wifiTxTotalBytes)); pw.print(" Wifi packets received: "); pw.println(wifiRxTotalPackets); pw.print(" Wifi packets sent: "); pw.println(wifiTxTotalPackets); sb.setLength(0); sb.append(prefix); sb.append(" Wifi states:"); Loading @@ -4313,8 +4336,6 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiStateCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); Loading @@ -4336,17 +4357,23 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiSupplStateCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Wifi signal levels:"); sb.append(" Wifi Rx signal strength (RSSI):"); final String[] wifiRxSignalStrengthDescription = new String[]{ "very poor (less than -88.75dBm): ", "poor (-88.75 to -77.5dBm): ", "moderate (-77.5dBm to -66.25dBm): ", "good (-66.25dBm to -55dBm): ", "great (greater than -55dBm): "}; didOne = false; for (int i=0; i<NUM_WIFI_SIGNAL_STRENGTH_BINS; i++) { final int numWifiRxBins = Math.min(NUM_WIFI_SIGNAL_STRENGTH_BINS, wifiRxSignalStrengthDescription.length); for (int i=0; i<numWifiRxBins; i++) { final long time = getWifiSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; Loading @@ -4354,21 +4381,25 @@ public abstract class BatteryStats implements Parcelable { sb.append("\n "); sb.append(prefix); didOne = true; sb.append("level("); sb.append(i); sb.append(") "); sb.append(" "); sb.append(wifiRxSignalStrengthDescription[i]); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiSignalStrengthCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); printControllerActivity(pw, sb, prefix, "WiFi", getWifiControllerActivity(), which); pw.print(prefix); sb.setLength(0); sb.append(prefix); sb.append(" CONNECTIVITY POWER SUMMARY END"); pw.println(sb.toString()); pw.println(""); pw.print(prefix); pw.print(" Bluetooth total received: "); pw.print(formatBytesLocked(btRxTotalBytes)); pw.print(", sent: "); pw.println(formatBytesLocked(btTxTotalBytes)); Loading Loading
core/java/android/os/BatteryStats.java +138 −107 Original line number Diff line number Diff line Loading @@ -3054,12 +3054,26 @@ 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); Loading @@ -3068,7 +3082,7 @@ public abstract class BatteryStats implements Parcelable { 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()); Loading @@ -3079,7 +3093,7 @@ public abstract class BatteryStats implements Parcelable { 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()); Loading @@ -3088,38 +3102,57 @@ public abstract class BatteryStats implements Parcelable { 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()); } if (powerDrainMaMs > 0) { sb.setLength(0); sb.append(prefix); sb.append(" "); sb.append(controllerName); sb.append(" Power drain: ").append( sb.append(" Battery drain: ").append( BatteryStatsHelper.makemAh(powerDrainMaMs / (double) (1000*60*60))); sb.append("mAh"); pw.println(sb.toString()); } } /** * Temporary for settings. Loading Loading @@ -4186,44 +4219,43 @@ 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<SignalStrength.NUM_SIGNAL_STRENGTH_BINS; i++) { final long time = getPhoneSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; } sb.append("\n "); sb.append(" CONNECTIVITY POWER SUMMARY START"); pw.println(sb.toString()); pw.print(prefix); sb.setLength(0); sb.append(prefix); didOne = true; sb.append(SignalStrength.SIGNAL_STRENGTH_NAMES[i]); sb.append(" "); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getPhoneSignalStrengthCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); sb.append(" Logging duration for connectivity statistics: "); formatTimeMs(sb, whichBatteryRealtime / 1000); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Signal scanning time: "); formatTimeMsNoSpace(sb, getPhoneSignalScanningTime(rawRealtime, which) / 1000); sb.append(" Cellular Statistics:"); pw.println(sb.toString()); pw.print(prefix); sb.setLength(0); sb.append(prefix); sb.append(" Radio types:"); sb.append(" Cellular kernel active time: "); final long mobileActiveTime = getMobileRadioActiveTime(rawRealtime, which); formatTimeMs(sb, mobileActiveTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveTime, whichBatteryRealtime)); sb.append(")"); pw.println(sb.toString()); pw.print(" Cellular data received: "); pw.println(formatBytesLocked(mobileRxTotalBytes)); pw.print(" Cellular data sent: "); pw.println(formatBytesLocked(mobileTxTotalBytes)); pw.print(" Cellular packets received: "); pw.println(mobileRxTotalPackets); pw.print(" Cellular packets sent: "); pw.println(mobileTxTotalPackets); sb.setLength(0); sb.append(prefix); sb.append(" Cellular Radio Access Technology:"); didOne = false; for (int i=0; i<NUM_DATA_CONNECTION_TYPES; i++) { final long time = getPhoneDataConnectionTime(i, rawRealtime, which); Loading @@ -4239,63 +4271,54 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getPhoneDataConnectionCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Mobile radio active time: "); final long mobileActiveTime = getMobileRadioActiveTime(rawRealtime, which); formatTimeMs(sb, mobileActiveTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveTime, whichBatteryRealtime)); sb.append(") "); sb.append(getMobileRadioActiveCount(which)); sb.append("x"); pw.println(sb.toString()); final long mobileActiveUnknownTime = getMobileRadioActiveUnknownTime(which); if (mobileActiveUnknownTime != 0) { sb.setLength(0); sb.append(prefix); sb.append(" Mobile radio active unknown time: "); formatTimeMs(sb, mobileActiveUnknownTime / 1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveUnknownTime, whichBatteryRealtime)); sb.append(") "); sb.append(getMobileRadioActiveUnknownCount(which)); sb.append("x"); pw.println(sb.toString()); sb.append(" Cellular Rx signal strength (RSRP):"); final String[] cellularRxSignalStrengthDescription = new String[]{ "very poor (less than -128dBm): ", "poor (-128dBm to -118dBm): ", "moderate (-118dBm to -108dBm): ", "good (-108dBm to -98dBm): ", "great (greater than -98dBm): "}; didOne = false; final int numCellularRxBins = Math.min(SignalStrength.NUM_SIGNAL_STRENGTH_BINS, cellularRxSignalStrengthDescription.length); for (int i=0; i<numCellularRxBins; i++) { final long time = getPhoneSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; } final long mobileActiveAdjustedTime = getMobileRadioActiveAdjustedTime(which); if (mobileActiveAdjustedTime != 0) { sb.setLength(0); sb.append("\n "); sb.append(prefix); sb.append(" Mobile radio active adjusted time: "); formatTimeMs(sb, mobileActiveAdjustedTime / 1000); didOne = true; sb.append(cellularRxSignalStrengthDescription[i]); sb.append(" "); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(mobileActiveAdjustedTime, whichBatteryRealtime)); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); pw.println(sb.toString()); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); printControllerActivity(pw, sb, prefix, "Radio", getModemControllerActivity(), which); printControllerActivity(pw, sb, prefix, "Cellular", getModemControllerActivity(), which); pw.print(prefix); pw.print(" Wi-Fi total received: "); pw.print(formatBytesLocked(wifiRxTotalBytes)); pw.print(", sent: "); pw.print(formatBytesLocked(wifiTxTotalBytes)); pw.print(" (packets received "); pw.print(wifiRxTotalPackets); pw.print(", sent "); pw.print(wifiTxTotalPackets); pw.println(")"); sb.setLength(0); sb.append(prefix); sb.append(" Wifi on: "); formatTimeMs(sb, wifiOnTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiOnTime, whichBatteryRealtime)); sb.append("), Wifi running: "); formatTimeMs(sb, wifiRunningTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiRunningTime, whichBatteryRealtime)); sb.append(")"); sb.append(" Wifi Statistics:"); pw.println(sb.toString()); pw.print(" Wifi data received: "); pw.println(formatBytesLocked(wifiRxTotalBytes)); pw.print(" Wifi data sent: "); pw.println(formatBytesLocked(wifiTxTotalBytes)); pw.print(" Wifi packets received: "); pw.println(wifiRxTotalPackets); pw.print(" Wifi packets sent: "); pw.println(wifiTxTotalPackets); sb.setLength(0); sb.append(prefix); sb.append(" Wifi states:"); Loading @@ -4313,8 +4336,6 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiStateCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); Loading @@ -4336,17 +4357,23 @@ public abstract class BatteryStats implements Parcelable { sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiSupplStateCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); sb.append(" Wifi signal levels:"); sb.append(" Wifi Rx signal strength (RSSI):"); final String[] wifiRxSignalStrengthDescription = new String[]{ "very poor (less than -88.75dBm): ", "poor (-88.75 to -77.5dBm): ", "moderate (-77.5dBm to -66.25dBm): ", "good (-66.25dBm to -55dBm): ", "great (greater than -55dBm): "}; didOne = false; for (int i=0; i<NUM_WIFI_SIGNAL_STRENGTH_BINS; i++) { final int numWifiRxBins = Math.min(NUM_WIFI_SIGNAL_STRENGTH_BINS, wifiRxSignalStrengthDescription.length); for (int i=0; i<numWifiRxBins; i++) { final long time = getWifiSignalStrengthTime(i, rawRealtime, which); if (time == 0) { continue; Loading @@ -4354,21 +4381,25 @@ public abstract class BatteryStats implements Parcelable { sb.append("\n "); sb.append(prefix); didOne = true; sb.append("level("); sb.append(i); sb.append(") "); sb.append(" "); sb.append(wifiRxSignalStrengthDescription[i]); formatTimeMs(sb, time/1000); sb.append("("); sb.append(formatRatioLocked(time, whichBatteryRealtime)); sb.append(") "); sb.append(getWifiSignalStrengthCount(i, which)); sb.append("x"); } if (!didOne) sb.append(" (no activity)"); pw.println(sb.toString()); printControllerActivity(pw, sb, prefix, "WiFi", getWifiControllerActivity(), which); pw.print(prefix); sb.setLength(0); sb.append(prefix); sb.append(" CONNECTIVITY POWER SUMMARY END"); pw.println(sb.toString()); pw.println(""); pw.print(prefix); pw.print(" Bluetooth total received: "); pw.print(formatBytesLocked(btRxTotalBytes)); pw.print(", sent: "); pw.println(formatBytesLocked(btTxTotalBytes)); Loading