diff --git a/core/api/current.txt b/core/api/current.txt index fc2fe1b5a253c..43cbe8baefeac 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -41660,6 +41660,13 @@ package android.telephony { field public static final String PROTOCOL_IPV6 = "IPV6"; } + public static final class CarrierConfigManager.Bsf { + field public static final String KEY_BSF_SERVER_FQDN_STRING = "bsf.bsf_server_fqdn_string"; + field public static final String KEY_BSF_SERVER_PORT_INT = "bsf.bsf_server_port_int"; + field public static final String KEY_BSF_TRANSPORT_TYPE_INT = "bsf.bsf_transport type_int"; + field public static final String KEY_PREFIX = "bsf."; + } + public static final class CarrierConfigManager.Gps { field public static final String KEY_PERSIST_LPP_MODE_BOOL = "gps.persist_lpp_mode_bool"; field public static final String KEY_PREFIX = "gps."; @@ -41731,6 +41738,28 @@ package android.telephony { field public static final int RTP_INACTIVITY_ON_CONNECTED = 2; // 0x2 } + public static final class CarrierConfigManager.ImsEmergency { + field public static final String KEY_EMERGENCY_CALLBACK_MODE_SUPPORTED_BOOL = "imsemergency.emergency_callback_mode_supported_bool"; + field public static final String KEY_EMERGENCY_OVER_IMS_SUPPORTED_RATS_INT_ARRAY = "imsemergency.emergency_over_ims_supported_rats_int_array"; + field public static final String KEY_EMERGENCY_QOS_PRECONDITION_SUPPORTED_BOOL = "imsemergency.emergency_qos_precondition_supported_bool"; + field public static final String KEY_EMERGENCY_REGISTRATION_TIMER_MILLIS_INT = "imsemergency.emergency_registration_timer_millis_int"; + field public static final String KEY_PREFIX = "imsemergency."; + field public static final String KEY_RETRY_EMERGENCY_ON_IMS_PDN_BOOL = "imsemergency.retry_emergency_on_ims_pdn_bool"; + } + + public static final class CarrierConfigManager.ImsRtt { + field public static final String KEY_PREFIX = "imsrtt."; + field public static final String KEY_RED_PAYLOAD_TYPE_INT = "imsrtt.red_payload_type_int"; + field public static final String KEY_T140_PAYLOAD_TYPE_INT = "imsrtt.t140_payload_type_int"; + field public static final String KEY_TEXT_AS_BANDWIDTH_KBPS_INT = "imsrtt.text_as_bandwidth_kbps_int"; + field public static final String KEY_TEXT_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = "imsrtt.text_codec_capability_payload_types_bundle"; + field public static final String KEY_TEXT_INACTIVITY_CALL_END_REASONS_INT_ARRAY = "imsrtt.text_inactivity_call_end_reasons_int_array"; + field public static final String KEY_TEXT_ON_DEFAULT_BEARER_SUPPORTED_BOOL = "imsrtt.text_on_default_bearer_supported_bool"; + field public static final String KEY_TEXT_QOS_PRECONDITION_SUPPORTED_BOOL = "imsrtt.text_qos_precondition_supported_bool"; + field public static final String KEY_TEXT_RR_BANDWIDTH_BPS_INT = "imsrtt.text_rr_bandwidth_bps_int"; + field public static final String KEY_TEXT_RS_BANDWIDTH_BPS_INT = "imsrtt.text_rs_bandwidth_bps_int"; + } + public static final class CarrierConfigManager.ImsServiceEntitlement { field public static final String KEY_ENTITLEMENT_SERVER_URL_STRING = "imsserviceentitlement.entitlement_server_url_string"; field public static final String KEY_FCM_SENDER_ID_STRING = "imsserviceentitlement.fcm_sender_id_string"; @@ -41739,6 +41768,167 @@ package android.telephony { field public static final String KEY_SHOW_VOWIFI_WEBVIEW_BOOL = "imsserviceentitlement.show_vowifi_webview_bool"; } + public static final class CarrierConfigManager.ImsSms { + field public static final String KEY_PREFIX = "imssms."; + field public static final String KEY_SMS_CSFB_RETRY_ON_FAILURE_BOOL = "imssms.sms_csfb_retry_on_failure_bool"; + field public static final String KEY_SMS_OVER_IMS_FORMAT_INT = "imssms.sms_over_ims_format_int"; + field public static final String KEY_SMS_OVER_IMS_SUPPORTED_BOOL = "imssms.sms_over_ims_supported_bool"; + field public static final String KEY_SMS_OVER_IMS_SUPPORTED_RATS_INT_ARRAY = "imssms.sms_over_ims_supported_rats_int_array"; + field public static final int SMS_FORMAT_3GPP = 0; // 0x0 + field public static final int SMS_FORMAT_3GPP2 = 1; // 0x1 + } + + public static final class CarrierConfigManager.ImsSs { + field public static final String KEY_NETWORK_INITIATED_USSD_OVER_IMS_SUPPORTED_BOOL = "imsss.network_initiated_ussd_over_ims_supported_bool"; + field public static final String KEY_PREFIX = "imsss."; + field public static final String KEY_USE_CSFB_ON_XCAP_OVER_UT_FAILURE_BOOL = "imsss.use_csfb_on_xcap_over_ut_failure_bool"; + field public static final String KEY_UT_AS_SERVER_FQDN_STRING = "imsss.ut_as_server_fqdn_string"; + field public static final String KEY_UT_AS_SERVER_PORT_INT = "imsss.ut_as_server_port_int"; + field public static final String KEY_UT_IPTYPE_HOME_INT = "imsss.ut_iptype_home_int"; + field public static final String KEY_UT_IPTYPE_ROAMING_INT = "imsss.ut_iptype_roaming_int"; + field public static final String KEY_UT_REQUIRES_IMS_REGISTRATION_BOOL = "imsss.ut_requires_ims_registration_bool"; + field public static final String KEY_UT_SERVER_BASED_SERVICES_INT_ARRAY = "imsss.ut_server_based_services_int_array"; + field public static final String KEY_UT_SUPPORTED_WHEN_PS_DATA_OFF_BOOL = "imsss.ut_supported_when_ps_data_off_bool"; + field public static final String KEY_UT_TERMINAL_BASED_SERVICES_INT_ARRAY = "imsss.ut_terminal_based_services_int_array"; + field public static final String KEY_UT_TRANSPORT_TYPE_INT = "imsss.ut_transport_type_int"; + field public static final String KEY_XCAP_OVER_UT_SUPPORTED_RATS_INT_ARRAY = "imsss.xcap_over_ut_supported_rats_int_array"; + field public static final int SUPPLEMENTARY_SERVICE_CB_ACR = 20; // 0x14 + field public static final int SUPPLEMENTARY_SERVICE_CB_ALL = 12; // 0xc + field public static final int SUPPLEMENTARY_SERVICE_CB_BAIC = 18; // 0x12 + field public static final int SUPPLEMENTARY_SERVICE_CB_BAOC = 14; // 0xe + field public static final int SUPPLEMENTARY_SERVICE_CB_BIC_ROAM = 19; // 0x13 + field public static final int SUPPLEMENTARY_SERVICE_CB_BIL = 21; // 0x15 + field public static final int SUPPLEMENTARY_SERVICE_CB_BOIC = 15; // 0xf + field public static final int SUPPLEMENTARY_SERVICE_CB_BOIC_EXHC = 16; // 0x10 + field public static final int SUPPLEMENTARY_SERVICE_CB_IBS = 17; // 0x11 + field public static final int SUPPLEMENTARY_SERVICE_CB_OBS = 13; // 0xd + field public static final int SUPPLEMENTARY_SERVICE_CF_ALL = 1; // 0x1 + field public static final int SUPPLEMENTARY_SERVICE_CF_ALL_CONDITONAL_FORWARDING = 3; // 0x3 + field public static final int SUPPLEMENTARY_SERVICE_CF_CFB = 4; // 0x4 + field public static final int SUPPLEMENTARY_SERVICE_CF_CFNL = 7; // 0x7 + field public static final int SUPPLEMENTARY_SERVICE_CF_CFNRC = 6; // 0x6 + field public static final int SUPPLEMENTARY_SERVICE_CF_CFNRY = 5; // 0x5 + field public static final int SUPPLEMENTARY_SERVICE_CF_CFU = 2; // 0x2 + field public static final int SUPPLEMENTARY_SERVICE_CW = 0; // 0x0 + field public static final int SUPPLEMENTARY_SERVICE_IDENTIFICATION_OIP = 8; // 0x8 + field public static final int SUPPLEMENTARY_SERVICE_IDENTIFICATION_OIR = 10; // 0xa + field public static final int SUPPLEMENTARY_SERVICE_IDENTIFICATION_TIP = 9; // 0x9 + field public static final int SUPPLEMENTARY_SERVICE_IDENTIFICATION_TIR = 11; // 0xb + } + + public static final class CarrierConfigManager.ImsVoice { + field public static final int ALERTING_SRVCC_SUPPORT = 1; // 0x1 + field public static final int BANDWIDTH_EFFICIENT = 0; // 0x0 + field public static final int BASIC_SRVCC_SUPPORT = 0; // 0x0 + field public static final int CONFERENCE_SUBSCRIBE_TYPE_IN_DIALOG = 0; // 0x0 + field public static final int CONFERENCE_SUBSCRIBE_TYPE_OUT_OF_DIALOG = 1; // 0x1 + field public static final int EVS_ENCODED_BW_TYPE_FB = 3; // 0x3 + field public static final int EVS_ENCODED_BW_TYPE_NB = 0; // 0x0 + field public static final int EVS_ENCODED_BW_TYPE_NB_WB = 4; // 0x4 + field public static final int EVS_ENCODED_BW_TYPE_NB_WB_SWB = 5; // 0x5 + field public static final int EVS_ENCODED_BW_TYPE_NB_WB_SWB_FB = 6; // 0x6 + field public static final int EVS_ENCODED_BW_TYPE_SWB = 2; // 0x2 + field public static final int EVS_ENCODED_BW_TYPE_WB = 1; // 0x1 + field public static final int EVS_ENCODED_BW_TYPE_WB_SWB = 7; // 0x7 + field public static final int EVS_ENCODED_BW_TYPE_WB_SWB_FB = 8; // 0x8 + field public static final int EVS_OPERATIONAL_MODE_AMRWB_IO = 1; // 0x1 + field public static final int EVS_OPERATIONAL_MODE_PRIMARY = 0; // 0x0 + field public static final int EVS_PRIMARY_MODE_BITRATE_128_0_KBPS = 11; // 0xb + field public static final int EVS_PRIMARY_MODE_BITRATE_13_2_KBPS = 4; // 0x4 + field public static final int EVS_PRIMARY_MODE_BITRATE_16_4_KBPS = 5; // 0x5 + field public static final int EVS_PRIMARY_MODE_BITRATE_24_4_KBPS = 6; // 0x6 + field public static final int EVS_PRIMARY_MODE_BITRATE_32_0_KBPS = 7; // 0x7 + field public static final int EVS_PRIMARY_MODE_BITRATE_48_0_KBPS = 8; // 0x8 + field public static final int EVS_PRIMARY_MODE_BITRATE_5_9_KBPS = 0; // 0x0 + field public static final int EVS_PRIMARY_MODE_BITRATE_64_0_KBPS = 9; // 0x9 + field public static final int EVS_PRIMARY_MODE_BITRATE_7_2_KBPS = 1; // 0x1 + field public static final int EVS_PRIMARY_MODE_BITRATE_8_0_KBPS = 2; // 0x2 + field public static final int EVS_PRIMARY_MODE_BITRATE_96_0_KBPS = 10; // 0xa + field public static final int EVS_PRIMARY_MODE_BITRATE_9_6_KBPS = 3; // 0x3 + field public static final String KEY_AMRNB_PAYLOAD_DESCRIPTION_BUNDLE = "imsvoice.amrnb_payload_description_bundle"; + field public static final String KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY = "imsvoice.amrnb_payload_type_int_array"; + field public static final String KEY_AMRWB_PAYLOAD_DESCRIPTION_BUNDLE = "imsvoice.amrwb_payload_description_bundle"; + field public static final String KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY = "imsvoice.amrwb_payload_type_int_array"; + field public static final String KEY_AMR_CODEC_ATTRIBUTE_MODESET_INT_ARRAY = "imsvoice.amr_codec_attribute_modeset_int_array"; + field public static final String KEY_AMR_CODEC_ATTRIBUTE_PAYLOAD_FORMAT_INT = "imsvoice.amr_codec_attribute_payload_format_int"; + field public static final String KEY_AUDIO_AS_BANDWIDTH_KBPS_INT = "imsvoice.audio_as_bandwidth_kbps_int"; + field public static final String KEY_AUDIO_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = "imsvoice.audio_codec_capability_payload_types_bundle"; + field public static final String KEY_AUDIO_INACTIVITY_CALL_END_REASONS_INT_ARRAY = "imsvoice.audio_inactivity_call_end_reasons_int_array"; + field public static final String KEY_AUDIO_RR_BANDWIDTH_BPS_INT = "imsvoice.audio_rr_bandwidth_bps_int"; + field public static final String KEY_AUDIO_RS_BANDWIDTH_BPS_INT = "imsvoice.audio_rs_bandwidth_bps_int"; + field public static final String KEY_AUDIO_RTCP_INACTIVITY_TIMER_MILLIS_INT = "imsvoice.audio_rtcp_inactivity_timer_millis_int"; + field public static final String KEY_AUDIO_RTP_INACTIVITY_TIMER_MILLIS_INT = "imsvoice.audio_rtp_inactivity_timer_millis_int"; + field public static final String KEY_CARRIER_VOLTE_ROAMING_AVAILABLE_BOOL = "imsvoice.carrier_volte_roaming_available_bool"; + field public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_CAPABILITY_INT = "imsvoice.codec_attribute_mode_change_capability_int"; + field public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_NEIGHBOR_INT = "imsvoice.codec_attribute_mode_change_neighbor_int"; + field public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_PERIOD_INT = "imsvoice.codec_attribute_mode_change_period_int"; + field public static final String KEY_CONFERENCE_FACTORY_URI_STRING = "imsvoice.conference_factory_uri_string"; + field public static final String KEY_CONFERENCE_SUBSCRIBE_TYPE_INT = "imsvoice.conference_subscribe_type_int"; + field public static final String KEY_DEDICATED_BEARER_WAIT_TIMER_MILLIS_INT = "imsvoice.dedicated_bearer_wait_timer_millis_int"; + field public static final String KEY_DTMFNB_PAYLOAD_TYPE_INT_ARRAY = "imsvoice.dtmfnb_payload_type_int_array"; + field public static final String KEY_DTMFWB_PAYLOAD_TYPE_INT_ARRAY = "imsvoice.dtmfwb_payload_type_int_array"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_BANDWIDTH_INT = "imsvoice.evs_codec_attribute_bandwidth_int"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_BITRATE_INT_ARRAY = "imsvoice.evs_codec_attribute_bitrate_int_array"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_CHANNELS_INT = "imsvoice.evs_codec_attribute_channels_int"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_CH_AW_RECV_INT = "imsvoice.evs_codec_attribute_ch_aw_recv_int"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_CMR_INT = "imsvoice.codec_attribute_cmr_int"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_DTX_BOOL = "imsvoice.evs_codec_attribute_dtx_bool"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_DTX_RECV_BOOL = "imsvoice.evs_codec_attribute_dtx_recv_bool"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_HF_ONLY_INT = "imsvoice.evs_codec_attribute_hf_only_int"; + field public static final String KEY_EVS_CODEC_ATTRIBUTE_MODE_SWITCH_INT = "imsvoice.evs_codec_attribute_mode_switch_int"; + field public static final String KEY_EVS_PAYLOAD_DESCRIPTION_BUNDLE = "imsvoice.evs_payload_description_bundle"; + field public static final String KEY_EVS_PAYLOAD_TYPE_INT_ARRAY = "imsvoice.evs_payload_type_int_array"; + field public static final String KEY_INCLUDE_CALLER_ID_SERVICE_CODES_IN_SIP_INVITE_BOOL = "imsvoice.include_caller_id_service_codes_in_sip_invite_bool"; + field public static final String KEY_MINIMUM_SESSION_EXPIRES_TIMER_SEC_INT = "imsvoice.minimum_session_expires_timer_sec_int"; + field public static final String KEY_MO_CALL_REQUEST_TIMEOUT_MILLIS_INT = "imsvoice.mo_call_request_timeout_millis_int"; + field public static final String KEY_MULTIENDPOINT_SUPPORTED_BOOL = "imsvoice.multiendpoint_supported_bool"; + field public static final String KEY_OIP_SOURCE_FROM_HEADER_BOOL = "imsvoice.oip_source_from_header_bool"; + field public static final String KEY_PRACK_SUPPORTED_FOR_18X_BOOL = "imsvoice.prack_supported_for_18x_bool"; + field public static final String KEY_PREFIX = "imsvoice."; + field public static final String KEY_RINGBACK_TIMER_MILLIS_INT = "imsvoice.ringback_timer_millis_int"; + field public static final String KEY_RINGING_TIMER_MILLIS_INT = "imsvoice.ringing_timer_millis_int"; + field public static final String KEY_SESSION_EXPIRES_TIMER_SEC_INT = "imsvoice.session_expires_timer_sec_int"; + field public static final String KEY_SESSION_REFRESHER_TYPE_INT = "imsvoice.session_refresher_type_int"; + field public static final String KEY_SESSION_REFRESH_METHOD_INT = "imsvoice.session_refresh_method_int"; + field public static final String KEY_SESSION_TIMER_SUPPORTED_BOOL = "imsvoice.session_timer_supported_bool"; + field public static final String KEY_SRVCC_TYPE_INT_ARRAY = "imsvoice.srvcc_type_int_array"; + field public static final String KEY_VOICE_ON_DEFAULT_BEARER_SUPPORTED_BOOL = "imsvoice.voice_on_default_bearer_supported_bool"; + field public static final String KEY_VOICE_QOS_PRECONDITION_SUPPORTED_BOOL = "imsvoice.voice_qos_precondition_supported_bool"; + field public static final int MIDCALL_SRVCC_SUPPORT = 3; // 0x3 + field public static final int OCTET_ALIGNED = 1; // 0x1 + field public static final int PREALERTING_SRVCC_SUPPORT = 2; // 0x2 + field public static final int SESSION_REFRESHER_TYPE_UAC = 1; // 0x1 + field public static final int SESSION_REFRESHER_TYPE_UAS = 2; // 0x2 + field public static final int SESSION_REFRESHER_TYPE_UNKNOWN = 0; // 0x0 + field public static final int SESSION_REFRESH_METHOD_INVITE = 0; // 0x0 + field public static final int SESSION_REFRESH_METHOD_UPDATE_PREFERRED = 1; // 0x1 + } + + public static final class CarrierConfigManager.ImsVt { + field public static final String KEY_H264_PAYLOAD_DESCRIPTION_BUNDLE = "imsvt.h264_payload_description_bundle"; + field public static final String KEY_H264_PAYLOAD_TYPE_INT_ARRAY = "imsvt.h264_payload_type_int_array"; + field public static final String KEY_H264_VIDEO_CODEC_ATTRIBUTE_PROFILE_LEVEL_ID_STRING = "imsvt.h264_video_codec_attribute_profile_level_id_string"; + field public static final String KEY_PREFIX = "imsvt."; + field public static final String KEY_VIDEO_AS_BANDWIDTH_KBPS_INT = "imsvt.video_as_bandwidth_kbps_int"; + field public static final String KEY_VIDEO_CODEC_ATTRIBUTE_FRAME_RATE_INT = "imsvt.video_codec_attribute_frame_rate_int"; + field public static final String KEY_VIDEO_CODEC_ATTRIBUTE_PACKETIZATION_MODE_INT = "imsvt.video_codec_attribute_packetization_mode_int"; + field public static final String KEY_VIDEO_CODEC_ATTRIBUTE_RESOLUTION_INT_ARRAY = "imsvt.video_codec_attribute_resolution_int_array"; + field public static final String KEY_VIDEO_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = "imsvt.video_codec_capability_payload_types_bundle"; + field public static final String KEY_VIDEO_ON_DEFAULT_BEARER_SUPPORTED_BOOL = "imsvt.video_on_default_bearer_supported_bool"; + field public static final String KEY_VIDEO_QOS_PRECONDITION_SUPPORTED_BOOL = "imsvt.video_qos_precondition_supported_bool"; + field public static final String KEY_VIDEO_RR_BANDWIDTH_BPS_INT = "imsvt.video_rr_bandwidth_bps_int"; + field public static final String KEY_VIDEO_RS_BANDWIDTH_BPS_INT = "imsvt.video_rs_bandwidth_bps_int"; + field public static final String KEY_VIDEO_RTCP_INACTIVITY_TIMER_MILLIS_INT = "imsvt.video_rtcp_inactivity_timer_millis_int"; + field public static final String KEY_VIDEO_RTP_DSCP_INT = "imsvt.video_rtp_dscp_int"; + field public static final String KEY_VIDEO_RTP_INACTIVITY_TIMER_MILLIS_INT = "imsvt.video_rtp_inactivity_timer_millis_int"; + } + + public static final class CarrierConfigManager.ImsWfc { + field public static final String KEY_EMERGENCY_CALL_OVER_EMERGENCY_PDN_BOOL = "imswfc.emergency_call_over_emergency_pdn_bool"; + field public static final String KEY_PIDF_SHORT_CODE_STRING_ARRAY = "imswfc.pidf_short_code_string_array"; + field public static final String KEY_PREFIX = "imswfc."; + } + public static final class CarrierConfigManager.Iwlan { field public static final int AUTHENTICATION_METHOD_CERT = 1; // 0x1 field public static final int AUTHENTICATION_METHOD_EAP_ONLY = 0; // 0x0 diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index abec7ec2936c5..fba3748dde71e 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -37,6 +37,7 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.service.carrier.CarrierService; import android.telecom.TelecomManager; +import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.data.DataCallResponse; import android.telephony.gba.TlsParams; import android.telephony.gba.UaSecurityProtocolIdentifier; @@ -5294,6 +5295,2103 @@ public class CarrierConfigManager { } } + /** + * IMS Voice configs. This groups the configs required for IMS Voice - VoNR/VoLTE + * + *

Reference: IR.92 + */ + public static final class ImsVoice { + private ImsVoice() {} + + /** Prefix of all imsvoice.KEY_* constants. */ + public static final String KEY_PREFIX = "imsvoice."; + + /** + * Flag specifying whether VoLTE should be available when on + * roaming network. + * + *

If {@code false}: hard disabled. + * If {@code true}: then depends on availability, etc. + */ + public static final String KEY_CARRIER_VOLTE_ROAMING_AVAILABLE_BOOL = + KEY_PREFIX + "carrier_volte_roaming_available_bool"; + + /** + * Flag specifying whether to send vertical caller id service codes + * (*67 and *82) in the dialed string in the SIP:INVITE. + * + *

If {@code true}, vertical caller id service codes *67 and *82 + * will be sent in the dialed string in the SIP:INVITE. + * If {@code false}, *67 and *82 will be removed. + */ + public static final String KEY_INCLUDE_CALLER_ID_SERVICE_CODES_IN_SIP_INVITE_BOOL = + KEY_PREFIX + "include_caller_id_service_codes_in_sip_invite_bool"; + + /** + * Flag indicating whether Multi-end point setting is enabled or not. + */ + public static final String KEY_MULTIENDPOINT_SUPPORTED_BOOL = + KEY_PREFIX + "multiendpoint_supported_bool"; + + /** + * Flag indicating whether Supported header field with the option tag + * 'timer' is enabled or not. + * + *

If {@code true}, session timer support is available.{@code false} otherwise. + * + * Reference: RFC 4028 Section 3 + */ + public static final String KEY_SESSION_TIMER_SUPPORTED_BOOL = + KEY_PREFIX + "session_timer_supported_bool"; + + /** + * Session-expires header field expressed in seconds as per + * RFC 4028 Section 3. + * + *

This establishes the upper bound for the session refresh interval. + */ + public static final String KEY_SESSION_EXPIRES_TIMER_SEC_INT = + KEY_PREFIX + "session_expires_timer_sec_int"; + + /** + * Indicates the minimum value for the session interval in seconds. + * Represented as min-SE header field as per RFC 4028 Section 3. + * + *

This establishes the lower bound for the session refresh interval. + */ + public static final String KEY_MINIMUM_SESSION_EXPIRES_TIMER_SEC_INT = + KEY_PREFIX + "minimum_session_expires_timer_sec_int"; + + /** @hide */ + @IntDef({ + SESSION_REFRESHER_TYPE_UNKNOWN, + SESSION_REFRESHER_TYPE_UAC, + SESSION_REFRESHER_TYPE_UAS + }) + + public @interface SessionRefresherType {} + + /** + * Session Refresher entity is unknown. This means UE does not include the + * "refresher" parameter in the Session-Expires header field of + * the SIP INVITE request. + */ + public static final int SESSION_REFRESHER_TYPE_UNKNOWN = 0; + + /** + * Session Refresher entity is User Agent Client (UAC). + * + *

Type of "refresher" parameter in the Session-Expires header field + * of the SIP INVITE request is UAC. + */ + public static final int SESSION_REFRESHER_TYPE_UAC = 1; + + /** + * Session Refresher entity is User Agent Server (UAS). + * + *

Type of "refresher" parameter in the Session-Expires header field + * of the SIP INVITE request is UAS. + */ + public static final int SESSION_REFRESHER_TYPE_UAS = 2; + + /** + * Session Refresher entity as per RFC 4028 and IR.92 Section 2.2.8. + * + *

This determines, + * a) whether to include the "refresher" parameter + * b) Type of refresher" parameter + * in the Session-Expires header field of the SIP INVITE request. + * + *

Possible values are, + * {@link #SESSION_REFRESHER_TYPE_UNKNOWN}, + * {@link #SESSION_REFRESHER_TYPE_UAC}, + * {@link #SESSION_REFRESHER_TYPE_UAS} + */ + public static final String KEY_SESSION_REFRESHER_TYPE_INT = + KEY_PREFIX + "session_refresher_type_int"; + + /** + * Flag indicating whether PRACK must be enabled for all 18x messages. + * + *

If {@code false}, only 18x responses with SDP are sent reliably. + * If {@code true}, SIP 18x responses (other than SIP 183 response) + * are sent reliably. + */ + public static final String KEY_PRACK_SUPPORTED_FOR_18X_BOOL = + KEY_PREFIX + "prack_supported_for_18x_bool"; + + /** @hide */ + @IntDef({ + CONFERENCE_SUBSCRIBE_TYPE_IN_DIALOG, + CONFERENCE_SUBSCRIBE_TYPE_OUT_OF_DIALOG + }) + + public @interface ConferenceSubscribeType {} + + /** + * The SIP SUBSCRIBE to conference state events is sent in the + * SIP INVITE dialog between the UE and the conference server. + * + *

Reference: IR.92 Section 2.3.3. + */ + public static final int CONFERENCE_SUBSCRIBE_TYPE_IN_DIALOG = 0; + + /** + * The SIP SUBSCRIBE to conference state events is sent out of + * the SIP INVITE dialog between the UE and the conference server. + * + *

Reference: IR.92 Section 2.3.3. + */ + public static final int CONFERENCE_SUBSCRIBE_TYPE_OUT_OF_DIALOG = 1; + + /** + * This is used to specify whether the SIP SUBSCRIBE to conference state events, + * is sent in or out of the SIP INVITE dialog between the UE and the + * conference server. + * + *

Reference: IR.92 Section 2.3.3. + * + *

Possible values are, + * {@link #CONFERENCE_SUBSCRIBE_TYPE_IN_DIALOG}, + * {@link #CONFERENCE_SUBSCRIBE_TYPE_OUT_OF_DIALOG} + * + * An empty array indicates SUBSCRIBE to conference event package + * is not required. + */ + public static final String KEY_CONFERENCE_SUBSCRIBE_TYPE_INT = + KEY_PREFIX + "conference_subscribe_type_int"; + + /** + * Flag specifying whether QoS preconditions are supported during call setup. + * + *

If {@code true}: QoS Preconditions are supported during call setup and + * 'precondition' tag is included in the SIP INVITE header and precondition + * parameters are sent in SDP as required. + *

If {@code false}: QoS Preconditions are not supported during call setup. + * + *

Reference: 3GPP TS 24.229 + */ + public static final String KEY_VOICE_QOS_PRECONDITION_SUPPORTED_BOOL = + KEY_PREFIX + "voice_qos_precondition_supported_bool"; + + /** + * Flag specifying whether voice is allowed on default bearer. + * + *

If {@code true}: voice packets can be sent on default bearer. {@code false} otherwise. + */ + public static final String KEY_VOICE_ON_DEFAULT_BEARER_SUPPORTED_BOOL = + KEY_PREFIX + "voice_on_default_bearer_supported_bool"; + + /** + * Specifies the dedicated bearer wait time during call establishment. + * + *

If dedicated bearer is not established within this time and if + * {@link #KEY_VOICE_ON_DEFAULT_BEARER_SUPPORTED_BOOL} is false, then call setup would fail. + *

If dedicated bearer is not established within this time and if + * {@link #KEY_VOICE_ON_DEFAULT_BEARER_SUPPORTED_BOOL} is true, then the media is allowed + * on default bearer. + */ + public static final String KEY_DEDICATED_BEARER_WAIT_TIMER_MILLIS_INT = + KEY_PREFIX + "dedicated_bearer_wait_timer_millis_int"; + + /** @hide */ + @IntDef({ + BASIC_SRVCC_SUPPORT, + ALERTING_SRVCC_SUPPORT, + PREALERTING_SRVCC_SUPPORT, + MIDCALL_SRVCC_SUPPORT + }) + + public @interface SrvccType {} + + /** + * Indicates support for basic SRVCC, typically 1 active call + * as detailed in IR.92 Section A.3. + */ + public static final int BASIC_SRVCC_SUPPORT = 0; + + /** + * SRVCC access transfer for calls in alerting phase as per 3GPP 24.237 + * and IR.64 Section 4.4. + * Media feature tag used: g.3gpp.srvcc-alerting. + */ + public static final int ALERTING_SRVCC_SUPPORT = 1; + + /** + * SRVCC access transfer for calls in pre-alerting phase as per 3GPP 24.237. + * Media feature tag used: g.3gpp.ps2cs-srvcc-orig-pre-alerting. + */ + public static final int PREALERTING_SRVCC_SUPPORT = 2; + + /** + * SRVCC access transfer for calls in mid-call phase as per 3GPP 24.237. + * and IR.64 Section 4.4. + *

This means UE supports the MSC server assisted mid-call feature. + * Media feature tag used: g.3gpp.mid-call. + */ + public static final int MIDCALL_SRVCC_SUPPORT = 3; + + /** + * List of different SRVCC types supported as defined in 3GPP 24.237. + * + *

Possible values are, + * {@link #BASIC_SRVCC_SUPPORT}, + * {@link #ALERTING_SRVCC_SUPPORT}, + * {@link #PREALERTING_SRVCC_SUPPORT}, + * {@link #MIDCALL_SRVCC_SUPPORT} + * + *

Reference: IR.64, 3GPP 24.237, 3GPP 23.216 + */ + public static final String KEY_SRVCC_TYPE_INT_ARRAY = + KEY_PREFIX + "srvcc_type_int_array"; + + /** + * Specifies the ringing timer for Mobile terminated calls. + * + *

Ringing timer starts when the device sends SIP 180 Ringing in + * response to a received SIP INVITE. If Ringing timer expires, + * the device sends SIP 486 response. + */ + public static final String KEY_RINGING_TIMER_MILLIS_INT = + KEY_PREFIX + "ringing_timer_millis_int"; + + /** + * Specifies the ringback timer for Mobile originated calls. + * + *

Ringback timer starts when the device receives SIP 180 Ringing + * in response to its SIP INVITE. If Ringback timer expires, + * the device sends SIP CANCEL. + */ + public static final String KEY_RINGBACK_TIMER_MILLIS_INT = + KEY_PREFIX + "ringback_timer_millis_int"; + + /** + * Specifies the timeout value for RTP inactivity for audio media. + *

On timer expiry, call will end. + * See {@link #KEY_AUDIO_INACTIVITY_CALL_END_REASONS_INT_ARRAY} for more + * details. + *

Value of 0 means this timer is not enabled. + */ + public static final String KEY_AUDIO_RTP_INACTIVITY_TIMER_MILLIS_INT = + KEY_PREFIX + "audio_rtp_inactivity_timer_millis_int"; + + /** + * Specifies the timeout value for RTCP inactivity for audio media. + *

On timer expiry, call will end. + * See {@link #KEY_AUDIO_INACTIVITY_CALL_END_REASONS_INT_ARRAY} for more + * details. + *

Value of 0 means this timer is not enabled. + */ + public static final String KEY_AUDIO_RTCP_INACTIVITY_TIMER_MILLIS_INT = + KEY_PREFIX + "audio_rtcp_inactivity_timer_millis_int"; + + /** + * Used to specify the conference factory URI. + * + *

If this is empty, then conference URI is generated from MCC/MNC as + * specified in clause 13.10 of 3GPP 23.003. + */ + public static final String KEY_CONFERENCE_FACTORY_URI_STRING = + KEY_PREFIX + "conference_factory_uri_string"; + + /** @hide */ + @IntDef({ + SESSION_REFRESH_METHOD_INVITE, + SESSION_REFRESH_METHOD_UPDATE_PREFERRED + }) + + public @interface SessionRefreshMethod {} + + /** + * SIP INVITE is used for Session Refresh + */ + public static final int SESSION_REFRESH_METHOD_INVITE = 0; + + /** + * Both SIP INVITE and UPDATE are used for session refresh. + * + *

SIP UPDATE will be used if UPDATE is in 'Allow' header. + * If UPDATE is not in 'Allow' header, then INVITE will be used. + */ + public static final int SESSION_REFRESH_METHOD_UPDATE_PREFERRED = 1; + + /** + * This is used to specify the method used for session refresh. + * + *

Possible values are, + * {@link #SESSION_REFRESH_METHOD_INVITE}, + * {@link #SESSION_REFRESH_METHOD_UPDATE_PREFERRED} + */ + public static final String KEY_SESSION_REFRESH_METHOD_INT = + KEY_PREFIX + "session_refresh_method_int"; + + /** + * Flag specifying whether the 'From' header field is used for determination of + * the originating party identity in Originating Identification Presentation(OIP) + * service. + * + *

If {@code true}: Indicates that the 'From' header field is used for + * determination of the originating party identity in OIP. + * {@code false} otherwise. + */ + public static final String KEY_OIP_SOURCE_FROM_HEADER_BOOL = + KEY_PREFIX + "oip_source_from_header_bool"; + + /** + * Specifies the timer value for INVITE to the first 1xx response + * (including 100 trying). If no response is received at timer expiry, + * call is redialed over CS. + * + *

Reference: 24.173 Table L.1 + */ + public static final String KEY_MO_CALL_REQUEST_TIMEOUT_MILLIS_INT = + KEY_PREFIX + "mo_call_request_timeout_millis_int"; + + /** + * List of various reasons of media inactivity for which + * voice/emergency call will end. + * + *

Possible values are, + * {@link Ims#RTCP_INACTIVITY_ON_HOLD}, + * {@link Ims#RTCP_INACTIVITY_ON_CONNECTED}, + * {@link Ims#RTP_INACTIVITY_ON_CONNECTED} + * {@link Ims#E911_RTCP_INACTIVITY_ON_CONNECTED}, + * {@link Ims#E911_RTP_INACTIVITY_ON_CONNECTED} + */ + public static final String KEY_AUDIO_INACTIVITY_CALL_END_REASONS_INT_ARRAY = + KEY_PREFIX + "audio_inactivity_call_end_reasons_int_array"; + + /** + * Specifies the AS (Application Specific) SDP modifier for audio media. + * + *

This value is expressed in kilobits per second. + * Reference: RFC 3556 Section 2. + */ + public static final String KEY_AUDIO_AS_BANDWIDTH_KBPS_INT = + KEY_PREFIX + "audio_as_bandwidth_kbps_int"; + + /** + * Specifies the RS SDP modifier for audio media. This indicates the RTCP + * bandwidth allocated to active data senders for audio media. + * + *

This value is expressed in bits per second. + * Reference: RFC 3556 Section 2. + */ + public static final String KEY_AUDIO_RS_BANDWIDTH_BPS_INT = + KEY_PREFIX + "audio_rs_bandwidth_bps_int"; + + /** + * Specifies the RR SDP modifier for audio media. This indicates the RTCP + * bandwidth allocated to receivers for audio media. + * + *

This value is expressed in bits per second. + * Reference: RFC 3556 Section 2. + */ + public static final String KEY_AUDIO_RR_BANDWIDTH_BPS_INT = + KEY_PREFIX + "audio_rr_bandwidth_bps_int"; + + /** + * Specifies the Audio Codec capability. This contains a list of payload types + * representing different audio codec instances. + * + *

The priority of the codecs is EVS, AMRWB, AMRNB, DTMF WB, DTMF NB + * from highest to lowest. In each individual codec, the priority is determined + * by the order of the payload types from highest to lowest. + * + *

Possible keys in this bundle are, + *

+ *

To specify payload descriptions for each of the audio payload types, see + *

+ */ + public static final String KEY_AUDIO_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = + KEY_PREFIX + "audio_codec_capability_payload_types_bundle"; + + /** + * A list of integers representing the different payload types + * in EVS codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_EVS_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "evs_payload_type_int_array"; + + /** + * A list of integers representing the different payload types + * in AMR-WB codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "amrwb_payload_type_int_array"; + + /** + * A list of integers representing the different payload types + * in AMR-NB codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "amrnb_payload_type_int_array"; + + /** + * A list of integers representing the different payload types + * in DTMF WB codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_DTMFWB_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "dtmfwb_payload_type_int_array"; + + /** + * A list of integers representing the different payload types + * in DTMF NB codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_DTMFNB_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "dtmfnb_payload_type_int_array"; + + /** @hide */ + @IntDef({ + BANDWIDTH_EFFICIENT, + OCTET_ALIGNED + }) + + public @interface AmrPayloadFormat {} + + /** AMR NB/WB Payload format is bandwidth-efficient. */ + public static final int BANDWIDTH_EFFICIENT = 0; + + /** AMR NB/WB Payload format is octet-aligned. */ + public static final int OCTET_ALIGNED = 1; + + /** + * Specifies the payload format of the AMR-NB/AMR-WB codec. + * + *

Possible values are, + * {@link #BANDWIDTH_EFFICIENT}, + * {@link #OCTET_ALIGNED} + + *

If value is not specified, payload format is + * {@link #BANDWIDTH_EFFICIENT}. + * + *

Reference: RFC 4867 Section 8.1. + */ + public static final String KEY_AMR_CODEC_ATTRIBUTE_PAYLOAD_FORMAT_INT = + KEY_PREFIX + "amr_codec_attribute_payload_format_int"; + + /** + * Restricts the active mode set to a subset of all modes in the codec. + * + *

This attribute is optional. If value is set, then session mode + * set is restricted to the modes specified in this list. If this value + * is not specified, then all available modes in the codec are allowed. + * This attribute is applicable for AMR-WB, AMR-NB, + * and EVS codec (operating in AMR-WB IO Mode). + * + *

Possible values are subset of, + * [0,1,2,3,4,5,6,7,8] - AMRWB with the modes representing nine speech codec modes + * with bit rates of 6.6, 8.85, 12.65, 14.25, 15.85, 18.25, 19.85, 23.05, 23.85 kbps. + * [0,1,2,3,4,5,6,7] - AMRNB with the modes representing eight speech codec modes + * with bit rates of 4.75, 5.15, 5.90, 6.70, 7.40, 7.95, 10.2, 12.2 kbps. + * + *

If value is not specified, then it means device supports all + * modes in the codec but not included in SDP. + * + *

Reference: RFC 4867 Section 8.1, 3GPP 26.445 A.3.1 + */ + public static final String KEY_AMR_CODEC_ATTRIBUTE_MODESET_INT_ARRAY = + KEY_PREFIX + "amr_codec_attribute_modeset_int_array"; + + /** + * Specifies the codec attributes of different payload types in + * the AMR NarrowBand (AMR-NB) codec. + * + *

The keys in this bundle are payload types specified + * in {@link #KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY}. + * + *

Codec attributes allowed as part of AMR-NB codec bundle are, + *

+ * + *

If this bundle is not configured and AMRNB payload type is added + * in {@link #KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY}, then default + * values as in the individual codec attribute to be used + * for that payload type. + */ + public static final String KEY_AMRNB_PAYLOAD_DESCRIPTION_BUNDLE = + KEY_PREFIX + "amrnb_payload_description_bundle"; + + /** + * Specifies the codec attributes of different payload types in + * the AMR WideBand (AMR-WB) codec. + * + *

The keys in this bundle are payload types specified + * in {@link #KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY}. + * + *

Codec attributes allowed as part of AMR-NB codec bundle are, + *

+ * + *

If this bundle is not configured and AMRWB payload type is added + * in {@link #KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY}, then default + * values as in the individual codec attribute to be used + * for that payload type. + */ + public static final String KEY_AMRWB_PAYLOAD_DESCRIPTION_BUNDLE = + KEY_PREFIX + "amrwb_payload_description_bundle"; + + /** @hide */ + @IntDef({ + EVS_OPERATIONAL_MODE_PRIMARY, + EVS_OPERATIONAL_MODE_AMRWB_IO + }) + + public @interface EvsOperationalMode {} + + /** Indicates the EVS primary mode. 3GPP 26.445 Section 3.1 */ + public static final int EVS_OPERATIONAL_MODE_PRIMARY = 0; + + /** Indicates the EVS AMR-WB IO mode. 3GPP 26.445 Section 3.1 */ + public static final int EVS_OPERATIONAL_MODE_AMRWB_IO = 1; + + /** + * Specifies if the EVS mode used is EVS primary mode + * or EVS AMR-WB IO mode. + * + *

Possible values are, + * {@link #EVS_OPERATIONAL_MODE_PRIMARY}, + * {@link #EVS_OPERATIONAL_MODE_AMRWB_IO} + * + *

If this is not present, then {@link EVS_OPERATIONAL_MODE_PRIMARY} is used. + *

Reference: 3GPP 26.445 Section 3.1. + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_MODE_SWITCH_INT = + KEY_PREFIX + "evs_codec_attribute_mode_switch_int"; + + /** @hide */ + @IntDef({ + EVS_ENCODED_BW_TYPE_NB, + EVS_ENCODED_BW_TYPE_WB, + EVS_ENCODED_BW_TYPE_SWB, + EVS_ENCODED_BW_TYPE_FB, + EVS_ENCODED_BW_TYPE_NB_WB, + EVS_ENCODED_BW_TYPE_NB_WB_SWB, + EVS_ENCODED_BW_TYPE_NB_WB_SWB_FB, + EVS_ENCODED_BW_TYPE_WB_SWB, + EVS_ENCODED_BW_TYPE_WB_SWB_FB + }) + + public @interface EvsEncodedBwType {} + + /** + * EVS encoded Bandwidth is Narrow Band (NB). + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_NB = 0; + + /** + * EVS encoded Bandwidth is Wide Band (WB). + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_WB = 1; + + /** + * EVS encoded Bandwidth is Super WideBand (SWB). + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_SWB = 2; + + /** + * EVS encoded Bandwidth is Full Band (FB). + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_FB = 3; + + /** + * EVS encoded Bandwidth is in the range NB,WB. + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_NB_WB = 4; + + /** + * EVS encoded Bandwidth is in the range NB,WB,SWB. + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_NB_WB_SWB = 5; + + /** + * EVS encoded Bandwidth is in the range NB,WB,SWB,FB. + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_NB_WB_SWB_FB = 6; + + /** + * EVS encoded Bandwidth is in the range WB,SWB. + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_WB_SWB = 7; + + /** + * EVS encoded Bandwidth is in the range WB,SWB,FB. + * Reference: 3GPP 26.441 Table 1. + */ + public static final int EVS_ENCODED_BW_TYPE_WB_SWB_FB = 8; + + /** + * Specifies the EVS codec encoding bandwidth options. + * + * Possible values are, + * {@link #EVS_ENCODED_BW_TYPE_NB}, + * {@link #EVS_ENCODED_BW_TYPE_WB}, + * {@link #EVS_ENCODED_BW_TYPE_SWB}, + * {@link #EVS_ENCODED_BW_TYPE_FB}, + * {@link #EVS_ENCODED_BW_TYPE_NB_WB}, + * {@link #EVS_ENCODED_BW_TYPE_NB_WB_SWB}, + * {@link #EVS_ENCODED_BW_TYPE_NB_WB_SWB_FB}, + * {@link #EVS_ENCODED_BW_TYPE_WB_SWB}, + * {@link #EVS_ENCODED_BW_TYPE_WB_SWB_FB} + * + * If this key is not specified, then the behavior is same as + * value {@link #EVS_ENCODED_BW_TYPE_NB_WB_SWB} + * + *

Reference: 3GPP 26.441 Table 1. + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_BANDWIDTH_INT = + KEY_PREFIX + "evs_codec_attribute_bandwidth_int"; + + /** @hide */ + @IntDef({ + EVS_PRIMARY_MODE_BITRATE_5_9_KBPS, + EVS_PRIMARY_MODE_BITRATE_7_2_KBPS, + EVS_PRIMARY_MODE_BITRATE_8_0_KBPS, + EVS_PRIMARY_MODE_BITRATE_9_6_KBPS, + EVS_PRIMARY_MODE_BITRATE_13_2_KBPS, + EVS_PRIMARY_MODE_BITRATE_16_4_KBPS, + EVS_PRIMARY_MODE_BITRATE_24_4_KBPS, + EVS_PRIMARY_MODE_BITRATE_32_0_KBPS, + EVS_PRIMARY_MODE_BITRATE_48_0_KBPS, + EVS_PRIMARY_MODE_BITRATE_64_0_KBPS, + EVS_PRIMARY_MODE_BITRATE_96_0_KBPS, + EVS_PRIMARY_MODE_BITRATE_128_0_KBPS + }) + + public @interface EvsPrimaryModeBitRate {} + + /** EVS primary mode with bitrate 5.9 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_5_9_KBPS = 0; + + /** EVS primary mode with bitrate 7.2 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_7_2_KBPS = 1; + + /** EVS primary mode with bitrate 8.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_8_0_KBPS = 2; + + /** EVS primary mode with bitrate 9.6 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_9_6_KBPS = 3; + + /** EVS primary mode with bitrate 13.2 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_13_2_KBPS = 4; + + /** EVS primary mode with bitrate 16.4 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_16_4_KBPS = 5; + + /** EVS primary mode with bitrate 24.4 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_24_4_KBPS = 6; + + /** EVS primary mode with bitrate 32.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_32_0_KBPS = 7; + + /** EVS primary mode with bitrate 48.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_48_0_KBPS = 8; + + /** EVS primary mode with bitrate 64.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_64_0_KBPS = 9; + + /** EVS primary mode with bitrate 96.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_96_0_KBPS = 10; + + /** EVS primary mode with bitrate 128.0 kbps */ + public static final int EVS_PRIMARY_MODE_BITRATE_128_0_KBPS = 11; + + /** + * Specifies the range of source codec bit-rate for EVS Primary mode + * in the session. This is expressed in kilobits per second and + * applicable for both the send and the receive directions. + * + *

The range is specified as integer aray of size 2, + * represented as [low, high], where low <= high + * + *

Possible values for low and high are, + * {@link #EVS_PRIMARY_MODE_BITRATE_5_9_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_7_2_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_8_0_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_9_6_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_13_2_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_16_4_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_24_4_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_32_0_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_48_0_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_64_0_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_96_0_KBPS}, + * {@link #EVS_PRIMARY_MODE_BITRATE_128_0_KBPS} + * + * If this key is not specified, then the behavior is same as + * value {@link #EVS_PRIMARY_MODE_BITRATE_24_4_KBPS} + * + *

Reference: 3GPP 26.445 Section A.3.1 + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_BITRATE_INT_ARRAY = + KEY_PREFIX + "evs_codec_attribute_bitrate_int_array"; + + /** + * Specifies the Channel aware mode (ch-aw-recv) for the receive direction. + * This is applicable for EVS codec. + * + *

Permissible values are -1, 0, 2, 3, 5, and 7. + * If this key is not specified, then the behavior is same as value 0 + * (channel aware mode disabled). + *

If this key is configured, then device is expected to send + * this parameter in the SDP offer. + * + *

Reference: 3GPP TS 26.445 section 4.4.5, 3GPP 26.445 Section A.3.1 + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_CH_AW_RECV_INT = + KEY_PREFIX + "evs_codec_attribute_ch_aw_recv_int"; + + /** + * Specifies whether to limit the session to header-full format. + * This applies to both directions in the session. This attribute + * is applicable for EVS codec. + * + *

Permissible values are 0, 1 + * If hf-only is 1, only Header-Full format is used and hf-only is + * included in the SDP. + *

If hf-only is 0, both Compact and Header-Full formats are used + * and hf-only is included in the SDP. + *

If this key is not present, then both Compact + * and Header-Full formats are used and hf-only is not included in + * the SDP. + *

If this key is configured, then device is expected to send + * this parameter in the SDP offer if operator required it. + * + *

Reference: 3GPP 26.445 Section A.3.1. + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_HF_ONLY_INT = + KEY_PREFIX + "evs_codec_attribute_hf_only_int"; + + /** + * Specifies whether DTX (Discontinuous transmission) is enabled + * or not. This applies to both directions in the session. + * This attribute is applicable for EVS codec and can be used + * in both EVS Primary mode and EVS AMR-WB IO mode. + * + *

If {@code true}: Indicates DTX is enabled. + * If {@code false}: Indicates DTX is disabled. + * + *

If this is not present, then default value of {@code true} + * will apply. + *

Reference: 3GPP TS 26.445 Section A.3.1. + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_DTX_BOOL = + KEY_PREFIX + "evs_codec_attribute_dtx_bool"; + + /** + * This is used if further restriction is required on DTX in the + * receive direction. This attribute is applicable for EVS codec + * and can be used in both EVS Primary mode and EVS AMR-WB IO mode. + * + *

If this value is true or not present, then DTX setting is + * dependent on {@link #KEY_EVS_CODEC_ATTRIBUTE_DTX_BOOL}. + * + *

If this is not present, then default value of {@code true} + * will apply. + * + *

Reference: 3GPP TS 26.445 Section A.3.1. + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_DTX_RECV_BOOL = + KEY_PREFIX + "evs_codec_attribute_dtx_recv_bool"; + + /** + * Specifies the number of audio channels. + * If this is not present, then default value of 1 will apply. + * + *

Reference: RFC 3551 + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_CHANNELS_INT = + KEY_PREFIX + "evs_codec_attribute_channels_int"; + + /** + * Indicates whether the Codec Mode Request (CMR) is supported + * for the session. + * This attribute is applicable for EVS codec in Primary Mode only. + * + *

Possible values are -1, 0, 1. If this key is not present, + * then behavior as per value 0 is applicable. + * + *

Reference: 3GPP 26.445 Section A.3.1, 3GPP 26.114 Table 6.2a + */ + public static final String KEY_EVS_CODEC_ATTRIBUTE_CMR_INT = + KEY_PREFIX + "codec_attribute_cmr_int"; + + /** + * Specifies the number of frame-blocks. This indicates the frame-block period + * at which codec mode changes are allowed for the sender. This attribute is + * applicable for EVS codec in AMR-WB IO mode and AMR-WB. + * + *

Possible values are 1, 2. + * If the key is not present, behavior as per value 1 is applicable and this + * parameter is not included in SDP. + * + *

Reference: RFC 4867 Section 8.1. + */ + public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_PERIOD_INT = + KEY_PREFIX + "codec_attribute_mode_change_period_int"; + + /** + * Specifies if the client is capable to transmit with a restricted mode + * change period. This attribute is applicable for EVS codec in + * AMR-WB IO mode and AMR-WB. + * + *

Possible values are 1, 2. If this key is not present, + * then behavior as per value 1 is applicable and this + * parameter is not included in SDP. + * + *

Reference: RFC 4867 Section 8.1. + */ + public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_CAPABILITY_INT = + KEY_PREFIX + "codec_attribute_mode_change_capability_int"; + + /** + * Specifies the allowed mode changes for the sender in the active mode set. + * This attribute is applicable for EVS codec in AMR-WB IO mode + * and AMR-WB. + * + *

Possible values are 0, 1. If value is 1, then the sender should only + * perform mode changes to the neighboring modes in the active codec mode set. + * If value is 0, then mode changes between any two modes + * in the active codec mode set is allowed. + * If the key is not present, behavior as per value 0 is applicable and this + * parameter is not included in SDP. + * + *

Reference: RFC 4867 Section 8.1. + */ + public static final String KEY_CODEC_ATTRIBUTE_MODE_CHANGE_NEIGHBOR_INT = + KEY_PREFIX + "codec_attribute_mode_change_neighbor_int"; + + /** + * Specifies the codec attributes of different payload types in + * the EVS codec. + * + *

The keys in this bundle are payload types specified + * in {@link #KEY_EVS_PAYLOAD_TYPE_INT_ARRAY}. + * + *

Codec attributes allowed as part of EVS codec are, + *

+ */ + public static final String KEY_EVS_PAYLOAD_DESCRIPTION_BUNDLE = + KEY_PREFIX + "evs_payload_description_bundle"; + + private static PersistableBundle getDefaults() { + PersistableBundle defaults = new PersistableBundle(); + defaults.putBoolean(KEY_CARRIER_VOLTE_ROAMING_AVAILABLE_BOOL, true); + defaults.putBoolean(KEY_INCLUDE_CALLER_ID_SERVICE_CODES_IN_SIP_INVITE_BOOL, false); + defaults.putBoolean(KEY_MULTIENDPOINT_SUPPORTED_BOOL, false); + defaults.putBoolean(KEY_SESSION_TIMER_SUPPORTED_BOOL, true); + defaults.putBoolean(KEY_OIP_SOURCE_FROM_HEADER_BOOL, false); + defaults.putBoolean(KEY_PRACK_SUPPORTED_FOR_18X_BOOL, true); + defaults.putBoolean(KEY_VOICE_QOS_PRECONDITION_SUPPORTED_BOOL, true); + defaults.putBoolean(KEY_VOICE_ON_DEFAULT_BEARER_SUPPORTED_BOOL, false); + + defaults.putInt(KEY_SESSION_REFRESHER_TYPE_INT, SESSION_REFRESHER_TYPE_UNKNOWN); + defaults.putInt(KEY_SESSION_REFRESH_METHOD_INT, + SESSION_REFRESH_METHOD_UPDATE_PREFERRED); + defaults.putInt(KEY_CONFERENCE_SUBSCRIBE_TYPE_INT, + CONFERENCE_SUBSCRIBE_TYPE_OUT_OF_DIALOG); + defaults.putInt(KEY_AUDIO_RTP_INACTIVITY_TIMER_MILLIS_INT, 20000); + defaults.putInt(KEY_AUDIO_RTCP_INACTIVITY_TIMER_MILLIS_INT, 20000); + defaults.putInt(KEY_DEDICATED_BEARER_WAIT_TIMER_MILLIS_INT, 8000); + defaults.putInt(KEY_RINGING_TIMER_MILLIS_INT, 90000); + defaults.putInt(KEY_RINGBACK_TIMER_MILLIS_INT, 90000); + defaults.putInt(KEY_MO_CALL_REQUEST_TIMEOUT_MILLIS_INT, 5000); + defaults.putInt(KEY_SESSION_EXPIRES_TIMER_SEC_INT, 1800); + defaults.putInt(KEY_MINIMUM_SESSION_EXPIRES_TIMER_SEC_INT, 90); + defaults.putInt(KEY_AUDIO_AS_BANDWIDTH_KBPS_INT, 41); + defaults.putInt(KEY_AUDIO_RS_BANDWIDTH_BPS_INT, 600); + defaults.putInt(KEY_AUDIO_RR_BANDWIDTH_BPS_INT, 2000); + + defaults.putIntArray( + KEY_AUDIO_INACTIVITY_CALL_END_REASONS_INT_ARRAY, + new int[] { + Ims.RTCP_INACTIVITY_ON_CONNECTED, + Ims.RTP_INACTIVITY_ON_CONNECTED + }); + + defaults.putIntArray( + KEY_SRVCC_TYPE_INT_ARRAY, + new int[] { + BASIC_SRVCC_SUPPORT, + ALERTING_SRVCC_SUPPORT, + PREALERTING_SRVCC_SUPPORT, + MIDCALL_SRVCC_SUPPORT + }); + + defaults.putString(KEY_CONFERENCE_FACTORY_URI_STRING, ""); + + PersistableBundle audio_codec_capability_payload_types = new PersistableBundle(); + + audio_codec_capability_payload_types.putIntArray( + KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY, + new int[] { 97, 98 }); + + audio_codec_capability_payload_types.putIntArray( + KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY, + new int[] { 99, 100 }); + + audio_codec_capability_payload_types.putIntArray( + KEY_DTMFWB_PAYLOAD_TYPE_INT_ARRAY, + new int[] { 101 }); + + audio_codec_capability_payload_types.putIntArray( + KEY_DTMFNB_PAYLOAD_TYPE_INT_ARRAY, + new int[] { 102 }); + + defaults.putPersistableBundle( + KEY_AUDIO_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE, + audio_codec_capability_payload_types); + + /* Setting defaults for AMRWB */ + PersistableBundle all_amrwb_payload_bundles = new PersistableBundle(); + PersistableBundle amrwb_bundle_instance1 = new PersistableBundle(); + + all_amrwb_payload_bundles.putPersistableBundle( + "97", /* Same value of payload type as in KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY */ + amrwb_bundle_instance1); + + PersistableBundle amrwb_bundle_instance2 = new PersistableBundle(); + + amrwb_bundle_instance2.putInt(KEY_AMR_CODEC_ATTRIBUTE_PAYLOAD_FORMAT_INT, + OCTET_ALIGNED); + + all_amrwb_payload_bundles.putPersistableBundle( + "98", /* Same value of payload type as in KEY_AMRWB_PAYLOAD_TYPE_INT_ARRAY */ + amrwb_bundle_instance2); + + defaults.putPersistableBundle( + KEY_AMRWB_PAYLOAD_DESCRIPTION_BUNDLE, + all_amrwb_payload_bundles); + + /* Setting defaults for AMRNB */ + PersistableBundle all_amrnb_payload_bundles = new PersistableBundle(); + PersistableBundle amrnb_bundle_instance1 = new PersistableBundle(); + + all_amrnb_payload_bundles.putPersistableBundle( + "99", /* Same value of payload type as in KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY */ + amrnb_bundle_instance1); + + PersistableBundle amrnb_bundle_instance2 = new PersistableBundle(); + + amrnb_bundle_instance2.putInt(KEY_AMR_CODEC_ATTRIBUTE_PAYLOAD_FORMAT_INT, + OCTET_ALIGNED); + + all_amrnb_payload_bundles.putPersistableBundle( + "100", /* Same value of payload type as in KEY_AMRNB_PAYLOAD_TYPE_INT_ARRAY */ + amrnb_bundle_instance2); + + defaults.putPersistableBundle( + KEY_AMRNB_PAYLOAD_DESCRIPTION_BUNDLE, + all_amrnb_payload_bundles); + + return defaults; + } + } + + /** + * IMS SMS configs. This groups the configs specific for SMS over IMS + */ + public static final class ImsSms { + private ImsSms() {} + + /** Prefix of all imssms.KEY_* constants. */ + public static final String KEY_PREFIX = "imssms."; + + /** + * Flag specifying if SMS over IMS support is available or not. + * + *

If {@code true}: SMS over IMS support available. + * {@code false}: otherwise. + */ + public static final String KEY_SMS_OVER_IMS_SUPPORTED_BOOL = + KEY_PREFIX + "sms_over_ims_supported_bool"; + + /** + * Flag specifying whether to allow SMS CSFB in case of + * SMS over PS failure. + * + *

If {@code true}: allow SMS CSFB in case of SMS over PS failure. + * {@code false} otherwise. + */ + public static final String KEY_SMS_CSFB_RETRY_ON_FAILURE_BOOL = + KEY_PREFIX + "sms_csfb_retry_on_failure_bool"; + + /** @hide */ + @IntDef({ + SMS_FORMAT_3GPP, + SMS_FORMAT_3GPP2 + }) + + public @interface SmsFormat {} + + /** SMS format is 3GPP. */ + public static final int SMS_FORMAT_3GPP = 0; + + /** SMS format is 3GPP2. */ + public static final int SMS_FORMAT_3GPP2 = 1; + + /** + * Specifies the SMS over IMS format. + * + *

Possible values are, + * {@link #SMS_FORMAT_3GPP}, + * {@link #SMS_FORMAT_3GPP2} + */ + public static final String KEY_SMS_OVER_IMS_FORMAT_INT = + KEY_PREFIX + "sms_over_ims_format_int"; + + /** + * List of different RAT technologies on which SMS over IMS + * is supported. + * + *

Possible values are, + * {@link AccessNetworkConstants.AccessNetworkType#NGRAN} + * {@link AccessNetworkConstants.AccessNetworkType#EUTRAN} + * {@link AccessNetworkConstants.AccessNetworkType#IWLAN} + * {@link AccessNetworkConstants.AccessNetworkType#UTRAN} + * {@link AccessNetworkConstants.AccessNetworkType#GERAN} + */ + public static final String KEY_SMS_OVER_IMS_SUPPORTED_RATS_INT_ARRAY = + KEY_PREFIX + "sms_over_ims_supported_rats_int_array"; + + private static PersistableBundle getDefaults() { + PersistableBundle defaults = new PersistableBundle(); + defaults.putBoolean(KEY_SMS_OVER_IMS_SUPPORTED_BOOL, true); + defaults.putBoolean(KEY_SMS_CSFB_RETRY_ON_FAILURE_BOOL, true); + + defaults.putInt(KEY_SMS_OVER_IMS_FORMAT_INT, SMS_FORMAT_3GPP); + + defaults.putIntArray( + KEY_SMS_OVER_IMS_SUPPORTED_RATS_INT_ARRAY, + new int[] { + AccessNetworkType.EUTRAN, + AccessNetworkType.IWLAN + }); + + return defaults; + } + } + + /** + * IMS RTT configs. This groups the configs specific for text media, + * RTT (Real Time Text). + */ + public static final class ImsRtt { + private ImsRtt() {} + + /** Prefix of all imsrtt.KEY_* constants. */ + public static final String KEY_PREFIX = "imsrtt."; + + /** + * Flag specifying whether text media is allowed on default bearer. + * + *

If {@code true}: text media can be sent on default bearer. + * {@code false} otherwise. + */ + public static final String KEY_TEXT_ON_DEFAULT_BEARER_SUPPORTED_BOOL = + KEY_PREFIX + "text_on_default_bearer_supported_bool"; + + /** + * Flag specifying whether QoS preconditions are supported for text. + * + *

If {@code true}: QoS Preconditions are supported. + * {@code false} otherwise. + *

Reference: 3GPP TS 24.229 + */ + public static final String KEY_TEXT_QOS_PRECONDITION_SUPPORTED_BOOL = + KEY_PREFIX + "text_qos_precondition_supported_bool"; + + /** + * Specifies the AS (Application Specific) SDP modifier for text media. + * + *

Expressed in kilobits per second as per RFC 3556 Section 2. + */ + public static final String KEY_TEXT_AS_BANDWIDTH_KBPS_INT = + KEY_PREFIX + "text_as_bandwidth_kbps_int"; + + /** + * Specifies the RS (RTCP bandwidth-Sender) SDP modifier for text media. + * + *

This indicates the RTCP bandwidth allocated to active data senders + * for text media. + * + *

Expressed in bits per second as per RFC 3556 Section 2. + */ + public static final String KEY_TEXT_RS_BANDWIDTH_BPS_INT = + KEY_PREFIX + "text_rs_bandwidth_bps_int"; + + /** + * Specifies the RR (RTCP bandwidth-Receiver) SDP modifier for + * text media. + * + *

This indicates the RTCP bandwidth allocated to receivers + * for text media. + * + *

Expressed in bits per second as per RFC 3556 Section 2. + */ + public static final String KEY_TEXT_RR_BANDWIDTH_BPS_INT = + KEY_PREFIX + "text_rr_bandwidth_bps_int"; + + /** + * List of various reasons for RTT call to end due to + * media inactivity. + * + *

Possible values are, + *

+ */ + public static final String KEY_TEXT_INACTIVITY_CALL_END_REASONS_INT_ARRAY = + KEY_PREFIX + "text_inactivity_call_end_reasons_int_array"; + + /** + * Specifies the Text Codec capability. + * + *

Possible keys in this bundle are, + *

+ */ + public static final String KEY_TEXT_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = + KEY_PREFIX + "text_codec_capability_payload_types_bundle"; + + /** Integer representing payload type for T140 codec. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_T140_PAYLOAD_TYPE_INT = + KEY_PREFIX + "t140_payload_type_int"; + + /** Integer representing payload type for RED/redundancy codec. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_RED_PAYLOAD_TYPE_INT = + KEY_PREFIX + "red_payload_type_int"; + + private static PersistableBundle getDefaults() { + PersistableBundle defaults = new PersistableBundle(); + defaults.putBoolean(KEY_TEXT_ON_DEFAULT_BEARER_SUPPORTED_BOOL, false); + defaults.putBoolean(KEY_TEXT_QOS_PRECONDITION_SUPPORTED_BOOL, true); + + defaults.putInt(KEY_TEXT_AS_BANDWIDTH_KBPS_INT, 4); + defaults.putInt(KEY_TEXT_RS_BANDWIDTH_BPS_INT, 100); + defaults.putInt(KEY_TEXT_RR_BANDWIDTH_BPS_INT, 300); + + defaults.putIntArray( + KEY_TEXT_INACTIVITY_CALL_END_REASONS_INT_ARRAY, + new int[] { + Ims.RTCP_INACTIVITY_ON_CONNECTED, + Ims.RTP_INACTIVITY_ON_CONNECTED + }); + + PersistableBundle text_codec_capability_payload_types = new PersistableBundle(); + + text_codec_capability_payload_types.putInt( + KEY_RED_PAYLOAD_TYPE_INT, + 112); + + text_codec_capability_payload_types.putInt( + KEY_T140_PAYLOAD_TYPE_INT, + 111); + + defaults.putPersistableBundle( + KEY_TEXT_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE, + text_codec_capability_payload_types); + + return defaults; + } + } + + /** + * Emergency Call/E911. This groups the configs specific for emergency call + * over IMS. + * + *

Reference: 3GPP 24.229, 3GPP 23.167 Annex H, 3GPP 24.301. + */ + public static final class ImsEmergency { + private ImsEmergency() {} + + /** Prefix of all imsemergency.KEY_* constants. */ + public static final String KEY_PREFIX = "imsemergency."; + + /** + * Flag specifying whether UE would retry E911 call on + * IMS PDN if emergency PDN setup failed. + * + *

If {@code true}: Allow UE to retry emergency call on + * IMS PDN if emergency PDN setup failed.{@code false} otherwise. + */ + public static final String KEY_RETRY_EMERGENCY_ON_IMS_PDN_BOOL = + KEY_PREFIX + "retry_emergency_on_ims_pdn_bool"; + + /** + * Flag specifying whether UE should enter Emergency CallBack Mode(ECBM) + * after E911 call is ended. + * + *

If {@code true}: Enter ECBM mode after E911 call is ended. + * {@code false} otherwise. + */ + public static final String KEY_EMERGENCY_CALLBACK_MODE_SUPPORTED_BOOL = + KEY_PREFIX + "emergency_callback_mode_supported_bool"; + + /** + * Flag specifying whether QoS preconditions are supported for emergency + * call setup. + * + *

If {@code true}: QoS Preconditions are supported. + * {@code false} otherwise. + * + *

Reference: 3GPP TS 24.229 + */ + public static final String KEY_EMERGENCY_QOS_PRECONDITION_SUPPORTED_BOOL = + KEY_PREFIX + "emergency_qos_precondition_supported_bool"; + + /** + * List of different RAT technologies on which emergency call using IMS + * is supported. + * + *

Possible values are, + * {@link AccessNetworkConstants.AccessNetworkType#NGRAN} + * {@link AccessNetworkConstants.AccessNetworkType#EUTRAN} + * {@link AccessNetworkConstants.AccessNetworkType#IWLAN} + */ + public static final String KEY_EMERGENCY_OVER_IMS_SUPPORTED_RATS_INT_ARRAY = + KEY_PREFIX + "emergency_over_ims_supported_rats_int_array"; + + /** + * Specifies the maximum time from deciding that an emergency service is to + * be established until completion of the emergency registration procedure. + * Upon timer expiry, the UE considers the emergency REGISTER request or + * the emergency call attempt as failed. + */ + public static final String KEY_EMERGENCY_REGISTRATION_TIMER_MILLIS_INT = + KEY_PREFIX + "emergency_registration_timer_millis_int"; + + private static PersistableBundle getDefaults() { + PersistableBundle defaults = new PersistableBundle(); + defaults.putBoolean(KEY_RETRY_EMERGENCY_ON_IMS_PDN_BOOL, false); + defaults.putBoolean(KEY_EMERGENCY_CALLBACK_MODE_SUPPORTED_BOOL, false); + defaults.putBoolean(KEY_EMERGENCY_QOS_PRECONDITION_SUPPORTED_BOOL, true); + + defaults.putIntArray( + KEY_EMERGENCY_OVER_IMS_SUPPORTED_RATS_INT_ARRAY, + new int[] { + AccessNetworkType.EUTRAN, + AccessNetworkType.IWLAN + }); + + defaults.putInt(KEY_EMERGENCY_REGISTRATION_TIMER_MILLIS_INT, 20000); + + return defaults; + } + } + + /** + * IMS Video Telephony configs. This groups the configs that are specific for video call. + */ + public static final class ImsVt { + private ImsVt() {} + + /** Prefix of all imsvt.KEY_* constants. */ + public static final String KEY_PREFIX = "imsvt."; + + /** + * Flag specifying whether video media is allowed on default bearer. + * + *

If {@code true}: video media can be sent on default bearer. + * {@code false} otherwise. + */ + public static final String KEY_VIDEO_ON_DEFAULT_BEARER_SUPPORTED_BOOL = + KEY_PREFIX + "video_on_default_bearer_supported_bool"; + + /** + * Specifies the timeout value for no video RTP packets received. + *

On timer expiry, VT call can downgrade to voice call or end + * or continue depending on the operator requirement. + */ + public static final String KEY_VIDEO_RTP_INACTIVITY_TIMER_MILLIS_INT = + KEY_PREFIX + "video_rtp_inactivity_timer_millis_int"; + + /** + * Specifies the timeout value for no video RTCP packets received. + *

On timer expiry, VT call can downgrade to voice call or end + * or continue depending on the operator requirement. + */ + public static final String KEY_VIDEO_RTCP_INACTIVITY_TIMER_MILLIS_INT = + KEY_PREFIX + "video_rtcp_inactivity_timer_millis_int"; + + /** + * Specifies the AS (Application Specific) SDP modifier for video media. + * + *

Expressed in kilobits per second as per RFC 3556 Section 2. + */ + public static final String KEY_VIDEO_AS_BANDWIDTH_KBPS_INT = + KEY_PREFIX + "video_as_bandwidth_kbps_int"; + + /** + * Specifies the RS (RTCP bandwidth-Sender) SDP modifier for video media. + * + *

This indicates the RTCP bandwidth allocated to active data senders + * for video media. + * + *

Expressed in bits per second as per RFC 3556 Section 2. + */ + public static final String KEY_VIDEO_RS_BANDWIDTH_BPS_INT = + KEY_PREFIX + "video_rs_bandwidth_bps_int"; + + /** + * Specifies the RR (RTCP bandwidth-Receiver) SDP modifier + * for video media. + * + *

This indicates the RTCP bandwidth allocated to receivers + * for video media. + * + *

Expressed in bits per second as per RFC 3556 Section 2. + */ + public static final String KEY_VIDEO_RR_BANDWIDTH_BPS_INT = + KEY_PREFIX + "video_rr_bandwidth_bps_int"; + + /** + * Specifies the differentiated services code point (DSCP) value + * for Video RTP. + * + *

Reference: RFC 4594 Section 1.4.4 + */ + public static final String KEY_VIDEO_RTP_DSCP_INT = + KEY_PREFIX + "video_rtp_dscp_int"; + + /** + * Flag specifying whether QoS preconditions are supported for Video. + * + *

If {@code true}: QoS Preconditions are supported. + * {@code false} otherwise. + *

Reference: 3GPP TS 24.229 + */ + public static final String KEY_VIDEO_QOS_PRECONDITION_SUPPORTED_BOOL = + KEY_PREFIX + "video_qos_precondition_supported_bool"; + + /** + * Specifies the Video Codec capability. This contains a list of + * payload types representing different Video codec instances. + + *

Possible key(s) in this bundle are, + *

+ *

To specify payload descriptions for each of the payload types, see + *

+ */ + public static final String KEY_VIDEO_CODEC_CAPABILITY_PAYLOAD_TYPES_BUNDLE = + KEY_PREFIX + "video_codec_capability_payload_types_bundle"; + + /** + * A list of integers representing the different payload types + * in H264 video codec in priority order from highest to lowest. + *

Payload type is an integer in dynamic payload type range 96-127 + * as per RFC RFC 3551 Section 6. + */ + public static final String KEY_H264_PAYLOAD_TYPE_INT_ARRAY = + KEY_PREFIX + "h264_payload_type_int_array"; + + /** + * Specifies the codec attributes of different payload types + * representing H264 video codec instances. + * + *

The allowed payload types of the video codecs are specified in, + * {@link #KEY_H264_PAYLOAD_TYPE_INT_ARRAY}. + * + *

Codec attributes allowed as part of H264 codec bundle are, + *

+ * + *

If this bundle is not configured and + * {@link #KEY_H264_PAYLOAD_TYPE_INT_ARRAY} is not empty, + * then default values as in the individual codec attributes to + * be used for that payload type. + *

If the codec attributes in a particular codec instance bundle + * is not valid together, then that codec instance should not be used. + */ + public static final String KEY_H264_PAYLOAD_DESCRIPTION_BUNDLE = + KEY_PREFIX + "h264_payload_description_bundle"; + + /** + * Specifies the packetization mode of the video codec. + * + *

Permissible values are 0 (Single NAL unit mode), + * 1(Non-interleaved mode). + * + *

If this key is not specified or invalid, then the following + * default value to be used. + *