1cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak/*
2cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Copyright (c) 2016 The Android Open Source Project
3cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak *
4cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Licensed under the Apache License, Version 2.0 (the "License");
5cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * you may not use this file except in compliance with the License.
6cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * You may obtain a copy of the License at
7cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak *
8cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak *      http://www.apache.org/licenses/LICENSE-2.0
9cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak *
10cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Unless required by applicable law or agreed to in writing, software
11cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * distributed under the License is distributed on an "AS IS" BASIS,
12cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * See the License for the specific language governing permissions and
14cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * limitations under the License.
15cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak */
16cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
17cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakpackage com.android.ims.internal.uce.options;
18cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
19cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.options.IOptionsListener;
20cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.options.OptionsCapInfo;
21cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.CapInfo;
22cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.StatusCode;
23cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.UceLong;
24cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
25cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak/** {@hide} */
26cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakinterface IOptionsService
27cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak{
28cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
29cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
30cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Gets the version of the Options service implementation.
31cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * the result of this Call is received in getVersionCb
32cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, received in serviceCreated() of IOptionsListener.
33cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
34cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
35cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
36cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getVersion(int optionsServiceHandle);
37cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
38cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
39cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Adds a listener to the Options service.
40cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
41cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsListener, IOptionsListener object.
42cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceListenerHdl wrapper for client's listener handle to be stored.
43cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
44cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The service will fill UceLong.mUceLong with optionsServiceListenerHdl
45cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
46cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
47cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode addListener(int optionsServiceHandle, IOptionsListener optionsListener,
48cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                           inout UceLong optionsServiceListenerHdl);
49cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
50cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
51cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Removes a listener from the Options service.
52cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, received in serviceCreated() of IOptionsListener.
53cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsListenerHandle, received in serviceCreated() of IOptionsListener.
54cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceListenerHdl provided in createOptionsService() or Addlistener().
55cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
56cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
57cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode removeListener(int optionsServiceHandle, in UceLong optionsServiceListenerHdl);
58cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
59cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
60cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Sets the capabilities information of the self device.
61cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The status of the call is received in cmdStatus callback
62cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
63cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param capInfo, capability information to store.
64cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param reqUserData, userData provided by client to identify the request/API call, it
65cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
66cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
67cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
68cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
69cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode setMyInfo(int optionsServiceHandle , in CapInfo capInfo, int reqUserData);
70cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
71cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
72cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
73cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Gets the capabilities information of remote device.
74cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The Capability information is received in cmdStatus callback
75cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
76cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param reqUserData, userData provided by client to identify the request/API call, it
77cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
78cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
79cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
80cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
81cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getMyInfo(int optionsServiceHandle , int reqUserdata);
82cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
83cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
84cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Requests the capabilities information of a remote URI.
85cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * the remote party capability is received in sipResponseReceived() callback.
86cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
87cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param remoteURI, URI of the remote contact.
88cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param reqUserData, userData provided by client to identify the request/API call, it
89cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
90cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
91cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
92cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
93cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getContactCap(int optionsServiceHandle , String remoteURI, int reqUserData);
94cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
95cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
96cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
97cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Requests the capabilities information of specified contacts.
98cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * For each remote party capability is received in sipResponseReceived() callback
99cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
100cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param remoteURIList, list of remote contact URI's.
101cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param reqUserData, userData provided by client to identify the request/API call, it
102cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
103cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
104cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
105cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
106cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getContactListCap(int optionsServiceHandle, in String[] remoteURIList,
107cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                                 int reqUserData);
108cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
109cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
110cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
111cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Requests the capabilities information of specified contacts.
112cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The incoming Options request is received in incomingOptions() callback.
113cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
114cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle, this returned in serviceCreated() of IOptionsListener.
115cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param tId, transaction ID received in incomingOptions() call of IOptionsListener.
116cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param sipResponseCode, SIP response code the UE needs to share to network.
117cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param reasonPhrase, response phrase corresponding to the response code.
118cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param capInfo, capabilities to share in the resonse to network.
119cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param bContactInBL, true if the contact is blacklisted, else false.
120cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
121cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
122cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode responseIncomingOptions(int optionsServiceHandle,  int tId, int sipResponseCode,
123cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                                       String reasonPhrase, in OptionsCapInfo capInfo,
124cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                                       in boolean bContactInBL);
125cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
126cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak}
127