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

Commit 553429ae authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Attribution of modem power per process state"

parents dc63dc4d 9bf5b2f1
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ public abstract class BatteryConsumer {
     */
    @IntDef(prefix = {"PROCESS_STATE_"}, value = {
            PROCESS_STATE_ANY,
            PROCESS_STATE_UNSPECIFIED,
            PROCESS_STATE_FOREGROUND,
            PROCESS_STATE_BACKGROUND,
            PROCESS_STATE_FOREGROUND_SERVICE,
@@ -169,7 +170,8 @@ public abstract class BatteryConsumer {
    public @interface ProcessState {
    }

    public static final int PROCESS_STATE_ANY = 0;
    public static final int PROCESS_STATE_UNSPECIFIED = 0;
    public static final int PROCESS_STATE_ANY = PROCESS_STATE_UNSPECIFIED;
    public static final int PROCESS_STATE_FOREGROUND = 1;
    public static final int PROCESS_STATE_BACKGROUND = 2;
    public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3;
@@ -180,7 +182,7 @@ public abstract class BatteryConsumer {

    static {
        // Assign individually to avoid future mismatch
        sProcessStateNames[PROCESS_STATE_ANY] = "any";
        sProcessStateNames[PROCESS_STATE_UNSPECIFIED] = "unspecified";
        sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg";
        sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg";
        sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs";
@@ -188,6 +190,7 @@ public abstract class BatteryConsumer {

    private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = {
            POWER_COMPONENT_CPU,
            POWER_COMPONENT_MOBILE_RADIO,
    };

    static final int COLUMN_INDEX_BATTERY_CONSUMER_TYPE = 0;
@@ -213,7 +216,7 @@ public abstract class BatteryConsumer {
                sb.append("powerComponent=").append(sPowerComponentNames[powerComponent]);
                dimensionSpecified = true;
            }
            if (processState != PROCESS_STATE_ANY) {
            if (processState != PROCESS_STATE_UNSPECIFIED) {
                if (dimensionSpecified) {
                    sb.append(", ");
                }
@@ -283,7 +286,7 @@ public abstract class BatteryConsumer {
            if (mShortString == null) {
                StringBuilder sb = new StringBuilder();
                sb.append(powerComponentIdToString(powerComponent));
                if (processState != PROCESS_STATE_ANY) {
                if (processState != PROCESS_STATE_UNSPECIFIED) {
                    sb.append(':');
                    sb.append(processStateToString(processState));
                }
@@ -333,7 +336,7 @@ public abstract class BatteryConsumer {
     * for all values of other dimensions such as process state.
     */
    public Key getKey(@PowerComponent int componentId) {
        return mData.getKey(componentId, PROCESS_STATE_ANY);
        return mData.getKey(componentId, PROCESS_STATE_UNSPECIFIED);
    }

    /**
@@ -352,7 +355,7 @@ public abstract class BatteryConsumer {
     */
    public double getConsumedPower(@PowerComponent int componentId) {
        return mPowerComponents.getConsumedPower(
                mData.getKeyOrThrow(componentId, PROCESS_STATE_ANY));
                mData.getKeyOrThrow(componentId, PROCESS_STATE_UNSPECIFIED));
    }

    /**
@@ -374,7 +377,7 @@ public abstract class BatteryConsumer {
     */
    public @PowerModel int getPowerModel(@BatteryConsumer.PowerComponent int componentId) {
        return mPowerComponents.getPowerModel(
                mData.getKeyOrThrow(componentId, PROCESS_STATE_ANY));
                mData.getKeyOrThrow(componentId, PROCESS_STATE_UNSPECIFIED));
    }

    /**
@@ -706,7 +709,7 @@ public abstract class BatteryConsumer {
                    if (isSupported) {
                        for (int processState = 0; processState < PROCESS_STATE_COUNT;
                                processState++) {
                            if (processState == PROCESS_STATE_ANY) {
                            if (processState == PROCESS_STATE_UNSPECIFIED) {
                                continue;
                            }

@@ -789,7 +792,7 @@ public abstract class BatteryConsumer {
        @NonNull
        public T setConsumedPower(@PowerComponent int componentId, double componentPower,
                @PowerModel int powerModel) {
            mPowerComponentsBuilder.setConsumedPower(getKey(componentId, PROCESS_STATE_ANY),
            mPowerComponentsBuilder.setConsumedPower(getKey(componentId, PROCESS_STATE_UNSPECIFIED),
                    componentPower, powerModel);
            return (T) this;
        }
@@ -825,7 +828,8 @@ public abstract class BatteryConsumer {
        @NonNull
        public T setUsageDurationMillis(@UidBatteryConsumer.PowerComponent int componentId,
                long componentUsageTimeMillis) {
            mPowerComponentsBuilder.setUsageDurationMillis(getKey(componentId, PROCESS_STATE_ANY),
            mPowerComponentsBuilder
                    .setUsageDurationMillis(getKey(componentId, PROCESS_STATE_UNSPECIFIED),
                            componentUsageTimeMillis);
            return (T) this;
        }
+18 −1
Original line number Diff line number Diff line
@@ -669,7 +669,7 @@ public abstract class BatteryStats implements Parcelable {
            case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE:
                return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
            default:
                return BatteryConsumer.PROCESS_STATE_ANY;
                return BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
        }
    }

@@ -963,6 +963,13 @@ public abstract class BatteryStats implements Parcelable {
        public abstract long getNetworkActivityPackets(int type, int which);
        @UnsupportedAppUsage
        public abstract long getMobileRadioActiveTime(int which);

        /**
         * Returns the amount of time (in microseconds) this UID was in the specified processState.
         */
        public abstract long getMobileRadioActiveTimeInProcessState(
                @BatteryConsumer.ProcessState int processState);

        public abstract int getMobileRadioActiveCount(int which);

        /**
@@ -1060,6 +1067,16 @@ public abstract class BatteryStats implements Parcelable {
         */
        public abstract long getMobileRadioMeasuredBatteryConsumptionUC();

        /**
         * Returns the battery consumption (in microcoulombs) of the uid's radio usage when in the
         * specified process state.
         * Will return {@link #POWER_DATA_UNAVAILABLE} if data is unavailable.
         *
         * {@hide}
         */
        public abstract long getMobileRadioMeasuredBatteryConsumptionUC(
                @BatteryConsumer.ProcessState int processState);

        /**
         * Returns the battery consumption (in microcoulombs) of the screen while on and uid active,
         * derived from on device power measurement data.
+1 −1
Original line number Diff line number Diff line
@@ -556,7 +556,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable {
                }

                String label = BatteryConsumer.powerComponentIdToString(componentId);
                if (key.processState != BatteryConsumer.PROCESS_STATE_ANY) {
                if (key.processState != BatteryConsumer.PROCESS_STATE_UNSPECIFIED) {
                    label = label
                            + "(" + BatteryConsumer.processStateToString(key.processState) + ")";
                }
+3 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.os;
import static android.os.BatteryConsumer.POWER_COMPONENT_ANY;
import static android.os.BatteryConsumer.POWER_COMPONENT_COUNT;
import static android.os.BatteryConsumer.PROCESS_STATE_ANY;
import static android.os.BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
import static android.os.BatteryConsumer.convertMahToDeciCoulombs;

import android.annotation.NonNull;
@@ -339,7 +340,7 @@ class PowerComponents {

                serializer.startTag(null, BatteryUsageStats.XML_TAG_COMPONENT);
                serializer.attributeInt(null, BatteryUsageStats.XML_ATTR_ID, componentId);
                if (key.processState != PROCESS_STATE_ANY) {
                if (key.processState != PROCESS_STATE_UNSPECIFIED) {
                    serializer.attributeInt(null, BatteryUsageStats.XML_ATTR_PROCESS_STATE,
                            key.processState);
                }
@@ -398,7 +399,7 @@ class PowerComponents {
                switch (parser.getName()) {
                    case BatteryUsageStats.XML_TAG_COMPONENT: {
                        int componentId = -1;
                        int processState = PROCESS_STATE_ANY;
                        int processState = PROCESS_STATE_UNSPECIFIED;
                        double powerMah = 0;
                        long durationMs = 0;
                        int model = BatteryConsumer.POWER_MODEL_UNDEFINED;
+141 −48

File changed.

Preview size limit exceeded, changes collapsed.

Loading