14d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn/* 24d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Copyright (C) 2016 The Android Open Source Project 34d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * 44d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Licensed under the Apache License, Version 2.0 (the "License"); 54d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * you may not use this file except in compliance with the License. 64d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * You may obtain a copy of the License at 74d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * 84d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * http://www.apache.org/licenses/LICENSE-2.0 94d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * 104d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Unless required by applicable law or agreed to in writing, software 114d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * distributed under the License is distributed on an "AS IS" BASIS, 124d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * See the License for the specific language governing permissions and 144d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * limitations under the License 154d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn */ 164d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 174d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnpackage com.android.ims; 184d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 194d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnimport com.android.ims.internal.IImsMultiEndpoint; 204d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnimport com.android.ims.internal.IImsExternalCallStateListener; 214d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 224d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnimport android.os.RemoteException; 234d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnimport android.telephony.Rlog; 244d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 254d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnimport java.util.List; 264d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 274d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn/** 284d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Provides APIs for the IMS multi-endpoint functionality. Specifically, provides a means for IMS 294d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * to subscribe to dialog event packages issued by the network. 304d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * 314d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * @hide 324d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn */ 334d128b6db8288af77d095d6239d6332e05469f35Tyler Gunnpublic class ImsMultiEndpoint { 344d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn /** 354d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Adapter class for {@link IImsExternalCallStateListener}. 364d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn */ 374d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn private class ImsExternalCallStateListenerProxy extends IImsExternalCallStateListener.Stub { 384d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn private ImsExternalCallStateListener mListener; 394d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 404d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn public ImsExternalCallStateListenerProxy(ImsExternalCallStateListener listener) { 414d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn mListener = listener; 424d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 434d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 444d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 454d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn /** 464d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * Notifies client when Dialog Event Package update is received 474d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * 484d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn * @param externalCallState the external call state. 494d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn */ 504d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn @Override 514d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn public void onImsExternalCallStateUpdate(List<ImsExternalCallState> externalCallState) { 524d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn if (DBG) Rlog.d(TAG, "onImsExternalCallStateUpdate"); 534d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 544d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn if (mListener != null) { 554d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn mListener.onImsExternalCallStateUpdate(externalCallState); 564d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 574d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 584d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 594d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 604d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn private static final String TAG = "ImsMultiEndpoint"; 614d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn private static final boolean DBG = true; 624d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 634d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn private final IImsMultiEndpoint mImsMultiendpoint; 644d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 654d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn public ImsMultiEndpoint(IImsMultiEndpoint iImsMultiEndpoint) { 664d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn if (DBG) Rlog.d(TAG, "ImsMultiEndpoint created"); 674d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn mImsMultiendpoint = iImsMultiEndpoint; 684d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 694d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn 704d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn public void setExternalCallStateListener(ImsExternalCallStateListener externalCallStateListener) 714d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn throws ImsException { 724d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn try { 734d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn if (DBG) Rlog.d(TAG, "setExternalCallStateListener"); 744d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn mImsMultiendpoint.setListener(new ImsExternalCallStateListenerProxy( 754d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn externalCallStateListener)); 764d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } catch (RemoteException e) { 774d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn throw new ImsException("setExternalCallStateListener could not be set.", e, 784d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN); 794d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 804d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn } 814d128b6db8288af77d095d6239d6332e05469f35Tyler Gunn} 82