Loading flags/telecom_metrics_flags.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,14 @@ flag { description: "Support telecom metrics" bug: "362394177" } # OWNER=pmadapurmath TARGET=25Q3 flag { name: "call_sequencing_metrics" namespace: "telecom" description: "Support telecom call sequencing metrics" bug: "384949208" metadata { purpose: PURPOSE_BUGFIX } } proto/pulled_atoms.proto +93 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ message PulledAtoms { optional int64 telecom_error_stats_pull_timestamp_millis = 8; repeated TelecomEventStats telecom_event_stats = 9; optional int64 telecom_event_stats_pull_timestamp_millis = 10; repeated CallSequencingStats call_sequencing_stats = 11; optional int64 call_sequencing_stats_pull_timestamp_millis = 12; repeated CallSequencingOperationStats call_sequencing_operation_stats = 13; optional int64 call_sequencing_operations_stats_pull_timestamp_millis = 14; } /** Loading Loading @@ -145,3 +149,92 @@ message TelecomEventStats { // The number of times this event occurs optional int32 count = 4; } /** * Pulled atom to capture general stats of Telecom call sequencing information */ message CallSequencingStats { // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 primary_call_type = 1; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 secondary_call_type = 2; // True if the primary call is an emergency call optional bool is_primary_call_emergency = 3; // True if the secondary call is an emergency call optional bool is_secondary_call_emergency = 4; // True if this event is tracking a secondary call optional bool has_secondary = 5; // True if primary and secondary call phone accounts are the same optional bool is_same_phone_account = 6; // Average elapsed time between CALL_STATE_ACTIVE to CALL_STATE_DISCONNECTED. optional int32 average_duration_ms = 7; // The number of times this stat occurs optional int32 count = 8; } /** * Pulled atom to capture stats of Telecom call sequencing operations */ message CallSequencingOperationStats { // The value should be converted to android.telecom.CallOperationTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 call_operation = 1; // The value should be converted to android.telecom.CallStateEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 focus_call_state = 2; // The value should be converted to android.telecom.CallStateEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 source_call_state = 3; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 focus_call_type = 4; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 source_call_type = 5; // Carrier name of focus call. This should always be -1/unknown for // the private space calls optional int32 focus_call_carrier_id = 6; // Carrier name of the source call. This should always be -1/unknown for // the private space calls or if source call isn’t defined optional int32 source_call_carrier_id = 7; // UID of the package to init the call. This should always be -1/unknown for // the private space calls optional int32 focus_call_id = 8; // UID of the package to init the call. This should always be -1/unknown for // the private space calls or if source call isn’t defined optional int32 source_call_uid = 9; // True if the focus call is an emergency call optional bool is_focus_call_emergency = 10; // True if the source call is an emergency call optional bool is_source_call_emergency = 11; // The value should be converted to android.telecom.CallOperationResultEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 operation_result = 12; // True if source call (provided that this is present) and focus call // are from same phone accounts optional bool is_same_phone_account = 13; // Duration (ms) taken for operation to complete optional int32 operation_duration_ms = 14; } No newline at end of file src/com/android/server/telecom/CallAnomalyWatchdog.java +3 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,9 @@ public class CallAnomalyWatchdog extends CallsManagerListenerBase implements Cal if (mFeatureFlags.telecomMetricsSupport()) { mMetricsController.getCallStats().onCallEnd(call); } if (mFeatureFlags.callSequencingMetrics()) { mMetricsController.getCallSequencingStats().onCallEnd(call); } } /** Loading src/com/android/server/telecom/CallsManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -827,7 +827,7 @@ public class CallsManager extends Call.ListenerBase mCallSequencingAdapter = new CallsManagerCallSequencingAdapter(this, mContext, new CallSequencingController(this, mContext, mClockProxy, mAnomalyReporter, mTimeoutsAdapter, mMetricsController, mMmiUtils, mFeatureFlags), mCallAudioManager, mFeatureFlags); mFeatureFlags), mCallAudioManager, mMetricsController, mFeatureFlags); mListeners.add(mInCallController); mListeners.add(mInCallWakeLockController); Loading Loading @@ -4877,6 +4877,7 @@ public class CallsManager extends Call.ListenerBase } Log.i(this, "addCall(%s)", call); call.addListener(this); mCallSequencingAdapter.setCallSequencingMetrics(call); mCalls.add(call); // Reprocess the simultaneous call types for all the tracked calls after having added a new // call. Loading src/com/android/server/telecom/callsequencing/CallSequencingController.java +1 −2 Original line number Diff line number Diff line Loading @@ -1058,8 +1058,7 @@ public class CallSequencingController { CarrierConfigManager.KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL, true); } @VisibleForTesting public boolean arePhoneAccountsSame(Call call1, Call call2) { public static boolean arePhoneAccountsSame(Call call1, Call call2) { if (call1 == null || call2 == null) { return false; } Loading Loading
flags/telecom_metrics_flags.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -8,3 +8,14 @@ flag { description: "Support telecom metrics" bug: "362394177" } # OWNER=pmadapurmath TARGET=25Q3 flag { name: "call_sequencing_metrics" namespace: "telecom" description: "Support telecom call sequencing metrics" bug: "384949208" metadata { purpose: PURPOSE_BUGFIX } }
proto/pulled_atoms.proto +93 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ message PulledAtoms { optional int64 telecom_error_stats_pull_timestamp_millis = 8; repeated TelecomEventStats telecom_event_stats = 9; optional int64 telecom_event_stats_pull_timestamp_millis = 10; repeated CallSequencingStats call_sequencing_stats = 11; optional int64 call_sequencing_stats_pull_timestamp_millis = 12; repeated CallSequencingOperationStats call_sequencing_operation_stats = 13; optional int64 call_sequencing_operations_stats_pull_timestamp_millis = 14; } /** Loading Loading @@ -145,3 +149,92 @@ message TelecomEventStats { // The number of times this event occurs optional int32 count = 4; } /** * Pulled atom to capture general stats of Telecom call sequencing information */ message CallSequencingStats { // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 primary_call_type = 1; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 secondary_call_type = 2; // True if the primary call is an emergency call optional bool is_primary_call_emergency = 3; // True if the secondary call is an emergency call optional bool is_secondary_call_emergency = 4; // True if this event is tracking a secondary call optional bool has_secondary = 5; // True if primary and secondary call phone accounts are the same optional bool is_same_phone_account = 6; // Average elapsed time between CALL_STATE_ACTIVE to CALL_STATE_DISCONNECTED. optional int32 average_duration_ms = 7; // The number of times this stat occurs optional int32 count = 8; } /** * Pulled atom to capture stats of Telecom call sequencing operations */ message CallSequencingOperationStats { // The value should be converted to android.telecom.CallOperationTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 call_operation = 1; // The value should be converted to android.telecom.CallStateEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 focus_call_state = 2; // The value should be converted to android.telecom.CallStateEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 source_call_state = 3; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 focus_call_type = 4; // The value should be converted to android.telecom.CallTypeEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 source_call_type = 5; // Carrier name of focus call. This should always be -1/unknown for // the private space calls optional int32 focus_call_carrier_id = 6; // Carrier name of the source call. This should always be -1/unknown for // the private space calls or if source call isn’t defined optional int32 source_call_carrier_id = 7; // UID of the package to init the call. This should always be -1/unknown for // the private space calls optional int32 focus_call_id = 8; // UID of the package to init the call. This should always be -1/unknown for // the private space calls or if source call isn’t defined optional int32 source_call_uid = 9; // True if the focus call is an emergency call optional bool is_focus_call_emergency = 10; // True if the source call is an emergency call optional bool is_source_call_emergency = 11; // The value should be converted to android.telecom.CallOperationResultEnum // From frameworks/proto_logging/stats/enums/telecomm/enums.proto optional int32 operation_result = 12; // True if source call (provided that this is present) and focus call // are from same phone accounts optional bool is_same_phone_account = 13; // Duration (ms) taken for operation to complete optional int32 operation_duration_ms = 14; } No newline at end of file
src/com/android/server/telecom/CallAnomalyWatchdog.java +3 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,9 @@ public class CallAnomalyWatchdog extends CallsManagerListenerBase implements Cal if (mFeatureFlags.telecomMetricsSupport()) { mMetricsController.getCallStats().onCallEnd(call); } if (mFeatureFlags.callSequencingMetrics()) { mMetricsController.getCallSequencingStats().onCallEnd(call); } } /** Loading
src/com/android/server/telecom/CallsManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -827,7 +827,7 @@ public class CallsManager extends Call.ListenerBase mCallSequencingAdapter = new CallsManagerCallSequencingAdapter(this, mContext, new CallSequencingController(this, mContext, mClockProxy, mAnomalyReporter, mTimeoutsAdapter, mMetricsController, mMmiUtils, mFeatureFlags), mCallAudioManager, mFeatureFlags); mFeatureFlags), mCallAudioManager, mMetricsController, mFeatureFlags); mListeners.add(mInCallController); mListeners.add(mInCallWakeLockController); Loading Loading @@ -4877,6 +4877,7 @@ public class CallsManager extends Call.ListenerBase } Log.i(this, "addCall(%s)", call); call.addListener(this); mCallSequencingAdapter.setCallSequencingMetrics(call); mCalls.add(call); // Reprocess the simultaneous call types for all the tracked calls after having added a new // call. Loading
src/com/android/server/telecom/callsequencing/CallSequencingController.java +1 −2 Original line number Diff line number Diff line Loading @@ -1058,8 +1058,7 @@ public class CallSequencingController { CarrierConfigManager.KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL, true); } @VisibleForTesting public boolean arePhoneAccountsSame(Call call1, Call call2) { public static boolean arePhoneAccountsSame(Call call1, Call call2) { if (call1 == null || call2 == null) { return false; } Loading