aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilly Hu <willycwhu@google.com>2023-03-10 17:40:52 +0800
committerWilly Hu <willycwhu@google.com>2023-03-21 12:04:39 +0800
commit5df1d21c749e9aa458b33f00d3e4061f8d5e6825 (patch)
tree1b5f3257a0fd6a449039ae3da98be57adaa45d7a
parentcdda0a04effd123f29deba83e515458ab6af32b0 (diff)
downloadtelephony-5df1d21c749e9aa458b33f00d3e4061f8d5e6825.tar.gz
[DSRM] Store the duration of current action
- Add one more parameter to save the duration of current action - Calculate the duration of current recovery action Bug: 272415977 Test: Manual test passed. Change-Id: Id41cdb64699dfc907ac5e22fedd6705a964d0dca Merged-In: Id41cdb64699dfc907ac5e22fedd6705a964d0dca
-rw-r--r--src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java21
-rw-r--r--src/java/com/android/internal/telephony/metrics/DataStallRecoveryStats.java10
2 files changed, 26 insertions, 5 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java b/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java
index 12c0ef5575..7b4e5af0ce 100644
--- a/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java
+++ b/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java
@@ -176,6 +176,8 @@ public class DataStallRecoveryManager extends Handler {
private boolean mIsAttemptedAllSteps;
/** Whether internet network connected. */
private boolean mIsInternetNetworkConnected;
+ /** The durations for current recovery action */
+ private @ElapsedRealtimeLong long mTimeElapsedOfCurrentAction;
/** The array for the timers between recovery actions. */
private @NonNull long[] mDataStallRecoveryDelayMillisArray;
@@ -469,6 +471,15 @@ public class DataStallRecoveryManager extends Handler {
}
/**
+ * Get duration time for current recovery action.
+ *
+ * @return the time duration for current recovery action.
+ */
+ private long getDurationOfCurrentRecoveryMs() {
+ return (SystemClock.elapsedRealtime() - mTimeElapsedOfCurrentAction);
+ }
+
+ /**
* Broadcast intent when data stall occurred.
*
* @param recoveryAction Send the data stall detected intent with RecoveryAction info.
@@ -595,6 +606,7 @@ public class DataStallRecoveryManager extends Handler {
private void setNetworkValidationState(boolean isValid) {
boolean isLogNeeded = false;
int timeDuration = 0;
+ int timeDurationOfCurrentAction = 0;
boolean isFirstDataStall = false;
boolean isFirstValidationAfterDoRecovery = false;
@RecoveredReason int reason = getRecoveredReason(isValid);
@@ -627,9 +639,11 @@ public class DataStallRecoveryManager extends Handler {
}
if (isLogNeeded) {
+ timeDurationOfCurrentAction =
+ (isFirstDataStall == true ? 0 : (int) getDurationOfCurrentRecoveryMs());
DataStallRecoveryStats.onDataStallEvent(
mLastAction, mPhone, isValid, timeDuration, reason,
- isFirstValidationAfterDoRecovery);
+ isFirstValidationAfterDoRecovery, timeDurationOfCurrentAction);
logl(
"data stall: "
+ (isFirstDataStall == true ? "start" : isValid == false ? "in process" : "end")
@@ -642,7 +656,9 @@ public class DataStallRecoveryManager extends Handler {
+ ", isFirstValidationAfterDoRecovery="
+ isFirstValidationAfterDoRecovery
+ ", TimeDuration="
- + timeDuration);
+ + timeDuration
+ + ", TimeDurationForCurrentRecoveryAction="
+ + timeDurationOfCurrentAction);
}
}
@@ -693,6 +709,7 @@ public class DataStallRecoveryManager extends Handler {
mLastActionReported = false;
broadcastDataStallDetected(recoveryAction);
mNetworkCheckTimerStarted = false;
+ mTimeElapsedOfCurrentAction = SystemClock.elapsedRealtime();
switch (recoveryAction) {
case RECOVERY_ACTION_GET_DATA_CALL_LIST:
diff --git a/src/java/com/android/internal/telephony/metrics/DataStallRecoveryStats.java b/src/java/com/android/internal/telephony/metrics/DataStallRecoveryStats.java
index 350f1a3f7c..0cedb022e7 100644
--- a/src/java/com/android/internal/telephony/metrics/DataStallRecoveryStats.java
+++ b/src/java/com/android/internal/telephony/metrics/DataStallRecoveryStats.java
@@ -73,6 +73,7 @@ public class DataStallRecoveryStats {
.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING;
boolean isFirstValidation = false;
int phoneId = 0;
+ int durationMillisOfCurrentAction = 0;
TelephonyStatsLog.write(
TelephonyStatsLog.DATA_STALL_RECOVERY_REPORTED,
carrierId,
@@ -89,7 +90,8 @@ public class DataStallRecoveryStats {
otherNetworkRegState,
phoneNetworkRegState,
isFirstValidation,
- phoneId);
+ phoneId,
+ durationMillisOfCurrentAction);
}
/**
@@ -108,7 +110,8 @@ public class DataStallRecoveryStats {
boolean isRecovered,
int durationMillis,
@DataStallRecoveryManager.RecoveredReason int reason,
- boolean isFirstValidation) {
+ boolean isFirstValidation,
+ int durationMillisOfCurrentAction) {
if (phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) {
phone = phone.getDefaultPhone();
}
@@ -163,7 +166,8 @@ public class DataStallRecoveryStats {
otherNetworkRegState,
phoneNetworkRegState,
isFirstValidation,
- phoneId);
+ phoneId,
+ durationMillisOfCurrentAction);
}
/** Returns the RAT used for data (including IWLAN). */