Merge "Cleanup DataConnectionTracker" into honeycomb-LTE

This commit is contained in:
Wink Saville
2011-03-29 14:44:56 -07:00
committed by Android (Google) Code Review
6 changed files with 47 additions and 71 deletions

View File

@@ -42,6 +42,7 @@ import com.android.internal.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
/** /**
@@ -244,9 +245,26 @@ public abstract class DataConnectionTracker extends Handler {
protected HashMap<Integer, DataConnection> mDataConnections = protected HashMap<Integer, DataConnection> mDataConnections =
new HashMap<Integer, DataConnection>(); new HashMap<Integer, DataConnection>();
/** Convert an ApnType string to Id (TODO: Use "enumeration" instead of String for ApnType) */
protected HashMap<String, Integer> mApnToDataConnectionId =
new HashMap<String, Integer>();
/** Phone.APN_TYPE_* ===> ApnContext */
protected ConcurrentHashMap<String, ApnContext> mApnContexts;
/* Currently active APN */ /* Currently active APN */
protected ApnSetting mActiveApn; protected ApnSetting mActiveApn;
/** allApns holds all apns */
protected ArrayList<ApnSetting> mAllApns = null;
/** preferred apn */
protected ApnSetting mPreferredApn = null;
/** Is packet service restricted by network */
protected boolean mIsPsRestricted = false;
/* Once disposed dont handle any messages */ /* Once disposed dont handle any messages */
protected boolean mIsDisposed = false; protected boolean mIsDisposed = false;
@@ -344,11 +362,6 @@ public abstract class DataConnectionTracker extends Handler {
return mActivity; return mActivity;
} }
public State getState() {
// TODO: reimplement to use apnType better yet REMOVE.
return mState;
}
/** /**
* @return the data connections * @return the data connections
*/ */
@@ -390,16 +403,7 @@ public abstract class DataConnectionTracker extends Handler {
return result; return result;
} }
private String getActiveApnType() { /** TODO: See if we can remove */
String result;
if (mActiveApn != null) {
result = apnIdToType(mActiveApn.id);
} else {
result = null;
}
return result;
}
public String getActiveApnString() { public String getActiveApnString() {
String result = null; String result = null;
if (mActiveApn != null) { if (mActiveApn != null) {
@@ -434,10 +438,19 @@ public abstract class DataConnectionTracker extends Handler {
} }
} }
// abstract methods
protected abstract String getActionIntentReconnectAlarm(); 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 boolean onTrySetupData(String reason);
protected abstract void onRoamingOff(); protected abstract void onRoamingOff();
protected abstract void onRoamingOn(); protected abstract void onRoamingOn();
@@ -546,16 +559,6 @@ public abstract class DataConnectionTracker extends Handler {
return result; 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) { protected int apnTypeToId(String type) {
if (TextUtils.equals(type, Phone.APN_TYPE_DEFAULT)) { if (TextUtils.equals(type, Phone.APN_TYPE_DEFAULT)) {
return APN_DEFAULT_ID; 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) { protected LinkProperties getLinkProperties(String apnType) {
int id = apnTypeToId(apnType); int id = apnTypeToId(apnType);
if (isApnIdEnabled(id)) { if (isApnIdEnabled(id)) {
@@ -728,13 +725,12 @@ public abstract class DataConnectionTracker extends Handler {
return possible; return possible;
} }
protected abstract boolean isDataAllowed();
public boolean isApnTypeEnabled(String apnType) { public boolean isApnTypeEnabled(String apnType) {
if (apnType == null) { if (apnType == null) {
apnType = getActiveApnType(); return false;
} else {
return isApnIdEnabled(apnTypeToId(apnType));
} }
return isApnIdEnabled(apnTypeToId(apnType));
} }
protected synchronized boolean isApnIdEnabled(int id) { protected synchronized boolean isApnIdEnabled(int id) {

View File

@@ -122,13 +122,7 @@ public class CDMALTEPhone extends CDMAPhone {
} else if (mDataConnection.isApnTypeEnabled(apnType) == false) { } else if (mDataConnection.isApnTypeEnabled(apnType) == false) {
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;
} else { } else {
DataConnectionTracker.State state; switch (mDataConnection.getState(apnType)) {
if (isCdmaDataConnectionTracker) {
state = mDataConnection.getState();
} else {
state = ((GsmDataConnectionTracker)mDataConnection).getState(apnType);
}
switch (state) {
case FAILED: case FAILED:
case IDLE: case IDLE:
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;

View File

@@ -633,7 +633,7 @@ public class CDMAPhone extends PhoneBase {
mDataConnection.isApnTypeActive(apnType) == false) { mDataConnection.isApnTypeActive(apnType) == false) {
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;
} else { } else {
switch (mDataConnection.getState()) { switch (mDataConnection.getState(apnType)) {
case FAILED: case FAILED:
case IDLE: case IDLE:
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;

View File

@@ -159,6 +159,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
} }
} }
@Override
public synchronized State getState(String apnType) {
return mState;
}
@Override @Override
protected boolean isApnTypeAvailable(String type) { protected boolean isApnTypeAvailable(String type) {
for (String s : mSupportedApnTypes) { for (String s : mSupportedApnTypes) {

View File

@@ -312,7 +312,7 @@ public class GSMPhone extends PhoneBase {
mDataConnection.isApnTypeActive(apnType) == false) { mDataConnection.isApnTypeActive(apnType) == false) {
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;
} else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */
switch (mDataConnection.getState()) { switch (mDataConnection.getState(apnType)) {
case FAILED: case FAILED:
case IDLE: case IDLE:
ret = DataState.DISCONNECTED; ret = DataState.DISCONNECTED;

View File

@@ -102,26 +102,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
//useful for debugging //useful for debugging
boolean mFailNextConnect = false; 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<ApnSetting> mAllApns = null;
private ApnSetting mPreferredApn = null;
/** Convert an ApnType string to Id (TODO: Use "enumeration" instead of String for ApnType) */
private HashMap<String, Integer> mApnToDataConnectionId =
new HashMap<String, Integer>();
/** Phone.APN_TYPE_* ===> ApnContext */
private ConcurrentHashMap<String, ApnContext> mApnContexts;
/** Is packet service restricted by network */
private boolean mIsPsRestricted = false;
//***** Constants //***** Constants
private static final int POLL_PDP_MILLIS = 5 * 1000; private static final int POLL_PDP_MILLIS = 5 * 1000;
@@ -320,7 +300,13 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
return null; 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 // Return state of specific apn type
@Override
public synchronized State getState(String apnType) { public synchronized State getState(String apnType) {
ApnContext apnContext = mApnContexts.get(apnType); ApnContext apnContext = mApnContexts.get(apnType);
if (apnContext != null) { 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) { private boolean trySetupData(ApnContext apnContext) {
if (DBG) if (DBG)