From 09e4eea1355ff4eb2c1ff722ffe041b963f04b99 Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Sat, 26 Mar 2011 22:23:57 -0700 Subject: [PATCH] Cleanup DataConnectionTracker Promote apn members from GsmDCT to DCT. Change getState to have a apnType parameter Move abstract methods to they are together. Change-Id: I19bc5d07859c9398076ae32647d8c211d19817d1 --- .../telephony/DataConnectionTracker.java | 70 +++++++++---------- .../internal/telephony/cdma/CDMALTEPhone.java | 8 +-- .../internal/telephony/cdma/CDMAPhone.java | 2 +- .../cdma/CdmaDataConnectionTracker.java | 5 ++ .../internal/telephony/gsm/GSMPhone.java | 2 +- .../gsm/GsmDataConnectionTracker.java | 31 ++------ 6 files changed, 47 insertions(+), 71 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index d4a3c0a5a547d..c51f20ebec6e9 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -42,6 +42,7 @@ import com.android.internal.R; import java.util.ArrayList; import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; /** @@ -244,9 +245,26 @@ public abstract class DataConnectionTracker extends Handler { protected HashMap mDataConnections = new HashMap(); + /** Convert an ApnType string to Id (TODO: Use "enumeration" instead of String for ApnType) */ + protected HashMap mApnToDataConnectionId = + new HashMap(); + + /** Phone.APN_TYPE_* ===> ApnContext */ + protected ConcurrentHashMap mApnContexts; + /* Currently active APN */ protected ApnSetting mActiveApn; + /** allApns holds all apns */ + protected ArrayList mAllApns = null; + + /** preferred apn */ + protected ApnSetting mPreferredApn = null; + + /** Is packet service restricted by network */ + protected boolean mIsPsRestricted = false; + + protected BroadcastReceiver mIntentReceiver = new BroadcastReceiver () { @Override @@ -340,11 +358,6 @@ public abstract class DataConnectionTracker extends Handler { return mActivity; } - public State getState() { - // TODO: reimplement to use apnType better yet REMOVE. - return mState; - } - /** * @return the data connections */ @@ -386,16 +399,7 @@ public abstract class DataConnectionTracker extends Handler { return result; } - private String getActiveApnType() { - String result; - if (mActiveApn != null) { - result = apnIdToType(mActiveApn.id); - } else { - result = null; - } - return result; - } - + /** TODO: See if we can remove */ public String getActiveApnString() { String result = null; if (mActiveApn != null) { @@ -430,10 +434,19 @@ public abstract class DataConnectionTracker extends Handler { } } - + // abstract methods protected abstract String getActionIntentReconnectAlarm(); + protected abstract void startNetStatPoll(); + protected abstract void stopNetStatPoll(); + protected abstract void restartRadio(); + protected abstract void log(String s); + protected abstract void loge(String s); + protected abstract boolean isDataAllowed(); + protected abstract boolean isApnTypeAvailable(String type); + public abstract State getState(String apnType); + protected abstract void setState(State s); + protected abstract void gotoIdleAndNotifyDataConnection(String reason); - // abstract handler methods protected abstract boolean onTrySetupData(String reason); protected abstract void onRoamingOff(); protected abstract void onRoamingOn(); @@ -542,16 +555,6 @@ public abstract class DataConnectionTracker extends Handler { return result; } - protected abstract void startNetStatPoll(); - - protected abstract void stopNetStatPoll(); - - protected abstract void restartRadio(); - - protected abstract void log(String s); - - protected abstract void loge(String s); - protected int apnTypeToId(String type) { if (TextUtils.equals(type, Phone.APN_TYPE_DEFAULT)) { return APN_DEFAULT_ID; @@ -598,12 +601,6 @@ public abstract class DataConnectionTracker extends Handler { } } - protected abstract boolean isApnTypeAvailable(String type); - - protected abstract void setState(State s); - - protected abstract void gotoIdleAndNotifyDataConnection(String reason); - protected LinkProperties getLinkProperties(String apnType) { int id = apnTypeToId(apnType); if (isApnIdEnabled(id)) { @@ -724,13 +721,12 @@ public abstract class DataConnectionTracker extends Handler { return possible; } - protected abstract boolean isDataAllowed(); - public boolean isApnTypeEnabled(String apnType) { if (apnType == null) { - apnType = getActiveApnType(); + return false; + } else { + return isApnIdEnabled(apnTypeToId(apnType)); } - return isApnIdEnabled(apnTypeToId(apnType)); } protected synchronized boolean isApnIdEnabled(int id) { diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java index 89d7174fe14ff..8fd6de168459a 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMALTEPhone.java @@ -122,13 +122,7 @@ public class CDMALTEPhone extends CDMAPhone { } else if (mDataConnection.isApnTypeEnabled(apnType) == false) { ret = DataState.DISCONNECTED; } else { - DataConnectionTracker.State state; - if (isCdmaDataConnectionTracker) { - state = mDataConnection.getState(); - } else { - state = ((GsmDataConnectionTracker)mDataConnection).getState(apnType); - } - switch (state) { + switch (mDataConnection.getState(apnType)) { case FAILED: case IDLE: ret = DataState.DISCONNECTED; diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index dd5091cb22f27..31abe34f31c09 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -633,7 +633,7 @@ public class CDMAPhone extends PhoneBase { mDataConnection.isApnTypeActive(apnType) == false) { ret = DataState.DISCONNECTED; } else { - switch (mDataConnection.getState()) { + switch (mDataConnection.getState(apnType)) { case FAILED: case IDLE: ret = DataState.DISCONNECTED; diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index b2449458ab008..2237c0fc7f5fa 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -157,6 +157,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { } } + @Override + public synchronized State getState(String apnType) { + return mState; + } + @Override protected boolean isApnTypeAvailable(String type) { for (String s : mSupportedApnTypes) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java index 261a61adae17c..36094a12cfbeb 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java +++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java @@ -312,7 +312,7 @@ public class GSMPhone extends PhoneBase { mDataConnection.isApnTypeActive(apnType) == false) { ret = DataState.DISCONNECTED; } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ - switch (mDataConnection.getState()) { + switch (mDataConnection.getState(apnType)) { case FAILED: case IDLE: ret = DataState.DISCONNECTED; diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 48e8ea98db081..8d9b81c8b5853 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -102,26 +102,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { //useful for debugging boolean mFailNextConnect = false; - /** - * allApns holds all apns for this sim spn, retrieved from - * the Carrier DB. - * - * Create once after simcard info is loaded - */ - private ArrayList mAllApns = null; - - private ApnSetting mPreferredApn = null; - - /** Convert an ApnType string to Id (TODO: Use "enumeration" instead of String for ApnType) */ - private HashMap mApnToDataConnectionId = - new HashMap(); - - /** Phone.APN_TYPE_* ===> ApnContext */ - private ConcurrentHashMap mApnContexts; - - /** Is packet service restricted by network */ - private boolean mIsPsRestricted = false; - //***** Constants private static final int POLL_PDP_MILLIS = 5 * 1000; @@ -318,7 +298,13 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { return null; } + @Override + protected void setState(State s) { + if (DBG) log("setState should not be used in GSM" + s); + } + // Return state of specific apn type + @Override public synchronized State getState(String apnType) { ApnContext apnContext = mApnContexts.get(apnType); if (apnContext != null) { @@ -611,11 +597,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } - @Override - protected void setState(State s) { - if (DBG) log("setState should not be used in GSM" + s); - } - private boolean trySetupData(ApnContext apnContext) { if (DBG)