Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +29 −42 Original line number Diff line number Diff line Loading @@ -976,6 +976,12 @@ public class DataConnection extends StateMachine { result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mPhone.getSubId()))); if (!mPhone.getServiceState().getDataRoaming()) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); } return result; } Loading Loading @@ -1213,26 +1219,22 @@ public class DataConnection extends StateMachine { + " drs=" + mDataRegState + " mRilRat=" + mRilRat); } ServiceState ss = mPhone.getServiceState(); int networkType = ss.getDataNetworkType(); mNetworkInfo.setSubtype(networkType, TelephonyManager.getNetworkTypeName(networkType)); if (mNetworkAgent != null) { updateNetworkInfo(); updateNetworkInfoSuspendState(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); mNetworkAgent.sendLinkProperties(mLinkProperties); } break; case EVENT_DATA_CONNECTION_ROAM_ON: mNetworkInfo.setRoaming(true); break; case EVENT_DATA_CONNECTION_ROAM_OFF: mNetworkInfo.setRoaming(false); updateNetworkInfo(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } break; default: if (DBG) { log("DcDefaultState: shouldn't happen but ignore msg.what=" Loading @@ -1245,9 +1247,14 @@ public class DataConnection extends StateMachine { } } private boolean updateNetworkInfoSuspendState() { final NetworkInfo.DetailedState oldState = mNetworkInfo.getDetailedState(); private void updateNetworkInfo() { final ServiceState state = mPhone.getServiceState(); final int subtype = state.getDataNetworkType(); mNetworkInfo.setSubtype(subtype, TelephonyManager.getNetworkTypeName(subtype)); mNetworkInfo.setRoaming(state.getDataRoaming()); } private void updateNetworkInfoSuspendState() { // this is only called when we are either connected or suspended. Decide which. if (mNetworkAgent == null) { Rlog.e(getName(), "Setting suspend state without a NetworkAgent"); Loading @@ -1265,13 +1272,12 @@ public class DataConnection extends StateMachine { if (ct.getState() != PhoneConstants.State.IDLE) { mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, null, mNetworkInfo.getExtraInfo()); return (oldState != NetworkInfo.DetailedState.SUSPENDED); return; } } mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, mNetworkInfo.getExtraInfo()); } return (oldState != mNetworkInfo.getDetailedState()); } private DcDefaultState mDefaultState = new DcDefaultState(); Loading Loading @@ -1542,22 +1548,7 @@ public class DataConnection extends StateMachine { @Override public void enter() { if (DBG) log("DcActiveState: enter dc=" + DataConnection.this); // verify and get updated information in case these things // are obsolete ServiceState ss = mPhone.getServiceState(); final int networkType = ss.getDataNetworkType(); if (mNetworkInfo.getSubtype() != networkType) { log("DcActiveState with incorrect subtype (" + mNetworkInfo.getSubtype() + ", " + networkType + "), updating."); } mNetworkInfo.setSubtype(networkType, TelephonyManager.getNetworkTypeName(networkType)); final boolean roaming = ss.getDataRoaming(); if (roaming != mNetworkInfo.isRoaming()) { log("DcActiveState with incorrect roaming (" + mNetworkInfo.isRoaming() + ", " + roaming + "), updating."); } mNetworkInfo.setRoaming(roaming); updateNetworkInfo(); // If we were retrying there maybe more than one, otherwise they'll only be one. notifyAllOfConnected(Phone.REASON_CONNECTED); Loading Loading @@ -1685,17 +1676,11 @@ public class DataConnection extends StateMachine { retVal = HANDLED; break; } case EVENT_DATA_CONNECTION_ROAM_ON: { mNetworkInfo.setRoaming(true); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; break; } case EVENT_DATA_CONNECTION_ROAM_ON: case EVENT_DATA_CONNECTION_ROAM_OFF: { mNetworkInfo.setRoaming(false); updateNetworkInfo(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; Loading @@ -1721,8 +1706,10 @@ public class DataConnection extends StateMachine { } case EVENT_DATA_CONNECTION_VOICE_CALL_STARTED: case EVENT_DATA_CONNECTION_VOICE_CALL_ENDED: { if (updateNetworkInfoSuspendState() && mNetworkAgent != null) { // state changed updateNetworkInfo(); updateNetworkInfoSuspendState(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +29 −42 Original line number Diff line number Diff line Loading @@ -976,6 +976,12 @@ public class DataConnection extends StateMachine { result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mPhone.getSubId()))); if (!mPhone.getServiceState().getDataRoaming()) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); } return result; } Loading Loading @@ -1213,26 +1219,22 @@ public class DataConnection extends StateMachine { + " drs=" + mDataRegState + " mRilRat=" + mRilRat); } ServiceState ss = mPhone.getServiceState(); int networkType = ss.getDataNetworkType(); mNetworkInfo.setSubtype(networkType, TelephonyManager.getNetworkTypeName(networkType)); if (mNetworkAgent != null) { updateNetworkInfo(); updateNetworkInfoSuspendState(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); mNetworkAgent.sendLinkProperties(mLinkProperties); } break; case EVENT_DATA_CONNECTION_ROAM_ON: mNetworkInfo.setRoaming(true); break; case EVENT_DATA_CONNECTION_ROAM_OFF: mNetworkInfo.setRoaming(false); updateNetworkInfo(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } break; default: if (DBG) { log("DcDefaultState: shouldn't happen but ignore msg.what=" Loading @@ -1245,9 +1247,14 @@ public class DataConnection extends StateMachine { } } private boolean updateNetworkInfoSuspendState() { final NetworkInfo.DetailedState oldState = mNetworkInfo.getDetailedState(); private void updateNetworkInfo() { final ServiceState state = mPhone.getServiceState(); final int subtype = state.getDataNetworkType(); mNetworkInfo.setSubtype(subtype, TelephonyManager.getNetworkTypeName(subtype)); mNetworkInfo.setRoaming(state.getDataRoaming()); } private void updateNetworkInfoSuspendState() { // this is only called when we are either connected or suspended. Decide which. if (mNetworkAgent == null) { Rlog.e(getName(), "Setting suspend state without a NetworkAgent"); Loading @@ -1265,13 +1272,12 @@ public class DataConnection extends StateMachine { if (ct.getState() != PhoneConstants.State.IDLE) { mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.SUSPENDED, null, mNetworkInfo.getExtraInfo()); return (oldState != NetworkInfo.DetailedState.SUSPENDED); return; } } mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, mNetworkInfo.getExtraInfo()); } return (oldState != mNetworkInfo.getDetailedState()); } private DcDefaultState mDefaultState = new DcDefaultState(); Loading Loading @@ -1542,22 +1548,7 @@ public class DataConnection extends StateMachine { @Override public void enter() { if (DBG) log("DcActiveState: enter dc=" + DataConnection.this); // verify and get updated information in case these things // are obsolete ServiceState ss = mPhone.getServiceState(); final int networkType = ss.getDataNetworkType(); if (mNetworkInfo.getSubtype() != networkType) { log("DcActiveState with incorrect subtype (" + mNetworkInfo.getSubtype() + ", " + networkType + "), updating."); } mNetworkInfo.setSubtype(networkType, TelephonyManager.getNetworkTypeName(networkType)); final boolean roaming = ss.getDataRoaming(); if (roaming != mNetworkInfo.isRoaming()) { log("DcActiveState with incorrect roaming (" + mNetworkInfo.isRoaming() + ", " + roaming + "), updating."); } mNetworkInfo.setRoaming(roaming); updateNetworkInfo(); // If we were retrying there maybe more than one, otherwise they'll only be one. notifyAllOfConnected(Phone.REASON_CONNECTED); Loading Loading @@ -1685,17 +1676,11 @@ public class DataConnection extends StateMachine { retVal = HANDLED; break; } case EVENT_DATA_CONNECTION_ROAM_ON: { mNetworkInfo.setRoaming(true); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; break; } case EVENT_DATA_CONNECTION_ROAM_ON: case EVENT_DATA_CONNECTION_ROAM_OFF: { mNetworkInfo.setRoaming(false); updateNetworkInfo(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; Loading @@ -1721,8 +1706,10 @@ public class DataConnection extends StateMachine { } case EVENT_DATA_CONNECTION_VOICE_CALL_STARTED: case EVENT_DATA_CONNECTION_VOICE_CALL_ENDED: { if (updateNetworkInfoSuspendState() && mNetworkAgent != null) { // state changed updateNetworkInfo(); updateNetworkInfoSuspendState(); if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities()); mNetworkAgent.sendNetworkInfo(mNetworkInfo); } retVal = HANDLED; Loading