summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2021-12-14 04:22:30 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-12-14 04:22:30 +0000
commitfb29a9c3141497954433fd66304448e4edbed57f (patch)
tree038508bd498693be0b9a3151d90a368db10dccf9
parentfa82eafc1e40333840cd556b36cd73f1e1be2c12 (diff)
parentfd33d54f460bc7b89952b949524234b2408ec1ab (diff)
Merge "Added IWLAN handover rules support"
-rw-r--r--telephony/java/android/telephony/AccessNetworkConstants.java18
-rw-r--r--telephony/java/android/telephony/CarrierConfigManager.java31
2 files changed, 49 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 1d7a4761dec6..4469ffc14447 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.radio.V1_5.AccessNetwork;
@@ -28,6 +29,8 @@ import java.lang.annotation.RetentionPolicy;
*/
public final class AccessNetworkConstants {
+ private static final String TAG = AccessNetworkConstants.class.getSimpleName();
+
/**
* Wireless transportation type
*
@@ -108,6 +111,21 @@ public final class AccessNetworkConstants {
default: return Integer.toString(type);
}
}
+
+ /** @hide */
+ public static @RadioAccessNetworkType int fromString(@NonNull String str) {
+ switch (str.toUpperCase()) {
+ case "GERAN" : return GERAN;
+ case "UTRAN" : return UTRAN;
+ case "EUTRAN" : return EUTRAN;
+ case "CDMA2000" : return CDMA2000;
+ case "IWLAN" : return IWLAN;
+ case "NGRAN" : return NGRAN;
+ default:
+ Rlog.e(TAG, "Invalid access network type " + str);
+ return UNKNOWN;
+ }
+ }
}
/**
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 1ebf6cd4fdca..c80d35b9e772 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -5381,6 +5381,34 @@ public class CarrierConfigManager {
public static final String KEY_UNTHROTTLE_DATA_RETRY_WHEN_TAC_CHANGES_BOOL =
"unthrottle_data_retry_when_tac_changes_bool";
+ /**
+ * IWLAN handover rules that determine whether handover is allowed or disallowed between
+ * cellular and IWLAN.
+ *
+ * The handover rules will be matched in the order. Here are some sample rules.
+ * <string-array name="iwlan_handover_rules" num="5">
+ * <!-- Handover from IWLAN to 2G/3G is not allowed -->
+ * <item value="source=IWLAN, target=GERAN|UTRAN, type=disallowed"/>
+ * <!-- Handover from 2G/3G to IWLAN is not allowed -->
+ * <item value="source=GERAN|UTRAN, target:IWLAN, type=disallowed"/>
+ * <!-- Handover from IWLAN to 3G/4G/5G is not allowed if the device is roaming. -->
+ * <item value="source=IWLAN, target=UTRAN|EUTRAN|NGRAN, roaming=true, type=disallowed"/>
+ * <!-- Handover from 4G to IWLAN is not allowed -->
+ * <item value="source=EUTRAN, target=IWLAN, type=disallowed"/>
+ * <!-- Handover is always allowed in any condition. -->
+ * <item value="source=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN,
+ * target=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, type=allowed"/>
+ * </string-array>
+ *
+ * When handover is not allowed, frameworks will tear down the data network on source transport,
+ * and then setup a new one on the target transport when Qualified Network Service changes the
+ * preferred access networks for particular APN types.
+ *
+ * @hide
+ */
+ public static final String KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY =
+ "iwlan_handover_policy_string_array";
+
/** The default value for every variable. */
private final static PersistableBundle sDefaults;
@@ -6044,6 +6072,9 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_UNTHROTTLE_DATA_RETRY_WHEN_TAC_CHANGES_BOOL, false);
sDefaults.putBoolean(KEY_VONR_SETTING_VISIBILITY_BOOL, true);
sDefaults.putBoolean(KEY_VONR_ENABLED_BOOL, false);
+ sDefaults.putStringArray(KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY, new String[]{
+ "source=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, "
+ + "target=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, type=allowed"});
}
/**