Merge "Support handover retry" am: 0c47ab0656 am: 5f6c9d224f am: 24fe634048 am: db47938c2d

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1436232

Change-Id: Ia7f589101bbdfab0f1c460a04b3b56eb2cf723d3
This commit is contained in:
Jack Yu
2020-09-25 18:51:33 +00:00
committed by Automerger Merge Worker
4 changed files with 90 additions and 3 deletions

View File

@@ -11401,6 +11401,7 @@ package android.telephony.data {
method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId();
method @NonNull public String getInterfaceName();
method public int getLinkStatus();
@@ -11412,6 +11413,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -11425,6 +11431,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -10283,6 +10283,7 @@ package android.telephony.data {
method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId();
method @NonNull public String getInterfaceName();
method public int getLinkStatus();
@@ -10294,6 +10295,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -10307,6 +10313,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -873,6 +873,7 @@ package android.telephony.data {
method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId();
method @NonNull public String getInterfaceName();
method public int getLinkStatus();
@@ -884,6 +885,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -897,6 +903,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -67,6 +67,47 @@ public final class DataCallResponse implements Parcelable {
/** Indicates the data connection is active with physical link up. */
public static final int LINK_STATUS_ACTIVE = 2;
/** {@hide} */
@IntDef(prefix = "HANDOVER_FAILURE_MODE_", value = {
HANDOVER_FAILURE_MODE_LEGACY,
HANDOVER_FAILURE_MODE_DO_FALLBACK,
HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER,
HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL
})
@Retention(RetentionPolicy.SOURCE)
public @interface HandoverFailureMode {}
/**
* Data handover failure mode is unknown.
*/
public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0;
/**
* Perform fallback to the source data transport on data handover failure using
* the legacy logic, which is fallback if the fail cause is
* {@link DataFailCause#HANDOFF_PREFERENCE_CHANGED}.
*/
public static final int HANDOVER_FAILURE_MODE_LEGACY = 1;
/**
* Perform fallback to the source data transport on data handover failure.
*/
public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2;
/**
* Do not perform fallback to the source data transport on data handover failure.
* Frameworks should keep retrying handover by sending
* {@link DataService#REQUEST_REASON_HANDOVER} request to the underlying {@link DataService}.
*/
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3;
/**
* Do not perform fallback to the source transport on data handover failure.
* Frameworks should retry setup a new data connection by sending
* {@link DataService#REQUEST_REASON_NORMAL} request to the underlying {@link DataService}.
*/
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4;
private final @DataFailureCause int mCause;
private final int mSuggestedRetryTime;
private final int mId;
@@ -80,6 +121,7 @@ public final class DataCallResponse implements Parcelable {
private final int mMtu;
private final int mMtuV4;
private final int mMtuV6;
private final @HandoverFailureMode int mHandoverFailureMode;
/**
* @param cause Data call fail cause. {@link DataFailCause#NONE} indicates no error.
@@ -126,14 +168,15 @@ public final class DataCallResponse implements Parcelable {
mPcscfAddresses = (pcscfAddresses == null)
? new ArrayList<>() : new ArrayList<>(pcscfAddresses);
mMtu = mMtuV4 = mMtuV6 = mtu;
mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
}
/** @hide */
private DataCallResponse(@DataFailureCause int cause, int suggestedRetryTime, int id,
@LinkStatus int linkStatus, @ProtocolType int protocolType,
@Nullable String interfaceName, @Nullable List<LinkAddress> addresses,
@Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6) {
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
@HandoverFailureMode int handoverFailureMode) {
mCause = cause;
mSuggestedRetryTime = suggestedRetryTime;
mId = id;
@@ -151,6 +194,7 @@ public final class DataCallResponse implements Parcelable {
mMtu = mtu;
mMtuV4 = mtuV4;
mMtuV6 = mtuV6;
mHandoverFailureMode = handoverFailureMode;
}
/** @hide */
@@ -173,6 +217,7 @@ public final class DataCallResponse implements Parcelable {
mMtu = source.readInt();
mMtuV4 = source.readInt();
mMtuV6 = source.readInt();
mHandoverFailureMode = source.readInt();
}
/**
@@ -262,6 +307,13 @@ public final class DataCallResponse implements Parcelable {
return mMtuV6;
}
/**
* @return The data handover failure mode.
*/
public @HandoverFailureMode int getHandoverFailureMode() {
return mHandoverFailureMode;
}
@NonNull
@Override
public String toString() {
@@ -339,6 +391,7 @@ public final class DataCallResponse implements Parcelable {
dest.writeInt(mMtu);
dest.writeInt(mMtuV4);
dest.writeInt(mMtuV6);
dest.writeInt(mHandoverFailureMode);
}
public static final @android.annotation.NonNull Parcelable.Creator<DataCallResponse> CREATOR =
@@ -395,6 +448,8 @@ public final class DataCallResponse implements Parcelable {
private int mMtuV6;
private @HandoverFailureMode int mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
/**
* Default constructor for Builder.
*/
@@ -552,6 +607,17 @@ public final class DataCallResponse implements Parcelable {
return this;
}
/**
* Set data handover failure mode for the data call response.
*
* @param failureMode Handover failure mode.
* @return The same instance of the builder.
*/
public @NonNull Builder setHandoverFailureMode(@HandoverFailureMode int failureMode) {
mHandoverFailureMode = failureMode;
return this;
}
/**
* Build the DataCallResponse.
*
@@ -560,7 +626,7 @@ public final class DataCallResponse implements Parcelable {
public @NonNull DataCallResponse build() {
return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
mPcscfAddresses, mMtu, mMtuV4, mMtuV6);
mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode);
}
}
}