summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSewook Seo <sewookseo@google.com>2023-02-02 07:04:29 +0000
committerSewook Seo <sewookseo@google.com>2023-02-02 19:48:08 +0000
commitf21d4c380ceedaf3742608321a352bb5005b8c23 (patch)
tree7144800b178e91e85498954c35b8dd46e1aa39b1
parent6adb79fba952735c0be89ea4d1fb4c1bdd18e377 (diff)
downloadTelephony-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.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 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()));