From 597892a7612634fcc7e74378beb417e80d3c5b2f Mon Sep 17 00:00:00 2001 From: yinxu Date: Thu, 4 Feb 2021 13:45:56 -0800 Subject: Add more dump logs for debugging purpose This Cl adds the below dump logs 1. The last 64 MobileStatus Changes in MobileStatusTracker 2. The last 64 Default NetworkCapabilities changes 3. The last 64 SignalCallbacks in CallbackHandler Bug: 176428921 Test: Manual Test Change-Id: Ibff88fab0806f0851424cd1e7311efca94752d5c --- .../settingslib/mobile/MobileStatusTracker.java | 7 +- .../systemui/statusbar/policy/CallbackHandler.java | 110 +++++++++++++++++++++ .../statusbar/policy/MobileSignalController.java | 34 ++++++- .../statusbar/policy/NetworkControllerImpl.java | 40 ++++++++ 4 files changed, 188 insertions(+), 3 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileStatusTracker.java index b8030f166436..4c7b898a4fb5 100644 --- a/packages/SettingsLib/src/com/android/settingslib/mobile/MobileStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/mobile/MobileStatusTracker.java @@ -259,7 +259,12 @@ public class MobileStatusTracker { .append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode).append(',') .append("dataState=").append(dataState).append(',') .append("serviceState=").append(serviceState == null ? "" - : serviceState.toString()).append(',') + : "mVoiceRegState=" + serviceState.getState() + "(" + + ServiceState.rilServiceStateToString(serviceState.getState()) + + ")" + ", mDataRegState=" + serviceState.getDataRegState() + "(" + + ServiceState.rilServiceStateToString( + serviceState.getDataRegState()) + ")") + .append(',') .append("signalStrength=").append(signalStrength == null ? "" : signalStrength.toString()).append(',') .append("telephonyDisplayInfo=").append(telephonyDisplayInfo == null ? "" diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java index 08a4492fc15d..ccaa1f480683 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java @@ -25,6 +25,8 @@ import com.android.systemui.statusbar.policy.NetworkController.EmergencyListener import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -42,11 +44,18 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa private static final int MSG_MOBILE_DATA_ENABLED_CHANGED = 5; private static final int MSG_ADD_REMOVE_EMERGENCY = 6; private static final int MSG_ADD_REMOVE_SIGNAL = 7; + private static final int HISTORY_SIZE = 64; + private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); // All the callbacks. private final ArrayList mEmergencyListeners = new ArrayList<>(); private final ArrayList mSignalCallbacks = new ArrayList<>(); + // Save the previous HISTORY_SIZE states for logging. + private final String[] mHistory = new String[HISTORY_SIZE]; + // Where to copy the next state into. + private int mHistoryIndex; + public CallbackHandler() { super(Looper.getMainLooper()); } @@ -111,12 +120,27 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa public void setWifiIndicators(final boolean enabled, final IconState statusIcon, final IconState qsIcon, final boolean activityIn, final boolean activityOut, final String description, boolean isTransient, String secondaryLabel) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setWifiIndicators: ") + .append("enabled=").append(enabled).append(",") + .append("statusIcon=").append(statusIcon).append(",") + .append("qsIcon=").append(qsIcon).append(",") + .append("activityIn=").append(activityIn).append(",") + .append("activityOut=").append(activityOut).append(",") + .append("description=").append(description).append(",") + .append("isTransient=").append(isTransient).append(",") + .append("secondaryLabel=").append(secondaryLabel) + .toString(); + recordLastCallback(log); post(() -> { for (SignalCallback callback : mSignalCallbacks) { callback.setWifiIndicators(enabled, statusIcon, qsIcon, activityIn, activityOut, description, isTransient, secondaryLabel); } }); + + } @Override @@ -125,6 +149,25 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa final boolean activityOut, final CharSequence typeContentDescription, CharSequence typeContentDescriptionHtml, final CharSequence description, final boolean isWide, final int subId, boolean roaming, boolean showTriangle) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setMobileDataIndicators: ") + .append("statusIcon=").append(statusIcon).append(",") + .append("qsIcon=").append(qsIcon).append(",") + .append("statusType=").append(statusType).append(",") + .append("qsType=").append(qsType).append(",") + .append("activityIn=").append(activityIn).append(",") + .append("activityOut=").append(activityOut).append(",") + .append("typeContentDescription=").append(typeContentDescription).append(",") + .append("typeContentDescriptionHtml=").append(typeContentDescriptionHtml) + .append(",") + .append("description=").append(description).append(",") + .append("isWide=").append(isWide).append(",") + .append("subId=").append(subId).append(",") + .append("roaming=").append(roaming).append(",") + .append("showTriangle=").append(showTriangle) + .toString(); + recordLastCallback(log); post(() -> { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType, @@ -138,6 +181,14 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa @Override public void setConnectivityStatus(boolean noDefaultNetwork, boolean noValidatedNetwork, boolean noNetworksAvailable) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setConnectivityStatus: ") + .append("noDefaultNetwork=").append(noDefaultNetwork).append(",") + .append("noValidatedNetwork=").append(noValidatedNetwork).append(",") + .append("noNetworksAvailable=").append(noNetworksAvailable) + .toString(); + recordLastCallback(log); post(() -> { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setConnectivityStatus( @@ -148,6 +199,13 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa @Override public void setNoCallingStatus(boolean noCalling, int subId) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setNoCallingStatus: ") + .append("noCalling=").append(noCalling).append(",") + .append("subId=").append(subId) + .toString(); + recordLastCallback(log); post(() -> { for (SignalCallback signalCluster : mSignalCallbacks) { signalCluster.setNoCallingStatus(noCalling, subId); @@ -157,16 +215,35 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa @Override public void setSubs(List subs) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setSubs: ") + .append("subs=").append(subs == null ? "" : subs.toString()) + .toString(); + recordLastCallback(log); obtainMessage(MSG_SUBS_CHANGED, subs).sendToTarget(); } @Override public void setNoSims(boolean show, boolean simDetected) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setNoSims: ") + .append("show=").append(show).append(",") + .append("simDetected=").append(simDetected) + .toString(); + recordLastCallback(log); obtainMessage(MSG_NO_SIM_VISIBLE_CHANGED, show ? 1 : 0, simDetected ? 1 : 0).sendToTarget(); } @Override public void setMobileDataEnabled(boolean enabled) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setMobileDataEnabled: ") + .append("enabled=").append(enabled) + .toString(); + recordLastCallback(log); obtainMessage(MSG_MOBILE_DATA_ENABLED_CHANGED, enabled ? 1 : 0, 0).sendToTarget(); } @@ -177,11 +254,23 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa @Override public void setEthernetIndicators(IconState icon) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setEthernetIndicators: ") + .append("icon=").append(icon) + .toString(); + recordLastCallback(log); obtainMessage(MSG_ETHERNET_CHANGED, icon).sendToTarget();; } @Override public void setIsAirplaneMode(IconState icon) { + String log = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("setIsAirplaneMode: ") + .append("icon=").append(icon) + .toString(); + recordLastCallback(log); obtainMessage(MSG_AIRPLANE_MODE_CHANGED, icon).sendToTarget();; } @@ -193,4 +282,25 @@ public class CallbackHandler extends Handler implements EmergencyListener, Signa obtainMessage(MSG_ADD_REMOVE_SIGNAL, listening ? 1 : 0, 0, listener).sendToTarget(); } + protected void recordLastCallback(String callback) { + mHistory[mHistoryIndex++ & (HISTORY_SIZE - 1)] = callback; + } + + /** + * Dump the Callback logs + */ + public void dump(PrintWriter pw) { + pw.println(" - CallbackHandler -----"); + int size = 0; + for (int i = 0; i < HISTORY_SIZE; i++) { + if (mHistory[i] != null) size++; + } + // Print out the previous states in ordered number. + for (int i = mHistoryIndex + HISTORY_SIZE - 1; + i >= mHistoryIndex + HISTORY_SIZE - size; i--) { + pw.println(" Previous Callback(" + (mHistoryIndex + HISTORY_SIZE - i) + "): " + + mHistory[i & (HISTORY_SIZE - 1)]); + } + } + } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 39472ded4a3f..888507b0794c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -46,6 +46,7 @@ import com.android.settingslib.Utils; import com.android.settingslib.graph.SignalDrawable; import com.android.settingslib.mobile.MobileMappings.Config; import com.android.settingslib.mobile.MobileStatusTracker; +import com.android.settingslib.mobile.MobileStatusTracker.MobileStatus; import com.android.settingslib.mobile.MobileStatusTracker.SubscriptionDefaults; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.SignalStrengthUtil; @@ -54,6 +55,7 @@ import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import java.io.PrintWriter; +import java.text.SimpleDateFormat; import java.util.BitSet; import java.util.List; import java.util.Map; @@ -62,6 +64,8 @@ import java.util.Map; * Monitors the mobile signal changes and update the SysUI icons. */ public class MobileSignalController extends SignalController { + private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); + private final TelephonyManager mPhone; private final SubscriptionDefaults mDefaults; private final String mNetworkNameDefault; @@ -90,6 +94,11 @@ public class MobileSignalController extends SignalController= mMobileStatusHistoryIndex + HISTORY_SIZE - size; i--) { + pw.println(" Previous MobileStatus(" + + (mMobileStatusHistoryIndex + HISTORY_SIZE - i) + "): " + + mMobileStatusHistory[i & (HISTORY_SIZE - 1)]); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index e13e30b74c3c..54f35dfff59f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -76,6 +76,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceP import java.io.FileDescriptor; import java.io.PrintWriter; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.BitSet; import java.util.Collections; @@ -100,6 +101,8 @@ public class NetworkControllerImpl extends BroadcastReceiver private static final int EMERGENCY_VOICE_CONTROLLER = 200; private static final int EMERGENCY_NO_SUB = 300; private static final int EMERGENCY_ASSUMED_VOICE_CONTROLLER = 400; + private static final int HISTORY_SIZE = 16; + private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); private final Context mContext; private final TelephonyManager mPhone; @@ -150,6 +153,11 @@ public class NetworkControllerImpl extends BroadcastReceiver // This list holds our ordering. private List mCurrentSubscriptions = new ArrayList<>(); + // Save the previous HISTORY_SIZE states for logging. + private final String[] mHistory = new String[HISTORY_SIZE]; + // Where to copy the next state into. + private int mHistoryIndex; + @VisibleForTesting boolean mListening; @@ -307,6 +315,12 @@ public class NetworkControllerImpl extends BroadcastReceiver public void onLost(Network network) { mLastNetwork = null; mLastNetworkCapabilities = null; + String callback = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("onLost: ") + .append("network=").append(network) + .toString(); + recordLastNetworkCallback(callback); updateConnectivity(); } @@ -327,6 +341,13 @@ public class NetworkControllerImpl extends BroadcastReceiver } mLastNetwork = network; mLastNetworkCapabilities = networkCapabilities; + String callback = new StringBuilder() + .append(SSDF.format(System.currentTimeMillis())).append(",") + .append("onCapabilitiesChanged: ") + .append("network=").append(network).append(",") + .append("networkCapabilities=").append(networkCapabilities) + .toString(); + recordLastNetworkCallback(callback); updateConnectivity(); } }; @@ -996,6 +1017,19 @@ public class NetworkControllerImpl extends BroadcastReceiver pw.print(" mEmergencySource="); pw.println(emergencyToString(mEmergencySource)); + pw.println(" - DefaultNetworkCallback -----"); + int size = 0; + for (int i = 0; i < HISTORY_SIZE; i++) { + if (mHistory[i] != null) { + size++; + } + } + for (int i = mHistoryIndex + HISTORY_SIZE - 1; + i >= mHistoryIndex + HISTORY_SIZE - size; i--) { + pw.println(" Previous NetworkCallback(" + (mHistoryIndex + HISTORY_SIZE - i) + "): " + + mHistory[i & (HISTORY_SIZE - 1)]); + } + pw.println(" - config ------"); for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); @@ -1006,6 +1040,8 @@ public class NetworkControllerImpl extends BroadcastReceiver mEthernetSignalController.dump(pw); mAccessPoints.dump(pw); + + mCallbackHandler.dump(pw); } private static final String emergencyToString(int emergencySource) { @@ -1235,6 +1271,10 @@ public class NetworkControllerImpl extends BroadcastReceiver return s; } + private void recordLastNetworkCallback(String callback) { + mHistory[mHistoryIndex++ & (HISTORY_SIZE - 1)] = callback; + } + private SubscriptionInfo addSignalController(int id, int simSlotIndex) { SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0, null, null, null, "", false, null, null); -- cgit v1.2.3-59-g8ed1b