summaryrefslogtreecommitdiff
path: root/services/QualifiedNetworksService/src/com/android/telephony/qns
diff options
context:
space:
mode:
authorsangyun <sangyun@google.com>2023-02-02 11:41:10 +0900
committersangyun <sangyun@google.com>2023-02-02 14:32:20 +0900
commita9a7c11edccf14732376287f9cd6924e9e22bfcd (patch)
tree68c934d1f18094991fd08f67d0e68fc0a02c6ef4 /services/QualifiedNetworksService/src/com/android/telephony/qns
parent269aaa8d33c21e0fc6263e0b3faef7d7695f8b83 (diff)
downloadTelephony-a9a7c11edccf14732376287f9cd6924e9e22bfcd.tar.gz
[QNS] use carrier config KEY_XCAP_OVER_UT_SUPPORTED_RATS_INT_ARRAY
Replace KEY_QNS_XCAP_TRANSPORT_TYPE_INT with KEY_XCAP_OVER_UT_SUPPORTED_RATS_INT_ARRAY (AOSP carrier Config) Bug: 237502693 Test: atest QualifiedNetworksServiceTests Change-Id: Ifc77a782c548287ae3c8e15fbdaaba5bcad737ab
Diffstat (limited to 'services/QualifiedNetworksService/src/com/android/telephony/qns')
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java5
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCarrierConfigManager.java97
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/QnsUtils.java1
3 files changed, 54 insertions, 49 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..ea54435 100644
--- a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java
+++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java
@@ -958,11 +958,10 @@ class AccessNetworkEvaluator {
private boolean isAccessNetworkAllowed(int accessNetwork, int netCapability) {
switch (netCapability) {
+ case NetworkCapabilities.NET_CAPABILITY_EIMS:
case NetworkCapabilities.NET_CAPABILITY_IMS:
+ case NetworkCapabilities.NET_CAPABILITY_XCAP:
return mConfigManager.isAccessNetworkAllowed(accessNetwork, netCapability);
- case NetworkCapabilities.NET_CAPABILITY_EIMS:
- return mConfigManager.isAccessNetworkAllowed(
- accessNetwork, NetworkCapabilities.NET_CAPABILITY_IMS);
default:
if (accessNetwork == AccessNetworkType.UNKNOWN) {
return false;
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCarrierConfigManager.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCarrierConfigManager.java
index ec6281a..1f869d1 100644
--- a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCarrierConfigManager.java
+++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCarrierConfigManager.java
@@ -62,6 +62,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -378,25 +379,6 @@ class QnsCarrierConfigManager {
static final String KEY_QNS_MMS_TRANSPORT_TYPE_INT = "qns.mms_transport_type_int";
/**
- * Specifies the Transport type UE supports with QNS services for XCAP network capability.
- * {@link QnsConstants}. The values are set as below:
- *
- * <ul>
- * <li>0: {@link QnsConstants#TRANSPORT_TYPE_ALLOWED_WWAN}
- * <li>1: {@link QnsConstants#TRANSPORT_TYPE_ALLOWED_IWLAN}
- * <li>2: {@link QnsConstants#TRANSPORT_TYPE_ALLOWED_BOTH}
- * </ul>
- *
- * <p>{@code QnsConstants#TRANSPORT_TYPE_ALLOWED_WWAN}: If set , Transport type UE supports is
- * cellular for XCAP network capability. {@code QnsConstants#TRANSPORT_TYPE_ALLOWED_IWLAN}: If
- * this value set , Transport type UE supports is Wifi for XCAP network capability. {@code
- * QnsConstants#TRANSPORT_TYPE_ALLOWED_BOTH}: If this value set , Transport type UE supports is
- * both Cellular & Wifi for XCAP network capability. The default value for this key is {@link
- * QnsConstants#TRANSPORT_TYPE_ALLOWED_WWAN}
- */
- static final String KEY_QNS_XCAP_TRANSPORT_TYPE_INT = "qns.xcap_transport_type_int";
-
- /**
* Specifies the Transport type UE supports with QNS services for CBS network capability. {@link
* QnsConstants}. The values are set as below:
*
@@ -747,7 +729,7 @@ class QnsCarrierConfigManager {
private int mQnsImsTransportType;
private int mQnsSosTransportType;
private int mQnsMmsTransportType;
- private int mQnsXcapTransportType;
+ private int[] mQnsXcapSupportedAccessNetworkTypes;
private int mQnsCbsTransportType;
private int mXcapRatPreference;
private int mSosRatPreference;
@@ -1334,8 +1316,11 @@ class QnsCarrierConfigManager {
getConfig(bundleCarrier, bundleAsset, KEY_QNS_SOS_TRANSPORT_TYPE_INT);
mQnsMmsTransportType =
getConfig(bundleCarrier, bundleAsset, KEY_QNS_MMS_TRANSPORT_TYPE_INT);
- mQnsXcapTransportType =
- getConfig(bundleCarrier, bundleAsset, KEY_QNS_XCAP_TRANSPORT_TYPE_INT);
+ mQnsXcapSupportedAccessNetworkTypes =
+ getConfig(
+ bundleCarrier,
+ bundleAsset,
+ CarrierConfigManager.ImsSs.KEY_XCAP_OVER_UT_SUPPORTED_RATS_INT_ARRAY);
mQnsCbsTransportType =
getConfig(bundleCarrier, bundleAsset, KEY_QNS_CBS_TRANSPORT_TYPE_INT);
mQnsCbsTransportType =
@@ -1964,7 +1949,19 @@ class QnsCarrierConfigManager {
} else if (netCapability == NetworkCapabilities.NET_CAPABILITY_MMS) {
return mQnsMmsTransportType;
} else if (netCapability == NetworkCapabilities.NET_CAPABILITY_XCAP) {
- return mQnsXcapTransportType;
+ HashSet<Integer> supportedTransportType = new HashSet<>();
+ if (mQnsXcapSupportedAccessNetworkTypes != null) {
+ Arrays.stream(mQnsXcapSupportedAccessNetworkTypes)
+ .forEach(accessNetwork -> supportedTransportType.add(
+ QnsUtils.getTransportTypeFromAccessNetwork(accessNetwork)));
+ }
+ if (supportedTransportType.contains(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)) {
+ if (supportedTransportType.contains(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)) {
+ return QnsConstants.TRANSPORT_TYPE_ALLOWED_BOTH;
+ }
+ return QnsConstants.TRANSPORT_TYPE_ALLOWED_IWLAN;
+ }
+ return QnsConstants.TRANSPORT_TYPE_ALLOWED_WWAN;
} else if (netCapability == NetworkCapabilities.NET_CAPABILITY_CBS) {
return mQnsCbsTransportType;
}
@@ -2382,8 +2379,10 @@ class QnsCarrierConfigManager {
|| mQnsMmsTransportType == QnsConstants.TRANSPORT_TYPE_ALLOWED_BOTH) {
netCapabilities.add(NetworkCapabilities.NET_CAPABILITY_MMS);
}
- if (mQnsXcapTransportType == QnsConstants.TRANSPORT_TYPE_ALLOWED_IWLAN
- || mQnsXcapTransportType == QnsConstants.TRANSPORT_TYPE_ALLOWED_BOTH) {
+ if (mQnsXcapSupportedAccessNetworkTypes != null
+ && Arrays.stream(mQnsXcapSupportedAccessNetworkTypes)
+ .anyMatch(accessNetwork -> QnsUtils.getTransportTypeFromAccessNetwork(
+ accessNetwork) == AccessNetworkConstants.TRANSPORT_TYPE_WLAN)) {
netCapabilities.add(NetworkCapabilities.NET_CAPABILITY_XCAP);
}
if (mQnsCbsTransportType == QnsConstants.TRANSPORT_TYPE_ALLOWED_IWLAN
@@ -2393,34 +2392,42 @@ class QnsCarrierConfigManager {
return netCapabilities;
}
+ private static HashMap<Integer, String> sRatStringMatcher;
+ static {
+ sRatStringMatcher = new HashMap<>();
+ sRatStringMatcher.put(AccessNetworkConstants.AccessNetworkType.EUTRAN, "LTE");
+ sRatStringMatcher.put(AccessNetworkConstants.AccessNetworkType.NGRAN, "NR");
+ sRatStringMatcher.put(AccessNetworkConstants.AccessNetworkType.UTRAN, "3G");
+ sRatStringMatcher.put(AccessNetworkConstants.AccessNetworkType.GERAN, "2G");
+ }
+
/**
* This method returns Allowed cellular RAT for IMS
*
- * @param accessNetwork , netCapability : EUTRAN / NGRAN / UTRAN/ GERAN
+ * @param accessNetwork : (EUTRAN, NGRAN, UTRAN, GERAN)
+ * @param netCapability : (ims, sos, mms, xcap, cbs)
* @return : True or False based on configuration
*/
boolean isAccessNetworkAllowed(int accessNetwork, int netCapability) {
- // cases to be enhanced for different key items when added
- if (netCapability == NetworkCapabilities.NET_CAPABILITY_IMS) {
- if (mImsAllowedRats != null) {
- for (String cellularRatType : mImsAllowedRats) {
- if ((cellularRatType.contains("LTE")
- && accessNetwork
- == AccessNetworkConstants.AccessNetworkType.EUTRAN)
- || (cellularRatType.contains("NR")
- && accessNetwork
- == AccessNetworkConstants.AccessNetworkType.NGRAN)
- || (cellularRatType.contains("3G")
- && accessNetwork
- == AccessNetworkConstants.AccessNetworkType.UTRAN)
- || (cellularRatType.contains("2G")
- && accessNetwork
- == AccessNetworkConstants.AccessNetworkType.GERAN)) {
- return true;
- }
+ switch (netCapability) {
+ case NetworkCapabilities.NET_CAPABILITY_EIMS:
+ case NetworkCapabilities.NET_CAPABILITY_IMS:
+ // cases to be enhanced for different key items when added
+ String ratName = sRatStringMatcher.get(accessNetwork);
+ if (mImsAllowedRats != null
+ && ratName != null
+ && Arrays.stream(mImsAllowedRats)
+ .anyMatch(ratType -> TextUtils.equals(ratType, ratName))) {
+ return true;
}
- }
+ break;
+ case NetworkCapabilities.NET_CAPABILITY_XCAP:
+ return mQnsXcapSupportedAccessNetworkTypes != null
+ && Arrays.stream(mQnsXcapSupportedAccessNetworkTypes)
+ .anyMatch(xcapAccessNetwork -> accessNetwork == xcapAccessNetwork);
+ default:
+ return false;
}
return false;
}
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsUtils.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsUtils.java
index c17a2c7..85ae192 100644
--- a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsUtils.java
+++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsUtils.java
@@ -625,7 +625,6 @@ class QnsUtils {
case QnsCarrierConfigManager.KEY_QNS_IMS_TRANSPORT_TYPE_INT:
return (T) Integer.valueOf(QnsConstants.TRANSPORT_TYPE_ALLOWED_BOTH);
case QnsCarrierConfigManager.KEY_QNS_MMS_TRANSPORT_TYPE_INT:
- case QnsCarrierConfigManager.KEY_QNS_XCAP_TRANSPORT_TYPE_INT:
case QnsCarrierConfigManager.KEY_QNS_CBS_TRANSPORT_TYPE_INT:
case QnsCarrierConfigManager.KEY_QNS_SOS_TRANSPORT_TYPE_INT:
return (T) Integer.valueOf(QnsConstants.TRANSPORT_TYPE_ALLOWED_WWAN);