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

Commit eb98edfb authored by Pankaj Kanwar's avatar Pankaj Kanwar Committed by Android (Google) Code Review
Browse files

Merge "Cleanup of Cellular/Wifi aggregate statistics" into oc-mr1-dev

parents bc0dc6dc 3c648c46
Loading
Loading
Loading
Loading
+138 −107
Original line number Diff line number Diff line
@@ -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);
@@ -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());

@@ -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());

@@ -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.
@@ -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);
@@ -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:");
@@ -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());
@@ -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;
@@ -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));