diff options
author | Sewook Seo <sewookseo@google.com> | 2023-02-03 00:27:59 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-02-03 00:27:59 +0000 |
commit | 5620c6710d81afc0c53e136be9eadacdf3bcb4ba (patch) | |
tree | dd08f2a778473cc742b973ec42992cce86ec9383 | |
parent | a9a7c11edccf14732376287f9cd6924e9e22bfcd (diff) | |
parent | f21d4c380ceedaf3742608321a352bb5005b8c23 (diff) | |
download | Telephony-5620c6710d81afc0c53e136be9eadacdf3bcb4ba.tar.gz |
Merge "[QNS] report guided RAT for EMC at disconnected."
-rw-r--r-- | services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java index ea54435..320b093 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java @@ -111,6 +111,8 @@ class AccessNetworkEvaluator { private QnsProvisioningListener.QnsProvisioningInfo mLastProvisioningInfo = new QnsProvisioningListener.QnsProvisioningInfo(); private boolean mSipDialogSessionState = false; + private int mCachedTransportTypeForEmergencyInitialConnect = + AccessNetworkConstants.TRANSPORT_TYPE_INVALID; AccessNetworkEvaluator(QnsComponents qnsComponents, int netCapability, int slotIndex) { mNetCapability = netCapability; @@ -687,6 +689,13 @@ class AccessNetworkEvaluator { } updateLastNotifiedQualifiedNetwork(accessNetworkTypes); notifyForQualifiedNetworksChanged(accessNetworkTypes); + mCachedTransportTypeForEmergencyInitialConnect = + AccessNetworkConstants.TRANSPORT_TYPE_INVALID; + } else { + log( + "cache transportType for emergency: " + + QnsConstants.transportTypeToString(transport)); + mCachedTransportTypeForEmergencyInitialConnect = transport; } } ); @@ -700,6 +709,28 @@ class AccessNetworkEvaluator { case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_DISCONNECTED: needEvaluate = true; initLastNotifiedQualifiedNetwork(); + // If FWK guided emergency's transport type during data connected state, notify the + // transport type when the data connection is disconnected. + if (mNetCapability == NetworkCapabilities.NET_CAPABILITY_EIMS + && mCachedTransportTypeForEmergencyInitialConnect + != AccessNetworkConstants.TRANSPORT_TYPE_INVALID) { + int accessNetwork; + List<Integer> accessNetworkTypes = new ArrayList<>(); + if (mCachedTransportTypeForEmergencyInitialConnect + == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) { + accessNetwork = AccessNetworkType.IWLAN; + accessNetworkTypes.add(accessNetwork); + } else { + accessNetwork = mCellularAccessNetworkType; + if (accessNetwork != AccessNetworkType.UNKNOWN) { + accessNetworkTypes.add(accessNetwork); + } + } + updateLastNotifiedQualifiedNetwork(accessNetworkTypes); + notifyForQualifiedNetworksChanged(accessNetworkTypes); + mCachedTransportTypeForEmergencyInitialConnect = + AccessNetworkConstants.TRANSPORT_TYPE_INVALID; + } break; case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_CONNECTED: mHandler.post(() -> onDataConnectionConnected(info.getTransportType())); |