Skip to content

Commit e1bff46

Browse files
Wink SavilleAndroid (Google) Code Review
authored andcommitted
Merge "Add DebugService."
2 parents e0435a6 + 30ccade commit e1bff46

20 files changed

+577
-0
lines changed

telephony/java/com/android/internal/telephony/ApnContext.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
package com.android.internal.telephony;
1818

1919
import android.util.Log;
20+
21+
import java.io.FileDescriptor;
22+
import java.io.PrintWriter;
2023
import java.util.ArrayList;
2124
import java.util.concurrent.atomic.AtomicBoolean;
2225
import java.util.concurrent.atomic.AtomicInteger;
@@ -207,4 +210,19 @@ public String toString() {
207210
protected void log(String s) {
208211
Log.d(LOG_TAG, "[ApnContext] " + s);
209212
}
213+
214+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
215+
pw.println("ApnContext:");
216+
pw.println(" mApnType=" + mApnType);
217+
pw.println(" mState=" + mState);
218+
pw.println(" mWaitingApns=" + mWaitingApns);
219+
pw.println(" mWaitingApnsPermanentFailureCountDown=" +
220+
mWaitingApnsPermanentFailureCountDown);
221+
pw.println(" mApnSetting=" + mApnSetting);
222+
pw.println(" mDataConnection=" + mDataConnection);
223+
pw.println(" mDataConnectionAc=" + mDataConnectionAc);
224+
pw.println(" mReason=" + mReason);
225+
pw.println(" mDataEnabled=" + mDataEnabled);
226+
pw.println(" mDependencyMet=" + mDependencyMet);
227+
}
210228
}

telephony/java/com/android/internal/telephony/CallTracker.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525

2626
import com.android.internal.telephony.CommandException;
2727

28+
import java.io.FileDescriptor;
29+
import java.io.PrintWriter;
30+
2831

