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

Commit 5b161c75 authored by Hall Liu's avatar Hall Liu Committed by Android (Google) Code Review
Browse files

Merge "Update and expose ModemActivityInfo"

parents fad96cd6 0eca33ec
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -11043,6 +11043,25 @@ package android.telephony {
    field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
  }
  public final class ModemActivityInfo implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.telephony.ModemActivityInfo getDelta(@NonNull android.telephony.ModemActivityInfo);
    method public long getIdleTimeMillis();
    method public static int getNumTxPowerLevels();
    method public long getReceiveTimeMillis();
    method public long getSleepTimeMillis();
    method public long getTimestampMillis();
    method public long getTransmitDurationMillisAtPowerLevel(int);
    method @NonNull public android.util.Range<java.lang.Integer> getTransmitPowerRange(int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ModemActivityInfo> CREATOR;
    field public static final int TX_POWER_LEVEL_0 = 0; // 0x0
    field public static final int TX_POWER_LEVEL_1 = 1; // 0x1
    field public static final int TX_POWER_LEVEL_2 = 2; // 0x2
    field public static final int TX_POWER_LEVEL_3 = 3; // 0x3
    field public static final int TX_POWER_LEVEL_4 = 4; // 0x4
  }
  public final class NetworkRegistrationInfo implements android.os.Parcelable {
    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
    method public int getRegistrationState();
+0 −2
Original line number Diff line number Diff line
@@ -159,8 +159,6 @@ MissingNullability: android.telephony.ModemActivityInfo#toString():
    
MissingNullability: android.telephony.ModemActivityInfo#writeToParcel(android.os.Parcel, int) parameter #0:
    
MissingNullability: android.telephony.ModemActivityInfo.TransmitPower#toString():
    
MissingNullability: android.telephony.NetworkService#onUnbind(android.content.Intent) parameter #0:
    
MissingNullability: android.telephony.SmsCbCmasInfo#toString():
+21 −0
Original line number Diff line number Diff line
@@ -4240,6 +4240,27 @@ package android.telephony {
    field public static final String MBMS_STREAMING_SERVICE_OVERRIDE_METADATA = "mbms-streaming-service-override";
  }

  public final class ModemActivityInfo implements android.os.Parcelable {
    ctor public ModemActivityInfo(long, int, int, @NonNull int[], int);
    method public int describeContents();
    method @NonNull public android.telephony.ModemActivityInfo getDelta(@NonNull android.telephony.ModemActivityInfo);
    method public long getIdleTimeMillis();
    method public static int getNumTxPowerLevels();
    method public long getReceiveTimeMillis();
    method public long getSleepTimeMillis();
    method public long getTimestampMillis();
    method public long getTransmitDurationMillisAtPowerLevel(int);
    method @NonNull public android.util.Range<java.lang.Integer> getTransmitPowerRange(int);
    method public boolean isValid();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ModemActivityInfo> CREATOR;
    field public static final int TX_POWER_LEVEL_0 = 0; // 0x0
    field public static final int TX_POWER_LEVEL_1 = 1; // 0x1
    field public static final int TX_POWER_LEVEL_2 = 2; // 0x2
    field public static final int TX_POWER_LEVEL_3 = 3; // 0x3
    field public static final int TX_POWER_LEVEL_4 = 4; // 0x4
  }

  public final class NetworkRegistrationInfo implements android.os.Parcelable {
    method @Nullable public android.telephony.DataSpecificRegistrationInfo getDataSpecificInfo();
    method public int getRegistrationState();
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ public final class CellularBatteryStats implements Parcelable {
                        CellSignalStrength.getNumSignalStrengthLevels()));
        mTxTimeMs = Arrays.copyOfRange(
                txTimeMs, 0,
                Math.min(txTimeMs.length, ModemActivityInfo.TX_POWER_LEVELS));
                Math.min(txTimeMs.length, ModemActivityInfo.getNumTxPowerLevels()));
        mMonitoredRailChargeConsumedMaMs = monitoredRailChargeConsumedMaMs;
    }

