Loading proto/src/persist_atoms.proto +3 −0 Original line number Diff line number Diff line Loading @@ -287,6 +287,7 @@ message VoiceCallSession { optional bool is_iwlan_cross_sim_at_end = 38; optional bool is_iwlan_cross_sim_at_connected = 39; optional bool vonr_enabled = 40; optional bool is_ntn = 41; // Internal use only optional int64 setup_begin_millis = 10001; Loading Loading @@ -379,6 +380,7 @@ message DataCallSession { repeated int32 handover_failure_rat = 21; optional bool is_non_dds = 22; optional bool is_iwlan_cross_sim = 23; optional bool is_ntn = 24; } message CellularServiceState { Loading @@ -397,6 +399,7 @@ message CellularServiceState { optional bool override_voice_service = 13; optional bool isDataEnabled = 14; optional bool is_iwlan_cross_sim = 15; optional bool is_ntn = 16; // Internal use only optional int64 last_used_millis = 10001; Loading src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java +6 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.ServiceStateTracker; import com.android.internal.telephony.data.DataNetwork; import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession; import com.android.internal.telephony.satellite.SatelliteController; import com.android.internal.telephony.subscription.SubscriptionInfoInternal; import com.android.internal.telephony.subscription.SubscriptionManagerService; import com.android.telephony.Rlog; Loading @@ -64,10 +65,12 @@ public class DataCallSessionStats { public static final int SIZE_LIMIT_HANDOVER_FAILURES = 15; private final DefaultNetworkMonitor mDefaultNetworkMonitor; private final SatelliteController mSatelliteController; public DataCallSessionStats(Phone phone) { mPhone = phone; mDefaultNetworkMonitor = PhoneFactory.getMetricsCollector().getDefaultNetworkMonitor(); mSatelliteController = SatelliteController.getInstance(); } private boolean isSystemDefaultNetworkMobile() { Loading Loading @@ -303,6 +306,7 @@ public class DataCallSessionStats { call.handoverFailureRat.length); copy.isNonDds = call.isNonDds; copy.isIwlanCrossSim = call.isIwlanCrossSim; copy.isNtn = call.isNtn; return copy; } Loading @@ -329,6 +333,8 @@ public class DataCallSessionStats { proto.handoverFailureRat = new int[0]; proto.isNonDds = false; proto.isIwlanCrossSim = false; proto.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; return proto; } Loading src/java/com/android/internal/telephony/metrics/MetricsCollector.java +6 −3 Original line number Diff line number Diff line Loading @@ -993,7 +993,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { state.foldState, state.overrideVoiceService, state.isDataEnabled, state.isIwlanCrossSim); state.isIwlanCrossSim, state.isNtn); } private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) { Loading Loading @@ -1051,7 +1052,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { session.isIwlanCrossSimAtStart, session.isIwlanCrossSimAtEnd, session.isIwlanCrossSimAtConnected, session.vonrEnabled); session.vonrEnabled, session.isNtn); } Loading Loading @@ -1128,7 +1130,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { dataCallSession.handoverFailureCauses, dataCallSession.handoverFailureRat, dataCallSession.isNonDds, dataCallSession.isIwlanCrossSim); dataCallSession.isIwlanCrossSim, dataCallSession.isNtn); } private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) { Loading src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +2 −1 Original line number Diff line number Diff line Loading @@ -1766,7 +1766,8 @@ public class PersistAtomsStorage { && state.foldState == key.foldState && state.overrideVoiceService == key.overrideVoiceService && state.isDataEnabled == key.isDataEnabled && state.isIwlanCrossSim == key.isIwlanCrossSim) { && state.isIwlanCrossSim == key.isIwlanCrossSim && state.isNtn == key.isNtn) { return state; } } Loading src/java/com/android/internal/telephony/metrics/ServiceStateStats.java +6 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.telephony.data.DataNetworkController.DataNetworkCont import com.android.internal.telephony.imsphone.ImsPhone; import com.android.internal.telephony.nano.PersistAtomsProto.CellularDataServiceSwitch; import com.android.internal.telephony.nano.PersistAtomsProto.CellularServiceState; import com.android.internal.telephony.satellite.SatelliteController; import com.android.telephony.Rlog; import java.util.Set; Loading @@ -66,12 +67,14 @@ public class ServiceStateStats extends DataNetworkControllerCallback { private boolean mExistAnyConnectedInternetPdn; private int mCurrentDataRat = TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_UNSPECIFIED; private final SatelliteController mSatelliteController; public ServiceStateStats(Phone phone) { super(Runnable::run); mPhone = phone; mStorage = PhoneFactory.getMetricsCollector().getAtomsStorage(); mDeviceStateHelper = PhoneFactory.getMetricsCollector().getDeviceStateHelper(); mSatelliteController = SatelliteController.getInstance(); } /** Finalizes the durations of the current service state segment. */ Loading Loading @@ -140,6 +143,8 @@ public class ServiceStateStats extends DataNetworkControllerCallback { newState.overrideVoiceService = mOverrideVoiceService.get(); newState.isDataEnabled = mPhone.getDataSettingsManager().isDataEnabled(); newState.isIwlanCrossSim = isCrossSimCallingRegistered(mPhone); newState.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; TimestampedServiceState prevState = mLastState.getAndSet(new TimestampedServiceState(newState, now)); addServiceStateAndSwitch( Loading Loading @@ -315,6 +320,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback { copy.overrideVoiceService = state.overrideVoiceService; copy.isDataEnabled = state.isDataEnabled; copy.isIwlanCrossSim = state.isIwlanCrossSim; copy.isNtn = state.isNtn; return copy; } Loading Loading
proto/src/persist_atoms.proto +3 −0 Original line number Diff line number Diff line Loading @@ -287,6 +287,7 @@ message VoiceCallSession { optional bool is_iwlan_cross_sim_at_end = 38; optional bool is_iwlan_cross_sim_at_connected = 39; optional bool vonr_enabled = 40; optional bool is_ntn = 41; // Internal use only optional int64 setup_begin_millis = 10001; Loading Loading @@ -379,6 +380,7 @@ message DataCallSession { repeated int32 handover_failure_rat = 21; optional bool is_non_dds = 22; optional bool is_iwlan_cross_sim = 23; optional bool is_ntn = 24; } message CellularServiceState { Loading @@ -397,6 +399,7 @@ message CellularServiceState { optional bool override_voice_service = 13; optional bool isDataEnabled = 14; optional bool is_iwlan_cross_sim = 15; optional bool is_ntn = 16; // Internal use only optional int64 last_used_millis = 10001; Loading
src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java +6 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.ServiceStateTracker; import com.android.internal.telephony.data.DataNetwork; import com.android.internal.telephony.nano.PersistAtomsProto.DataCallSession; import com.android.internal.telephony.satellite.SatelliteController; import com.android.internal.telephony.subscription.SubscriptionInfoInternal; import com.android.internal.telephony.subscription.SubscriptionManagerService; import com.android.telephony.Rlog; Loading @@ -64,10 +65,12 @@ public class DataCallSessionStats { public static final int SIZE_LIMIT_HANDOVER_FAILURES = 15; private final DefaultNetworkMonitor mDefaultNetworkMonitor; private final SatelliteController mSatelliteController; public DataCallSessionStats(Phone phone) { mPhone = phone; mDefaultNetworkMonitor = PhoneFactory.getMetricsCollector().getDefaultNetworkMonitor(); mSatelliteController = SatelliteController.getInstance(); } private boolean isSystemDefaultNetworkMobile() { Loading Loading @@ -303,6 +306,7 @@ public class DataCallSessionStats { call.handoverFailureRat.length); copy.isNonDds = call.isNonDds; copy.isIwlanCrossSim = call.isIwlanCrossSim; copy.isNtn = call.isNtn; return copy; } Loading @@ -329,6 +333,8 @@ public class DataCallSessionStats { proto.handoverFailureRat = new int[0]; proto.isNonDds = false; proto.isIwlanCrossSim = false; proto.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; return proto; } Loading
src/java/com/android/internal/telephony/metrics/MetricsCollector.java +6 −3 Original line number Diff line number Diff line Loading @@ -993,7 +993,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { state.foldState, state.overrideVoiceService, state.isDataEnabled, state.isIwlanCrossSim); state.isIwlanCrossSim, state.isNtn); } private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) { Loading Loading @@ -1051,7 +1052,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { session.isIwlanCrossSimAtStart, session.isIwlanCrossSimAtEnd, session.isIwlanCrossSimAtConnected, session.vonrEnabled); session.vonrEnabled, session.isNtn); } Loading Loading @@ -1128,7 +1130,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback { dataCallSession.handoverFailureCauses, dataCallSession.handoverFailureRat, dataCallSession.isNonDds, dataCallSession.isIwlanCrossSim); dataCallSession.isIwlanCrossSim, dataCallSession.isNtn); } private static StatsEvent buildStatsEvent(ImsRegistrationStats stats) { Loading
src/java/com/android/internal/telephony/metrics/PersistAtomsStorage.java +2 −1 Original line number Diff line number Diff line Loading @@ -1766,7 +1766,8 @@ public class PersistAtomsStorage { && state.foldState == key.foldState && state.overrideVoiceService == key.overrideVoiceService && state.isDataEnabled == key.isDataEnabled && state.isIwlanCrossSim == key.isIwlanCrossSim) { && state.isIwlanCrossSim == key.isIwlanCrossSim && state.isNtn == key.isNtn) { return state; } } Loading
src/java/com/android/internal/telephony/metrics/ServiceStateStats.java +6 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.telephony.data.DataNetworkController.DataNetworkCont import com.android.internal.telephony.imsphone.ImsPhone; import com.android.internal.telephony.nano.PersistAtomsProto.CellularDataServiceSwitch; import com.android.internal.telephony.nano.PersistAtomsProto.CellularServiceState; import com.android.internal.telephony.satellite.SatelliteController; import com.android.telephony.Rlog; import java.util.Set; Loading @@ -66,12 +67,14 @@ public class ServiceStateStats extends DataNetworkControllerCallback { private boolean mExistAnyConnectedInternetPdn; private int mCurrentDataRat = TelephonyStatsLog.DATA_RAT_STATE_CHANGED__DATA_RAT__DATA_RAT_UNSPECIFIED; private final SatelliteController mSatelliteController; public ServiceStateStats(Phone phone) { super(Runnable::run); mPhone = phone; mStorage = PhoneFactory.getMetricsCollector().getAtomsStorage(); mDeviceStateHelper = PhoneFactory.getMetricsCollector().getDeviceStateHelper(); mSatelliteController = SatelliteController.getInstance(); } /** Finalizes the durations of the current service state segment. */ Loading Loading @@ -140,6 +143,8 @@ public class ServiceStateStats extends DataNetworkControllerCallback { newState.overrideVoiceService = mOverrideVoiceService.get(); newState.isDataEnabled = mPhone.getDataSettingsManager().isDataEnabled(); newState.isIwlanCrossSim = isCrossSimCallingRegistered(mPhone); newState.isNtn = mSatelliteController != null ? mSatelliteController.isInSatelliteModeForCarrierRoaming(mPhone) : false; TimestampedServiceState prevState = mLastState.getAndSet(new TimestampedServiceState(newState, now)); addServiceStateAndSwitch( Loading Loading @@ -315,6 +320,7 @@ public class ServiceStateStats extends DataNetworkControllerCallback { copy.overrideVoiceService = state.overrideVoiceService; copy.isDataEnabled = state.isDataEnabled; copy.isIwlanCrossSim = state.isIwlanCrossSim; copy.isNtn = state.isNtn; return copy; } Loading