2932
/**
3033
* {@hide}
@@ -170,4 +173,10 @@ protected String checkForTestEmergencyNumber(String dialString) {
170173

171174
protected abstract void log(String msg);
172175

176+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
177+
pw.println("CallTracker:");
178+
pw.println(" pendingOperations=" + pendingOperations);
179+
pw.println(" needsPoll=" + needsPoll);
180+
pw.println(" lastRelevantPoll=" + lastRelevantPoll);
181+
}
173182
}

telephony/java/com/android/internal/telephony/DataConnection.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import android.os.SystemProperties;
3333
import android.text.TextUtils;
3434

35+
import java.io.FileDescriptor;
36+
import java.io.PrintWriter;
3537
import java.util.ArrayList;
3638
import java.util.HashMap;
3739
import java.util.List;
@@ -1185,4 +1187,27 @@ public void tearDownAll(String reason, Message onCompletedMsg) {
11851187
sendMessage(obtainMessage(EVENT_DISCONNECT_ALL,
11861188
new DisconnectParams(reason, onCompletedMsg)));
11871189
}
1190+
1191+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1192+
pw.println("DataConnection name=" + getName() + ":");
1193+
pw.println(" mApnList=" + mApnList);
1194+
pw.println(" mDataConnectionTracker=" + mDataConnectionTracker);
1195+
pw.println(" mApn=" + mApn);
1196+
pw.println(" mTag=" + mTag);
1197+
pw.println(" phone=" + phone);
1198+
pw.println(" mRilVersion=" + mRilVersion);
1199+
pw.println(" cid=" + cid);
1200+
pw.println(" mLinkProperties=" + mLinkProperties);
1201+
pw.println(" mCapabilities=" + mCapabilities);
1202+
pw.println(" createTime=" + createTime);
1203+
pw.println(" lastFailTime=" + lastFailTime);
1204+
pw.println(" lastFailCause=" + lastFailCause);
1205+
pw.println(" mRetryOverride=" + mRetryOverride);
1206+
pw.println(" mRefCount=" + mRefCount);
1207+
pw.println(" userData=" + userData);
1208+
pw.println(" total messages=" + getProcessedMessagesCount());
1209+
for (int i=0; i < getProcessedMessagesSize(); i++) {
1210+
pw.printf(" msg[%d]=%s\n", i, getProcessedMessageInfo(i));
1211+
}
1212+
}
11881213
}

telephony/java/com/android/internal/telephony/DataConnectionTracker.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,12 @@
4949
import com.android.internal.util.AsyncChannel;
5050
import com.android.internal.util.Protocol;
5151

52+
import java.io.FileDescriptor;
53+
import java.io.PrintWriter;
5254
import java.util.ArrayList;
5355
import java.util.HashMap;
56+
import java.util.Map.Entry;
57+
import java.util.Set;
5458
import java.util.concurrent.ConcurrentHashMap;
5559
import java.util.concurrent.atomic.AtomicInteger;
5660

@@ -1193,4 +1197,80 @@ protected void resetAllRetryCounts() {
11931197
dc.resetRetryCount();
11941198
}
11951199
}
1200+
1201+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1202+
pw.println("DataConnectionTracker:");
1203+
pw.println(" mInternalDataEnabled=" + mInternalDataEnabled);
1204+
pw.println(" mUserDataEnabled=" + mUserDataEnabled);
1205+
pw.println(" sPolicyDataEnabed=" + sPolicyDataEnabled);
1206+
pw.println(" dataEnabled:");
1207+
for(int i=0; i < dataEnabled.length; i++) {
1208+
pw.printf(" dataEnabled[%d]=%b\n", i, dataEnabled[i]);
1209+
}
1210+
pw.flush();
1211+
pw.println(" enabledCount=" + enabledCount);
1212+
pw.println(" mRequestedApnType=" + mRequestedApnType);
1213+
pw.println(" mPhone=" + mPhone.getPhoneName());
1214+
pw.println(" mActivity=" + mActivity);
1215+
pw.println(" mState=" + mState);
1216+
pw.println(" mTxPkts=" + mTxPkts);
1217+
pw.println(" mRxPkts=" + mRxPkts);
1218+
pw.println(" mNetStatPollPeriod=" + mNetStatPollPeriod);
1219+
pw.println(" mNetStatPollEnabled=" + mNetStatPollEnabled);
1220+
pw.println(" mDataStallTxRxSum=" + mDataStallTxRxSum);
1221+
pw.println(" mDataStallAlarmTag=" + mDataStallAlarmTag);
1222+
pw.println(" mSentSinceLastRecv=" + mSentSinceLastRecv);
1223+
pw.println(" mNoRecvPollCount=" + mNoRecvPollCount);
1224+
pw.println(" mIsWifiConnected=" + mIsWifiConnected);
1225+
pw.println(" mReconnectIntent=" + mReconnectIntent);
1226+
pw.println(" mCidActive=" + mCidActive);
1227+
pw.println(" mAutoAttachOnCreation=" + mAutoAttachOnCreation);
1228+
pw.println(" mIsScreenOn=" + mIsScreenOn);
1229+
pw.println(" mUniqueIdGenerator=" + mUniqueIdGenerator);
1230+
pw.flush();
1231+
pw.println(" ***************************************");
1232+
Set<Entry<Integer, DataConnection> > mDcSet = mDataConnections.entrySet();
1233+
pw.println(" mDataConnections: count=" + mDcSet.size());
1234+
for (Entry<Integer, DataConnection> entry : mDcSet) {
1235+
pw.printf(" *** mDataConnection[%d] \n", entry.getKey());
1236+
entry.getValue().dump(fd, pw, args);
1237+
}
1238+
pw.println(" ***************************************");
1239+
pw.flush();
1240+
Set<Entry<String, Integer>> mApnToDcIdSet = mApnToDataConnectionId.entrySet();
1241+
pw.println(" mApnToDataConnectonId size=" + mApnToDcIdSet.size());
1242+
for (Entry<String, Integer> entry : mApnToDcIdSet) {
1243+
pw.printf(" mApnToDataConnectonId[%s]=%d\n", entry.getKey(), entry.getValue());
1244+
}
1245+
pw.println(" ***************************************");
1246+
pw.flush();
1247+
if (mApnContexts != null) {
1248+
Set<Entry<String, ApnContext>> mApnContextsSet = mApnContexts.entrySet();
1249+
pw.println(" mApnContexts size=" + mApnContextsSet.size());
1250+
for (Entry<String, ApnContext> entry : mApnContextsSet) {
1251+
pw.printf(" *** mApnContexts[%s]:\n", entry.getKey());
1252+
entry.getValue().dump(fd, pw, args);
1253+
}
1254+
pw.println(" ***************************************");
1255+
} else {
1256+
pw.println(" mApnContexts=null");
1257+
}
1258+
pw.flush();
1259+
pw.println(" mActiveApn=" + mActiveApn);
1260+
if (mAllApns != null) {
1261+
pw.println(" mAllApns size=" + mAllApns.size());
1262+
for (int i=0; i < mAllApns.size(); i++) {
1263+
pw.printf(" mAllApns[%d]: %s\n", i, mAllApns.get(i));
1264+
}
1265+
pw.flush();
1266+
} else {
1267+
pw.println(" mAllApns=null");
1268+
}
1269+
pw.println(" mPreferredApn=" + mPreferredApn);
1270+
pw.println(" mIsPsRestricted=" + mIsPsRestricted);
1271+
pw.println(" mIsDisposed=" + mIsDisposed);
1272+
pw.println(" mIntentReceiver=" + mIntentReceiver);
1273+
pw.println(" mDataRoamingSettingObserver=" + mDataRoamingSettingObserver);
1274+
pw.flush();
1275+
}
11961276
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
/*
2+
* Copyright (C) 2012 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.android.internal.telephony;
18+
19+
import android.util.Log;
20+
21+
import java.io.FileDescriptor;
22+
import java.io.PrintWriter;
23+
24+
/**
25+
* A debug service that will dump telephony's state
26+
*
27+
* Currently this "Service" has a proxy in the phone app
28+
* com.android.phone.TelephonyDebugService which actually
29+
* invokes the dump method.
30+
*/
31+
public class DebugService {
32+
private static String TAG = "DebugService";
33+
34+
/** Constructor */
35+
public DebugService() {
36+
log("DebugService:");
37+
}
38+
39+
/**
40+
* Dump the state of various objects, add calls to other objects as desired.
41+
*/
42+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
43+
log("dump: +");
44+
PhoneProxy phoneProxy = null;
45+
PhoneBase phoneBase = null;
46+
47+
try {
48+
phoneProxy = (PhoneProxy) PhoneFactory.getDefaultPhone();
49+
} catch (Exception e) {
50+
pw.println("Telephony DebugService: Could not getDefaultPhone e=" + e);
51+
return;
52+
}
53+
try {
54+
phoneBase = (PhoneBase)phoneProxy.getActivePhone();
55+
} catch (Exception e) {
56+
pw.println("Telephony DebugService: Could not PhoneBase e=" + e);
57+
return;
58+
}
59+
60+
/**
61+
* Surround each of the sub dump's with try/catch so even
62+
* if one fails we'll be able to dump the next ones.
63+
*/
64+
pw.println();
65+
pw.println("++++++++++++++++++++++++++++++++");
66+
pw.flush();
67+
try {
68+
phoneBase.dump(fd, pw, args);
69+
} catch (Exception e) {
70+
e.printStackTrace();
71+
}
72+
pw.flush();
73+
pw.println("++++++++++++++++++++++++++++++++");
74+
try {
75+
phoneBase.mDataConnectionTracker.dump(fd, pw, args);
76+
} catch (Exception e) {
77+
e.printStackTrace();
78+
}
79+
pw.flush();
80+
pw.println("++++++++++++++++++++++++++++++++");
81+
try {
82+
phoneBase.getServiceStateTracker().dump(fd, pw, args);
83+
} catch (Exception e) {
84+
e.printStackTrace();
85+
}
86+
pw.flush();
87+
pw.println("++++++++++++++++++++++++++++++++");
88+
try {
89+
phoneBase.getCallTracker().dump(fd, pw, args);
90+
} catch (Exception e) {
91+
e.printStackTrace();
92+
}
93+
pw.flush();
94+
pw.println("++++++++++++++++++++++++++++++++");
95+
try {
96+
((RIL)phoneBase.mCM).dump(fd, pw, args);
97+
} catch (Exception e) {
98+
e.printStackTrace();
99+
}
100+
pw.flush();
101+
pw.println("++++++++++++++++++++++++++++++++");
102+
log("dump: -");
103+
}
104+
105+
private static void log(String s) {
106+
Log.d(TAG, "DebugService " + s);
107+
}
108+
}

