summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSewook Seo <sewookseo@google.com>2023-02-03 00:27:59 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-02-03 00:27:59 +0000
commit5620c6710d81afc0c53e136be9eadacdf3bcb4ba (patch)
treedd08f2a778473cc742b973ec42992cce86ec9383
parenta9a7c11edccf14732376287f9cd6924e9e22bfcd (diff)
parentf21d4c380ceedaf3742608321a352bb5005b8c23 (diff)
downloadTelephony-5620c6710d81afc0c53e136be9eadacdf3bcb4ba.tar.gz
Merge "[QNS] report guided RAT for EMC at disconnected."
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java31
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()));