summaryrefslogtreecommitdiffstats
path: root/telephony/java
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2011-10-18 09:44:22 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-10-18 09:44:22 -0700
commit9b61778d63ac41d489ecb40b385cf3f87bdee1f9 (patch)
tree5b29b76048fcc0536db807516a4962677f163be4 /telephony/java
parent8af45445deea2ec59afd22d12855b85d015f1769 (diff)
parentdba69061a6e9c25d968819cee47ab13e5b554b9a (diff)
downloadframeworks_base-9b61778d63ac41d489ecb40b385cf3f87bdee1f9.zip
frameworks_base-9b61778d63ac41d489ecb40b385cf3f87bdee1f9.tar.gz
frameworks_base-9b61778d63ac41d489ecb40b385cf3f87bdee1f9.tar.bz2
am dba69061: Merge "Send availability info more reliably" into ics-mr0
* commit 'dba69061a6e9c25d968819cee47ab13e5b554b9a': Send availability info more reliably
Diffstat (limited to 'telephony/java')
-rw-r--r--telephony/java/com/android/internal/telephony/DataConnectionTracker.java23
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java20
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java30
3 files changed, 29 insertions, 44 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index ae152fb..759a84b 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -254,9 +254,6 @@ public abstract class DataConnectionTracker extends Handler {
/** CID of active data connection */
protected int mCidActive;
- /** indication of our availability (preconditions to trysetupData are met) **/
- protected boolean mAvailability = false;
-
// When false we will not auto attach and manually attaching is required.
protected boolean mAutoAttachOnCreation = false;
@@ -755,7 +752,7 @@ public abstract class DataConnectionTracker extends Handler {
mPhone.notifyDataConnection(reason, apnIdToType(id));
}
}
- notifyDataAvailability(reason);
+ notifyOffApnsOfAvailability(reason);
}
// a new APN has gone active and needs to send events to catch up with the
@@ -783,15 +780,8 @@ public abstract class DataConnectionTracker extends Handler {
}
// disabled apn's still need avail/unavail notificiations - send them out
- protected void notifyOffApnsOfAvailability(String reason, boolean availability) {
- if (mAvailability == availability) {
- if (DBG) {
- log("notifyOffApnsOfAvailability: no change in availability, " +
- "not nofitying about reason='" + reason + "' availability=" + availability);
- }
- return;
- }
- mAvailability = availability;
+ protected void notifyOffApnsOfAvailability(String reason) {
+ if (DBG) log("notifyOffApnsOfAvailability - reason= " + reason);
for (int id = 0; id < APN_NUM_TYPES; id++) {
if (!isApnIdEnabled(id)) {
notifyApnIdDisconnected(reason, id);
@@ -799,13 +789,6 @@ public abstract class DataConnectionTracker extends Handler {
}
}
- // we had an availability change - tell the listeners
- protected void notifyDataAvailability(String reason) {
- // note that we either just turned all off because we lost availability
- // or all were off and could now go on, so only have off apns to worry about
- notifyOffApnsOfAvailability(reason, isDataPossible(Phone.APN_TYPE_DEFAULT));
- }
-
public boolean isApnTypeEnabled(String apnType) {
if (apnType == null) {
return false;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 4dace82..3c7ff05 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -237,7 +237,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
// FIXME this can be improved
setState(State.CONNECTED);
notifyDataConnection(reason);
- notifyOffApnsOfAvailability(reason, true);
+ notifyOffApnsOfAvailability(reason);
log("(fix?) We're on the simulator; assuming data is connected");
return true;
@@ -250,10 +250,10 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
if ((mState == State.IDLE || mState == State.SCANNING) &&
isDataAllowed() && getAnyDataEnabled()) {
boolean retValue = setupData(reason);
- notifyOffApnsOfAvailability(reason, retValue);
+ notifyOffApnsOfAvailability(reason);
return retValue;
} else {
- notifyOffApnsOfAvailability(reason, false);
+ notifyOffApnsOfAvailability(reason);
return false;
}
}
@@ -276,7 +276,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
}
setState(State.DISCONNECTING);
- notifyDataAvailability(reason);
+ notifyOffApnsOfAvailability(reason);
boolean notificationDeferred = false;
for (DataConnection conn : mDataConnections.values()) {
@@ -536,7 +536,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
private void notifyNoData(FailCause lastFailCauseCode) {
setState(State.FAILED);
- notifyDataAvailability(null);
+ notifyOffApnsOfAvailability(null);
}
protected void gotoIdleAndNotifyDataConnection(String reason) {
@@ -583,7 +583,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
@Override
protected void onRoamingOff() {
if (getDataOnRoamingEnabled() == false) {
- notifyDataAvailability(Phone.REASON_ROAMING_OFF);
+ notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF);
trySetupData(Phone.REASON_ROAMING_OFF);
} else {
notifyDataConnection(Phone.REASON_ROAMING_OFF);
@@ -601,7 +601,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
} else {
if (DBG) log("Tear down data connection on roaming.");
cleanUpAllConnections(null);
- notifyDataAvailability(Phone.REASON_ROAMING_ON);
+ notifyOffApnsOfAvailability(Phone.REASON_ROAMING_ON);
}
}
@@ -619,7 +619,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
log("We're on the simulator; assuming data is connected");
}
- notifyDataAvailability(null);
+ notifyOffApnsOfAvailability(null);
if (mState != State.IDLE) {
cleanUpAllConnections(null);
@@ -710,7 +710,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
if (mState == State.CONNECTED && !mCdmaPhone.mSST.isConcurrentVoiceAndDataAllowed()) {
stopNetStatPoll();
notifyDataConnection(Phone.REASON_VOICE_CALL_STARTED);
- notifyDataAvailability(Phone.REASON_VOICE_CALL_STARTED);
+ notifyOffApnsOfAvailability(Phone.REASON_VOICE_CALL_STARTED);
}
}
@@ -727,7 +727,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
// clean slate after call end.
resetPollStats();
}
- notifyDataAvailability(Phone.REASON_VOICE_CALL_ENDED);
+ notifyOffApnsOfAvailability(Phone.REASON_VOICE_CALL_ENDED);
} else {
mDataConnections.get(0).resetRetryCount();
// in case data setup was attempted when we were on a voice call
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 78ba7dd..5497b7f 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -556,7 +556,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
notifyDataConnection(Phone.REASON_DATA_ATTACHED);
} else {
// update APN availability so that APN can be enabled.
- notifyDataAvailability(Phone.REASON_DATA_ATTACHED);
+ notifyOffApnsOfAvailability(Phone.REASON_DATA_ATTACHED);
}
setupDataOnReadyApns(Phone.REASON_DATA_ATTACHED);
@@ -693,7 +693,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (waitingApns.isEmpty()) {
if (DBG) log("trySetupData: No APN found");
notifyNoData(GsmDataConnection.FailCause.MISSING_UNKNOWN_APN, apnContext);
- notifyOffApnsOfAvailability(apnContext.getReason(), false);
+ notifyOffApnsOfAvailability(apnContext.getReason());
return false;
} else {
apnContext.setWaitingApns(waitingApns);
@@ -708,7 +708,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
// apnContext.setReason(apnContext.getReason());
boolean retValue = setupData(apnContext);
- notifyOffApnsOfAvailability(apnContext.getReason(), retValue);
+ notifyOffApnsOfAvailability(apnContext.getReason());
return retValue;
} else {
// TODO: check the condition.
@@ -716,23 +716,25 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
&& (apnContext.getState() == State.IDLE
|| apnContext.getState() == State.SCANNING))
mPhone.notifyDataConnectionFailed(apnContext.getReason(), apnContext.getApnType());
- notifyOffApnsOfAvailability(apnContext.getReason(), false);
+ notifyOffApnsOfAvailability(apnContext.getReason());
return false;
}
}
@Override
// Disabled apn's still need avail/unavail notificiations - send them out
- protected void notifyOffApnsOfAvailability(String reason, boolean availability) {
- if (mAvailability == availability) return;
- mAvailability = availability;
-
+ protected void notifyOffApnsOfAvailability(String reason) {
for (ApnContext apnContext : mApnContexts.values()) {
if (!apnContext.isReady()) {
if (DBG) log("notifyOffApnOfAvailability type:" + apnContext.getApnType());
mPhone.notifyDataConnection(reason != null ? reason : apnContext.getReason(),
apnContext.getApnType(),
Phone.DataState.DISCONNECTED);
+ } else {
+ if (DBG) {
+ log("notifyOffApnsOfAvailability skipped apn due to isReady==false: " +
+ apnContext.toString());
+ }
}
}
}
@@ -1572,7 +1574,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
createAllApnList();
if (mPhone.mCM.getRadioState().isOn()) {
if (DBG) log("onRecordsLoaded: notifying data availability");
- notifyDataAvailability(Phone.REASON_SIM_LOADED);
+ notifyOffApnsOfAvailability(Phone.REASON_SIM_LOADED);
}
setupDataOnReadyApns(Phone.REASON_SIM_LOADED);
}
@@ -1681,7 +1683,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (DBG) log("onRoamingOff");
if (getDataOnRoamingEnabled() == false) {
- notifyDataAvailability(Phone.REASON_ROAMING_OFF);
+ notifyOffApnsOfAvailability(Phone.REASON_ROAMING_OFF);
setupDataOnReadyApns(Phone.REASON_ROAMING_OFF);
} else {
notifyDataConnection(Phone.REASON_ROAMING_OFF);
@@ -1697,7 +1699,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
} else {
if (DBG) log("onRoamingOn: Tear down data connection on roaming.");
cleanUpAllConnections(true, Phone.REASON_ROAMING_ON);
- notifyDataAvailability(Phone.REASON_ROAMING_ON);
+ notifyOffApnsOfAvailability(Phone.REASON_ROAMING_ON);
}
}
@@ -1714,7 +1716,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
}
if (mPhone.mIccRecords.getRecordsLoaded()) {
- notifyDataAvailability(null);
+ notifyOffApnsOfAvailability(null);
}
if (getOverallState() != State.IDLE) {
@@ -1740,7 +1742,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
if (DBG) log("onRadioOffOrNotAvailable: is off and clean up all connections");
cleanUpAllConnections(false, Phone.REASON_RADIO_TURNED_OFF);
}
- notifyDataAvailability(null);
+ notifyOffApnsOfAvailability(null);
}
@Override
@@ -1985,7 +1987,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
apnContext.getApnType());
}
}
- notifyDataAvailability(reason);
+ notifyOffApnsOfAvailability(reason);
}
/**