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

8.
- Propagate IMS supplementary services to telephony framework
- Introduce call forwarding history info.

Bug: 21725750
Squash of 2 earlier CLs:
         Change-Id: I52a64e9a5df3479189f62921a01655a50fb386fc
         Change-Id: Idc3a433785e84a3d683cbcfc7fb90f0b89dced12

Change-Id: I428ce3c6a043e43b86dea41622e0a828d8b45e53
This commit is contained in:
Shriram Ganesh
2015-05-31 09:18:48 -07:00
committed by Etan Cohen
parent b304fc0aaf
commit ddf570e822
11 changed files with 172 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

@@ -252,6 +252,13 @@ public abstract class Connection extends Conferenceable {
// Next CAPABILITY value: 0x00400000
//**********************************************************************************************
/**
* Call extras key to pack/unpack call history info.
* The value for this key should be an ArrayList of Strings.
* @hide
*/
public static final String EXTRA_CALL_HISTORY_INFO = "EXTRA_CALL_HISTORY_INFO";
// Flag controlling whether PII is emitted into the logs
private static final boolean PII_DEBUG = Log.isLoggable(android.util.Log.DEBUG);

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

@@ -174,11 +174,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,20 @@
/*
* Copyright (c) 2015 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 ImsSuppServiceNotification;

View File

@@ -0,0 +1,101 @@
/*
* Copyright (c) 2015 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.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.