Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +57 −20 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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); } Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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()) { Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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(), Loading @@ -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(), Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading @@ -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("++++++++++++++++++++++++++++++++"); Loading Loading @@ -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); } Loading Loading @@ -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); } Loading Loading @@ -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(); Loading Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +57 −20 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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); } Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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()) { Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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(), Loading @@ -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(), Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading @@ -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("++++++++++++++++++++++++++++++++"); Loading Loading @@ -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); } Loading Loading @@ -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); } Loading Loading @@ -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(); Loading