diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index be97124b1893e..8a029f1455404 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; + + /* Once disposed dont handle any messages */ protected boolean mIsDisposed = false; @@ -344,11 +362,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 */ @@ -390,16 +403,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) { @@ -434,10 +438,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(); @@ -546,16 +559,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; @@ -602,12 +605,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)) { @@ -728,13 +725,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 b24909fcddfb2..01519a70f5364 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -159,6 +159,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 d8ff26899742d..22c4640ae7215 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; @@ -320,7 +300,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) { @@ -613,11 +599,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)