diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 918ae7901dbe4..bf12b9cce3024 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -7608,6 +7608,55 @@ public class CarrierConfigManager { public static final String KEY_EMERGENCY_REQUIRES_VOLTE_ENABLED_BOOL = KEY_PREFIX + "emergency_requires_volte_enabled_bool"; + /** + * This values indicates that the cross SIM redialing timer shall be disabled. + * + * @see #KEY_CROSS_STACK_REDIAL_TIMER_SEC_INT + * @see #KEY_QUICK_CROSS_STACK_REDIAL_TIMER_SEC_INT + * @hide + */ + public static final int REDIAL_TIMER_DISABLED = 0; + + /** + * A timer to guard the max attempting time on current SIM slot so that modem will not + * stuck in current SIM slot for long time. On timer expiry, if emergency call on the + * other SIM slot is preferable, telephony shall cancel the emergency call and place the + * call on the other SIM slot. If this value is set to {@link #REDIAL_TIMER_DISABLED}, then + * the timer will never be started and domain selection continues on the current SIM slot. + * This value should be greater than the value of {@link #KEY_EMERGENCY_SCAN_TIMER_SEC_INT}. + * + * The default value for the timer is 120 seconds. + * @hide + */ + public static final String KEY_CROSS_STACK_REDIAL_TIMER_SEC_INT = + KEY_PREFIX + "cross_stack_redial_timer_sec_int"; + + /** + * If emergency calls are only allowed with normal-registered service and UE should get + * normal service in a short time with acquired band information, telephony + * expects dialing emergency call will be completed in a short time. + * If dialing is not completed with in a certain timeout, telephony shall place on + * another SIM slot. If this value is set to {@link #REDIAL_TIMER_DISABLED}, then the timer + * will never be started and domain selection continues on the current SIM slot. + * The timer shall be started for the first trial of each subscription and shall be ignored + * in the roaming networks and non-domestic networks. + * + * The default value for the timer is {@link #REDIAL_TIMER_DISABLED}. + * @hide + */ + public static final String KEY_QUICK_CROSS_STACK_REDIAL_TIMER_SEC_INT = + KEY_PREFIX + "quick_cross_stack_redial_timer_sec_int"; + + /** + * Indicates whether the quick cross stack redial timer will be triggered only when + * the device is registered to the network. + * + * The default value is {@code true}. + * @hide + */ + public static final String KEY_START_QUICK_CROSS_STACK_REDIAL_TIMER_WHEN_REGISTERED_BOOL = + KEY_PREFIX + "start_quick_cross_stack_redial_timer_when_registered_bool"; + private static PersistableBundle getDefaults() { PersistableBundle defaults = new PersistableBundle(); defaults.putBoolean(KEY_RETRY_EMERGENCY_ON_IMS_PDN_BOOL, false); @@ -7674,6 +7723,10 @@ public class CarrierConfigManager { defaults.putBoolean(KEY_EMERGENCY_REQUIRES_VOLTE_ENABLED_BOOL, false); defaults.putStringArray(KEY_EMERGENCY_CDMA_PREFERRED_NUMBERS_STRING_ARRAY, new String[0]); + defaults.putInt(KEY_CROSS_STACK_REDIAL_TIMER_SEC_INT, 120); + defaults.putInt(KEY_QUICK_CROSS_STACK_REDIAL_TIMER_SEC_INT, REDIAL_TIMER_DISABLED); + defaults.putBoolean(KEY_START_QUICK_CROSS_STACK_REDIAL_TIMER_WHEN_REGISTERED_BOOL, + true); return defaults; } diff --git a/telephony/java/android/telephony/PreciseDisconnectCause.java b/telephony/java/android/telephony/PreciseDisconnectCause.java index 3b4cf75e7919c..1cfd22cc4d65d 100644 --- a/telephony/java/android/telephony/PreciseDisconnectCause.java +++ b/telephony/java/android/telephony/PreciseDisconnectCause.java @@ -235,6 +235,23 @@ public final class PreciseDisconnectCause { /** Call failed/dropped because of a network detach. */ public static final int NETWORK_DETACH = 261; + /** + * Dialing emergency calls is currently unavailable. + * The call should be redialed on the other subscription silently. + * If there is no other subscription available, the call may be redialed + * on this subscription again. + * @hide + */ + public static final int EMERGENCY_TEMP_FAILURE = 325; + /** + * Dialing emergency calls is currently unavailable. + * The call should be redialed on the other subscription silently. + * Even if there is no other subscription available, the call should not + * be redialed on this subscription again. + * @hide + */ + public static final int EMERGENCY_PERM_FAILURE = 326; + /** Mobile station (MS) is locked until next power cycle. */ public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000; /** Drop call. */