diff options
author | Sewook Seo <sewookseo@google.com> | 2023-02-02 07:04:29 +0000 |
---|---|---|
committer | Sewook Seo <sewookseo@google.com> | 2023-02-02 19:48:08 +0000 |
commit | f21d4c380ceedaf3742608321a352bb5005b8c23 (patch) | |
tree | 7144800b178e91e85498954c35b8dd46e1aa39b1 | |
parent | 6adb79fba952735c0be89ea4d1fb4c1bdd18e377 (diff) | |
download | Telephony-f21d4c380ceedaf3742608321a352bb5005b8c23.tar.gz |
[QNS] report guided RAT for EMC at disconnected.
If FWK guided emergency's transport type during data connected state, notify the transport type when the data connection is disconnected.
Bug: 266191727
Test: atest QualifiedNetworksServiceTest, device test for EMC.
Change-Id: Ie91bde9c1b03f06efd688af2ece375545742bb1e
-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 1ef7f6e..255c3b1 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())); |