Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db47938c authored by Jack Yu's avatar Jack Yu Committed by Automerger Merge Worker
Browse files

Merge "Support handover retry" am: 0c47ab06 am: 5f6c9d22 am: 24fe6340

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

Change-Id: I3b1b9abc1a08fd658254c0605200ccea96b8e069
parents bf815033 24fe6340
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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);
+7 −0
Original line number Diff line number Diff line
@@ -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);
+7 −0
Original line number Diff line number Diff line
@@ -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);
+69 −3
Original line number Diff line number Diff line
@@ -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);
        }
    }
}