Loading proto/src/persist_atoms.proto +4 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,7 @@ message ImsRegistrationTermination { optional int32 extra_code = 6; optional string extra_message = 7; optional int32 count = 8; optional bool is_iwlan_cross_sim = 9; // Internal use only optional int64 last_used_millis = 10001; Loading @@ -428,6 +429,9 @@ message ImsRegistrationStats { optional int64 video_available_millis = 10; optional int64 ut_capable_millis = 11; optional int64 ut_available_millis = 12; optional int64 registering_millis = 13; optional int64 unregistered_millis = 14; optional bool is_iwlan_cross_sim = 15; // Internal use only optional int64 last_used_millis = 10001; Loading src/java/com/android/internal/telephony/imsphone/ImsPhone.java +1 −1 Original line number Diff line number Diff line Loading @@ -2477,7 +2477,7 @@ public class ImsPhone extends ImsPhoneBase { setServiceState(ServiceState.STATE_IN_SERVICE); getDefaultPhone().setImsRegistrationState(true); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.CONNECTED, null); mImsStats.onImsRegistered(imsRadioTech); mImsStats.onImsRegistered(attributes); mImsNrSaModeHandler.onImsRegistered( attributes.getRegistrationTechnology(), attributes.getFeatureTags()); updateImsRegistrationInfo(REGISTRATION_STATE_REGISTERED, Loading src/java/com/android/internal/telephony/metrics/ImsStats.java +18 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPAB import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT; import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO; import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_LTE; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_NONE; Loading @@ -39,6 +40,7 @@ import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsRegistrationAttributes; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RegistrationManager.ImsRegistrationState; import android.telephony.ims.feature.MmTelFeature.MmTelCapabilities; Loading Loading @@ -271,10 +273,13 @@ public class ImsStats { (newRat == TelephonyManager.NETWORK_TYPE_IWLAN) ? AccessNetworkConstants.TRANSPORT_TYPE_WLAN : AccessNetworkConstants.TRANSPORT_TYPE_WWAN; if (mLastRegistrationStats != null && mLastRegistrationStats.rat != newRat) { if (mLastRegistrationStats != null) { if (mLastRegistrationStats.rat != newRat) { mLastRegistrationStats.rat = newRat; ratChanged = true; } mLastRegistrationStats.isIwlanCrossSim = radioTech == REGISTRATION_TECH_CROSS_SIM; } boolean voiceAvailableNow = capabilities.isCapable(CAPABILITY_TYPE_VOICE); boolean voiceAvailabilityChanged = Loading Loading @@ -314,15 +319,18 @@ public class ImsStats { } /** Updates the stats when IMS registration succeeds. */ public synchronized void onImsRegistered(@TransportType int imsRadioTech) { public synchronized void onImsRegistered(ImsRegistrationAttributes attributes) { conclude(); mLastTransportType = imsRadioTech; mLastTransportType = attributes.getTransportType(); // NOTE: mLastRegistrationStats can be null (no registering phase). if (mLastRegistrationStats == null) { mLastRegistrationStats = getDefaultImsRegistrationStats(); } mLastRegistrationStats.rat = convertTransportTypeToNetworkType(imsRadioTech); mLastRegistrationStats.rat = convertTransportTypeToNetworkType(attributes.getTransportType()); mLastRegistrationStats.isIwlanCrossSim = attributes.getRegistrationTechnology() == REGISTRATION_TECH_CROSS_SIM; mLastRegistrationState = REGISTRATION_STATE_REGISTERED; } Loading @@ -336,6 +344,7 @@ public class ImsStats { if (mLastRegistrationStats != null) { termination.carrierId = mLastRegistrationStats.carrierId; termination.ratAtEnd = getRatAtEnd(mLastRegistrationStats.rat); termination.isIwlanCrossSim = mLastRegistrationStats.isIwlanCrossSim; } else { termination.carrierId = mPhone.getDefaultPhone().getCarrierId(); // We cannot tell whether the registration was intended for WWAN or WLAN Loading Loading @@ -415,6 +424,7 @@ public class ImsStats { case REGISTRATION_TECH_NONE: return null; case REGISTRATION_TECH_IWLAN: case REGISTRATION_TECH_CROSS_SIM: return mLastWlanCapableFeatures; default: return mLastWwanCapableFeatures; Loading @@ -429,6 +439,7 @@ public class ImsStats { case REGISTRATION_TECH_LTE: return TelephonyManager.NETWORK_TYPE_LTE; case REGISTRATION_TECH_IWLAN: case REGISTRATION_TECH_CROSS_SIM: return TelephonyManager.NETWORK_TYPE_IWLAN; case REGISTRATION_TECH_NR: return TelephonyManager.NETWORK_TYPE_NR; Loading @@ -453,6 +464,7 @@ public class ImsStats { dest.videoAvailableMillis = source.videoAvailableMillis; dest.utCapableMillis = source.utCapableMillis; dest.utAvailableMillis = source.utAvailableMillis; dest.isIwlanCrossSim = source.isIwlanCrossSim; return dest; } Loading src/java/com/android/internal/telephony/metrics/MetricsCollector.java +6 −2 Original line number Diff line number Diff line Loading @@ -1069,7 +1069,10 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { roundAndConvertMillisToSeconds(stats.videoCapableMillis), roundAndConvertMillisToSeconds(stats.videoAvailableMillis), roundAndConvertMillisToSeconds(stats.utCapableMillis), roundAndConvertMillisToSeconds(stats.utAvailableMillis)); roundAndConvertMillisToSeconds(stats.utAvailableMillis), roundAndConvertMillisToSeconds(stats.registeringMillis), roundAndConvertMillisToSeconds(stats.unregisteredMillis), stats.isIwlanCrossSim); } private static StatsEvent buildStatsEvent(ImsRegistrationTermination termination) { Loading @@ -1082,7 +1085,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { termination.reasonCode, termination.extraCode, termination.extraMessage, termination.count); termination.count, termination.isIwlanCrossSim); } private static StatsEvent buildStatsEvent(NetworkRequestsV2 networkRequests) { Loading src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +3 −1 Original line number Diff line number Diff line Loading @@ -1760,7 +1760,8 @@ public class PersistAtomsStorage { for (ImsRegistrationStats stats : mAtoms.imsRegistrationStats) { if (stats.carrierId == key.carrierId && stats.simSlotIndex == key.simSlotIndex && stats.rat == key.rat) { && stats.rat == key.rat && stats.isIwlanCrossSim == key.isIwlanCrossSim) { return stats; } } Loading @@ -1776,6 +1777,7 @@ public class PersistAtomsStorage { if (termination.carrierId == key.carrierId && termination.isMultiSim == key.isMultiSim && termination.ratAtEnd == key.ratAtEnd && termination.isIwlanCrossSim == key.isIwlanCrossSim && termination.setupFailed == key.setupFailed && termination.reasonCode == key.reasonCode && termination.extraCode == key.extraCode Loading Loading
proto/src/persist_atoms.proto +4 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,7 @@ message ImsRegistrationTermination { optional int32 extra_code = 6; optional string extra_message = 7; optional int32 count = 8; optional bool is_iwlan_cross_sim = 9; // Internal use only optional int64 last_used_millis = 10001; Loading @@ -428,6 +429,9 @@ message ImsRegistrationStats { optional int64 video_available_millis = 10; optional int64 ut_capable_millis = 11; optional int64 ut_available_millis = 12; optional int64 registering_millis = 13; optional int64 unregistered_millis = 14; optional bool is_iwlan_cross_sim = 15; // Internal use only optional int64 last_used_millis = 10001; Loading
src/java/com/android/internal/telephony/imsphone/ImsPhone.java +1 −1 Original line number Diff line number Diff line Loading @@ -2477,7 +2477,7 @@ public class ImsPhone extends ImsPhoneBase { setServiceState(ServiceState.STATE_IN_SERVICE); getDefaultPhone().setImsRegistrationState(true); mMetrics.writeOnImsConnectionState(mPhoneId, ImsConnectionState.State.CONNECTED, null); mImsStats.onImsRegistered(imsRadioTech); mImsStats.onImsRegistered(attributes); mImsNrSaModeHandler.onImsRegistered( attributes.getRegistrationTechnology(), attributes.getFeatureTags()); updateImsRegistrationInfo(REGISTRATION_STATE_REGISTERED, Loading
src/java/com/android/internal/telephony/metrics/ImsStats.java +18 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPAB import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_UT; import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO; import static android.telephony.ims.feature.MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_LTE; import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TECH_NONE; Loading @@ -39,6 +40,7 @@ import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsRegistrationAttributes; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RegistrationManager.ImsRegistrationState; import android.telephony.ims.feature.MmTelFeature.MmTelCapabilities; Loading Loading @@ -271,10 +273,13 @@ public class ImsStats { (newRat == TelephonyManager.NETWORK_TYPE_IWLAN) ? AccessNetworkConstants.TRANSPORT_TYPE_WLAN : AccessNetworkConstants.TRANSPORT_TYPE_WWAN; if (mLastRegistrationStats != null && mLastRegistrationStats.rat != newRat) { if (mLastRegistrationStats != null) { if (mLastRegistrationStats.rat != newRat) { mLastRegistrationStats.rat = newRat; ratChanged = true; } mLastRegistrationStats.isIwlanCrossSim = radioTech == REGISTRATION_TECH_CROSS_SIM; } boolean voiceAvailableNow = capabilities.isCapable(CAPABILITY_TYPE_VOICE); boolean voiceAvailabilityChanged = Loading Loading @@ -314,15 +319,18 @@ public class ImsStats { } /** Updates the stats when IMS registration succeeds. */ public synchronized void onImsRegistered(@TransportType int imsRadioTech) { public synchronized void onImsRegistered(ImsRegistrationAttributes attributes) { conclude(); mLastTransportType = imsRadioTech; mLastTransportType = attributes.getTransportType(); // NOTE: mLastRegistrationStats can be null (no registering phase). if (mLastRegistrationStats == null) { mLastRegistrationStats = getDefaultImsRegistrationStats(); } mLastRegistrationStats.rat = convertTransportTypeToNetworkType(imsRadioTech); mLastRegistrationStats.rat = convertTransportTypeToNetworkType(attributes.getTransportType()); mLastRegistrationStats.isIwlanCrossSim = attributes.getRegistrationTechnology() == REGISTRATION_TECH_CROSS_SIM; mLastRegistrationState = REGISTRATION_STATE_REGISTERED; } Loading @@ -336,6 +344,7 @@ public class ImsStats { if (mLastRegistrationStats != null) { termination.carrierId = mLastRegistrationStats.carrierId; termination.ratAtEnd = getRatAtEnd(mLastRegistrationStats.rat); termination.isIwlanCrossSim = mLastRegistrationStats.isIwlanCrossSim; } else { termination.carrierId = mPhone.getDefaultPhone().getCarrierId(); // We cannot tell whether the registration was intended for WWAN or WLAN Loading Loading @@ -415,6 +424,7 @@ public class ImsStats { case REGISTRATION_TECH_NONE: return null; case REGISTRATION_TECH_IWLAN: case REGISTRATION_TECH_CROSS_SIM: return mLastWlanCapableFeatures; default: return mLastWwanCapableFeatures; Loading @@ -429,6 +439,7 @@ public class ImsStats { case REGISTRATION_TECH_LTE: return TelephonyManager.NETWORK_TYPE_LTE; case REGISTRATION_TECH_IWLAN: case REGISTRATION_TECH_CROSS_SIM: return TelephonyManager.NETWORK_TYPE_IWLAN; case REGISTRATION_TECH_NR: return TelephonyManager.NETWORK_TYPE_NR; Loading @@ -453,6 +464,7 @@ public class ImsStats { dest.videoAvailableMillis = source.videoAvailableMillis; dest.utCapableMillis = source.utCapableMillis; dest.utAvailableMillis = source.utAvailableMillis; dest.isIwlanCrossSim = source.isIwlanCrossSim; return dest; } Loading
src/java/com/android/internal/telephony/metrics/MetricsCollector.java +6 −2 Original line number Diff line number Diff line Loading @@ -1069,7 +1069,10 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { roundAndConvertMillisToSeconds(stats.videoCapableMillis), roundAndConvertMillisToSeconds(stats.videoAvailableMillis), roundAndConvertMillisToSeconds(stats.utCapableMillis), roundAndConvertMillisToSeconds(stats.utAvailableMillis)); roundAndConvertMillisToSeconds(stats.utAvailableMillis), roundAndConvertMillisToSeconds(stats.registeringMillis), roundAndConvertMillisToSeconds(stats.unregisteredMillis), stats.isIwlanCrossSim); } private static StatsEvent buildStatsEvent(ImsRegistrationTermination termination) { Loading @@ -1082,7 +1085,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { termination.reasonCode, termination.extraCode, termination.extraMessage, termination.count); termination.count, termination.isIwlanCrossSim); } private static StatsEvent buildStatsEvent(NetworkRequestsV2 networkRequests) { Loading
src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +3 −1 Original line number Diff line number Diff line Loading @@ -1760,7 +1760,8 @@ public class PersistAtomsStorage { for (ImsRegistrationStats stats : mAtoms.imsRegistrationStats) { if (stats.carrierId == key.carrierId && stats.simSlotIndex == key.simSlotIndex && stats.rat == key.rat) { && stats.rat == key.rat && stats.isIwlanCrossSim == key.isIwlanCrossSim) { return stats; } } Loading @@ -1776,6 +1777,7 @@ public class PersistAtomsStorage { if (termination.carrierId == key.carrierId && termination.isMultiSim == key.isMultiSim && termination.ratAtEnd == key.ratAtEnd && termination.isIwlanCrossSim == key.isIwlanCrossSim && termination.setupFailed == key.setupFailed && termination.reasonCode == key.reasonCode && termination.extraCode == key.extraCode Loading