Merge "Add debug for tracking down connectivity issues." into jb-dev
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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(" ***************************************");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
if (DBG) {
|
||||
log("cleanUpConnection: tearDown=" + tearDown + " reason=" + apnContext.getReason());
|
||||
}
|
||||
DataConnectionAc dcac = apnContext.getDataConnectionAc();
|
||||
if (DBG) {
|
||||
log("cleanUpConnection: E tearDown=" + tearDown + " reason=" + apnContext.getReason() +
|
||||
" apnContext=" + apnContext);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user