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 * @hide
*/ */
public class ImsReasonInfo implements Parcelable { 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 * Specific code of each types
*/ */
@ -228,6 +208,24 @@ public class ImsReasonInfo implements Parcelable {
*/ */
public static final int CODE_ECBM_NOT_SUPPORTED = 901; 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. * Network string error messages.
* mExtraMessage may have these values. * mExtraMessage may have these values.
@ -235,17 +233,13 @@ public class ImsReasonInfo implements Parcelable {
public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED public static final String EXTRA_MSG_SERVICE_NOT_AUTHORIZED
= "Forbidden. Not Authorized for Service"; = "Forbidden. Not Authorized for Service";
// For reason type
public int mReasonType;
// For main reason code // For main reason code
public int mCode; public int mCode;
// For the extra code value; it depends on the code value. // For the extra code value; it depends on the code value.
public int mExtraCode; public int mExtraCode;
// For the additional message of the reason info. // For the additional message of the reason info.
public String mExtraMessage; public String mExtraMessage;
public ImsReasonInfo() { public ImsReasonInfo() {
mReasonType = TYPE_UNSPECIFIED;
mCode = CODE_UNSPECIFIED; mCode = CODE_UNSPECIFIED;
mExtraCode = CODE_UNSPECIFIED; mExtraCode = CODE_UNSPECIFIED;
mExtraMessage = null; mExtraMessage = null;
@ -256,14 +250,12 @@ public class ImsReasonInfo implements Parcelable {
} }
public ImsReasonInfo(int code, int extraCode) { public ImsReasonInfo(int code, int extraCode) {
mReasonType = (int) (code / 100);
mCode = code; mCode = code;
mExtraCode = extraCode; mExtraCode = extraCode;
mExtraMessage = null; mExtraMessage = null;
} }
public ImsReasonInfo(int code, int extraCode, String extraMessage) { public ImsReasonInfo(int code, int extraCode, String extraMessage) {
mReasonType = (int) (code / 100);
mCode = code; mCode = code;
mExtraCode = extraCode; mExtraCode = extraCode;
mExtraMessage = extraMessage; mExtraMessage = extraMessage;
@ -290,21 +282,13 @@ public class ImsReasonInfo implements Parcelable {
return mExtraMessage; return mExtraMessage;
} }
/**
*
*/
public int getReasonType() {
return mReasonType;
}
/** /**
* Returns the string format of {@link ImsReasonInfo} * Returns the string format of {@link ImsReasonInfo}
* *
* @return the string format of {@link ImsReasonInfo} * @return the string format of {@link ImsReasonInfo}
*/ */
public String toString() { public String toString() {
return "ImsReasonInfo :: {" + mReasonType + ", " return "ImsReasonInfo :: {" + mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
+ mCode + ", " + mExtraCode + ", " + mExtraMessage + "}";
} }
@Override @Override
@ -314,14 +298,12 @@ public class ImsReasonInfo implements Parcelable {
@Override @Override
public void writeToParcel(Parcel out, int flags) { public void writeToParcel(Parcel out, int flags) {
out.writeInt(mReasonType);
out.writeInt(mCode); out.writeInt(mCode);
out.writeInt(mExtraCode); out.writeInt(mExtraCode);
out.writeString(mExtraMessage); out.writeString(mExtraMessage);
} }
private void readFromParcel(Parcel in) { private void readFromParcel(Parcel in) {
mReasonType = in.readInt();
mCode = in.readInt(); mCode = in.readInt();
mExtraCode = in.readInt(); mExtraCode = in.readInt();
mExtraMessage = in.readString(); mExtraMessage = in.readString();

View File

@ -16,6 +16,7 @@
package com.android.ims.internal; package com.android.ims.internal;
import com.android.ims.ImsReasonInfo;
/** /**
* A listener type for receiving notifications about the changes to * A listener type for receiving notifications about the changes to
* the IMS connection(registration). * the IMS connection(registration).
@ -28,10 +29,15 @@ interface IImsRegistrationListener {
*/ */
void registrationConnected(); 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. * 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, * Notifies the application when its suspended IMS connection is resumed,