1/*
2 * Copyright (c) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.ims;
18
19import android.os.Message;
20
21/**
22 * Provides APIs for the supplementary service settings using IMS (Ut interface).
23 * It is created from 3GPP TS 24.623 (XCAP(XML Configuration Access Protocol)
24 * over the Ut interface for manipulating supplementary services).
25 *
26 * @hide
27 */
28public interface ImsUtInterface {
29    /**
30     * Actions
31     * @hide
32     */
33    public static final int ACTION_DEACTIVATION = 0;
34    public static final int ACTION_ACTIVATION = 1;
35    public static final int ACTION_REGISTRATION = 3;
36    public static final int ACTION_ERASURE = 4;
37    public static final int ACTION_INTERROGATION = 5;
38
39    /**
40     * OIR (Originating Identification Restriction, 3GPP TS 24.607)
41     * OIP (Originating Identification Presentation, 3GPP TS 24.607)
42     * TIR (Terminating Identification Restriction, 3GPP TS 24.608)
43     * TIP (Terminating Identification Presentation, 3GPP TS 24.608)
44     */
45    public static final int OIR_DEFAULT = 0;    // "user subscription default value"
46    public static final int OIR_PRESENTATION_RESTRICTED = 1;
47    public static final int OIR_PRESENTATION_NOT_RESTRICTED = 2;
48
49    /**
50     * CW (Communication Waiting, 3GPP TS 24.615)
51     */
52
53    /**
54     * CDIV (Communication Diversion, 3GPP TS 24.604)
55     *     actions: target, no reply timer
56     */
57    public static final int CDIV_CF_UNCONDITIONAL = 0;
58    public static final int CDIV_CF_BUSY = 1;
59    public static final int CDIV_CF_NO_REPLY = 2;
60    public static final int CDIV_CF_NOT_REACHABLE = 3;
61    // For CS service code: 002
62    public static final int CDIV_CF_ALL = 4;
63    // For CS service code: 004
64    public static final int CDIV_CF_ALL_CONDITIONAL = 5;
65    // It's only supported in the IMS service (CS does not define it).
66    // IR.92 recommends that an UE activates both the CFNRc and the CFNL
67    // (CDIV using condition not-registered) to the same target.
68    public static final int CDIV_CF_NOT_LOGGED_IN = 6;
69
70    /**
71     * CB (Communication Barring, 3GPP TS 24.611)
72     */
73    // Barring of All Incoming Calls
74    public static final int CB_BAIC = 1;
75    // Barring of All Outgoing Calls
76    public static final int CB_BAOC = 2;
77    // Barring of Outgoing International Calls
78    public static final int CB_BOIC = 3;
79    // Barring of Outgoing International Calls - excluding Home Country
80    public static final int CB_BOIC_EXHC = 4;
81    // Barring of Incoming Calls - when roaming
82    public static final int CB_BIC_WR = 5;
83    // Barring of Anonymous Communication Rejection (ACR) - a particular case of ICB service
84    public static final int CB_BIC_ACR = 6;
85    // Barring of All Calls
86    public static final int CB_BA_ALL = 7;
87    // Barring of Outgoing Services (Service Code 333 - 3GPP TS 22.030 Table B-1)
88    public static final int CB_BA_MO = 8;
89    // Barring of Incoming Services (Service Code 353 - 3GPP TS 22.030 Table B-1)
90    public static final int CB_BA_MT = 9;
91    // Barring of Specific Incoming calls
92    public static final int CB_BS_MT = 10;
93
94    /**
95     * Invalid result value.
96     */
97    public static final int INVALID = (-1);
98
99
100
101    /**
102     * Operations for the supplementary service configuration
103     */
104
105    /**
106     * Retrieves the configuration of the call barring.
107     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}.
108     */
109    public void queryCallBarring(int cbType, Message result);
110
111    /**
112     * Retrieves the configuration of the call forward.
113     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsCallForwardInfo}.
114     */
115    public void queryCallForward(int condition, String number, Message result);
116
117    /**
118     * Retrieves the configuration of the call waiting.
119     * The return value of ((AsyncResult)result.obj) is an array of {@link ImsSsInfo}.
120     */
121    public void queryCallWaiting(Message result);
122
123    /**
124     * Retrieves the default CLIR setting.
125     */
126    public void queryCLIR(Message result);
127
128    /**
129     * Retrieves the CLIP call setting.
130     */
131    public void queryCLIP(Message result);
132
133    /**
134     * Retrieves the COLR call setting.
135     */
136    public void queryCOLR(Message result);
137
138    /**
139     * Retrieves the COLP call setting.
140     */
141    public void queryCOLP(Message result);
142
143    /**
144     * Modifies the configuration of the call barring.
145     */
146    public void updateCallBarring(int cbType, boolean enable,
147            Message result, String[] barrList);
148
149    /**
150     * Modifies the configuration of the call forward.
151     */
152    public void updateCallForward(int action, int condition, String number,
153            int serviceClass, int timeSeconds, Message result);
154
155    /**
156     * Modifies the configuration of the call waiting.
157     */
158    public void updateCallWaiting(boolean enable, int serviceClass, Message result);
159
160    /**
161     * Updates the configuration of the CLIR supplementary service.
162     */
163    public void updateCLIR(int clirMode, Message result);
164
165    /**
166     * Updates the configuration of the CLIP supplementary service.
167     */
168    public void updateCLIP(boolean enable, Message result);
169
170    /**
171     * Updates the configuration of the COLR supplementary service.
172     */
173    public void updateCOLR(int presentation, Message result);
174
175    /**
176     * Updates the configuration of the COLP supplementary service.
177     */
178    public void updateCOLP(boolean enable, Message result);
179}
180