+23 −46
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ import android.provider.Settings;
import android.telephony.CellSignalStrength;
import android.telephony.DataConnectionRealTimeInfo;
import android.telephony.ModemActivityInfo;
import android.telephony.ModemActivityInfo.TransmitPower;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
@@ -7791,7 +7790,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public ControllerActivityCounterImpl getOrCreateModemControllerActivityLocked() {
            if (mModemControllerActivity == null) {
                mModemControllerActivity = new ControllerActivityCounterImpl(mBsi.mOnBatteryTimeBase,
                        ModemActivityInfo.TX_POWER_LEVELS);
                        ModemActivityInfo.getNumTxPowerLevels());
            }
            return mModemControllerActivity;
        }
@@ -9257,7 +9256,7 @@ public class BatteryStatsImpl extends BatteryStats {
            if (in.readInt() != 0) {
                mModemControllerActivity = new ControllerActivityCounterImpl(mBsi.mOnBatteryTimeBase,
                        ModemActivityInfo.TX_POWER_LEVELS, in);
                        ModemActivityInfo.getNumTxPowerLevels(), in);
            } else {
                mModemControllerActivity = null;
            }
@@ -10520,7 +10519,7 @@ public class BatteryStatsImpl extends BatteryStats {
        mBluetoothActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
                NUM_BT_TX_LEVELS);
        mModemActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
                ModemActivityInfo.TX_POWER_LEVELS);
                ModemActivityInfo.getNumTxPowerLevels());
        mMobileRadioActiveTimer = new StopwatchTimer(mClocks, null, -400, null, mOnBatteryTimeBase);
        mMobileRadioActivePerAppTimer = new StopwatchTimer(mClocks, null, -401, null,
                mOnBatteryTimeBase);
