Add pending messages to dumpsys
Add a record of the pending messages for the two audio state machines in
the dumpsys in order to debug errors where the state machines get
blocked on a file access.
Bug: 36056251
Test: manual - run dumpsys
Change-Id: I583014783dedb36d9fdd8a0338395f3c0ae6e542
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index e50fd21..1075be2 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -477,6 +477,16 @@
pw.println("Foreground call:");
pw.println(mForegroundCall);
+
+ pw.println("CallAudioModeStateMachine pending messages:");
+ pw.increaseIndent();
+ mCallAudioModeStateMachine.dumpPendingMessages(pw);
+ pw.decreaseIndent();
+
+ pw.println("CallAudioRouteStateMachine pending messages:");
+ pw.increaseIndent();
+ mCallAudioRouteStateMachine.dumpPendingMessages(pw);
+ pw.decreaseIndent();
}
@VisibleForTesting
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 7121a53..3d778f2 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -24,6 +24,7 @@
import android.util.SparseArray;
import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
@@ -515,6 +516,10 @@
}
}
+ public void dumpPendingMessages(IndentingPrintWriter pw) {
+ getHandler().getLooper().dump(pw::println, "");
+ }
+
@Override
protected void onPostHandleMessage(Message msg) {
Log.endSession();
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index dd69534..7dfd78c 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -37,6 +37,7 @@
import android.util.SparseArray;
import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
import com.android.server.telecom.bluetooth.BluetoothRouteManager;
@@ -1318,6 +1319,10 @@
quitNow();
}
+ public void dumpPendingMessages(IndentingPrintWriter pw) {
+ getHandler().getLooper().dump(pw::println, "");
+ }
+
/**
* Sets whether notifications should be suppressed or not. Used when in a call to ensure the
* device will not vibrate due to notifications.