Merge "Cleanup DataConnectionTracker" into honeycomb-LTE
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user