Add Handover Failure Mode to Radio Hal
On a handover request failure, the modem can now determine whether or not to fallback. There is also the option to revert to the legacy logic. Following the legacy logic is the default behavior. Test: FrameworkTelephonyTests Bug: 161572465 Change-Id: I194aca34131301a3507ad3ba99be278cbf6fa87b
This commit is contained in:
@@ -474,6 +474,7 @@ java_library {
|
||||
"android.hardware.radio-V1.3-java",
|
||||
"android.hardware.radio-V1.4-java",
|
||||
"android.hardware.radio-V1.5-java",
|
||||
"android.hardware.radio-V1.6-java",
|
||||
"android.hardware.thermal-V1.0-java-constants",
|
||||
"android.hardware.thermal-V1.0-java",
|
||||
"android.hardware.thermal-V1.1-java",
|
||||
@@ -1345,7 +1346,7 @@ droidstubs {
|
||||
},
|
||||
libs: [
|
||||
"framework-annotations-lib",
|
||||
"android.hardware.radio-V1.5-java",
|
||||
"android.hardware.radio-V1.6-java",
|
||||
],
|
||||
check_api: {
|
||||
current: {
|
||||
|
||||
@@ -11543,11 +11543,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 HANDOVER_FAILURE_MODE_DO_FALLBACK = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 0; // 0x0
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1; // 0xffffffff
|
||||
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
|
||||
|
||||
@@ -10407,11 +10407,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 HANDOVER_FAILURE_MODE_DO_FALLBACK = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 0; // 0x0
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1; // 0xffffffff
|
||||
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
|
||||
|
||||
@@ -900,11 +900,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 HANDOVER_FAILURE_MODE_DO_FALLBACK = 1; // 0x1
|
||||
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 0; // 0x0
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2; // 0x2
|
||||
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3; // 0x3
|
||||
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1; // 0xffffffff
|
||||
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
|
||||
|
||||
@@ -80,33 +80,33 @@ public final class DataCallResponse implements Parcelable {
|
||||
/**
|
||||
* Data handover failure mode is unknown.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0;
|
||||
public static final int HANDOVER_FAILURE_MODE_UNKNOWN = -1;
|
||||
|
||||
/**
|
||||
* 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;
|
||||
public static final int HANDOVER_FAILURE_MODE_LEGACY = 0;
|
||||
|
||||
/**
|
||||
* Perform fallback to the source data transport on data handover failure.
|
||||
*/
|
||||
public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2;
|
||||
public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 1;
|
||||
|
||||
/**
|
||||
* Do not perform fallback to the source data transport on data handover failure.
|
||||
* Frameworks should keep retrying handover by sending
|
||||
* Framework will retry setting up a new data connection 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;
|
||||
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 2;
|
||||
|
||||
/**
|
||||
* Do not perform fallback to the source transport on data handover failure.
|
||||
* Frameworks should retry setup a new data connection by sending
|
||||
* Framework will retry setting up 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;
|
||||
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 3;
|
||||
|
||||
private final @DataFailureCause int mCause;
|
||||
private final int mSuggestedRetryTime;
|
||||
@@ -332,6 +332,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
.append(" mtu=").append(getMtu())
|
||||
.append(" mtuV4=").append(getMtuV4())
|
||||
.append(" mtuV6=").append(getMtuV6())
|
||||
.append(" handoverFailureMode=").append(getHandoverFailureMode())
|
||||
.append("}");
|
||||
return sb.toString();
|
||||
}
|
||||
@@ -361,14 +362,15 @@ public final class DataCallResponse implements Parcelable {
|
||||
&& mPcscfAddresses.containsAll(other.mPcscfAddresses)
|
||||
&& mMtu == other.mMtu
|
||||
&& mMtuV4 == other.mMtuV4
|
||||
&& mMtuV6 == other.mMtuV6;
|
||||
&& mMtuV6 == other.mMtuV6
|
||||
&& mHandoverFailureMode == other.mHandoverFailureMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType,
|
||||
mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses,
|
||||
mMtu, mMtuV4, mMtuV6);
|
||||
mMtu, mMtuV4, mMtuV6, mHandoverFailureMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user