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

Commit 151a22ad authored by Brad Ebinger's avatar Brad Ebinger Committed by android-build-merger
Browse files

Merge "Add IMS registration history to ImsPhoneCallTracker dumpsys" am: cee67608

am: 558b1391

Change-Id: I3b2fb0aab6647aeca9377910a0a03c9f0e8cc065
parents fa59bd6d 558b1391
Loading
Loading
Loading
Loading
+57 −20
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.provider.Settings;
import android.telecom.ConferenceParticipant;
import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
import android.telephony.AccessNetworkConstants;
import android.telephony.CallQuality;
import android.telephony.CarrierConfigManager;
import android.telephony.DisconnectCause;
@@ -69,6 +70,7 @@ import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.LocalLog;
import android.util.Log;
import android.util.Pair;

@@ -108,6 +110,7 @@ import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.nano.TelephonyProto.ImsConnectionState;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyCallSession;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyCallSession.Event.ImsCommand;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.net.NetworkStatsService;

import java.io.FileDescriptor;
@@ -166,6 +169,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        @Override
        public void onIncomingCall(IImsCallSession c, Bundle extras) {
            if (DBG) log("onReceive : incoming call intent");
            mOperationLocalLog.log("onIncomingCall Received");

            if (mImsManager == null) return;

@@ -535,6 +539,11 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    private final FeatureConnector<ImsManager> mImsManagerConnector;

    // Used exclusively for IMS Registration related events for logging.
    private final LocalLog mRegLocalLog = new LocalLog(100);
    // Used for important operational related events for logging.
    private final LocalLog mOperationLocalLog = new LocalLog(100);

    //***** Events


@@ -640,6 +649,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    private void startListeningForCalls() throws ImsException {
        log("startListeningForCalls");
        mOperationLocalLog.log("startListeningForCalls - Connecting to ImsService");
        mImsManager.open(mMmTelFeatureListener);
        mImsManager.addRegistrationCallback(mImsRegistrationCallback);
        mImsManager.addCapabilitiesCallback(mImsCapabilityCallback);
@@ -682,6 +692,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    private void stopListeningForCalls() {
        log("stopListeningForCalls");
        mOperationLocalLog.log("stopListeningForCalls - Disconnecting from ImsService");
        resetImsCapabilities();
        // Only close on valid session.
        if (mImsManager != null) {
@@ -780,6 +791,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

        if (!shouldNumberBePlacedOnIms(isEmergencyNumber, dialString)) {
            Rlog.i(LOG_TAG, "dial: shouldNumberBePlacedOnIms = false");
            mOperationLocalLog.log("dial: shouldNumberBePlacedOnIms = false");
            throw new CallStateException(CS_FALLBACK);
        }

@@ -787,6 +799,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        int videoState = dialArgs.videoState;

        if (DBG) log("dial clirMode=" + clirMode);
        mOperationLocalLog.log("dial requested.");
        String origNumber = dialString;
        if (isEmergencyNumber) {
            clirMode = CommandsInterface.CLIR_SUPPRESSION;
@@ -1133,6 +1146,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
            conn.setAllowAddCallDuringVideoCall(mAllowAddCallDuringVideoCall);
        } catch (ImsException e) {
            loge("dialInternal : " + e);
            mOperationLocalLog.log("dialInternal exception: " + e);
            conn.setDisconnectCause(DisconnectCause.ERROR_UNSPECIFIED);
            sendEmptyMessageDelayed(EVENT_HANGUP_PENDINGMO, TIMEOUT_HANGUP_PENDINGMO);
            retryGetImsService();
@@ -1149,6 +1163,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
     */
    public void acceptCall(int videoState) throws CallStateException {
        if (DBG) log("acceptCall");
        mOperationLocalLog.log("accepted incoming call");

        if (mForegroundCall.getState().isAlive()
                && mBackgroundCall.getState().isAlive()) {
@@ -1204,6 +1219,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

    public void rejectCall () throws CallStateException {
        if (DBG) log("rejectCall");
        mOperationLocalLog.log("rejected incoming call");

        if (mRingingCall.getState().isRinging()) {
            hangup(mRingingCall);
@@ -1499,6 +1515,8 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
            cacheConnectionTimeWithPhoneNumber(backgroundConnection);
        }
        log("conference: fgCallId=" + foregroundId + ", bgCallId=" + backgroundId);
        mOperationLocalLog.log("conference: fgCallId=" + foregroundId + ", bgCallId="
                + backgroundId);

        try {
            fgImsCall.merge(bgImsCall);
@@ -3131,9 +3149,13 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
            new ImsMmTelManager.RegistrationCallback() {

                @Override
                public void onRegistered(
                        @ImsRegistrationImplBase.ImsRegistrationTech int imsRadioTech) {
                    if (DBG) log("onImsConnected imsRadioTech=" + imsRadioTech);
                public void onRegistered(int imsRadioTech) {
                    if (DBG) {
                        log("onImsConnected imsRadioTech="
                                + AccessNetworkConstants.transportTypeToString(imsRadioTech));
                    }
                    mRegLocalLog.log("onImsConnected imsRadioTech="
                            + AccessNetworkConstants.transportTypeToString(imsRadioTech));
                    mPhone.setServiceState(ServiceState.STATE_IN_SERVICE);
                    mPhone.setImsRegistered(true);
                    mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),
@@ -3141,9 +3163,13 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                }

                @Override
                public void onRegistering(
                        @ImsRegistrationImplBase.ImsRegistrationTech int imsRadioTech) {
                    if (DBG) log("onImsProgressing imsRadioTech=" + imsRadioTech);
                public void onRegistering(int imsRadioTech) {
                    if (DBG) {
                        log("onImsProgressing imsRadioTech="
                                + AccessNetworkConstants.transportTypeToString(imsRadioTech));
                    }
                    mRegLocalLog.log("onImsProgressing imsRadioTech="
                            + AccessNetworkConstants.transportTypeToString(imsRadioTech));
                    mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
                    mPhone.setImsRegistered(false);
                    mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),
@@ -3153,6 +3179,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                @Override
                public void onUnregistered(ImsReasonInfo imsReasonInfo) {
                    if (DBG) log("onImsDisconnected imsReasonInfo=" + imsReasonInfo);
                    mRegLocalLog.log("onImsDisconnected imsRadioTech=" + imsReasonInfo);
                    mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
                    mPhone.setImsRegistered(false);
                    mPhone.processDisconnectReason(imsReasonInfo);
@@ -3598,9 +3625,12 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
    public void dump(FileDescriptor fd, PrintWriter printWriter, String[] args) {
        IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, "  ");
        pw.println("ImsPhoneCallTracker extends:");
        pw.increaseIndent();
        super.dump(fd, pw, args);
        pw.decreaseIndent();
        pw.println(" mVoiceCallEndedRegistrants=" + mVoiceCallEndedRegistrants);
        pw.println(" mVoiceCallStartedRegistrants=" + mVoiceCallStartedRegistrants);
        pw.println(" mRingingCall=" + mRingingCall);
@@ -3608,7 +3638,6 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        pw.println(" mBackgroundCall=" + mBackgroundCall);
        pw.println(" mHandoverCall=" + mHandoverCall);
        pw.println(" mPendingMO=" + mPendingMO);
        //pw.println(" mHangupPendingMO=" + mHangupPendingMO);
        pw.println(" mPhone=" + mPhone);
        pw.println(" mDesiredMute=" + mDesiredMute);
        pw.println(" mState=" + mState);
@@ -3619,6 +3648,14 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        pw.println(" mCallQualityMetrics=" + mCallQualityMetrics);
        pw.println(" mCallQualityMetricsHistory=" + mCallQualityMetricsHistory);
        pw.println(" mIsConferenceEventPackageHandlingEnabled=" + mIsConferenceEventPackageEnabled);
        pw.println(" Registration Log:");
        pw.increaseIndent();
        mRegLocalLog.dump(pw);
        pw.decreaseIndent();
        pw.println(" Event Log:");
        pw.increaseIndent();
        mOperationLocalLog.dump(pw);
        pw.decreaseIndent();

        pw.flush();
        pw.println("++++++++++++++++++++++++++++++++");
@@ -3684,20 +3721,17 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
    }

    public boolean isVolteEnabled() {
        boolean isRadioTechLte = getImsRegistrationTech()
                == ImsRegistrationImplBase.REGISTRATION_TECH_LTE;
        return isRadioTechLte && mMmTelCapabilities.isCapable(
                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
        return isImsCapabilityAvailable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
                ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
    }

    public boolean isVowifiEnabled() {
        boolean isRadioTechIwlan = getImsRegistrationTech()
                == ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
        return isRadioTechIwlan && mMmTelCapabilities.isCapable(
                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
        return isImsCapabilityAvailable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
                ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN);
    }

    public boolean isVideoCallEnabled() {
        // Currently no reliance on transport technology.
        return mMmTelCapabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
    }

@@ -3744,6 +3778,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
    }

    public boolean isUtEnabled() {
        // Currently no reliance on transport technology
        return mMmTelCapabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT);
    }

@@ -4228,12 +4263,14 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {

        if (DBG) log(sb.toString());

        if (DBG) {
            log("handleFeatureCapabilityChanged: isVolteEnabled=" + isVolteEnabled()
        String logMessage = "handleFeatureCapabilityChanged: isVolteEnabled=" + isVolteEnabled()
                + ", isVideoCallEnabled=" + isVideoCallEnabled()
                + ", isVowifiEnabled=" + isVowifiEnabled()
                    + ", isUtEnabled=" + isUtEnabled());
                + ", isUtEnabled=" + isUtEnabled();
        if (DBG) {
            log(logMessage);
        }
        mRegLocalLog.log(logMessage);

        mPhone.onFeatureCapabilityChanged();