Adds @hide ImsService API implementations to be used for the new dynamic ImsResolver. 1) ImsService - The main class that all vendor ImsServices will implement. ImsServices that implement this method must return their implementations of MMTelFeature when onCreateMMTelFeature is called. The base ImsService class also relays all method calls through itself as a proxy. So, when Telephony calls a method, the ImsService figures out which MMTelFeature should be called (by slot) and then calls that feature's method implementation. 2) MMTelFeature/RcsFeature - Implements the I*Feature interfaces, which are used on both sides of the interface. The vendor implemented ImsService must implement all methods provided in the I*Feature interface in their implementation of *Feature that they return to the ImsService. 3) ImsServiceProxy[Compat] - The Proxy interface in telephony that will be called in ImsManager. When a method in this class is called, it will call the respective AIDL function: Telephony -> IImsServiceController AIDL -> vendor ImsService -> vendor ImsFeature implementation. ImsServiceProxyCompat is there to provide backwards compatibility with older ImsServices that do not use the new ImsService implementations. It implements all of the methods that are defined in the new I*Feature interfaces and translates them to the old ImsService AIDL calls. Test: Adds Unit Tests (see frameworks/opt/telephony) Change-Id: Id3466c178384158c788ab1d708ab108bb95866fc
66 lines
3.0 KiB
Plaintext
66 lines
3.0 KiB
Plaintext
/*
|
|
* Copyright (c) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.ims.internal;
|
|
|
|
import android.app.PendingIntent;
|
|
|
|
import com.android.ims.ImsCallProfile;
|
|
import com.android.ims.internal.IImsCallSession;
|
|
import com.android.ims.internal.IImsCallSessionListener;
|
|
import com.android.ims.internal.IImsConfig;
|
|
import com.android.ims.internal.IImsEcbm;
|
|
import com.android.ims.internal.IImsFeatureStatusCallback;
|
|
import com.android.ims.internal.IImsMultiEndpoint;
|
|
import com.android.ims.internal.IImsRegistrationListener;
|
|
import com.android.ims.internal.IImsUt;
|
|
|
|
import android.os.Message;
|
|
|
|
/**
|
|
* See ImsService and IMMTelFeature for more information.
|
|
* {@hide}
|
|
*/
|
|
interface IImsServiceController {
|
|
// ImsService Control
|
|
void createImsFeature(int slotId, int feature, IImsFeatureStatusCallback c);
|
|
void removeImsFeature(int slotId, int feature);
|
|
// MMTel Feature
|
|
int startSession(int slotId, int featureType, in PendingIntent incomingCallIntent,
|
|
in IImsRegistrationListener listener);
|
|
void endSession(int slotId, int featureType, int sessionId);
|
|
boolean isConnected(int slotId, int featureType, int sessionId, int callSessionType, int callType);
|
|
boolean isOpened(int slotId, int featureType, int sessionId);
|
|
int getFeatureStatus(int slotId, int featureType);
|
|
void addRegistrationListener(int slotId, int featureType, int sessionId,
|
|
in IImsRegistrationListener listener);
|
|
void removeRegistrationListener(int slotId, int featureType, int sessionId,
|
|
in IImsRegistrationListener listener);
|
|
ImsCallProfile createCallProfile(int slotId, int featureType, int sessionId, int callSessionType, int callType);
|
|
IImsCallSession createCallSession(int slotId, int featureType, int sessionId,
|
|
in ImsCallProfile profile, IImsCallSessionListener listener);
|
|
IImsCallSession getPendingCallSession(int slotId, int featureType, int sessionId,
|
|
String callId);
|
|
IImsUt getUtInterface(int slotId, int featureType, int sessionId);
|
|
IImsConfig getConfigInterface(int slotId, int featureType, int sessionId);
|
|
void turnOnIms(int slotId, int featureType, int sessionId);
|
|
void turnOffIms(int slotId, int featureType, int sessionId);
|
|
IImsEcbm getEcbmInterface(int slotId, int featureType, int sessionId);
|
|
void setUiTTYMode(int slotId, int featureType, int sessionId, int uiTtyMode,
|
|
in Message onComplete);
|
|
IImsMultiEndpoint getMultiEndpointInterface(int slotId, int featureType, int sessionId);
|
|
}
|