telephony/java/com/android/internal/telephony/PhoneBase.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import com.android.internal.telephony.test.SimulatedRadioControl;
4343
import com.android.internal.telephony.gsm.SIMRecords;
4444

45+
import java.io.FileDescriptor;
46+
import java.io.PrintWriter;
4547
import java.util.Locale;
4648
import java.util.concurrent.atomic.AtomicReference;
4749

@@ -1144,4 +1146,43 @@ public void setVoiceMessageWaiting(int line, int countWaiting) {
11441146
public UsimServiceTable getUsimServiceTable() {
11451147
return mIccRecords.getUsimServiceTable();
11461148
}
1149+
1150+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
1151+
pw.println("PhoneBase:");
1152+
pw.println(" mCM=" + mCM);
1153+
pw.println(" mDnsCheckDisabled=" + mDnsCheckDisabled);
1154+
pw.println(" mDataConnectionTracker=" + mDataConnectionTracker);
1155+
pw.println(" mDoesRilSendMultipleCallRing=" + mDoesRilSendMultipleCallRing);
1156+
pw.println(" mCallRingContinueToken=" + mCallRingContinueToken);
1157+
pw.println(" mCallRingDelay=" + mCallRingDelay);
1158+
pw.println(" mIsTheCurrentActivePhone=" + mIsTheCurrentActivePhone);
1159+
pw.println(" mIsVoiceCapable=" + mIsVoiceCapable);
1160+
pw.println(" mIccRecords=" + mIccRecords);
1161+
pw.println(" mIccCard=" + mIccCard.get());
1162+
pw.println(" mSmsStorageMonitor=" + mSmsStorageMonitor);
1163+
pw.println(" mSmsUsageMonitor=" + mSmsUsageMonitor);
1164+
pw.println(" mSMS=" + mSMS);
1165+
pw.flush();
1166+
pw.println(" mLooper=" + mLooper);
1167+
pw.println(" mContext=" + mContext);
1168+
pw.println(" mNotifier=" + mNotifier);
1169+
pw.println(" mSimulatedRadioControl=" + mSimulatedRadioControl);
1170+
pw.println(" mUnitTestMode=" + mUnitTestMode);
1171+
pw.println(" isDnsCheckDisabled()=" + isDnsCheckDisabled());
1172+
pw.println(" getUnitTestMode()=" + getUnitTestMode());
1173+
pw.println(" getState()=" + getState());
1174+
pw.println(" getIccSerialNumber()=" + getIccSerialNumber());
1175+
pw.println(" getIccRecordsLoaded()=" + getIccRecordsLoaded());
1176+
pw.println(" getMessageWaitingIndicator()=" + getMessageWaitingIndicator());
1177+
pw.println(" getCallForwardingIndicator()=" + getCallForwardingIndicator());
1178+
pw.println(" isInEmergencyCall()=" + isInEmergencyCall());
1179+
pw.flush();
1180+
pw.println(" isInEcm()=" + isInEcm());
1181+
pw.println(" getPhoneName()=" + getPhoneName());
1182+
pw.println(" getPhoneType()=" + getPhoneType());
1183+
pw.println(" getVoiceMessageCount()=" + getVoiceMessageCount());
1184+
pw.println(" getActiveApnTypes()=" + getActiveApnTypes());
1185+
pw.println(" isDataConnectivityPossible()=" + isDataConnectivityPossible());
1186+
pw.println(" needsOtaServiceProvisioning=" + needsOtaServiceProvisioning());
1187+
}
11471188
}

