IMS: Support for IMS Registration error codes

- Add support for propagation of IMS Registration errors
- Add reason type - operator specific
- Add call drop reason type and error code CD-04 that specifies there was no
  qualified LTE network to handover to from a wifi call

Change-Id: Ib9c93dfafe8d8fbdece3a5daf6fd13ef0c16f158
This commit is contained in:
Rekha Kumar
2015-02-24 11:45:36 -08:00
committed by Pavel Zhamaitsiak
parent ee314cfea5
commit b54d218d8b
2 changed files with 26 additions and 38 deletions

View File

@ -25,26 +25,6 @@ import android.os.Parcelable;
* @hide
*/
public class ImsReasonInfo implements Parcelable {
/**
* Reason types, defines the error category.
* UNSPECIFIED - unknown error reason
* LOCAL - indicates the local/device error reason
* LOCAL_TIMEOUT - indicates the local error reason when a specific timer is expired
* STATUSCODE - indicates the interworking error reason by SIP status code received
* from the network
* MEDIA - indicates the media error reason (local resource, SDP parameter, etc.)
* USER - indicates the error reason by the local or remote user
* UT - indicates the error reason for the supplementary service configuration
*/
public static final int TYPE_UNSPECIFIED = 0;
public static final int TYPE_LOCAL = 1;
public static final int TYPE_TIMEOUT = 2;
public static final int TYPE_STATUSCODE = 3;
public static final int TYPE_MEDIA = 4;
public static final int TYPE_USER = 5;
public static final int TYPE_UT = 8;
/**
* Specific code of each types
*/
@ -228,6 +208,24 @@ public class ImsReasonInfo implements Parcelable {
*/
public static final int CODE_ECBM_NOT_SUPPORTED = 901;
/**
* Ims Registration error code
*/
public static final int CODE_REGISTRATION_ERROR = 1000;
/**
* CALL DROP error codes (Call could drop because of many reasons like Network not available,
* handover, failed, etc)
*/
/**
* CALL DROP error code for the case when a device is ePDG capable and when the user is on an
* active wifi call and at the edge of coverage and there is no qualified LTE network available
* to handover the call to. We get a handover NOT_TRIGERRED message from the modem. This error
* code is received as part of the handover message.
*/
public static final int CODE_CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE = 1100;
/**
* Network string error messages.
* mExtraMessage may have these values.
@ -235,17 +233,13 @@ public class ImsReasonInfo implements Parcelable {
public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED
= "Forbidden. Not Authorized for Service";
// For reason type
public int mReasonType;
// For main reason code
public int mCode;
// For the extra code value; it depends on the code value.
public int mExtraCode;
// For the additional message of the reason info.
public String mExtraMessage;
public ImsReasonInfo() {
mReasonType = TYPE_UNSPECIFIED;
mCode = CODE_UNSPECIFIED;
mExtraCode = CODE_UNSPECIFIED;
mExtraMessage = null;
@ -256,14 +250,12 @@ public class ImsReasonInfo implements Parcelable {
}
public ImsReasonInfo(int code, int extraCode) {
mReasonType = (int) (code / 100);
mCode = code;
mExtraCode = extraCode;
mExtraMessage = null;
}
public ImsReasonInfo(int code, int extraCode, String extraMessage) {
mReasonType = (int) (code / 100);
mCode = code;
mExtraCode = extraCode;
mExtraMessage = extraMessage;
@ -290,21 +282,13 @@ public class ImsReasonInfo implements Parcelable {
return mExtraMessage;
}
/**
*
*/
public int getReasonType() {
return mReasonType;
}
/**
* Returns the string format of {@link ImsReasonInfo}
*
* @return the string format of {@link ImsReasonInfo}
*/
public String toString() {
return "ImsReasonInfo :: {" + mReasonType + ", "
+ mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
return "ImsReasonInfo :: {" + mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
}
@Override
@ -314,14 +298,12 @@ public class ImsReasonInfo implements Parcelable {
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mReasonType);
out.writeInt(mCode);
out.writeInt(mExtraCode);
out.writeString(mExtraMessage);
}
private void readFromParcel(Parcel in) {
mReasonType = in.readInt();
mCode = in.readInt();
mExtraCode = in.readInt();
mExtraMessage = in.readString();

View File

@ -16,6 +16,7 @@
package com.android.ims.internal;
import com.android.ims.ImsReasonInfo;
/**
* A listener type for receiving notifications about the changes to
* the IMS connection(registration).
@ -28,10 +29,15 @@ interface IImsRegistrationListener {
*/
void registrationConnected();
/**
* Notifies the application when the device is trying to connect the IMS network.
*/
void registrationProgressing();
/**
* Notifies the application when the device is disconnected from the IMS network.
*/
void registrationDisconnected();
void registrationDisconnected(in ImsReasonInfo imsReasonInfo);
/**
* Notifies the application when its suspended IMS connection is resumed,