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.uceservice;
18cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
19cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.uceservice.IUceListener;
20cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.presence.IPresenceService;
21cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.options.IOptionsListener;
22cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.presence.IPresenceListener;
23cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.options.IOptionsService;
24cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.UceLong;
25cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.uce.common.StatusCode;
26cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
27cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak/** IUceService
28cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak *  UCE service interface class.
29cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * {@hide} */
30cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakinterface IUceService
31cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak{
32cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
33cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
34cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Starts the Uce service.
35cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param uceListener IUceListener object
36cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return boolean true if the service stop start is processed successfully, FALSE otherwise.
37cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
38cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Service status is returned in setStatus callback in IUceListener.
39cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
40cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
41cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    boolean startService(IUceListener uceListener);
42cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
43cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
44cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Stops the UCE service.
45cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return boolean true if the service stop request is processed successfully, FALSE otherwise.
46cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
47cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
48cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    boolean stopService();
49cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
50cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
51cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
52cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
53cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Requests the UCE service start status.
54cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return boolean true if service started else false.
55cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
56cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
57cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    boolean isServiceStarted();
58cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
59cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
60cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Creates a options service for Capability Discovery.
61cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsListener IOptionsListener object.
62cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceListenerHdl wrapper for client's listener handle to be stored.
63cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
64cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The service will fill UceLong.mUceLong with presenceListenerHandle allocated and
65cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * used to validate callbacks received in IPresenceListener are indeed from the
66cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * service the client created.
67cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
68cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return  optionsServiceHandle
69cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
70cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
71cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    int createOptionsService(IOptionsListener optionsListener,
72cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                             inout UceLong optionsServiceListenerHdl);
73cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
74cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
75cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Destroys a Options service.
76cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param optionsServiceHandle this is received in serviceCreated() callback
77cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *        in IOptionsListener
78cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
79cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
80cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    void destroyOptionsService(int optionsServiceHandle);
81cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
82cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
83cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Creates a presence service.
84cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceListener IPresenceListener object
85cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceListenerHdl wrapper for client's listener handle to be stored.
86cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
87cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * The service will fill UceLong.mUceLong with presenceListenerHandle allocated and
88cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * used to validate callbacks received in IPresenceListener are indeed from the
89cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * service the client created.
90cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     *
91cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return  presenceServiceHdl
92cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
93cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
94cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    int createPresenceService(IPresenceListener presenceServiceListener,
95cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak                              inout UceLong presenceServiceListenerHdl);
96cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
97cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
98cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Destroys a presence service.
99cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @param presenceServiceHdl handle returned during createPresenceService()
100cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
101cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
102cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    void destroyPresenceService(int presenceServiceHdl);
103cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
104cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
105cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
106cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
107cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Query the UCE Service for information to know whether the is registered.
108cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return boolean, true if Registered to for network events else false.
109cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
110cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
111cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    boolean getServiceStatus();
112cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
113cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
114cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Query the UCE Service for presence Service.
115cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return IPresenceService object.
116cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
117cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
118cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    IPresenceService getPresenceService();
119cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
120cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    /**
121cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * Query the UCE Service for options service object.
122cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @return IOptionsService object.
123cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     * @hide
124cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak     */
125cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak    IOptionsService getOptionsService();
126cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak
127cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak}
128