diff options
8 files changed, 247 insertions, 4 deletions
diff --git a/Android.mk b/Android.mk index 4dc5fd349109..0bd6b7f925d2 100644 --- a/Android.mk +++ b/Android.mk @@ -413,6 +413,8 @@ LOCAL_SRC_FILES += \ telephony/java/com/android/ims/internal/IImsRegistrationListener.aidl \ telephony/java/com/android/ims/internal/IImsEcbm.aidl \ telephony/java/com/android/ims/internal/IImsEcbmListener.aidl \ + telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl \ + telephony/java/com/android/ims/internal/IImsMultiEndpoint.aidl \ telephony/java/com/android/ims/internal/IImsService.aidl \ telephony/java/com/android/ims/internal/IImsStreamMediaSession.aidl \ telephony/java/com/android/ims/internal/IImsUt.aidl \ diff --git a/telephony/java/com/android/ims/ImsExternalCallState.aidl b/telephony/java/com/android/ims/ImsExternalCallState.aidl new file mode 100644 index 000000000000..c208702a8c34 --- /dev/null +++ b/telephony/java/com/android/ims/ImsExternalCallState.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 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; + +parcelable ImsExternalCallState; diff --git a/telephony/java/com/android/ims/ImsExternalCallState.java b/telephony/java/com/android/ims/ImsExternalCallState.java new file mode 100644 index 000000000000..edb6bfcf68c0 --- /dev/null +++ b/telephony/java/com/android/ims/ImsExternalCallState.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2016 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; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; +import android.telephony.Rlog; + +/* + * This file contains all the api's through which + * information received in Dialog Event Package can be + * queried + */ + +/** + * Parcelable object to handle VICE Dialog Information + * @hide + */ +public class ImsExternalCallState implements Parcelable { + + private static final String TAG = "ImsExternalCallState"; + + // Dialog States + public static final int CALL_STATE_CONFIRMED = 1; + public static final int CALL_STATE_TERMINATED = 2; + // Dialog Id + public int mCallId; + // Number + public Uri mAddress; + public boolean mIsPullable; + // CALL_STATE_CONFIRMED / CALL_STATE_TERMINATED + public int mCallState; + // ImsCallProfile#CALL_TYPE_* + public int mCallType; + public boolean mIsHeld; + + public ImsExternalCallState() { + } + + public ImsExternalCallState(Parcel in) { + mCallId = in.readInt(); + ClassLoader classLoader = ImsExternalCallState.class.getClassLoader(); + mAddress = in.readParcelable(classLoader); + mIsPullable = (in.readInt() != 0); + mCallState = in.readInt(); + mCallType = in.readInt(); + mIsHeld = (in.readInt() != 0); + Rlog.d(TAG, "ImsExternalCallState const = " + + "callid = " + getCallId() + + ", address = " + getAddress() + + ", mCallState = " + getCallState() + + ", calltype = " + getCallType() + + ", isheld = " + isCallHeld()); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(mCallId); + out.writeParcelable(mAddress, 0); + out.writeInt(mIsPullable ? 1 : 0); + out.writeInt(mCallState); + out.writeInt(mCallType); + out.writeInt(mIsHeld ? 1 : 0); + } + + public static final Parcelable.Creator<ImsExternalCallState> CREATOR = + new Parcelable.Creator<ImsExternalCallState>() { + @Override + public ImsExternalCallState createFromParcel(Parcel in) { + return new ImsExternalCallState(in); + } + + @Override + public ImsExternalCallState[] newArray(int size) { + return new ImsExternalCallState[size]; + } + }; + + public int getCallId() { + return mCallId; + } + + public Uri getAddress() { + return mAddress; + } + + public boolean isCallPullable() { + return mIsPullable; + } + + public int getCallState() { + return mCallState; + } + + public int getCallType() { + return mCallType; + } + + public boolean isCallHeld() { + return mIsHeld; + } + + @Override + public String toString() { + return "ImsExternalCallState { mCallId = " + mCallId + + ", mAddress = " + mAddress + + ", mIsPullable = " + mIsPullable + + ", mCallState = " + mCallState + + ", mCallType = " + mCallType + + ", mIsHeld = " + mIsHeld + "}"; + } +} diff --git a/telephony/java/com/android/ims/ImsReasonInfo.java b/telephony/java/com/android/ims/ImsReasonInfo.java index 558c1dc1866c..f06d15456ac0 100644 --- a/telephony/java/com/android/ims/ImsReasonInfo.java +++ b/telephony/java/com/android/ims/ImsReasonInfo.java @@ -241,12 +241,12 @@ public class ImsReasonInfo implements Parcelable { public static final int CODE_ANSWERED_ELSEWHERE = 1014; /** - * Call pull request failure from the network. + * For MultiEndpoint - Call Pull request has failed */ public static final int CODE_CALL_PULL_OUT_OF_SYNC = 1015; /** - * Call ended due to being pulled onto another device. + * For MultiEndpoint - Call has been pulled from primary to secondary */ public static final int CODE_CALL_END_CAUSE_CALL_PULL = 1016; diff --git a/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl b/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl new file mode 100644 index 000000000000..70a474ec41da --- /dev/null +++ b/telephony/java/com/android/ims/internal/IImsExternalCallStateListener.aidl @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016 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 com.android.ims.ImsExternalCallState; + +/** + * A listener type for receiving notifications about DEP through IMS + * + * {@hide} + */ +interface IImsExternalCallStateListener { + + /** + * Notifies client when Dialog Event Package update is received + * + * @param List<ImsExternalCallState> - External Call Dialog + * + * @return void. + */ + void notifyRefreshExternalCallState(in List<ImsExternalCallState> externalCallDialogs); + +} + diff --git a/telephony/java/com/android/ims/internal/IImsMultiEndpoint.aidl b/telephony/java/com/android/ims/internal/IImsMultiEndpoint.aidl new file mode 100644 index 000000000000..1bfb9b2b4d78 --- /dev/null +++ b/telephony/java/com/android/ims/internal/IImsMultiEndpoint.aidl @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016 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 com.android.ims.internal.IImsExternalCallStateListener; + +/** + * Provides the ImsMultiEndpoint interface + * + * {@hide} + */ +interface IImsMultiEndpoint { + /** + * Sets the listener. + */ + void setListener(in IImsExternalCallStateListener listener); + + + /** + * Query api to get the latest Dialog Event Package information + * Should be invoked only after setListener is done + */ + void requestDialogEventPackageState(); +} diff --git a/telephony/java/com/android/ims/internal/IImsService.aidl b/telephony/java/com/android/ims/internal/IImsService.aidl index 30c48d7a839a..a9614a63d872 100644 --- a/telephony/java/com/android/ims/internal/IImsService.aidl +++ b/telephony/java/com/android/ims/internal/IImsService.aidl @@ -19,12 +19,13 @@ package com.android.ims.internal; import android.app.PendingIntent; import com.android.ims.ImsCallProfile; -import com.android.ims.internal.IImsRegistrationListener; 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.IImsMultiEndpoint; +import com.android.ims.internal.IImsRegistrationListener; import com.android.ims.internal.IImsUt; -import com.android.ims.internal.IImsConfig; import android.os.Message; @@ -75,4 +76,9 @@ interface IImsService { * Used to set current TTY Mode. */ void setUiTTYMode(int serviceId, int uiTtyMode, in Message onComplete); + + /** + * MultiEndpoint interface for DEP. + */ + IImsMultiEndpoint getMultiEndpointInterface(int serviceId); } diff --git a/telephony/java/com/android/internal/telephony/TelephonyProperties.java b/telephony/java/com/android/internal/telephony/TelephonyProperties.java index 645c3a17db14..ea3b5c97c4c9 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyProperties.java +++ b/telephony/java/com/android/internal/telephony/TelephonyProperties.java @@ -217,4 +217,12 @@ public interface TelephonyProperties * or Earpiece, based on the default audio routing strategy. */ static final String PROPERTY_VIDEOCALL_AUDIO_OUTPUT = "persist.radio.call.audio.output"; + + /** + * For MultiEndpoint Feature + * If true: Dial intent is for call pull functionality + * if false: normal dial + */ + static final String EXTRA_IS_CALL_PULL = + "android.telephony.extra.IS_CALL_PULL"; } |