From 9aeeb52abfa5fe4f3ace62e8ad2805ff59d2409e Mon Sep 17 00:00:00 2001 From: Ling Ma Date: Mon, 5 Jun 2023 12:39:44 -0700 Subject: Configure auto data switch score table Configure a table to switch mobile data base on RAT and signal strength. Bug: 260928808 Test: phone call + data browsing Test: basic testing b/286044642 and b/286043947 Change-Id: Ibda3ff35ba5f590b48f61f2f29e2b75aa8a1c0b5 --- core/res/res/values/config_telephony.xml | 9 +++ .../android/telephony/CarrierConfigManager.java | 66 ++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/core/res/res/values/config_telephony.xml b/core/res/res/values/config_telephony.xml index 4ae54a052859..08c40ba0e823 100644 --- a/core/res/res/values/config_telephony.xml +++ b/core/res/res/values/config_telephony.xml @@ -67,6 +67,15 @@ true + + 3000 + + diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 188894339f6a..cc2d394281e2 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -9730,6 +9730,27 @@ public class CarrierConfigManager { public static final String KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY = "iwlan_handover_policy_string_array"; + /** + * Score table for {@link TelephonyManager#MOBILE_DATA_POLICY_AUTO_DATA_SWITCH}. The score is + * used in conjunction with a tolerance value defined in resource config + * {@code auto_data_switch_score_tolerance}, greater than which device will switch to the sub + * with higher score. + * Possible keys are network type name string(also see {@link #KEY_BANDWIDTH_STRING_ARRAY}). + * Value should be "score_level_0, score_level_1, score_level_2, score_level_3,score_level_4". + * Each network type must have 5 scores correspond to {@link CellSignalStrength}, where score is + * a non-negative integer. A score of 0 is treated the same as data out of service. + * + * For NR (5G), the following network names should be used: + * - NR_NSA: NR NSA, sub-6 frequencies + * - NR_NSA_MMWAVE: NR NSA, mmwave frequencies + * - NR_SA: NR SA, sub-6 frequencies + * - NR_SA_MMWAVE: NR SA, mmwave frequencies + * + * @hide + */ + public static final String KEY_AUTO_DATA_SWITCH_RAT_SIGNAL_SCORE_BUNDLE = + "auto_data_switch_rat_signal_score_string_bundle"; + /** The default value for every variable. */ private static final PersistableBundle sDefaults; @@ -10404,6 +10425,51 @@ public class CarrierConfigManager { sDefaults.putStringArray(KEY_IWLAN_HANDOVER_POLICY_STRING_ARRAY, new String[]{ "source=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, " + "target=GERAN|UTRAN|EUTRAN|NGRAN|IWLAN, type=allowed"}); + PersistableBundle auto_data_switch_rat_signal_score_string_bundle = new PersistableBundle(); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "NR_SA_MMWAVE", new int[]{10000, 13227, 16000, 18488, 20017}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "NR_NSA_MMWAVE", new int[]{8000, 10227, 12488, 15017, 15278}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "LTE", new int[]{3731, 5965, 8618, 11179, 13384}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "NR_SA", new int[]{5288, 6795, 6955, 7562, 9713}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "NR_NSA", new int[]{5463, 6827, 8029, 9007, 9428}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "UMTS", new int[]{100, 169, 183, 192, 300}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "eHRPD", new int[]{10, 400, 600, 800, 1000}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "TD_SCDMA", new int[]{1, 100, 500, 1000}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "iDEN", new int[]{1, 2, 10, 50, 100}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "EvDo_B", new int[]{1000, 1495, 2186, 2532, 2600}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "HSPA+", new int[]{1619, 2500, 3393, 4129, 4212}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "HSPA", new int[]{1000, 1495, 2186, 2532, 2544}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "HSUPA", new int[]{1500, 1919, 2132, 2362, 2704}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "HSDPA", new int[]{1500, 1732, 4000, 7000, 8000}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "EvDo_A", new int[]{600, 840, 1200, 1300, 1400}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "EvDo_0", new int[]{300, 600, 1000, 1500, 2000}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "1xRTT", new int[]{50, 60, 70, 80}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "EDGE", new int[]{154, 169, 183, 192, 267}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "GPRS", new int[]{15, 30, 40, 45, 50}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "CDMA", new int[]{1, 50, 100, 300, 2000}); + auto_data_switch_rat_signal_score_string_bundle.putIntArray( + "GSM", new int[]{1, 2, 10, 50, 100}); + sDefaults.putPersistableBundle(KEY_AUTO_DATA_SWITCH_RAT_SIGNAL_SCORE_BUNDLE, + auto_data_switch_rat_signal_score_string_bundle); sDefaults.putInt(KEY_CELLULAR_USAGE_SETTING_INT, SubscriptionManager.USAGE_SETTING_UNKNOWN); // Default data stall recovery configurations. -- cgit v1.2.3-59-g8ed1b