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

Commit c7f541a6 authored by SongFerng Wang's avatar SongFerng Wang Committed by Android (Google) Code Review
Browse files

Merge "[MainLine] Substituting IBatteryStats with BatteryStatsManager"

parents c2af0c97 6dfaa830
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.internal.telephony.euicc.EuiccController;
import com.android.internal.telephony.ims.ImsResolver;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneFactory;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.sip.SipPhone;
import com.android.internal.telephony.sip.SipPhoneFactory;
import com.android.internal.telephony.uicc.UiccController;
@@ -111,6 +112,9 @@ public class PhoneFactory {
                // create the telephony device controller.
                TelephonyDevController.create();

                TelephonyMetrics metrics = TelephonyMetrics.getInstance();
                metrics.setContext(context);

                int retryCount = 0;
                for(;;) {
                    boolean hasException = false;
+22 −27
Original line number Diff line number Diff line
@@ -15,13 +15,10 @@
 */
package com.android.internal.telephony.metrics;

import android.os.BatteryStats;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.BatteryStatsManager;
import android.os.connectivity.CellularBatteryStats;
import android.text.format.DateUtils;

import com.android.internal.app.IBatteryStats;
import com.android.internal.telephony.nano.TelephonyProto.ModemPowerStats;

/**
@@ -30,12 +27,11 @@ import com.android.internal.telephony.nano.TelephonyProto.ModemPowerStats;
 */
public class ModemPowerMetrics {

    /* BatteryStats API */
    private final IBatteryStats mBatteryStats;
    /* BatteryStatsManager API */
    private BatteryStatsManager mBatteryStatsManager;

    public ModemPowerMetrics() {
        mBatteryStats = IBatteryStats.Stub.asInterface(ServiceManager.getService(
            BatteryStats.SERVICE_NAME));
    public ModemPowerMetrics(BatteryStatsManager batteryStatsManager) {
        mBatteryStatsManager = batteryStatsManager;
    }

    /**
@@ -46,45 +42,44 @@ public class ModemPowerMetrics {
        ModemPowerStats m = new ModemPowerStats();
        CellularBatteryStats stats = getStats();
        if (stats != null) {
            m.loggingDurationMs = stats.getLoggingDurationMs();
            m.energyConsumedMah = stats.getEnergyConsumedMaMs()
            m.loggingDurationMs = stats.getLoggingDurationMillis();
            m.energyConsumedMah = stats.getEnergyConsumedMaMillis()
                / ((double) DateUtils.HOUR_IN_MILLIS);
            m.numPacketsTx = stats.getNumPacketsTx();
            m.cellularKernelActiveTimeMs = stats.getKernelActiveTimeMs();
            if (stats.getTimeInRxSignalStrengthLevelMs() != null
                && stats.getTimeInRxSignalStrengthLevelMs().length > 0) {
                m.timeInVeryPoorRxSignalLevelMs = stats.getTimeInRxSignalStrengthLevelMs()[0];
            m.cellularKernelActiveTimeMs = stats.getKernelActiveTimeMillis();
            if (stats.getTimeInRxSignalStrengthLevelMicros() != null
                    && stats.getTimeInRxSignalStrengthLevelMicros().length > 0) {
                m.timeInVeryPoorRxSignalLevelMs = stats.getTimeInRxSignalStrengthLevelMicros()[0];
            }
            m.sleepTimeMs = stats.getSleepTimeMs();
            m.idleTimeMs = stats.getIdleTimeMs();
            m.rxTimeMs = stats.getRxTimeMs();
            long[] t = stats.getTxTimeMs();
            m.sleepTimeMs = stats.getSleepTimeMillis();
            m.idleTimeMs = stats.getIdleTimeMillis();
            m.rxTimeMs = stats.getRxTimeMillis();
            long[] t = stats.getTxTimeMillis();
            m.txTimeMs = new long[t.length];
            System.arraycopy(t, 0, m.txTimeMs, 0, t.length);
            m.numBytesTx = stats.getNumBytesTx();
            m.numPacketsRx = stats.getNumPacketsRx();
            m.numBytesRx = stats.getNumBytesRx();
            long[] tr = stats.getTimeInRatMs();
            long[] tr = stats.getTimeInRatMicros();
            m.timeInRatMs = new long[tr.length];
            System.arraycopy(tr, 0, m.timeInRatMs, 0, tr.length);
            long[] trx = stats.getTimeInRxSignalStrengthLevelMs();
            long[] trx = stats.getTimeInRxSignalStrengthLevelMicros();
            m.timeInRxSignalStrengthLevelMs = new long[trx.length];
            System.arraycopy(trx, 0, m.timeInRxSignalStrengthLevelMs, 0, trx.length);
            m.monitoredRailEnergyConsumedMah = stats.getMonitoredRailChargeConsumedMaMs()
            m.monitoredRailEnergyConsumedMah = stats.getMonitoredRailChargeConsumedMaMillis()
                / ((double) DateUtils.HOUR_IN_MILLIS);
        }
        return m;
    }

    /**
     * Get cellular stats from batterystats
     * Get cellular stats from BatteryStatsManager
     * @return CellularBatteryStats
     */
    private CellularBatteryStats getStats() {
        try {
            return mBatteryStats.getCellularBatteryStats();
        } catch (RemoteException e) {
        }
        if (mBatteryStatsManager == null) {
            return null;
        }
        return mBatteryStatsManager.getCellularBatteryStats();
    }
}
+22 −2
Original line number Diff line number Diff line
@@ -37,7 +37,9 @@ import static com.android.internal.telephony.nano.TelephonyProto.PdpType.PDP_TYP
import static com.android.internal.telephony.nano.TelephonyProto.PdpType.PDP_TYPE_UNSTRUCTURED;
import static com.android.internal.telephony.nano.TelephonyProto.PdpType.PDP_UNKNOWN;

import android.content.Context;
import android.net.NetworkCapabilities;
import android.os.BatteryStatsManager;
import android.os.Build;
import android.os.SystemClock;
import android.os.SystemProperties;
@@ -229,6 +231,8 @@ public class TelephonyMetrics {
    /** Indicating if some of the telephony events are dropped in this log */
    private boolean mTelephonyEventsDropped = false;

    private Context mContext;

    public TelephonyMetrics() {
        mStartSystemTimeMs = System.currentTimeMillis();
        mStartElapsedTimeMs = SystemClock.elapsedRealtime();
@@ -247,6 +251,16 @@ public class TelephonyMetrics {
        return sInstance;
    }

    /**
     * Set the context for telephony metrics.
     *
     * @param context Context
     * @hide
     */
    public void setContext(Context context) {
        mContext = context;
    }

    /**
     * Dump the state of various objects, add calls to other objects as desired.
     *
@@ -563,7 +577,11 @@ public class TelephonyMetrics {
        pw.decreaseIndent();
        pw.println("Modem power stats:");
        pw.increaseIndent();
        ModemPowerStats s = new ModemPowerMetrics().buildProto();

        BatteryStatsManager batteryStatsManager = mContext == null ? null :
                (BatteryStatsManager) mContext.getSystemService(Context.BATTERY_STATS_SERVICE);
        ModemPowerStats s = new ModemPowerMetrics(batteryStatsManager).buildProto();

        pw.println("Power log duration (battery time) (ms): " + s.loggingDurationMs);
        pw.println("Energy consumed by modem (mAh): " + s.energyConsumedMah);
        pw.println("Number of packets sent (tx): " + s.numPacketsTx);
@@ -722,7 +740,9 @@ public class TelephonyMetrics {
        }

        // Build modem power metrics
        log.modemPowerStats = new ModemPowerMetrics().buildProto();
        BatteryStatsManager batteryStatsManager = mContext == null ? null :
                (BatteryStatsManager) mContext.getSystemService(Context.BATTERY_STATS_SERVICE);
        log.modemPowerStats = new ModemPowerMetrics(batteryStatsManager).buildProto();

        // Log the hardware revision
        log.hardwareRevision = SystemProperties.get("ro.boot.revision", "");
+5 −1
Original line number Diff line number Diff line
@@ -55,13 +55,13 @@ import android.net.ConnectivityManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.BatteryStatsManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.IInterface;
import android.os.PersistableBundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.telephony.TelephonyRegistryManager;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.provider.Telephony.ServiceStateTable;
@@ -69,6 +69,7 @@ import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyRegistryManager;
import android.telephony.euicc.EuiccManager;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
@@ -250,6 +251,8 @@ public class ContextFixture implements TestFixture<Context> {
                    return mDownloadManager;
                case Context.TELEPHONY_REGISTRY_SERVICE:
                    return mTelephonyRegistryManager;
                case Context.BATTERY_STATS_SERVICE:
                    return mBatteryStatsManager;
                case Context.DISPLAY_SERVICE:
                case Context.POWER_SERVICE:
                    // PowerManager and DisplayManager are final classes so cannot be mocked,
@@ -574,6 +577,7 @@ public class ContextFixture implements TestFixture<Context> {
    private final PackageInfo mPackageInfo = mock(PackageInfo.class);
    private final TelephonyRegistryManager mTelephonyRegistryManager =
        mock(TelephonyRegistryManager.class);
    private final BatteryStatsManager mBatteryStatsManager = mock(BatteryStatsManager.class);

    private final ContentProvider mContentProvider = spy(new FakeContentProvider());

+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ public class TelephonyMetricsTest extends TelephonyTest {
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());
        mMetrics = new TelephonyMetrics();
        mMetrics.setContext(mContext);
        mUusInfo = new UUSInfo(1, 2, new byte[]{1, 2});
        doReturn("123").when(mImsCallSession).getCallId();
        mImsReasonInfo = new ImsReasonInfo();