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

Commit cee67608 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add IMS registration history to ImsPhoneCallTracker dumpsys"

parents 0259a2ab 8e473b27
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);
@@ -3120,9 +3138,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(),
@@ -3130,9 +3152,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(),
@@ -3142,6 +3168,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);
@@ -3587,9 +3614,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);
@@ -3597,7 +3627,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);
@@ -3608,6 +3637,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("++++++++++++++++++++++++++++++++");
@@ -3673,20 +3710,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);
    }

@@ -3733,6 +3767,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);
    }

@@ -4217,12 +4252,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();