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.presence;
18cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
19cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.presence.IPresenceListener;
20cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.presence.PresCapInfo;
21cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.presence.PresServiceInfo;
22cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.UceLong;
23cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.StatusCode;
24cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
25cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak/** IPresenceService
26cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak{@hide} */
27cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakinterface IPresenceService
28cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak{
29cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
30cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
31cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Gets the version of the Presence service implementation.
32cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The verion information is received in getVersionCb callback.
33cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
34cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
35cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
36cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getVersion(int presenceServiceHdl);
37cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
38cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
39cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Adds a listener to the Presence service.
40cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
41cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceListener IPresenceListener Object.
42cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceListenerHdl wrapper for client's listener handle to be stored.
43cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
44cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The service will fill UceLong.mUceLong with presenceListenerHandle.
45cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
46cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed
47cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
48cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode addListener(int presenceServiceHdl, IPresenceListener presenceServiceListener,
49cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                           inout UceLong presenceServiceListenerHdl);
50cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
51cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
52cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Removes a listener from the Presence service.
53cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
54cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceListenerHdl provided in createPresenceService() or Addlistener().
55cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
56cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
57cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode removeListener(int presenceServiceHdl, in UceLong presenceServiceListenerHdl);
58cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
59cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
60cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Re-enables the Presence service if it is in the Blocked state due to receiving a SIP
61cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * response 489 Bad event.
62cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The application must call this API before calling any presence API after receiving a SIP
63cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * response 489 Bad event.
64cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The status of this request is notified in cmdStatus callback.
65cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
66cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
67cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param userData, userData provided by client to identify the request/API call, it
68cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
69cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
70cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
71cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
72cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode reenableService(int presenceServiceHdl, int userData);
73cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
74cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
75cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Sends a request to publish current device capabilities.
76cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The network response is notifed in sipResponseReceived() callback.
77cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
78cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param myCapInfo PresCapInfo object.
79cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param userData, userData provided by client to identify the request/API call, it
80cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
81cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
82cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
83cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
84cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode publishMyCap(int presenceServiceHdl, in PresCapInfo myCapInfo , int userData);
85cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
86cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
87cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Retrieves the capability information for a single contact. Clients receive the requested
88cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * information via the listener callback function capInfoReceived() callback.
89cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
90cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
91cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param remoteUri remote contact URI
92cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param userData, userData provided by client to identify the request/API call, it
93cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
94cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
95cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
96cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
97cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getContactCap(int presenceServiceHdl , String remoteUri, int userData);
98cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
99cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
100cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Retrieves the capability information for a list of contacts. Clients receive the requested
101cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * information via the listener callback function listCapInfoReceived() callback.
102cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
103cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
104cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param remoteUriList list of remote contact URI's.
105cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param userData, userData provided by client to identify the request/API call, it
106cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
107cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
108cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
109cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
110cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode getContactListCap(int presenceServiceHdl, in String[] remoteUriList, int userData);
111cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
112cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
113cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Sets the mapping between a new feature tag and the corresponding service tuple information
114cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * to be included in the published document.
115cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The staus of this call is received in cmdStatus callback.
116cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
117cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl returned in createPresenceService().
118cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param featureTag to be supported
119cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param PresServiceInfo service information describing the featureTag.
120cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param userData, userData provided by client to identify the request/API call, it
121cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  is returned in the cmdStatus() callback for client to match response
122cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *                  with original request.
123cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return StatusCode, status of the request placed.
124cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
125cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    StatusCode  setNewFeatureTag(int presenceServiceHdl, String featureTag,
126cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                                 in PresServiceInfo serviceInfo, int userData);
127cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
128cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak}
129