From f21d4c380ceedaf3742608321a352bb5005b8c23 Mon Sep 17 00:00:00 2001 From: Sewook Seo Date: Thu, 2 Feb 2023 07:04:29 +0000 Subject: [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 --- .../telephony/qns/AccessNetworkEvaluator.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'services/QualifiedNetworksService/src/com/android/telephony/qns') 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 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())); -- cgit v1.2.3