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