diff options
author | Wink Saville <wink@google.com> | 2012-05-24 15:44:01 -0700 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2012-05-24 15:44:01 -0700 |
commit | f19540a2d7958f60f88428f964733e50d462c65b (patch) | |
tree | 5a98ad47ea42ab0de3e752d695d3b2a374daa951 /telephony | |
parent | a587b890bb0c2f800fe4dfd3267f26366d00d32c (diff) | |
download | frameworks_base-f19540a2d7958f60f88428f964733e50d462c65b.zip frameworks_base-f19540a2d7958f60f88428f964733e50d462c65b.tar.gz frameworks_base-f19540a2d7958f60f88428f964733e50d462c65b.tar.bz2 |
Add debug for tracking down connectivity issues.
bug: 6529189
Change-Id: I5dc4316ceacf48625f0839e0200b77a1e0984465
Diffstat (limited to 'telephony')
6 files changed, 75 insertions, 44 deletions
diff --git a/telephony/java/com/android/internal/telephony/ApnContext.java b/telephony/java/com/android/internal/telephony/ApnContext.java index e984a87..3a3044e 100644 --- a/telephony/java/com/android/internal/telephony/ApnContext.java +++ b/telephony/java/com/android/internal/telephony/ApnContext.java @@ -78,8 +78,11 @@ public class ApnContext { return mDataConnection; } - public synchronized void setDataConnection(DataConnection dataConnection) { - mDataConnection = dataConnection; + public synchronized void setDataConnection(DataConnection dc) { + if (DBG) { + log("setDataConnection: old dc=" + mDataConnection + " new dc=" + dc + " this=" + this); + } + mDataConnection = dc; } @@ -88,10 +91,15 @@ public class ApnContext { } public synchronized void setDataConnectionAc(DataConnectionAc dcac) { + if (DBG) { + log("setDataConnectionAc: old dcac=" + mDataConnectionAc + " new dcac=" + dcac); + } if (dcac != null) { dcac.addApnContextSync(this); } else { - if (mDataConnectionAc != null) mDataConnectionAc.removeApnContextSync(this); + if (mDataConnectionAc != null) { + mDataConnectionAc.removeApnContextSync(this); + } } mDataConnectionAc = dcac; } @@ -141,7 +149,7 @@ public class ApnContext { public synchronized void setState(DataConnectionTracker.State s) { if (DBG) { - log("setState: " + s + " for type " + mApnType + ", previous state:" + mState); + log("setState: " + s + ", previous state:" + mState); } mState = s; @@ -165,7 +173,7 @@ public class ApnContext { public synchronized void setReason(String reason) { if (DBG) { - log("set reason as " + reason + ", for type " + mApnType + ",current state " + mState); + log("set reason as " + reason + ",current state " + mState); } mReason = reason; } @@ -180,8 +188,7 @@ public class ApnContext { public void setEnabled(boolean enabled) { if (DBG) { - log("set enabled as " + enabled + ", for type " + - mApnType + ", current state is " + mDataEnabled.get()); + log("set enabled as " + enabled + ", current state is " + mDataEnabled.get()); } mDataEnabled.set(enabled); } @@ -192,8 +199,7 @@ public class ApnContext { public void setDependencyMet(boolean met) { if (DBG) { - log("set mDependencyMet as " + met + ", for type " + mApnType + - ", current state is " + mDependencyMet.get()); + log("set mDependencyMet as " + met + " current state is " + mDependencyMet.get()); } mDependencyMet.set(met); } @@ -204,25 +210,19 @@ public class ApnContext { @Override public String toString() { - return "state=" + getState() + " apnType=" + mApnType; + // We don't print mDataConnection because its recursive. + return "{mApnType=" + mApnType + " mState=" + getState() + " mWaitingApns=" + mWaitingApns + + " mWaitingApnsPermanentFailureCountDown=" + mWaitingApnsPermanentFailureCountDown + + " mApnSetting=" + mApnSetting + " mDataConnectionAc=" + mDataConnectionAc + + " mReason=" + mReason + " mDataEnabled=" + mDataEnabled + + " mDependencyMet=" + mDependencyMet + "}"; } protected void log(String s) { - Log.d(LOG_TAG, "[ApnContext] " + s); + Log.d(LOG_TAG, "[ApnContext:" + mApnType + "] " + s); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - pw.println("ApnContext:"); - pw.println(" mApnType=" + mApnType); - pw.println(" mState=" + mState); - pw.println(" mWaitingApns=" + mWaitingApns); - pw.println(" mWaitingApnsPermanentFailureCountDown=" + - mWaitingApnsPermanentFailureCountDown); - pw.println(" mApnSetting=" + mApnSetting); - pw.println(" mDataConnection=" + mDataConnection); - pw.println(" mDataConnectionAc=" + mDataConnectionAc); - pw.println(" mReason=" + mReason); - pw.println(" mDataEnabled=" + mDataEnabled); - pw.println(" mDependencyMet=" + mDependencyMet); + pw.println("ApnContext: " + this.toString()); } } diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java index 0033ceb..cc4adfd 100644 --- a/telephony/java/com/android/internal/telephony/DataConnection.java +++ b/telephony/java/com/android/internal/telephony/DataConnection.java @@ -69,7 +69,7 @@ public abstract class DataConnection extends StateMachine { protected static int mCount; protected AsyncChannel mAc; - private List<ApnContext> mApnList = null; + protected List<ApnContext> mApnList = null; PendingIntent mReconnectIntent = null; private DataConnectionTracker mDataConnectionTracker = null; @@ -247,7 +247,7 @@ public abstract class DataConnection extends StateMachine { protected FailCause lastFailCause; protected int mRetryOverride = -1; protected static final String NULL_IP = "0.0.0.0"; - private int mRefCount; + protected int mRefCount; Object userData; //***** Abstract methods @@ -600,9 +600,8 @@ public abstract class DataConnection extends StateMachine { result.newLp.setHttpProxy(mLinkProperties.getHttpProxy()); if (DBG && (! result.oldLp.equals(result.newLp))) { - if (DBG) log("updateLinkProperty old != new"); - if (VDBG) log("updateLinkProperty old LP=" + result.oldLp); - if (VDBG) log("updateLinkProperty new LP=" + result.newLp); + log("updateLinkProperty old LP=" + result.oldLp); + log("updateLinkProperty new LP=" + result.newLp); } mLinkProperties = result.newLp; diff --git a/telephony/java/com/android/internal/telephony/DataConnectionAc.java b/telephony/java/com/android/internal/telephony/DataConnectionAc.java index 96419ae..a24414f 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionAc.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionAc.java @@ -580,6 +580,11 @@ public class DataConnectionAc extends AsyncChannel { } } + @Override + public String toString() { + return dataConnection.getName(); + } + private void log(String s) { android.util.Log.d(mLogTag, "DataConnectionAc " + s); } diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 97a8755..588515b 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -499,6 +499,7 @@ public abstract class DataConnectionTracker extends Handler { */ protected DataConnectionTracker(PhoneBase phone) { super(); + if (DBG) log("DCT.constructor"); mPhone = phone; IntentFilter filter = new IntentFilter(); @@ -534,6 +535,7 @@ public abstract class DataConnectionTracker extends Handler { } public void dispose() { + if (DBG) log("DCT.dispose"); for (DataConnectionAc dcac : mDataConnectionAsyncChannels.values()) { dcac.disconnect(); } @@ -1256,7 +1258,6 @@ public abstract class DataConnectionTracker extends Handler { Set<Entry<String, ApnContext>> mApnContextsSet = mApnContexts.entrySet(); pw.println(" mApnContexts size=" + mApnContextsSet.size()); for (Entry<String, ApnContext> entry : mApnContextsSet) { - pw.printf(" *** mApnContexts[%s]:\n", entry.getKey()); entry.getValue().dump(fd, pw, args); } pw.println(" ***************************************"); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java index df3278b..9801721 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java @@ -120,9 +120,10 @@ public class GsmDataConnection extends DataConnection { @Override public String toString() { - return "State=" + getCurrentState().getName() + " Apn=" + mApn + - " create=" + createTime + " lastFail=" + lastFailTime + - " lastFailCause=" + lastFailCause; + return "{" + getName() + ": State=" + getCurrentState().getName() + + " apnSetting=" + mApn + " apnList= " + mApnList + " RefCount=" + mRefCount + + " cid=" + cid + " create=" + createTime + " lastFail=" + lastFailTime + + " lastFailCause=" + lastFailCause + "}"; } @Override diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index f8d09de..83fc9c1 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -175,7 +175,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { public GsmDataConnectionTracker(PhoneBase p) { super(p); - + if (DBG) log("GsmDCT.constructor"); p.mCM.registerForAvailable (this, EVENT_RADIO_AVAILABLE, null); p.mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null); p.mIccRecords.registerForRecordsLoaded(this, EVENT_RECORDS_LOADED, null); @@ -212,6 +212,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { @Override public void dispose() { + if (DBG) log("GsmDCT.dispose"); cleanUpAllConnections(false, null); super.dispose(); @@ -835,10 +836,11 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { return; } + DataConnectionAc dcac = apnContext.getDataConnectionAc(); if (DBG) { - log("cleanUpConnection: tearDown=" + tearDown + " reason=" + apnContext.getReason()); + log("cleanUpConnection: E tearDown=" + tearDown + " reason=" + apnContext.getReason() + + " apnContext=" + apnContext); } - DataConnectionAc dcac = apnContext.getDataConnectionAc(); if (tearDown) { if (apnContext.isDisconnected()) { // The request is tearDown and but ApnContext is not connected. @@ -901,6 +903,10 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { cancelReconnectAlarm(dcac); } } + if (DBG) { + log("cleanUpConnection: X tearDown=" + tearDown + " reason=" + apnContext.getReason() + + " apnContext=" + apnContext + " dc=" + apnContext.getDataConnection()); + } } /** @@ -986,8 +992,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private GsmDataConnection findFreeDataConnection() { for (DataConnectionAc dcac : mDataConnectionAsyncChannels.values()) { if (dcac.isInactiveSync() && dataConnectionNotInUse(dcac)) { - log("findFreeDataConnection: found free GsmDataConnection"); - return (GsmDataConnection) dcac.dataConnection; + DataConnection dc = dcac.dataConnection; + if (DBG) { + log("findFreeDataConnection: found free GsmDataConnection=" + + " dcac=" + dcac + " dc=" + dc); + } + return (GsmDataConnection) dc; } } log("findFreeDataConnection: NO free GsmDataConnection"); @@ -995,12 +1005,13 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } protected GsmDataConnection findReadyDataConnection(ApnSetting apn) { - if (DBG) - log("findReadyDataConnection: apn string <" + - (apn!=null?(apn.toString()):"null") +">"); if (apn == null) { return null; } + if (DBG) { + log("findReadyDataConnection: apn string <" + apn + ">" + + " dcacs.size=" + mDataConnectionAsyncChannels.size()); + } for (DataConnectionAc dcac : mDataConnectionAsyncChannels.values()) { ApnSetting apnSetting = dcac.getApnSettingSync(); if (DBG) { @@ -1008,7 +1019,12 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { (apnSetting != null ? (apnSetting.toString()) : "null") + ">"); } if ((apnSetting != null) && TextUtils.equals(apnSetting.toString(), apn.toString())) { - return (GsmDataConnection) dcac.dataConnection; + DataConnection dc = dcac.dataConnection; + if (DBG) { + log("findReadyDataConnection: found ready GsmDataConnection=" + + " dcac=" + dcac + " dc=" + dc); + } + return (GsmDataConnection) dc; } } return null; @@ -1129,6 +1145,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private List<ApnContext> findApnContextToClean(Collection<DataConnectionAc> dcacs) { if (dcacs == null) return null; + if (DBG) log("findApnContextToClean(ar): E dcacs=" + dcacs); + ArrayList<ApnContext> list = new ArrayList<ApnContext>(); for (ApnContext apnContext : mApnContexts.values()) { if (apnContext.getState() == State.CONNECTED) { @@ -1144,7 +1162,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { // ApnContext does not have dcac reported in data call list. // Fetch all the ApnContexts that map to this dcac which are in // INITING state too. - if (DBG) log("onDataStateChanged(ar): Connected apn not found in the list (" + + if (DBG) log("findApnContextToClean(ar): Connected apn not found in the list (" + apnContext.toString() + ")"); if (apnContext.getDataConnectionAc() != null) { list.addAll(apnContext.getDataConnectionAc().getApnListSync()); @@ -1154,6 +1172,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } } } + if (DBG) log("findApnContextToClean(ar): X list=" + list); return list; } @@ -1236,6 +1255,10 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { // If the same address type was removed and added we need to cleanup CompareResult<LinkAddress> car = result.oldLp.compareAddresses(result.newLp); + if (DBG) { + log("onDataStateChanged: oldLp=" + result.oldLp + + " newLp=" + result.newLp + " car=" + car); + } boolean needToClean = false; for (LinkAddress added : car.added) { for (LinkAddress removed : car.removed) { @@ -1249,7 +1272,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { if (needToClean) { if (DBG) { log("onDataStateChanged(ar): addr change, cleanup apns=" + - connectedApns); + connectedApns + " oldLp=" + result.oldLp + + " newLp=" + result.newLp); } apnsToCleanup.addAll(connectedApns); } else { @@ -1285,6 +1309,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } // Cleanup those dropped connections + if (DBG) log("onDataStateChange(ar): apnsToCleanup=" + apnsToCleanup); for (ApnContext apnContext : apnsToCleanup) { cleanUpConnection(true, apnContext); } @@ -2256,7 +2281,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { filter.addAction(INTENT_RECONNECT_ALARM + '.' + id); mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone); - if (DBG) log("createDataConnection() X id=" + id); + if (DBG) log("createDataConnection() X id=" + id + " dc=" + conn); return conn; } |