MWI,phantom call,Suppl services, error codes

1. IMS MWI Feature
- Add new API to update waiting
voice message count, for UI
propagation based on RFC 3842

2. phantom call support

Supplementary services

3. IMS : Incoming Call Barring
- Modified existing API to support
   request like registration,activation,
   deactivation,erasure,interogation.

4.Unsol supplementary service notification
- send unsol supplementary notification to UI
- add call history info

Miscellaneous
5. Ims: Originate conference call in DIALING state

6. IMS: Addition of Extras to ImsCallProfile
- Add EXTRA string definitions to ImsCallProfile

7. IMS: Definition of error code
- answered elsewhere
- FDN call failure

Change-Id: I52a64e9a5df3479189f62921a01655a50fb386fc
This commit is contained in:
Shriram Ganesh
2015-05-31 09:18:48 -07:00
committed by Anthony Lee
parent 7c38f4444f
commit 4aef69ab52
10 changed files with 191 additions and 3 deletions

View File

@@ -968,7 +968,6 @@ public final class Call {
unregisterCallback(listener);
}
/** {@hide} */
Call(Phone phone, String telecomCallId, InCallAdapter inCallAdapter) {
mPhone = phone;
@@ -977,6 +976,14 @@ public final class Call {
mState = STATE_NEW;
}
/** {@hide} */
Call(Phone phone, String telecomCallId, InCallAdapter inCallAdapter, int state) {
mPhone = phone;
mTelecomCallId = telecomCallId;
mInCallAdapter = inCallAdapter;
mState = state;
}
/** {@hide} */
final String internalGetCallId() {
return mTelecomCallId;

View File

@@ -122,7 +122,8 @@ public final class Phone {
}
final void internalAddCall(ParcelableCall parcelableCall) {
Call call = new Call(this, parcelableCall.getId(), mInCallAdapter);
Call call = new Call(this, parcelableCall.getId(), mInCallAdapter,
parcelableCall.getState());
mCallByTelecomCallId.put(parcelableCall.getId(), call);
mCalls.add(call);
checkCallTree(parcelableCall);

View File

@@ -172,11 +172,19 @@ public class ImsCallProfile implements Parcelable {
* cna : Calling name
* ussd : For network-initiated USSD, MT only
* remote_uri : Connected user identity (it can be used for the conference)
* ChildNum: Child number info.
* Codec: Codec info.
* DisplayText: Display text for the call.
* AdditionalCallInfo: Additional call info.
*/
public static final String EXTRA_OI = "oi";
public static final String EXTRA_CNA = "cna";
public static final String EXTRA_USSD = "ussd";
public static final String EXTRA_REMOTE_URI = "remote_uri";
public static final String EXTRA_CHILD_NUMBER = "ChildNum";
public static final String EXTRA_CODEC = "Codec";
public static final String EXTRA_DISPLAY_TEXT = "DisplayText";
public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
public int mServiceType;
public int mCallType;

View File

@@ -99,6 +99,9 @@ public class ImsReasonInfo implements Parcelable {
// MT : No action from user after alerting the call
public static final int CODE_TIMEOUT_NO_ANSWER_CALL_UPDATE = 203;
//Call failures for FDN
public static final int CODE_FDN_BLOCKED = 241;
/**
* STATUSCODE (SIP response code) (IMS -> Telephony)
*/
@@ -226,6 +229,12 @@ public class ImsReasonInfo implements Parcelable {
*/
public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100;
/**
* MT call has ended due to a release from the network
* because the call was answered elsewhere
*/
public static final int CODE_ANSWERED_ELSEWHERE = 1014;
/**
* Network string error messages.
* mExtraMessage may have these values.

View File

@@ -34,6 +34,7 @@ public class ImsSsInfo implements Parcelable {
// 0: disabled, 1: enabled
public int mStatus;
public String mIcbNum;
public ImsSsInfo() {
}
@@ -50,6 +51,7 @@ public class ImsSsInfo implements Parcelable {
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mStatus);
out.writeString(mIcbNum);
}
@Override
@@ -59,6 +61,7 @@ public class ImsSsInfo implements Parcelable {
private void readFromParcel(Parcel in) {
mStatus = in.readInt();
mIcbNum = in.readString();
}
public static final Creator<ImsSsInfo> CREATOR =

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.android.ims;
parcelable ImsSuppServiceNotification;

View File

@@ -0,0 +1,114 @@
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.android.ims;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Arrays;
/**
* Parcelable object to handle IMS supplementary service notifications.
*
* @hide
*/
public class ImsSuppServiceNotification implements Parcelable {
private static final String TAG = "ImsSuppServiceNotification";
/** Type of notification: 0 = MO; 1 = MT */
public int notificationType;
/** TS 27.007 7.17 "code1" or "code2" */
public int code;
/** TS 27.007 7.17 "index" - Not used currently*/
public int index;
/** TS 27.007 7.17 "type" (MT only) - Not used currently */
public int type;
/** TS 27.007 7.17 "number" (MT only) */
public String number;
/** List of forwarded numbers, if any */
public String[] history;
public ImsSuppServiceNotification() {
}
public ImsSuppServiceNotification(Parcel in) {
readFromParcel(in);
}
@Override
public String toString() {
return "{ notificationType=" + notificationType +
", code=" + code +
", index=" + index +
", type=" + type +
", number=" + number +
", history=" + Arrays.toString(history) +
" }";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(notificationType);
out.writeInt(code);
out.writeInt(index);
out.writeInt(type);
out.writeString(number);
out.writeStringArray(history);
}
private void readFromParcel(Parcel in) {
notificationType = in.readInt();
code = in.readInt();
index = in.readInt();
type = in.readInt();
number = in.readString();
history = in.createStringArray();
}
public static final Creator<ImsSuppServiceNotification> CREATOR =
new Creator<ImsSuppServiceNotification>() {
@Override
public ImsSuppServiceNotification createFromParcel(Parcel in) {
return new ImsSuppServiceNotification(in);
}
@Override
public ImsSuppServiceNotification[] newArray(int size) {
return new ImsSuppServiceNotification[size];
}
};
}

View File

@@ -21,6 +21,7 @@ import com.android.ims.ImsCallProfile;
import com.android.ims.ImsReasonInfo;
import com.android.ims.ImsConferenceState;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.ImsSuppServiceNotification;
/**
* A listener type for receiving notification on IMS call session events.
@@ -123,4 +124,10 @@ interface IImsCallSessionListener {
* @param isMultiParty {@code true} if the session became multiparty, {@code false} otherwise.
*/
void callSessionMultipartyStateChanged(in IImsCallSession session, in boolean isMultiParty);
/**
* Notifies the supplementary service information for the current session.
*/
void callSessionSuppServiceReceived(in IImsCallSession session,
in ImsSuppServiceNotification suppSrvNotification);
}

View File

@@ -72,4 +72,10 @@ interface IImsRegistrationListener {
*/
void registrationFeatureCapabilityChanged(int serviceClass,
out int[] enabledFeatures, out int[] disabledFeatures);
/**
* Updates the application with the waiting voice message count.
* @param count The number of waiting voice messages.
*/
void voiceMessageCountUpdate(int count);
}

View File

@@ -74,7 +74,7 @@ interface IImsUt {
/**
* Updates the configuration of the call barring.
*/
int updateCallBarring(int cbType, boolean enable, in String[] barrList);
int updateCallBarring(int cbType, int action, in String[] barrList);
/**
* Updates the configuration of the call forward.