Home | History | Annotate | Download | only in ims
      1 /*
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License
     15  */
     16 
     17 package com.android.internal.telephony.ims;
     18 
     19 import android.app.PendingIntent;
     20 import android.os.IBinder;
     21 import android.os.Message;
     22 import android.os.RemoteException;
     23 import android.telephony.ims.ImsCallProfile;
     24 
     25 import com.android.ims.internal.IImsCallSession;
     26 import com.android.ims.internal.IImsConfig;
     27 import com.android.ims.internal.IImsEcbm;
     28 import com.android.ims.internal.IImsMMTelFeature;
     29 import com.android.ims.internal.IImsMultiEndpoint;
     30 import com.android.ims.internal.IImsRegistrationListener;
     31 import com.android.ims.internal.IImsUt;
     32 
     33 /**
     34  * Defines "generic" MmTel commands and provides a concrete implementation for compatibility
     35  * purposes.
     36  */
     37 
     38 public class MmTelInterfaceAdapter {
     39 
     40     protected IBinder mBinder;
     41     protected int mSlotId;
     42 
     43     public MmTelInterfaceAdapter(int slotId, IBinder binder) {
     44         mBinder = binder;
     45         mSlotId = slotId;
     46     }
     47 
     48     public int startSession(PendingIntent incomingCallIntent, IImsRegistrationListener listener)
     49             throws RemoteException {
     50         return getInterface().startSession(incomingCallIntent, listener);
     51     }
     52 
     53     public void endSession(int sessionId) throws RemoteException {
     54         getInterface().endSession(sessionId);
     55     }
     56 
     57     public boolean isConnected(int callSessionType, int callType) throws RemoteException {
     58         return getInterface().isConnected(callSessionType, callType);
     59     }
     60 
     61     public boolean isOpened() throws RemoteException {
     62         return getInterface().isOpened();
     63     }
     64 
     65     public int getFeatureState() throws RemoteException {
     66         return getInterface().getFeatureStatus();
     67     }
     68 
     69     public void addRegistrationListener(IImsRegistrationListener listener) throws RemoteException {
     70         getInterface().addRegistrationListener(listener);
     71     }
     72 
     73     public void removeRegistrationListener(IImsRegistrationListener listener)
     74             throws RemoteException {
     75         getInterface().removeRegistrationListener(listener);
     76     }
     77 
     78     public ImsCallProfile createCallProfile(int sessionId, int callSessionType, int callType)
     79             throws RemoteException {
     80         return getInterface().createCallProfile(sessionId, callSessionType, callType);
     81     }
     82 
     83     public IImsCallSession createCallSession(int sessionId, ImsCallProfile profile)
     84             throws RemoteException {
     85         return getInterface().createCallSession(sessionId, profile);
     86     }
     87 
     88     public IImsCallSession getPendingCallSession(int sessionId, String callId)
     89             throws RemoteException {
     90         return getInterface().getPendingCallSession(sessionId, callId);
     91     }
     92 
     93     public IImsUt getUtInterface() throws RemoteException {
     94         return getInterface().getUtInterface();
     95     }
     96 
     97     public IImsConfig getConfigInterface() throws RemoteException {
     98         return getInterface().getConfigInterface();
     99     }
    100 
    101     public void turnOnIms() throws RemoteException {
    102         getInterface().turnOnIms();
    103     }
    104 
    105     public void turnOffIms() throws RemoteException {
    106         getInterface().turnOffIms();
    107     }
    108 
    109     public IImsEcbm getEcbmInterface() throws RemoteException {
    110         return getInterface().getEcbmInterface();
    111     }
    112 
    113     public void setUiTTYMode(int uiTtyMode, Message onComplete) throws RemoteException {
    114         getInterface().setUiTTYMode(uiTtyMode, onComplete);
    115     }
    116 
    117     public IImsMultiEndpoint getMultiEndpointInterface() throws RemoteException {
    118         return getInterface().getMultiEndpointInterface();
    119     }
    120 
    121     private IImsMMTelFeature getInterface() throws RemoteException {
    122         IImsMMTelFeature feature = IImsMMTelFeature.Stub.asInterface(mBinder);
    123         if (feature == null) {
    124             throw new RemoteException("Binder not Available");
    125         }
    126         return feature;
    127     }
    128 }
    129