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

Commit 47acc8f5 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am dde2ecc1: am 7ff92f42: am 9522055f: Merge "Add time estimates to...

am dde2ecc1: am 7ff92f42: am 9522055f: Merge "Add time estimates to batterystats dump." into lmp-mr1-dev

* commit 'dde2ecc1':
  Add time estimates to batterystats dump.
parents 6d6ad7b5 dde2ecc1
Loading
Loading
Loading
Loading
+71 −0
Original line number Diff line number Diff line
@@ -3669,6 +3669,45 @@ public abstract class BatteryStats implements Parcelable {
        pw.print(suffix);
    }

    private static boolean dumpTimeEstimate(PrintWriter pw, String label, long[] steps,
            int count, long modesOfInterest, long modeValues) {
        if (count <= 0) {
            return false;
        }
        long total = 0;
        int numOfInterest = 0;
        for (int i=0; i<count; i++) {
            long initMode = (steps[i] & STEP_LEVEL_INITIAL_MODE_MASK)
                    >> STEP_LEVEL_INITIAL_MODE_SHIFT;
            long modMode = (steps[i] & STEP_LEVEL_MODIFIED_MODE_MASK)
                    >> STEP_LEVEL_MODIFIED_MODE_SHIFT;
            // If the modes of interest didn't change during this step period...
            if ((modMode&modesOfInterest) == 0) {
                // And the mode values during this period match those we are measuring...
                if ((initMode&modesOfInterest) == modeValues) {
                    // Then this can be used to estimate the total time!
                    numOfInterest++;
                    total += steps[i] & STEP_LEVEL_TIME_MASK;
                }
            }
        }
        if (numOfInterest <= 0) {
            return false;
        }

        // The estimated time is the average time we spend in each level, multipled
        // by 100 -- the total number of battery levels
        long estimatedTime = (total / numOfInterest) * 100;

        pw.print(label);
        StringBuilder sb = new StringBuilder(64);
        formatTimeMs(sb, estimatedTime);
        pw.print(sb);
        pw.println();

        return true;
    }

    private static boolean dumpDurationSteps(PrintWriter pw, String header, long[] steps,
            int count, boolean checkin) {
        if (count <= 0) {
@@ -3923,6 +3962,38 @@ public abstract class BatteryStats implements Parcelable {
                    TimeUtils.formatDuration(timeRemaining / 1000, pw);
                    pw.println();
                }
                dumpTimeEstimate(pw, "  Estimated screen off time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_OFF-1));
                dumpTimeEstimate(pw, "  Estimated screen off power save time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_OFF-1)|STEP_LEVEL_MODE_POWER_SAVE);
                dumpTimeEstimate(pw, "  Estimated screen on time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_ON-1));
                dumpTimeEstimate(pw, "  Estimated screen on power save time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_ON-1)|STEP_LEVEL_MODE_POWER_SAVE);
                dumpTimeEstimate(pw, "  Estimated screen doze time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_DOZE-1));
                dumpTimeEstimate(pw, "  Estimated screen doze power save time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_DOZE-1)|STEP_LEVEL_MODE_POWER_SAVE);
                dumpTimeEstimate(pw, "  Estimated screen doze suspend time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_DOZE_SUSPEND-1));
                dumpTimeEstimate(pw, "  Estimated screen doze suspend power save time: ",
                        getDischargeStepDurationsArray(), getNumDischargeStepDurations(),
                        STEP_LEVEL_MODE_SCREEN_STATE|STEP_LEVEL_MODE_POWER_SAVE,
                        (Display.STATE_DOZE_SUSPEND-1)|STEP_LEVEL_MODE_POWER_SAVE);
                pw.println();
            }
            if (dumpDurationSteps(pw, "Charge step durations:", getChargeStepDurationsArray(),
+3 −3
Original line number Diff line number Diff line
@@ -984,8 +984,8 @@ public final class Settings {
     * InputDeviceIdentifier. This field is used by some activities to jump straight into the
     * settings for the given device.
     * <p>
     * Example: The {@link #INPUT_METHOD_SETTINGS} intent opens the keyboard layout dialog for the
     * given device.
     * Example: The {@link #ACTION_INPUT_METHOD_SETTINGS} intent opens the keyboard layout
     * dialog for the given device.
     * @hide
     */
    public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
@@ -4816,7 +4816,7 @@ public final class Settings {
         * The timeout in milliseconds before the device fully goes to sleep after
         * a period of inactivity.  This value sets an upper bound on how long the device
         * will stay awake or dreaming without user activity.  It should generally
         * be longer than {@link #SCREEN_OFF_TIMEOUT} as otherwise the device
         * be longer than {@link Settings.System#SCREEN_OFF_TIMEOUT} as otherwise the device
         * will sleep before it ever has a chance to dream.
         * <p>
         * Use -1 to disable this timeout.