@@ -11710,26 +11709,7 @@ public class BatteryStatsImpl extends BatteryStats {
        }
    }
    private ModemActivityInfo mLastModemActivityInfo =
            new ModemActivityInfo(0, 0, 0, new int[0], 0);
    private ModemActivityInfo getDeltaModemActivityInfo(ModemActivityInfo activityInfo) {
        if (activityInfo == null) {
            return null;
        }
        int[] txTimeMs = new int[ModemActivityInfo.TX_POWER_LEVELS];
        for (int i = 0; i < ModemActivityInfo.TX_POWER_LEVELS; i++) {
            txTimeMs[i] = activityInfo.getTransmitPowerInfo().get(i).getTimeInMillis()
                    - mLastModemActivityInfo.getTransmitPowerInfo().get(i).getTimeInMillis();
        }
        ModemActivityInfo deltaInfo = new ModemActivityInfo(activityInfo.getTimestamp(),
                activityInfo.getSleepTimeMillis() - mLastModemActivityInfo.getSleepTimeMillis(),
                activityInfo.getIdleTimeMillis() - mLastModemActivityInfo.getIdleTimeMillis(),
                txTimeMs,
                activityInfo.getReceiveTimeMillis() - mLastModemActivityInfo.getReceiveTimeMillis());
        mLastModemActivityInfo = activityInfo;
        return deltaInfo;
    }
    private ModemActivityInfo mLastModemActivityInfo = null;
    /**
     * Distribute Cell radio energy info and network traffic to apps.
@@ -11746,7 +11726,9 @@ public class BatteryStatsImpl extends BatteryStats {
        if (DEBUG_ENERGY) {
            Slog.d(TAG, "Updating mobile radio stats with " + activityInfo);
        }
        ModemActivityInfo deltaInfo = getDeltaModemActivityInfo(activityInfo);
        ModemActivityInfo deltaInfo = mLastModemActivityInfo == null ? activityInfo
                : mLastModemActivityInfo.getDelta(activityInfo);
        mLastModemActivityInfo = activityInfo;
        // Add modem tx power to history.
        addModemTxPowerToHistory(deltaInfo, elapsedRealtimeMs, uptimeMs);
@@ -11778,10 +11760,9 @@ public class BatteryStatsImpl extends BatteryStats {
                mModemActivity.getSleepTimeCounter().addCountLocked(
                        deltaInfo.getSleepTimeMillis());
                mModemActivity.getRxTimeCounter().addCountLocked(deltaInfo.getReceiveTimeMillis());
                for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) {
                for (int lvl = 0; lvl < ModemActivityInfo.getNumTxPowerLevels(); lvl++) {
                    mModemActivity.getTxTimeCounters()[lvl]
                        .addCountLocked(deltaInfo.getTransmitPowerInfo()
                            .get(lvl).getTimeInMillis());
                        .addCountLocked(deltaInfo.getTransmitDurationMillisAtPowerLevel(lvl));
                }
                // POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V.
@@ -11795,11 +11776,11 @@ public class BatteryStatsImpl extends BatteryStats {
                            mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_IDLE)
                            + deltaInfo.getReceiveTimeMillis() *
                            mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_RX);
                    List<TransmitPower> txPowerInfo = deltaInfo.getTransmitPowerInfo();
                    for (int i = 0; i < Math.min(txPowerInfo.size(),
                    for (int i = 0; i < Math.min(ModemActivityInfo.getNumTxPowerLevels(),
                            CellSignalStrength.getNumSignalStrengthLevels()); i++) {
                        energyUsed += txPowerInfo.get(i).getTimeInMillis() * mPowerProfile
                            .getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_TX, i);
                        energyUsed += deltaInfo.getTransmitDurationMillisAtPowerLevel(i)
                                * mPowerProfile.getAveragePower(
                                        PowerProfile.POWER_MODEM_CONTROLLER_TX, i);
                    }
                    // We store the power drain as mAms.
@@ -11894,10 +11875,10 @@ public class BatteryStatsImpl extends BatteryStats {
                            }
                            if (totalTxPackets > 0 && entry.txPackets > 0) {
                                for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) {
                                    long txMs =
                                            entry.txPackets * deltaInfo.getTransmitPowerInfo()
                                                .get(lvl).getTimeInMillis();
                                for (int lvl = 0; lvl < ModemActivityInfo.getNumTxPowerLevels();
                                        lvl++) {
                                    long txMs = entry.txPackets
                                            * deltaInfo.getTransmitDurationMillisAtPowerLevel(lvl);
                                    txMs /= totalTxPackets;
                                    activityCounter.getTxTimeCounters()[lvl].addCountLocked(txMs);
                                }
@@ -11929,18 +11910,14 @@ public class BatteryStatsImpl extends BatteryStats {
        if (activityInfo == null) {
            return;
        }
        List<TransmitPower> txPowerInfo = activityInfo.getTransmitPowerInfo();
        if (txPowerInfo == null || txPowerInfo.size() != ModemActivityInfo.TX_POWER_LEVELS) {
            return;
        }
        int levelMaxTimeSpent = 0;
        for (int i = 1; i < txPowerInfo.size(); i++) {
            if (txPowerInfo.get(i).getTimeInMillis() > txPowerInfo.get(levelMaxTimeSpent)
                .getTimeInMillis()) {
        for (int i = 1; i < ModemActivityInfo.getNumTxPowerLevels(); i++) {
            if (activityInfo.getTransmitDurationMillisAtPowerLevel(i)
                    > activityInfo.getTransmitDurationMillisAtPowerLevel(levelMaxTimeSpent)) {
                levelMaxTimeSpent = i;
            }
        }
        if (levelMaxTimeSpent == ModemActivityInfo.TX_POWER_LEVELS - 1) {
        if (levelMaxTimeSpent == ModemActivityInfo.getNumTxPowerLevels() - 1) {
            mHistoryCur.states2 |= HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
            addHistoryRecordLocked(elapsedRealtimeMs, uptimeMs);
        }
@@ -13462,7 +13439,7 @@ public class BatteryStatsImpl extends BatteryStats {
            timeInRxSignalStrengthLevelMs[i] =
                getPhoneSignalStrengthTime(i, rawRealTimeUs, which) / 1000;
        }
        long[] txTimeMs = new long[Math.min(ModemActivityInfo.TX_POWER_LEVELS,
        long[] txTimeMs = new long[Math.min(ModemActivityInfo.getNumTxPowerLevels(),
            counter.getTxTimeCounters().length)];
        long totalTxTimeMs = 0;
        for (int i = 0; i < txTimeMs.length; i++) {
@@ -15601,7 +15578,7 @@ public class BatteryStatsImpl extends BatteryStats {
        mBluetoothActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
                NUM_BT_TX_LEVELS, in);
        mModemActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
                ModemActivityInfo.TX_POWER_LEVELS, in);
                ModemActivityInfo.getNumTxPowerLevels(), in);
        mHasWifiReporting = in.readInt() != 0;
        mHasBluetoothReporting = in.readInt() != 0;
        mHasModemReporting = in.readInt() != 0;
Loading