diff options
| author | 2019-01-09 14:25:44 -0800 | |
|---|---|---|
| committer | 2019-01-11 16:33:51 -0800 | |
| commit | a46bc5c266765146794e13f1e31ae2fc4ea84c7e (patch) | |
| tree | bd84bde9ea23c614acd09f6b4b1fedbd71d7c2ba | |
| parent | 9fbe48172748ce030e58c53cbefa3f3ecfbdf525 (diff) | |
Add support for LTE VoPS info
LTE VoPS support contains:
isVopsSupported: This indicates if camped network support VoLTE services.
isEmcBearerSupported: This indicates if camped network support VoLTE emergency bearers.
Bug:112194535
Test: atest
Change-Id: I6ab186d0423b857daaf579a75a852b230783eb39
5 files changed, 186 insertions, 6 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 189611d2040b..70522cbe6927 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5138,6 +5138,18 @@ package android.telephony { field public static final int WIFI_LOST = 59; // 0x3b } + public final class LteVopsSupportInfo implements android.os.Parcelable { + ctor public LteVopsSupportInfo(int, int); + method public int describeContents(); + method public int getEmcBearerSupport(); + method public int getVopsSupport(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.telephony.LteVopsSupportInfo> CREATOR; + field public static final int LTE_STATUS_NOT_AVAILABLE = 1; // 0x1 + field public static final int LTE_STATUS_NOT_SUPPORTED = 3; // 0x3 + field public static final int LTE_STATUS_SUPPORTED = 2; // 0x2 + } + public class MbmsDownloadSession implements java.lang.AutoCloseable { field public static final java.lang.String MBMS_DOWNLOAD_SERVICE_ACTION = "android.telephony.action.EmbmsDownload"; } diff --git a/telephony/java/android/telephony/DataSpecificRegistrationStates.java b/telephony/java/android/telephony/DataSpecificRegistrationStates.java index 5d809d0b7c36..d6a8065feabe 100644 --- a/telephony/java/android/telephony/DataSpecificRegistrationStates.java +++ b/telephony/java/android/telephony/DataSpecificRegistrationStates.java @@ -44,13 +44,19 @@ public class DataSpecificRegistrationStates implements Parcelable{ */ public final boolean isEnDcAvailable; + /** + * Provides network support info for LTE VoPS and LTE Emergency bearer support + */ + public final LteVopsSupportInfo lteVopsSupportInfo; + DataSpecificRegistrationStates( int maxDataCalls, boolean isDcNrRestricted, boolean isNrAvailable, - boolean isEnDcAvailable) { + boolean isEnDcAvailable, LteVopsSupportInfo lteVops) { this.maxDataCalls = maxDataCalls; this.isDcNrRestricted = isDcNrRestricted; this.isNrAvailable = isNrAvailable; this.isEnDcAvailable = isEnDcAvailable; + this.lteVopsSupportInfo = lteVops; } private DataSpecificRegistrationStates(Parcel source) { @@ -58,6 +64,7 @@ public class DataSpecificRegistrationStates implements Parcelable{ isDcNrRestricted = source.readBoolean(); isNrAvailable = source.readBoolean(); isEnDcAvailable = source.readBoolean(); + lteVopsSupportInfo = LteVopsSupportInfo.CREATOR.createFromParcel(source); } @Override @@ -66,6 +73,7 @@ public class DataSpecificRegistrationStates implements Parcelable{ dest.writeBoolean(isDcNrRestricted); dest.writeBoolean(isNrAvailable); dest.writeBoolean(isEnDcAvailable); + lteVopsSupportInfo.writeToParcel(dest, flags); } @Override @@ -81,13 +89,15 @@ public class DataSpecificRegistrationStates implements Parcelable{ .append(" isDcNrRestricted = " + isDcNrRestricted) .append(" isNrAvailable = " + isNrAvailable) .append(" isEnDcAvailable = " + isEnDcAvailable) + .append(lteVopsSupportInfo.toString()) .append(" }") .toString(); } @Override public int hashCode() { - return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable, isEnDcAvailable); + return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable, isEnDcAvailable, + lteVopsSupportInfo); } @Override @@ -100,7 +110,8 @@ public class DataSpecificRegistrationStates implements Parcelable{ return this.maxDataCalls == other.maxDataCalls && this.isDcNrRestricted == other.isDcNrRestricted && this.isNrAvailable == other.isNrAvailable - && this.isEnDcAvailable == other.isEnDcAvailable; + && this.isEnDcAvailable == other.isEnDcAvailable + && this.lteVopsSupportInfo.equals(other.lteVopsSupportInfo); } public static final Parcelable.Creator<DataSpecificRegistrationStates> CREATOR = @@ -115,4 +126,4 @@ public class DataSpecificRegistrationStates implements Parcelable{ return new DataSpecificRegistrationStates[size]; } }; -}
\ No newline at end of file +} diff --git a/telephony/java/android/telephony/LteVopsSupportInfo.aidl b/telephony/java/android/telephony/LteVopsSupportInfo.aidl new file mode 100644 index 000000000000..598459853d1c --- /dev/null +++ b/telephony/java/android/telephony/LteVopsSupportInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony; + +parcelable LteVopsSupportInfo; diff --git a/telephony/java/android/telephony/LteVopsSupportInfo.java b/telephony/java/android/telephony/LteVopsSupportInfo.java new file mode 100644 index 000000000000..0ae85c0dfa6c --- /dev/null +++ b/telephony/java/android/telephony/LteVopsSupportInfo.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony; + +import android.annotation.IntDef; +import android.annotation.SystemApi; +import android.os.Parcel; +import android.os.Parcelable; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.Objects; + +/** + * Class stores information related to LTE network VoPS support + * @hide + */ +@SystemApi +public final class LteVopsSupportInfo implements Parcelable { + + /**@hide*/ + @Retention(RetentionPolicy.SOURCE) + @IntDef( + value = {LTE_STATUS_NOT_AVAILABLE, LTE_STATUS_SUPPORTED, + LTE_STATUS_NOT_SUPPORTED}, prefix = "LTE_STATUS_") + public @interface LteVopsStatus {} + /** + * Indicates information not available from modem. + */ + public static final int LTE_STATUS_NOT_AVAILABLE = 1; + + /** + * Indicates network support the feature. + */ + public static final int LTE_STATUS_SUPPORTED = 2; + + /** + * Indicates network does not support the feature. + */ + public static final int LTE_STATUS_NOT_SUPPORTED = 3; + + @LteVopsStatus + private final int mVopsSupport; + @LteVopsStatus + private final int mEmcBearerSupport; + + public LteVopsSupportInfo(@LteVopsStatus int vops, @LteVopsStatus int emergency) { + mVopsSupport = vops; + mEmcBearerSupport = emergency; + } + + /** + * Provides the LTE VoPS support capability as described in: + * 3GPP 24.301 EPS network feature support -> IMS VoPS + */ + public @LteVopsStatus int getVopsSupport() { + return mVopsSupport; + } + + /** + * Provides the LTE Emergency bearer support capability as described in: + * 3GPP 24.301 EPS network feature support -> EMC BS + * 25.331 LTE RRC SIB1 : ims-EmergencySupport-r9 + */ + public @LteVopsStatus int getEmcBearerSupport() { + return mEmcBearerSupport; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeInt(mVopsSupport); + out.writeInt(mEmcBearerSupport); + } + + @Override + public boolean equals(Object o) { + if (o == null || !(o instanceof LteVopsSupportInfo)) { + return false; + } + if (this == o) return true; + LteVopsSupportInfo other = (LteVopsSupportInfo) o; + return mVopsSupport == other.mVopsSupport + && mEmcBearerSupport == other.mEmcBearerSupport; + } + + @Override + public int hashCode() { + return Objects.hash(mVopsSupport, mEmcBearerSupport); + } + + /** + * @return string representation. + */ + @Override + public String toString() { + return ("LteVopsSupportInfo : " + + " mVopsSupport = " + mVopsSupport + + " mEmcBearerSupport = " + mEmcBearerSupport); + } + + public static final Creator<LteVopsSupportInfo> CREATOR = + new Creator<LteVopsSupportInfo>() { + @Override + public LteVopsSupportInfo createFromParcel(Parcel in) { + return new LteVopsSupportInfo(in); + } + + @Override + public LteVopsSupportInfo[] newArray(int size) { + return new LteVopsSupportInfo[size]; + } + }; + + private LteVopsSupportInfo(Parcel in) { + mVopsSupport = in.readInt(); + mEmcBearerSupport = in.readInt(); + } +} diff --git a/telephony/java/android/telephony/NetworkRegistrationState.java b/telephony/java/android/telephony/NetworkRegistrationState.java index b00665e26ff2..ceb76b57ae0c 100644 --- a/telephony/java/android/telephony/NetworkRegistrationState.java +++ b/telephony/java/android/telephony/NetworkRegistrationState.java @@ -219,12 +219,13 @@ public class NetworkRegistrationState implements Parcelable { public NetworkRegistrationState(int domain, int transportType, int regState, int accessNetworkTechnology, int rejectCause, boolean emergencyOnly, int[] availableServices, @Nullable CellIdentity cellIdentity, int maxDataCalls, - boolean isDcNrRestricted, boolean isNrAvailable, boolean isEndcAvailable) { + boolean isDcNrRestricted, boolean isNrAvailable, boolean isEndcAvailable, + LteVopsSupportInfo lteVopsSupportInfo) { this(domain, transportType, regState, accessNetworkTechnology, rejectCause, emergencyOnly, availableServices, cellIdentity); mDataSpecificStates = new DataSpecificRegistrationStates( - maxDataCalls, isDcNrRestricted, isNrAvailable, isEndcAvailable); + maxDataCalls, isDcNrRestricted, isNrAvailable, isEndcAvailable, lteVopsSupportInfo); updateNrStatus(mDataSpecificStates); } |