diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-06 11:17:56 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-07-06 11:17:56 -0700 |
commit | 907a8589babf8f22df4cc5d75c232d337a2c4d3a (patch) | |
tree | 09c7a49abb70825a782fde4f09cc9a56fb850ca2 /telephony | |
parent | f7c815b5a98f77e588064483a1800adf7c48b5fe (diff) | |
parent | 922f1b85b9096d9056f1b9e2d777098d1e4ed8b1 (diff) | |
download | frameworks_base-907a8589babf8f22df4cc5d75c232d337a2c4d3a.zip frameworks_base-907a8589babf8f22df4cc5d75c232d337a2c4d3a.tar.gz frameworks_base-907a8589babf8f22df4cc5d75c232d337a2c4d3a.tar.bz2 |
am 922f1b85: Merge change 6146 into donut
Merge commit '922f1b85b9096d9056f1b9e2d777098d1e4ed8b1'
* commit '922f1b85b9096d9056f1b9e2d777098d1e4ed8b1':
Fixing 1949086 Sholes telephony crash after waking from sleep.
Diffstat (limited to 'telephony')
-rw-r--r-- | telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 9d29272..c3818f5 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -96,6 +96,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { * Constants for the data connection activity: * physical link down/up */ + private static final int DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE = 0; private static final int DATA_CONNECTION_ACTIVE_PH_LINK_DOWN = 1; private static final int DATA_CONNECTION_ACTIVE_PH_LINK_UP = 2; @@ -832,7 +833,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { } } - private void onCdmaDataAttached() { + private void onCdmaDataDetached() { if (state == State.CONNECTED) { startNetStatPoll(); phone.notifyDataConnection(Phone.REASON_CDMA_DATA_DETACHED); @@ -852,6 +853,14 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { } } + private void writeEventLogCdmaDataDrop() { + CdmaCellLocation loc = (CdmaCellLocation)(phone.getCellLocation()); + int bsid = (loc != null) ? loc.getBaseStationId() : -1; + EventLog.List val = new EventLog.List(bsid, + TelephonyManager.getDefault().getNetworkType()); + EventLog.writeEvent(TelephonyEventLog.EVENT_LOG_CDMA_DATA_DROP, val); + } + protected void onDataStateChanged (AsyncResult ar) { ArrayList<DataCallState> dataCallStates = (ArrayList<DataCallState>)(ar.result); @@ -863,24 +872,37 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { } if (state == State.CONNECTED) { - if (dataCallStates.get(0).active == DATA_CONNECTION_ACTIVE_PH_LINK_UP ) { - activity = Activity.NONE; - phone.notifyDataActivity(); - } else if (dataCallStates.get(0).active == DATA_CONNECTION_ACTIVE_PH_LINK_DOWN ) { - activity = Activity.DORMANT; - phone.notifyDataActivity(); + if (dataCallStates.size() >= 1) { + switch (dataCallStates.get(0).active) { + case DATA_CONNECTION_ACTIVE_PH_LINK_UP: + Log.v(LOG_TAG, "onDataStateChanged: active=LINK_ACTIVE && CONNECTED, ignore"); + activity = Activity.NONE; + phone.notifyDataActivity(); + break; + case DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE: + Log.v(LOG_TAG, + "onDataStateChanged active=LINK_INACTIVE && CONNECTED, disconnecting/cleanup"); + writeEventLogCdmaDataDrop(); + cleanUpConnection(true, null); + break; + case DATA_CONNECTION_ACTIVE_PH_LINK_DOWN: + Log.v(LOG_TAG, "onDataStateChanged active=LINK_DOWN && CONNECTED, dormant"); + activity = Activity.DORMANT; + phone.notifyDataActivity(); + break; + default: + Log.v(LOG_TAG, "onDataStateChanged: IGNORE unexpected DataCallState.active=" + + dataCallStates.get(0).active); + } + } else { + Log.v(LOG_TAG, "onDataStateChanged: network disconnected, clean up"); + writeEventLogCdmaDataDrop(); + cleanUpConnection(true, null); } } else { - - CdmaCellLocation loc = (CdmaCellLocation)(phone.getCellLocation()); - int bsid = (loc != null) ? loc.getBaseStationId() : -1; - EventLog.List val = new EventLog.List(bsid, - TelephonyManager.getDefault().getNetworkType()); - EventLog.writeEvent(TelephonyEventLog.EVENT_LOG_CDMA_DATA_DROP, val); - - cleanUpConnection(true, null); + // TODO: Do we need to do anything? + Log.i(LOG_TAG, "onDataStateChanged: not connected, state=" + state + " ignoring"); } - Log.i(LOG_TAG, "Data connection has changed."); } String getInterfaceName() { @@ -932,7 +954,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { break; case EVENT_CDMA_DATA_DETACHED: - onCdmaDataAttached(); + onCdmaDataDetached(); break; case EVENT_DATA_STATE_CHANGED: |