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:
committed by
Pavel Zhamaitsiak
parent
ee314cfea5
commit
b54d218d8b
@ -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();
|
||||||
|
@ -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,
|
||||||
|
Reference in New Issue
Block a user