telephony/java/com/android/internal/telephony/RIL.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@
5656

5757
import java.io.ByteArrayInputStream;
5858
import java.io.DataInputStream;
59+
import java.io.FileDescriptor;
5960
import java.io.IOException;
6061
import java.io.InputStream;
62+
import java.io.PrintWriter;
6163
import java.util.ArrayList;
6264
import java.util.Collections;
6365
import java.util.concurrent.atomic.AtomicBoolean;
@@ -3833,4 +3835,27 @@ public void testingEmergencyCall() {
38333835
if (RILJ_LOGD) riljLog("testingEmergencyCall");
38343836
mTestingEmergencyCall.set(true);
38353837
}
3838+
3839+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
3840+
pw.println("RIL:");
3841+
pw.println(" mSocket=" + mSocket);
3842+
pw.println(" mSenderThread=" + mSenderThread);
3843+
pw.println(" mSender=" + mSender);
3844+
pw.println(" mReceiverThread=" + mReceiverThread);
3845+
pw.println(" mReceiver=" + mReceiver);
3846+
pw.println(" mWakeLock=" + mWakeLock);
3847+
pw.println(" mWakeLockTimeout=" + mWakeLockTimeout);
3848+
synchronized (mRequestsList) {
3849+
pw.println(" mRequestMessagesPending=" + mRequestMessagesPending);
3850+
pw.println(" mRequestMessagesWaiting=" + mRequestMessagesWaiting);
3851+
int count = mRequestsList.size();
3852+
pw.println(" mRequestList count=" + count);
3853+
for (int i = 0; i < count; i++) {
3854+
RILRequest rr = mRequestsList.get(i);
3855+
pw.println(" [" + rr.mSerial + "] " + requestToString(rr.mRequest));
3856+
}
3857+
}
3858+
pw.println(" mLastNITZTimeInfo=" + mLastNITZTimeInfo);
3859+
pw.println(" mTestingEmergencyCall=" + mTestingEmergencyCall.get());
3860+
}
38363861
}

0 commit comments

Comments
 (0)