1076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com/* 2076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Copyright (c) 2014 The Android Open Source Project 3076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 4076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Licensed under the Apache License, Version 2.0 (the "License"); 5076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * you may not use this file except in compliance with the License. 6076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * You may obtain a copy of the License at 7076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 8076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * http://www.apache.org/licenses/LICENSE-2.0 9076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 10076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Unless required by applicable law or agreed to in writing, software 11076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * distributed under the License is distributed on an "AS IS" BASIS, 12076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * See the License for the specific language governing permissions and 14076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * limitations under the License. 15076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 16076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 17076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.compackage com.android.ims; 18076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 1954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.comimport android.content.Context; 20076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.comimport android.os.RemoteException; 21076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.comimport android.telephony.Rlog; 22076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 23076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.comimport com.android.ims.ImsConfigListener; 24076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.comimport com.android.ims.ImsReasonInfo; 25076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.comimport com.android.ims.internal.IImsConfig; 26076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com/** 27076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Provides APIs to get/set the IMS service feature/capability/parameters. 28076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * The config items include: 29076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 1) Items provisioned by the operator. 30076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 2) Items configured by user. Mainly service feature class. 31076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 32076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @hide 33076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 34076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.compublic class ImsConfig { 35076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com private static final String TAG = "ImsConfig"; 36076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com private boolean DBG = true; 37076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com private final IImsConfig miConfig; 3854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com private Context mContext; 3954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com private static final String MODIFY_PHONE_STATE = android.Manifest.permission.MODIFY_PHONE_STATE; 40076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 41076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 42076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Defines IMS service/capability feature constants. 43076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 44076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static class FeatureConstants { 45076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int FEATURE_TYPE_UNKNOWN = -1; 46076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 47076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 487da5a11accec318cc3da2087fb3a891db4f661f7ram * FEATURE_TYPE_VOLTE supports features defined in 3GPP and 497da5a11accec318cc3da2087fb3a891db4f661f7ram * GSMA IR.92 over LTE. 50076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 517da5a11accec318cc3da2087fb3a891db4f661f7ram public static final int FEATURE_TYPE_VOICE_OVER_LTE = 0; 52076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 53076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 547da5a11accec318cc3da2087fb3a891db4f661f7ram * FEATURE_TYPE_LVC supports features defined in 3GPP and 557da5a11accec318cc3da2087fb3a891db4f661f7ram * GSMA IR.94 over LTE. 56076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 577da5a11accec318cc3da2087fb3a891db4f661f7ram public static final int FEATURE_TYPE_VIDEO_OVER_LTE = 1; 58076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 59076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 607da5a11accec318cc3da2087fb3a891db4f661f7ram * FEATURE_TYPE_VOICE_OVER_WIFI supports features defined in 3GPP and 617da5a11accec318cc3da2087fb3a891db4f661f7ram * GSMA IR.92 over WiFi. 62076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 637da5a11accec318cc3da2087fb3a891db4f661f7ram public static final int FEATURE_TYPE_VOICE_OVER_WIFI = 2; 647da5a11accec318cc3da2087fb3a891db4f661f7ram 657da5a11accec318cc3da2087fb3a891db4f661f7ram /** 667da5a11accec318cc3da2087fb3a891db4f661f7ram * FEATURE_TYPE_VIDEO_OVER_WIFI supports features defined in 3GPP and 677da5a11accec318cc3da2087fb3a891db4f661f7ram * GSMA IR.94 over WiFi. 687da5a11accec318cc3da2087fb3a891db4f661f7ram */ 697da5a11accec318cc3da2087fb3a891db4f661f7ram public static final int FEATURE_TYPE_VIDEO_OVER_WIFI = 3; 70076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 71076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 72076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 73076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Defines IMS service/capability parameters. 74076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 75076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static class ConfigConstants { 76076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 77076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com // Define IMS config items 78076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int CONFIG_START = 0; 79076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 80076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com // Define operator provisioned config items 81076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int PROVISIONED_CONFIG_START = CONFIG_START; 82076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 83076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 84076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * AMR CODEC Mode Value set, 0-7 in comma separated sequence. 85076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in String format. 86076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 87076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int VOCODER_AMRMODESET = CONFIG_START; 88076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 89076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 90076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Wide Band AMR CODEC Mode Value set,0-7 in comma separated sequence. 91076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in String format. 92076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 93076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int VOCODER_AMRWBMODESET = 1; 94076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 95076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 96076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * SIP Session Timer value (seconds). 97076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 98076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 99076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SIP_SESSION_TIMER = 2; 100076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 101076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 102076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Minimum SIP Session Expiration Timer in (seconds). 103076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 104076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 105076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int MIN_SE = 3; 106076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 107076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 10854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * SIP_INVITE cancellation time out value (in milliseconds). Integer format. 109076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 110076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 111076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int CANCELLATION_TIMER = 4; 112076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 113076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 114076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Delay time when an iRAT transition from eHRPD/HRPD/1xRTT to LTE. 115076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 116076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 117076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int TDELAY = 5; 118076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 119076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 120076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Silent redial status of Enabled (True), or Disabled (False). 121076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 122076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 123076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SILENT_REDIAL_ENABLE = 6; 124076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 125076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 12654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * SIP T1 timer value in milliseconds. See RFC 3261 for define. 127076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 128076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 129076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SIP_T1_TIMER = 7; 130076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 131076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 13254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * SIP T2 timer value in milliseconds. See RFC 3261 for define. 133076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 134076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 135076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SIP_T2_TIMER = 8; 136076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 137076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 13854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * SIP TF timer value in milliseconds. See RFC 3261 for define. 139076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 140076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 141076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SIP_TF_TIMER = 9; 142076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 143076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 144076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * VoLTE status for VLT/s status of Enabled (1), or Disabled (0). 145076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 146076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 147076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int VLT_SETTING_ENABLED = 10; 148076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 149076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 150076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * VoLTE status for LVC/s status of Enabled (1), or Disabled (0). 151076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Value is in Integer format. 152076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 153076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int LVC_SETTING_ENABLED = 11; 15454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 15554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Domain Name for the device to populate the request URI for REGISTRATION. 15654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in String format. 15754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 15854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int DOMAIN_NAME = 12; 15954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 16054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Device Outgoing SMS based on either 3GPP or 3GPP2 standards. 16154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 3GPP2(0), 3GPP(1) 16254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 16354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int SMS_FORMAT = 13; 16454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 16554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Turns IMS ON/OFF on the device. 16654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. ON (1), OFF(0). 16754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 16854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int SMS_OVER_IP = 14; 16954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 17054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Requested expiration for Published Online availability. 17154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 17254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 17354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int PUBLISH_TIMER = 15; 17454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 17554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Requested expiration for Published Offline availability. 17654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 17754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 17854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int PUBLISH_TIMER_EXTENDED = 16; 17954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 18054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Period of time the capability information of the contact is cached on handset. 18154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 18254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 18354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int CAPABILITIES_CACHE_EXPIRATION = 17; 18454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 18554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Peiod of time the availability information of a contact is cached on device. 18654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 18754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 18854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int AVAILABILITY_CACHE_EXPIRATION = 18; 18954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 19054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Interval between successive capabilities polling. 19154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 19254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 19354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int CAPABILITIES_POLL_INTERVAL = 19; 19454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 19554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Minimum time between two published messages from the device. 19654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 19754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 19854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int SOURCE_THROTTLE_PUBLISH = 20; 19954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 20054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * The Maximum number of MDNs contained in one Request Contained List. 20154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 20254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 20354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int MAX_NUMENTRIES_IN_RCL = 21; 20454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 20554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Expiration timer for subscription of a Request Contained List, used in capability polling. 20654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. 20754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 20854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int CAPAB_POLL_LIST_SUB_EXP = 22; 20954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com /** 21054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Applies compression to LIST Subscription. 21154953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * Value is in Integer format. Enable (1), Disable(0). 21254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com */ 21354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public static final int GZIP_FLAG = 23; 2143fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com /** 2153fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com * VOLTE Status for EAB/s status of Enabled (1), or Disabled (0). 2163fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com * Value is in Integer format. 2173fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com */ 2183fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com public static final int EAB_SETTING_ENABLED = 24; 219076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com // Expand the operator config items as needed here, need to change 220076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com // PROVISIONED_CONFIG_END after that. 2213fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com public static final int PROVISIONED_CONFIG_END = EAB_SETTING_ENABLED; 222076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 223076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com // Expand the operator config items as needed here. 224076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 225076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 226076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 227076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Defines IMS set operation status. 228076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 229076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static class OperationStatusConstants { 230076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int UNKNOWN = -1; 231076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int SUCCESS = 0; 232076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int FAILED = 1; 233076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int UNSUPPORTED_CAUSE_NONE = 2; 234076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int UNSUPPORTED_CAUSE_RAT = 3; 235076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int UNSUPPORTED_CAUSE_DISABLED = 4; 236076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 237076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 238076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 239076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Defines IMS feature value. 240076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 241076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static class FeatureValueConstants { 242076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int OFF = 0; 243076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public static final int ON = 1; 244076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 245076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 24654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public ImsConfig(IImsConfig iconfig, Context context) { 247076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com if (DBG) Rlog.d(TAG, "ImsConfig creates"); 248076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com miConfig = iconfig; 24954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com mContext = context; 250076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 251076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 252076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 2533fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack. 254076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * This function should not be called from the mainthread as it could block the 2556dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * mainthread. 256076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 257076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 258076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @return the value in Integer format. 259076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 260076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 261076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 2623fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com public int getProvisionedValue(int item) throws ImsException { 263076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com int ret = 0; 264076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 2653fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com ret = miConfig.getProvisionedValue(item); 266076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 267076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throw new ImsException("getValue()", e, 268076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 269076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 2703fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com if (DBG) Rlog.d(TAG, "getProvisionedValue(): item = " + item + ", ret =" + ret); 271076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 272076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com return ret; 273076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 274076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 275076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 2763fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com * Gets the provisioned value for IMS service/capabilities parameters used by IMS stack. 277076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * This function should not be called from the mainthread as it could block the 2786dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * mainthread. 279076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 280076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 281076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @return value in String format. 282076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 283076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 284076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 2853fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com public String getProvisionedStringValue(int item) throws ImsException { 286076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com String ret = "Unknown"; 287076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 2883fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com ret = miConfig.getProvisionedStringValue(item); 289076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 2903fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com throw new ImsException("getProvisionedStringValue()", e, 291076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 292076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 2933fd20025b87ff6828182d21668dd0b7a4a0435ecLibin.Tang@motorola.com if (DBG) Rlog.d(TAG, "getProvisionedStringValue(): item = " + item + ", ret =" + ret); 294076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 295076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com return ret; 296076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 297076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 298076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 299076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Sets the value for IMS service/capabilities parameters by 300076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * the operator device management entity. 301076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * This function should not be called from main thread as it could block 3026dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * mainthread. 303076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 304076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 305076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param value in Integer format. 30654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants 307076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 308076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 309076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 31054953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public int setProvisionedValue(int item, int value) 311076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throws ImsException { 31254953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com mContext.enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null); 31354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com int ret = ImsConfig.OperationStatusConstants.UNKNOWN; 314076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com if (DBG) { 315076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com Rlog.d(TAG, "setProvisionedValue(): item = " + item + 316076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com "value = " + value); 317076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 318076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 31954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com ret = miConfig.setProvisionedValue(item, value); 320076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 321076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throw new ImsException("setProvisionedValue()", e, 322076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 323076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 32454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com if (DBG) { 32554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com Rlog.d(TAG, "setProvisionedValue(): item = " + item + 32654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com " value = " + value + " ret = " + ret); 32754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com } 32854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com return ret; 329076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 330076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 331076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 332076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Sets the value for IMS service/capabilities parameters by 333076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * the operator device management entity. 3346dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * This function should not be called from main thread as it could block 3356dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * mainthread. 336076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 337076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param item, as defined in com.android.ims.ImsConfig#ConfigConstants. 338076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param value in String format. 33954953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com * @return as defined in com.android.ims.ImsConfig#OperationStatusConstants 340076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 341076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 342076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 34354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com public int setProvisionedStringValue(int item, String value) 344076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throws ImsException { 34554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com mContext.enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null); 34654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com int ret = ImsConfig.OperationStatusConstants.UNKNOWN; 347076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 34854953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com ret = miConfig.setProvisionedStringValue(item, value); 349076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 350076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throw new ImsException("setProvisionedStringValue()", e, 351076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 352076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 35354953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com if (DBG) { 35454953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com Rlog.d(TAG, "setProvisionedStringValue(): item = " + item + 35554953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com ", value =" + value); 35654953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com } 35754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com return ret; 358076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 359076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 360076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 361076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Gets the value for IMS feature item for specified network type. 362076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 363076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param feature, defined as in FeatureConstants. 364076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param network, defined as in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. 365076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param listener, provided to be notified for the feature on/off status. 366076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @return void 367076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 368076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 369076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 370076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public void getFeatureValue(int feature, int network, 371076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsConfigListener listener) throws ImsException { 372076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com if (DBG) { 3735216bd9de165e7fd1ec9b1caea983ab6ca50784eLibin.Tang@motorola.com Rlog.d(TAG, "getFeatureValue: feature = " + feature + ", network =" + network + 374076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ", listener =" + listener); 375076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 376076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 377076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com miConfig.getFeatureValue(feature, network, listener); 378076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 3795216bd9de165e7fd1ec9b1caea983ab6ca50784eLibin.Tang@motorola.com throw new ImsException("getFeatureValue()", e, 380076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 381076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 382076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 383076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com 384076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com /** 385076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * Sets the value for IMS feature item for specified network type. 386076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 387076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param feature, as defined in FeatureConstants. 388076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param network, as defined in android.telephony.TelephonyManager#NETWORK_TYPE_XXX. 389076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param value, as defined in FeatureValueConstants. 390076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @param listener, provided if caller needs to be notified for set result. 391076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @return void 392076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * 393076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 394076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com */ 395076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com public void setFeatureValue(int feature, int network, int value, 396076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsConfigListener listener) throws ImsException { 39754953c79547a4e2f8e690a021d44f533e190427aLibin.Tang@motorola.com mContext.enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, null); 398076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com if (DBG) { 3995216bd9de165e7fd1ec9b1caea983ab6ca50784eLibin.Tang@motorola.com Rlog.d(TAG, "setFeatureValue: feature = " + feature + ", network =" + network + 400076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ", value =" + value + ", listener =" + listener); 401076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 402076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com try { 403076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com miConfig.setFeatureValue(feature, network, value, listener); 404076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } catch (RemoteException e) { 405076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com throw new ImsException("setFeatureValue()", e, 406076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 407076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 408076c55df56906453aade4a741b435f1df72778a2Libin.Tang@motorola.com } 4096dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com 4106dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com /** 4116dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * Gets the value for IMS Volte provisioned. 4126dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * It should be the same as operator provisioned value if applies. 4136dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * 4146dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * @return boolean 4156dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * 4166dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com * @throws ImsException if calling the IMS service results in an error. 4176dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com */ 4186dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com public boolean getVolteProvisioned() throws ImsException { 4196dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com try { 4206dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com return miConfig.getVolteProvisioned(); 4216dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com } catch (RemoteException e) { 4226dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com throw new ImsException("getVolteProvisioned()", e, 4236dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com ImsReasonInfo.CODE_LOCAL_SERVICE_UNAVAILABLE); 4246dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com } 4256dd039f557a92eb308a94799da95e5fa27bec492Libin.Tang@motorola.com } 4267da5a11accec318cc3da2087fb3a891db4f661f7ram} 427