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; 18cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 19cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.IImsMultiEndpoint; 20cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport com.android.ims.internal.IImsExternalCallStateListener; 21cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 22cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport android.os.RemoteException; 23cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport android.telephony.Rlog; 24cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 25cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakimport java.util.List; 26cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 27cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak/** 28cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Provides APIs for the IMS multi-endpoint functionality. Specifically, provides a means for IMS 29cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * to subscribe to dialog event packages issued by the network. 30cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * 31cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * @hide 32cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak */ 33cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiakpublic class ImsMultiEndpoint { 34cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak /** 35cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Adapter class for {@link IImsExternalCallStateListener}. 36cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak */ 37cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak private class ImsExternalCallStateListenerProxy extends IImsExternalCallStateListener.Stub { 38cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak private ImsExternalCallStateListener mListener; 39cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 40cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak public ImsExternalCallStateListenerProxy(ImsExternalCallStateListener listener) { 41cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak mListener = listener; 42cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 43cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 44cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 45cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak /** 46cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * Notifies client when Dialog Event Package update is received 47cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * 48cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak * @param externalCallState the external call state. 49cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak */ 50cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak @Override 51cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak public void onImsExternalCallStateUpdate(List<ImsExternalCallState> externalCallState) { 52cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak if (DBG) Rlog.d(TAG, "onImsExternalCallStateUpdate"); 53cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 54cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak if (mListener != null) { 55cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak mListener.onImsExternalCallStateUpdate(externalCallState); 56cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 57cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 58cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 59cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 60cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak private static final String TAG = "ImsMultiEndpoint"; 61cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak private static final boolean DBG = true; 62cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 63cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak private final IImsMultiEndpoint mImsMultiendpoint; 64cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 65cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak public ImsMultiEndpoint(IImsMultiEndpoint iImsMultiEndpoint) { 66cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak if (DBG) Rlog.d(TAG, "ImsMultiEndpoint created"); 67cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak mImsMultiendpoint = iImsMultiEndpoint; 68cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 69cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak 70cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak public void setExternalCallStateListener(ImsExternalCallStateListener externalCallStateListener) 71cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak throws ImsException { 72cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak try { 73cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak if (DBG) Rlog.d(TAG, "setExternalCallStateListener"); 74cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak mImsMultiendpoint.setListener(new ImsExternalCallStateListenerProxy( 75cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak externalCallStateListener)); 76cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } catch (RemoteException e) { 77cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak throw new ImsException("setExternalCallStateListener could not be set.", e, 78cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN); 79cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 80cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak } 81cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak} 82cfedd20d54687449bb6a6982085003cbf9a22bcbPavel Zhamaitsiak