1eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen/*
2eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * Copyright (C) 2015 The Android Open Source Project
3eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen *
4eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * Licensed under the Apache License, Version 2.0 (the "License");
5eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * you may not use this file except in compliance with the License.
6eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * You may obtain a copy of the License at
7eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen *
8eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen *      http://www.apache.org/licenses/LICENSE-2.0
9eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen *
10eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * Unless required by applicable law or agreed to in writing, software
11eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * distributed under the License is distributed on an "AS IS" BASIS,
12eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * See the License for the specific language governing permissions and
14eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * limitations under the License.
15eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen */
16eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
17eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenpackage com.android.ims;
18eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
19eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport android.app.PendingIntent;
20eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
21eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.ImsCallProfile;
22eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsCallSession;
23eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsCallSessionListener;
24eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsConfig;
25eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsEcbm;
262038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunnimport com.android.ims.internal.IImsMultiEndpoint;
27eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsRegistrationListener;
28eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsService;
29eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport com.android.ims.internal.IImsUt;
30eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenimport android.os.Message;
31eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
32eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen/*
33eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * Stub for IImsService interface. To enable forward compatibility during
34eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * development - empty APIs should not be deployed.
35eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen *
36eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen * @hide
37eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen */
38eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohenpublic abstract class ImsServiceBase {
39eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    /**
40eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen     * IImsService stub implementation.
41eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen     */
42eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    private final class ImsServiceBinder extends IImsService.Stub {
43eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
44eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public int open(int phoneId, int serviceClass, PendingIntent incomingCallIntent,
45eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen                 IImsRegistrationListener listener) {
46eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onOpen(phoneId, serviceClass, incomingCallIntent, listener);
47eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
48eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
49eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
50eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public void close(int serviceId) {
51eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            onClose(serviceId);
52eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
53eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
54eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
55eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public boolean isConnected(int serviceId, int serviceType, int callType) {
56eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onIsConnected(serviceId, serviceType, callType);
57eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
58eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
59eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
60eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public boolean isOpened(int serviceId) {
61eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onIsOpened(serviceId);
62eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
63eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
64eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
65eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public void setRegistrationListener(int serviceId, IImsRegistrationListener listener) {
66eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            onSetRegistrationListener(serviceId, listener);
67eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
68eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
69eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
70eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public ImsCallProfile createCallProfile(int serviceId, int serviceType, int callType) {
71eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onCreateCallProfile(serviceId, serviceType, callType);
72eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
73eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
74eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
75eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public IImsCallSession createCallSession(int serviceId, ImsCallProfile profile,
76eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen                                          IImsCallSessionListener listener) {
77eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onCreateCallSession(serviceId, profile, listener);
78eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
79eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
80eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
81eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public IImsCallSession getPendingCallSession(int serviceId, String callId) {
82eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onGetPendingCallSession(serviceId, callId);
83eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
84eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
85eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
86eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public IImsUt getUtInterface(int serviceId) {
87eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onGetUtInterface(serviceId);
88eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
89eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
90eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
91eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public IImsConfig getConfigInterface(int phoneId) {
92eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onGetConfigInterface(phoneId);
93eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
94eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
95eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
96eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public void turnOnIms(int phoneId) {
97eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            onTurnOnIms(phoneId);
98eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
99eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
100eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
101eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public void turnOffIms(int phoneId) {
102eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            onTurnOffIms(phoneId);
103eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
104eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
105eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
106eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public IImsEcbm getEcbmInterface(int serviceId) {
107eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            return onGetEcbmInterface(serviceId);
108eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
109eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
110eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        @Override
111eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        public void setUiTTYMode(int serviceId, int uiTtyMode, Message onComplete) {
112eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            onSetUiTTYMode(serviceId, uiTtyMode, onComplete);
113eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
1142038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn
1152038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn        @Override
1162038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn        public IImsMultiEndpoint getMultiEndpointInterface(int serviceId) {
1172038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn            return onGetMultiEndpointInterface(serviceId);
1182038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn        }
119eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
120eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
121eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    private ImsServiceBinder mBinder;
122eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
123eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    public ImsServiceBinder getBinder() {
124eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        if (mBinder == null) {
125eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen            mBinder = new ImsServiceBinder();
126eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        }
127eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
128eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return mBinder;
129eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
130eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
131eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected int onOpen(int phoneId, int serviceClass, PendingIntent incomingCallIntent,
132eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen                    IImsRegistrationListener listener) {
133eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
134eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
135eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return 0; // DUMMY VALUE
136eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
137eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
138eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected void onClose(int serviceId) {
139eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
140eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
141eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
142eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected boolean onIsConnected(int serviceId, int serviceType, int callType) {
143eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
144eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
145eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return false; // DUMMY VALUE
146eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
147eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
148eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected boolean onIsOpened(int serviceId) {
149eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
150eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
151eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return false; // DUMMY VALUE
152eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
153eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
154eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected void onSetRegistrationListener(int serviceId, IImsRegistrationListener listener) {
155eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
156eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
157eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
158eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected ImsCallProfile onCreateCallProfile(int serviceId, int serviceType, int callType) {
159eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
160eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
161eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
162eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
163eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
164eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected IImsCallSession onCreateCallSession(int serviceId, ImsCallProfile profile,
165eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen                                             IImsCallSessionListener listener) {
166eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
167eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
168eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
169eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
170eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
171eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected IImsCallSession onGetPendingCallSession(int serviceId, String callId) {
172eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
173eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
174eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
175eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
176eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
177eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected IImsUt onGetUtInterface(int serviceId) {
178eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
179eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
180eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
181eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
182eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
183eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected IImsConfig onGetConfigInterface(int phoneId) {
184eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
185eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
186eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
187eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
188eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
189eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected void onTurnOnIms(int phoneId) {
190eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
191eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
192eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
193eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected void onTurnOffIms(int phoneId) {
194eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
195eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
196eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
197eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected IImsEcbm onGetEcbmInterface(int serviceId) {
198eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
199eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
200eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        return null;
201eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
202eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
203eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    protected void onSetUiTTYMode(int serviceId, int uiTtyMode, Message onComplete) {
204eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen        // no-op
205eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen    }
2062038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn
2072038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn    protected IImsMultiEndpoint onGetMultiEndpointInterface(int serviceId) {
2082038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn        // no-op
2092038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn        return null;
2102038a4aa1d8bc0a65cbb9a21911722ebe504e0c1Tyler Gunn    }
211eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen}
212eea3d44c049ec27c98c531b5f05b1c2d267cba73Etan Cohen
213