Loading telephony/java/android/telephony/data/DataCallResponse.java +22 −21 Original line number Original line Diff line number Diff line Loading @@ -136,7 +136,7 @@ public final class DataCallResponse implements Parcelable { private final @HandoverFailureMode int mHandoverFailureMode; private final @HandoverFailureMode int mHandoverFailureMode; private final int mPduSessionId; private final int mPduSessionId; private final Qos mDefaultQos; private final Qos mDefaultQos; private final List<QosSession> mQosSessions; private final List<QosBearerSession> mQosBearerSessions; private final SliceInfo mSliceInfo; private final SliceInfo mSliceInfo; /** /** Loading Loading @@ -187,7 +187,7 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY; mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY; mPduSessionId = PDU_SESSION_ID_NOT_SET; mPduSessionId = PDU_SESSION_ID_NOT_SET; mDefaultQos = null; mDefaultQos = null; mQosSessions = new ArrayList<>(); mQosBearerSessions = new ArrayList<>(); mSliceInfo = null; mSliceInfo = null; } } Loading @@ -197,7 +197,7 @@ public final class DataCallResponse implements Parcelable { @Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses, @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, int pduSessionId, @HandoverFailureMode int handoverFailureMode, int pduSessionId, @Nullable Qos defaultQos, @Nullable List<QosSession> qosSessions, @Nullable Qos defaultQos, @Nullable List<QosBearerSession> qosBearerSessions, @Nullable SliceInfo sliceInfo) { @Nullable SliceInfo sliceInfo) { mCause = cause; mCause = cause; mSuggestedRetryTime = suggestedRetryTime; mSuggestedRetryTime = suggestedRetryTime; Loading @@ -219,7 +219,7 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = handoverFailureMode; mHandoverFailureMode = handoverFailureMode; mPduSessionId = pduSessionId; mPduSessionId = pduSessionId; mDefaultQos = defaultQos; mDefaultQos = defaultQos; mQosSessions = qosSessions; mQosBearerSessions = qosBearerSessions; mSliceInfo = sliceInfo; mSliceInfo = sliceInfo; } } Loading @@ -246,8 +246,8 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = source.readInt(); mHandoverFailureMode = source.readInt(); mPduSessionId = source.readInt(); mPduSessionId = source.readInt(); mDefaultQos = source.readParcelable(Qos.class.getClassLoader()); mDefaultQos = source.readParcelable(Qos.class.getClassLoader()); mQosSessions = new ArrayList<>(); mQosBearerSessions = new ArrayList<>(); source.readList(mQosSessions, QosSession.class.getClassLoader()); source.readList(mQosBearerSessions, QosBearerSession.class.getClassLoader()); mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader()); mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader()); } } Loading Loading @@ -394,8 +394,8 @@ public final class DataCallResponse implements Parcelable { * @hide * @hide */ */ @NonNull @NonNull public List<QosSession> getQosSessions() { public List<QosBearerSession> getQosBearerSessions() { return mQosSessions; return mQosBearerSessions; } } /** /** Loading Loading @@ -427,7 +427,7 @@ public final class DataCallResponse implements Parcelable { .append(" handoverFailureMode=").append(failureModeToString(mHandoverFailureMode)) .append(" handoverFailureMode=").append(failureModeToString(mHandoverFailureMode)) .append(" pduSessionId=").append(getPduSessionId()) .append(" pduSessionId=").append(getPduSessionId()) .append(" defaultQos=").append(mDefaultQos) .append(" defaultQos=").append(mDefaultQos) .append(" qosSessions=").append(mQosSessions) .append(" qosBearerSessions=").append(mQosBearerSessions) .append(" sliceInfo=").append(mSliceInfo) .append(" sliceInfo=").append(mSliceInfo) .append("}"); .append("}"); return sb.toString(); return sb.toString(); Loading @@ -447,10 +447,10 @@ public final class DataCallResponse implements Parcelable { mDefaultQos == other.mDefaultQos : mDefaultQos == other.mDefaultQos : mDefaultQos.equals(other.mDefaultQos); mDefaultQos.equals(other.mDefaultQos); final boolean isQosSessionsSame = (mQosSessions == null || mQosSessions == null) ? final boolean isQosBearerSessionsSame = (mQosBearerSessions == null || mQosBearerSessions == null) ? mQosSessions == other.mQosSessions : mQosBearerSessions == other.mQosBearerSessions : mQosSessions.size() == other.mQosSessions.size() mQosBearerSessions.size() == other.mQosBearerSessions.size() && mQosSessions.containsAll(other.mQosSessions); && mQosBearerSessions.containsAll(other.mQosBearerSessions); return mCause == other.mCause return mCause == other.mCause && mSuggestedRetryTime == other.mSuggestedRetryTime && mSuggestedRetryTime == other.mSuggestedRetryTime Loading @@ -472,7 +472,7 @@ public final class DataCallResponse implements Parcelable { && mHandoverFailureMode == other.mHandoverFailureMode && mHandoverFailureMode == other.mHandoverFailureMode && mPduSessionId == other.mPduSessionId && mPduSessionId == other.mPduSessionId && isQosSame && isQosSame && isQosSessionsSame && isQosBearerSessionsSame && Objects.equals(mSliceInfo, other.mSliceInfo); && Objects.equals(mSliceInfo, other.mSliceInfo); } } Loading @@ -481,7 +481,7 @@ public final class DataCallResponse implements Parcelable { return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mQosSessions, mSliceInfo); mQosBearerSessions, mSliceInfo); } } @Override @Override Loading Loading @@ -515,7 +515,7 @@ public final class DataCallResponse implements Parcelable { } else { } else { dest.writeParcelable(null, flags); dest.writeParcelable(null, flags); } } dest.writeList(mQosSessions); dest.writeList(mQosBearerSessions); dest.writeParcelable(mSliceInfo, flags); dest.writeParcelable(mSliceInfo, flags); } } Loading Loading @@ -598,7 +598,7 @@ public final class DataCallResponse implements Parcelable { private Qos mDefaultQos; private Qos mDefaultQos; private List<QosSession> mQosSessions = new ArrayList<>(); private List<QosBearerSession> mQosBearerSessions = new ArrayList<>(); private SliceInfo mSliceInfo; private SliceInfo mSliceInfo; Loading Loading @@ -812,15 +812,16 @@ public final class DataCallResponse implements Parcelable { /** /** * Set the dedicated bearer QOS sessions for this data connection. * Set the dedicated bearer QOS sessions for this data connection. * * * @param qosSessions Dedicated bearer QOS (Quality Of Service) sessions received * @param qosBearerSessions Dedicated bearer QOS (Quality Of Service) sessions received * from network. * from network. * * * @return The same instance of the builder. * @return The same instance of the builder. * * * @hide * @hide */ */ public @NonNull Builder setQosSessions(@NonNull List<QosSession> qosSessions) { public @NonNull Builder setQosBearerSessions( mQosSessions = qosSessions; @NonNull List<QosBearerSession> qosBearerSessions) { mQosBearerSessions = qosBearerSessions; return this; return this; } } Loading Loading @@ -848,7 +849,7 @@ public final class DataCallResponse implements Parcelable { return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus, return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mQosSessions, mSliceInfo); mDefaultQos, mQosBearerSessions, mSliceInfo); } } } } } } telephony/java/android/telephony/data/EpsQos.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,10 @@ public final class EpsQos extends Qos implements Parcelable { qosClassId = source.readInt(); qosClassId = source.readInt(); } } public int getQci() { return qosClassId; } public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) { public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) { return new EpsQos(in); return new EpsQos(in); } } Loading telephony/java/android/telephony/data/Qos.java +17 −1 Original line number Original line Diff line number Diff line Loading @@ -56,7 +56,15 @@ public abstract class Qos { this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps); this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps); } } static class QosBandwidth implements Parcelable { public QosBandwidth getDownlinkBandwidth() { return downlink; } public QosBandwidth getUplinkBandwidth() { return uplink; } public static class QosBandwidth implements Parcelable { int maxBitrateKbps; int maxBitrateKbps; int guaranteedBitrateKbps; int guaranteedBitrateKbps; Loading @@ -73,6 +81,14 @@ public abstract class Qos { guaranteedBitrateKbps = source.readInt(); guaranteedBitrateKbps = source.readInt(); } } public int getMaxBitrateKbps() { return maxBitrateKbps; } public int getGuaranteedBitrateKbps() { return guaranteedBitrateKbps; } @Override @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(maxBitrateKbps); dest.writeInt(maxBitrateKbps); Loading telephony/java/android/telephony/data/QosFilter.java→telephony/java/android/telephony/data/QosBearerFilter.java +45 −17 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ import java.util.Objects; * * * @hide * @hide */ */ public final class QosFilter implements Parcelable { public final class QosBearerFilter implements Parcelable { private List<LinkAddress> localAddresses; private List<LinkAddress> localAddresses; private List<LinkAddress> remoteAddresses; private List<LinkAddress> remoteAddresses; Loading Loading @@ -74,7 +74,7 @@ public final class QosFilter implements Parcelable { @IntDef(prefix = "QOS_FILTER_DIRECTION_", @IntDef(prefix = "QOS_FILTER_DIRECTION_", value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK, value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK, QOS_FILTER_DIRECTION_BIDIRECTIONAL}) QOS_FILTER_DIRECTION_BIDIRECTIONAL}) public @interface QosFilterDirection {} public @interface QosBearerFilterDirection {} public static final int QOS_FILTER_DIRECTION_DOWNLINK = public static final int QOS_FILTER_DIRECTION_DOWNLINK = android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK; android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK; Loading @@ -83,7 +83,7 @@ public final class QosFilter implements Parcelable { public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL = public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL = android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL; android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL; @QosFilterDirection @QosBearerFilterDirection private int filterDirection; private int filterDirection; /** /** Loading @@ -92,7 +92,7 @@ public final class QosFilter implements Parcelable { */ */ private int precedence; private int precedence; QosFilter() { QosBearerFilter() { localAddresses = new ArrayList<>(); localAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); localPort = new PortRange(); localPort = new PortRange(); Loading @@ -101,7 +101,7 @@ public final class QosFilter implements Parcelable { filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL; filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL; } } public QosFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses, public QosBearerFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses, PortRange localPort, PortRange remotePort, int protocol, int tos, PortRange localPort, PortRange remotePort, int protocol, int tos, long flowLabel, long spi, int direction, int precedence) { long flowLabel, long spi, int direction, int precedence) { this.localAddresses = localAddresses; this.localAddresses = localAddresses; Loading @@ -116,10 +116,30 @@ public final class QosFilter implements Parcelable { this.precedence = precedence; this.precedence = precedence; } } public List<LinkAddress> getLocalAddresses() { return localAddresses; } public List<LinkAddress> getRemoteAddresses() { return remoteAddresses; } public PortRange getLocalPortRange() { return localPort; } public PortRange getRemotePortRange() { return remotePort; } public int getPrecedence() { return precedence; } /** @hide */ /** @hide */ public static @NonNull QosFilter create( public static @NonNull QosBearerFilter create( @NonNull android.hardware.radio.V1_6.QosFilter qosFilter) { @NonNull android.hardware.radio.V1_6.QosFilter qosFilter) { QosFilter ret = new QosFilter(); QosBearerFilter ret = new QosBearerFilter(); String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new); String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new); if (localAddresses != null) { if (localAddresses != null) { Loading Loading @@ -202,6 +222,14 @@ public final class QosFilter implements Parcelable { this.end = end; this.end = end; } } public int getStart() { return start; } public int getEnd() { return end; } @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(start); dest.writeInt(start); Loading Loading @@ -254,7 +282,7 @@ public final class QosFilter implements Parcelable { @Override @Override public String toString() { public String toString() { return "QosFilter {" return "QosBearerFilter {" + " localAddresses=" + localAddresses + " localAddresses=" + localAddresses + " remoteAddresses=" + remoteAddresses + " remoteAddresses=" + remoteAddresses + " localPort=" + localPort + " localPort=" + localPort Loading @@ -278,11 +306,11 @@ public final class QosFilter implements Parcelable { public boolean equals(Object o) { public boolean equals(Object o) { if (this == o) return true; if (this == o) return true; if (o == null || !(o instanceof QosFilter)) { if (o == null || !(o instanceof QosBearerFilter)) { return false; return false; } } QosFilter other = (QosFilter) o; QosBearerFilter other = (QosBearerFilter) o; return localAddresses.size() == other.localAddresses.size() return localAddresses.size() == other.localAddresses.size() && localAddresses.containsAll(other.localAddresses) && localAddresses.containsAll(other.localAddresses) Loading Loading @@ -324,7 +352,7 @@ public final class QosFilter implements Parcelable { LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN); LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN); } } private QosFilter(Parcel source) { private QosBearerFilter(Parcel source) { localAddresses = new ArrayList<>(); localAddresses = new ArrayList<>(); source.readList(localAddresses, LinkAddress.class.getClassLoader()); source.readList(localAddresses, LinkAddress.class.getClassLoader()); remoteAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); Loading Loading @@ -358,16 +386,16 @@ public final class QosFilter implements Parcelable { return 0; return 0; } } public static final @NonNull Parcelable.Creator<QosFilter> CREATOR = public static final @NonNull Parcelable.Creator<QosBearerFilter> CREATOR = new Parcelable.Creator<QosFilter>() { new Parcelable.Creator<QosBearerFilter>() { @Override @Override public QosFilter createFromParcel(Parcel source) { public QosBearerFilter createFromParcel(Parcel source) { return new QosFilter(source); return new QosBearerFilter(source); } } @Override @Override public QosFilter[] newArray(int size) { public QosBearerFilter[] newArray(int size) { return new QosFilter[size]; return new QosBearerFilter[size]; } } }; }; } } telephony/java/android/telephony/data/QosSession.java→telephony/java/android/telephony/data/QosBearerSession.java +137 −0 Original line number Original line Diff line number Diff line Loading @@ -30,50 +30,62 @@ import java.util.Objects; * * * @hide * @hide */ */ public final class QosSession implements Parcelable{ public final class QosBearerSession implements Parcelable{ final int qosSessionId; final int qosBearerSessionId; final Qos qos; final Qos qos; final List<QosFilter> qosFilterList; final List<QosBearerFilter> qosBearerFilterList; public QosSession(int qosSessionId, @NonNull Qos qos, @NonNull List<QosFilter> qosFilterList) { public QosBearerSession(int qosBearerSessionId, @NonNull Qos qos, @NonNull List<QosBearerFilter> qosBearerFilterList) { this.qosSessionId = qosSessionId; this.qosBearerSessionId = qosBearerSessionId; this.qos = qos; this.qos = qos; this.qosFilterList = qosFilterList; this.qosBearerFilterList = qosBearerFilterList; } } private QosSession(Parcel source) { private QosBearerSession(Parcel source) { qosSessionId = source.readInt(); qosBearerSessionId = source.readInt(); qos = source.readParcelable(Qos.class.getClassLoader()); qos = source.readParcelable(Qos.class.getClassLoader()); qosFilterList = new ArrayList<>(); qosBearerFilterList = new ArrayList<>(); source.readList(qosFilterList, QosFilter.class.getClassLoader()); source.readList(qosBearerFilterList, QosBearerFilter.class.getClassLoader()); } public int getQosBearerSessionId() { return qosBearerSessionId; } public Qos getQos() { return qos; } public List<QosBearerFilter> getQosBearerFilterList() { return qosBearerFilterList; } } @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(qosSessionId); dest.writeInt(qosBearerSessionId); if (qos.getType() == Qos.QOS_TYPE_EPS) { if (qos.getType() == Qos.QOS_TYPE_EPS) { dest.writeParcelable((EpsQos)qos, flags); dest.writeParcelable((EpsQos)qos, flags); } else { } else { dest.writeParcelable((NrQos)qos, flags); dest.writeParcelable((NrQos)qos, flags); } } dest.writeList(qosFilterList); dest.writeList(qosBearerFilterList); } } public static @NonNull QosSession create( public static @NonNull QosBearerSession create( @NonNull android.hardware.radio.V1_6.QosSession qosSession) { @NonNull android.hardware.radio.V1_6.QosSession qosSession) { List<QosFilter> qosFilters = new ArrayList<>(); List<QosBearerFilter> qosBearerFilters = new ArrayList<>(); if (qosSession.qosFilters != null) { if (qosSession.qosFilters != null) { for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) { for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) { qosFilters.add(QosFilter.create(filter)); qosBearerFilters.add(QosBearerFilter.create(filter)); } } } } return new QosSession( return new QosBearerSession( qosSession.qosSessionId, qosSession.qosSessionId, Qos.create(qosSession.qos), Qos.create(qosSession.qos), qosFilters); qosBearerFilters); } } @Override @Override Loading @@ -83,43 +95,43 @@ public final class QosSession implements Parcelable{ @Override @Override public String toString() { public String toString() { return "QosSession {" return "QosBearerSession {" + " qosSessionId=" + qosSessionId + " qosBearerSessionId=" + qosBearerSessionId + " qos=" + qos + " qos=" + qos + " qosFilterList=" + qosFilterList + "}"; + " qosBearerFilterList=" + qosBearerFilterList + "}"; } } @Override @Override public int hashCode() { public int hashCode() { return Objects.hash(qosSessionId, qos, qosFilterList); return Objects.hash(qosBearerSessionId, qos, qosBearerFilterList); } } @Override @Override public boolean equals(Object o) { public boolean equals(Object o) { if (this == o) return true; if (this == o) return true; if (o == null || !(o instanceof QosSession)) { if (o == null || !(o instanceof QosBearerSession)) { return false; return false; } } QosSession other = (QosSession) o; QosBearerSession other = (QosBearerSession) o; return this.qosSessionId == other.qosSessionId return this.qosBearerSessionId == other.qosBearerSessionId && this.qos.equals(other.qos) && this.qos.equals(other.qos) && this.qosFilterList.size() == other.qosFilterList.size() && this.qosBearerFilterList.size() == other.qosBearerFilterList.size() && this.qosFilterList.containsAll(other.qosFilterList); && this.qosBearerFilterList.containsAll(other.qosBearerFilterList); } } public static final @NonNull Parcelable.Creator<QosSession> CREATOR = public static final @NonNull Parcelable.Creator<QosBearerSession> CREATOR = new Parcelable.Creator<QosSession>() { new Parcelable.Creator<QosBearerSession>() { @Override @Override public QosSession createFromParcel(Parcel source) { public QosBearerSession createFromParcel(Parcel source) { return new QosSession(source); return new QosBearerSession(source); } } @Override @Override public QosSession[] newArray(int size) { public QosBearerSession[] newArray(int size) { return new QosSession[size]; return new QosBearerSession[size]; } } }; }; } } Loading
telephony/java/android/telephony/data/DataCallResponse.java +22 −21 Original line number Original line Diff line number Diff line Loading @@ -136,7 +136,7 @@ public final class DataCallResponse implements Parcelable { private final @HandoverFailureMode int mHandoverFailureMode; private final @HandoverFailureMode int mHandoverFailureMode; private final int mPduSessionId; private final int mPduSessionId; private final Qos mDefaultQos; private final Qos mDefaultQos; private final List<QosSession> mQosSessions; private final List<QosBearerSession> mQosBearerSessions; private final SliceInfo mSliceInfo; private final SliceInfo mSliceInfo; /** /** Loading Loading @@ -187,7 +187,7 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY; mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY; mPduSessionId = PDU_SESSION_ID_NOT_SET; mPduSessionId = PDU_SESSION_ID_NOT_SET; mDefaultQos = null; mDefaultQos = null; mQosSessions = new ArrayList<>(); mQosBearerSessions = new ArrayList<>(); mSliceInfo = null; mSliceInfo = null; } } Loading @@ -197,7 +197,7 @@ public final class DataCallResponse implements Parcelable { @Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses, @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, int pduSessionId, @HandoverFailureMode int handoverFailureMode, int pduSessionId, @Nullable Qos defaultQos, @Nullable List<QosSession> qosSessions, @Nullable Qos defaultQos, @Nullable List<QosBearerSession> qosBearerSessions, @Nullable SliceInfo sliceInfo) { @Nullable SliceInfo sliceInfo) { mCause = cause; mCause = cause; mSuggestedRetryTime = suggestedRetryTime; mSuggestedRetryTime = suggestedRetryTime; Loading @@ -219,7 +219,7 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = handoverFailureMode; mHandoverFailureMode = handoverFailureMode; mPduSessionId = pduSessionId; mPduSessionId = pduSessionId; mDefaultQos = defaultQos; mDefaultQos = defaultQos; mQosSessions = qosSessions; mQosBearerSessions = qosBearerSessions; mSliceInfo = sliceInfo; mSliceInfo = sliceInfo; } } Loading @@ -246,8 +246,8 @@ public final class DataCallResponse implements Parcelable { mHandoverFailureMode = source.readInt(); mHandoverFailureMode = source.readInt(); mPduSessionId = source.readInt(); mPduSessionId = source.readInt(); mDefaultQos = source.readParcelable(Qos.class.getClassLoader()); mDefaultQos = source.readParcelable(Qos.class.getClassLoader()); mQosSessions = new ArrayList<>(); mQosBearerSessions = new ArrayList<>(); source.readList(mQosSessions, QosSession.class.getClassLoader()); source.readList(mQosBearerSessions, QosBearerSession.class.getClassLoader()); mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader()); mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader()); } } Loading Loading @@ -394,8 +394,8 @@ public final class DataCallResponse implements Parcelable { * @hide * @hide */ */ @NonNull @NonNull public List<QosSession> getQosSessions() { public List<QosBearerSession> getQosBearerSessions() { return mQosSessions; return mQosBearerSessions; } } /** /** Loading Loading @@ -427,7 +427,7 @@ public final class DataCallResponse implements Parcelable { .append(" handoverFailureMode=").append(failureModeToString(mHandoverFailureMode)) .append(" handoverFailureMode=").append(failureModeToString(mHandoverFailureMode)) .append(" pduSessionId=").append(getPduSessionId()) .append(" pduSessionId=").append(getPduSessionId()) .append(" defaultQos=").append(mDefaultQos) .append(" defaultQos=").append(mDefaultQos) .append(" qosSessions=").append(mQosSessions) .append(" qosBearerSessions=").append(mQosBearerSessions) .append(" sliceInfo=").append(mSliceInfo) .append(" sliceInfo=").append(mSliceInfo) .append("}"); .append("}"); return sb.toString(); return sb.toString(); Loading @@ -447,10 +447,10 @@ public final class DataCallResponse implements Parcelable { mDefaultQos == other.mDefaultQos : mDefaultQos == other.mDefaultQos : mDefaultQos.equals(other.mDefaultQos); mDefaultQos.equals(other.mDefaultQos); final boolean isQosSessionsSame = (mQosSessions == null || mQosSessions == null) ? final boolean isQosBearerSessionsSame = (mQosBearerSessions == null || mQosBearerSessions == null) ? mQosSessions == other.mQosSessions : mQosBearerSessions == other.mQosBearerSessions : mQosSessions.size() == other.mQosSessions.size() mQosBearerSessions.size() == other.mQosBearerSessions.size() && mQosSessions.containsAll(other.mQosSessions); && mQosBearerSessions.containsAll(other.mQosBearerSessions); return mCause == other.mCause return mCause == other.mCause && mSuggestedRetryTime == other.mSuggestedRetryTime && mSuggestedRetryTime == other.mSuggestedRetryTime Loading @@ -472,7 +472,7 @@ public final class DataCallResponse implements Parcelable { && mHandoverFailureMode == other.mHandoverFailureMode && mHandoverFailureMode == other.mHandoverFailureMode && mPduSessionId == other.mPduSessionId && mPduSessionId == other.mPduSessionId && isQosSame && isQosSame && isQosSessionsSame && isQosBearerSessionsSame && Objects.equals(mSliceInfo, other.mSliceInfo); && Objects.equals(mSliceInfo, other.mSliceInfo); } } Loading @@ -481,7 +481,7 @@ public final class DataCallResponse implements Parcelable { return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mQosSessions, mSliceInfo); mQosBearerSessions, mSliceInfo); } } @Override @Override Loading Loading @@ -515,7 +515,7 @@ public final class DataCallResponse implements Parcelable { } else { } else { dest.writeParcelable(null, flags); dest.writeParcelable(null, flags); } } dest.writeList(mQosSessions); dest.writeList(mQosBearerSessions); dest.writeParcelable(mSliceInfo, flags); dest.writeParcelable(mSliceInfo, flags); } } Loading Loading @@ -598,7 +598,7 @@ public final class DataCallResponse implements Parcelable { private Qos mDefaultQos; private Qos mDefaultQos; private List<QosSession> mQosSessions = new ArrayList<>(); private List<QosBearerSession> mQosBearerSessions = new ArrayList<>(); private SliceInfo mSliceInfo; private SliceInfo mSliceInfo; Loading Loading @@ -812,15 +812,16 @@ public final class DataCallResponse implements Parcelable { /** /** * Set the dedicated bearer QOS sessions for this data connection. * Set the dedicated bearer QOS sessions for this data connection. * * * @param qosSessions Dedicated bearer QOS (Quality Of Service) sessions received * @param qosBearerSessions Dedicated bearer QOS (Quality Of Service) sessions received * from network. * from network. * * * @return The same instance of the builder. * @return The same instance of the builder. * * * @hide * @hide */ */ public @NonNull Builder setQosSessions(@NonNull List<QosSession> qosSessions) { public @NonNull Builder setQosBearerSessions( mQosSessions = qosSessions; @NonNull List<QosBearerSession> qosBearerSessions) { mQosBearerSessions = qosBearerSessions; return this; return this; } } Loading Loading @@ -848,7 +849,7 @@ public final class DataCallResponse implements Parcelable { return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus, return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos, mQosSessions, mSliceInfo); mDefaultQos, mQosBearerSessions, mSliceInfo); } } } } } }
telephony/java/android/telephony/data/EpsQos.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,10 @@ public final class EpsQos extends Qos implements Parcelable { qosClassId = source.readInt(); qosClassId = source.readInt(); } } public int getQci() { return qosClassId; } public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) { public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) { return new EpsQos(in); return new EpsQos(in); } } Loading
telephony/java/android/telephony/data/Qos.java +17 −1 Original line number Original line Diff line number Diff line Loading @@ -56,7 +56,15 @@ public abstract class Qos { this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps); this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps); } } static class QosBandwidth implements Parcelable { public QosBandwidth getDownlinkBandwidth() { return downlink; } public QosBandwidth getUplinkBandwidth() { return uplink; } public static class QosBandwidth implements Parcelable { int maxBitrateKbps; int maxBitrateKbps; int guaranteedBitrateKbps; int guaranteedBitrateKbps; Loading @@ -73,6 +81,14 @@ public abstract class Qos { guaranteedBitrateKbps = source.readInt(); guaranteedBitrateKbps = source.readInt(); } } public int getMaxBitrateKbps() { return maxBitrateKbps; } public int getGuaranteedBitrateKbps() { return guaranteedBitrateKbps; } @Override @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(maxBitrateKbps); dest.writeInt(maxBitrateKbps); Loading
telephony/java/android/telephony/data/QosFilter.java→telephony/java/android/telephony/data/QosBearerFilter.java +45 −17 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,7 @@ import java.util.Objects; * * * @hide * @hide */ */ public final class QosFilter implements Parcelable { public final class QosBearerFilter implements Parcelable { private List<LinkAddress> localAddresses; private List<LinkAddress> localAddresses; private List<LinkAddress> remoteAddresses; private List<LinkAddress> remoteAddresses; Loading Loading @@ -74,7 +74,7 @@ public final class QosFilter implements Parcelable { @IntDef(prefix = "QOS_FILTER_DIRECTION_", @IntDef(prefix = "QOS_FILTER_DIRECTION_", value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK, value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK, QOS_FILTER_DIRECTION_BIDIRECTIONAL}) QOS_FILTER_DIRECTION_BIDIRECTIONAL}) public @interface QosFilterDirection {} public @interface QosBearerFilterDirection {} public static final int QOS_FILTER_DIRECTION_DOWNLINK = public static final int QOS_FILTER_DIRECTION_DOWNLINK = android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK; android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK; Loading @@ -83,7 +83,7 @@ public final class QosFilter implements Parcelable { public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL = public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL = android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL; android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL; @QosFilterDirection @QosBearerFilterDirection private int filterDirection; private int filterDirection; /** /** Loading @@ -92,7 +92,7 @@ public final class QosFilter implements Parcelable { */ */ private int precedence; private int precedence; QosFilter() { QosBearerFilter() { localAddresses = new ArrayList<>(); localAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); localPort = new PortRange(); localPort = new PortRange(); Loading @@ -101,7 +101,7 @@ public final class QosFilter implements Parcelable { filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL; filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL; } } public QosFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses, public QosBearerFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses, PortRange localPort, PortRange remotePort, int protocol, int tos, PortRange localPort, PortRange remotePort, int protocol, int tos, long flowLabel, long spi, int direction, int precedence) { long flowLabel, long spi, int direction, int precedence) { this.localAddresses = localAddresses; this.localAddresses = localAddresses; Loading @@ -116,10 +116,30 @@ public final class QosFilter implements Parcelable { this.precedence = precedence; this.precedence = precedence; } } public List<LinkAddress> getLocalAddresses() { return localAddresses; } public List<LinkAddress> getRemoteAddresses() { return remoteAddresses; } public PortRange getLocalPortRange() { return localPort; } public PortRange getRemotePortRange() { return remotePort; } public int getPrecedence() { return precedence; } /** @hide */ /** @hide */ public static @NonNull QosFilter create( public static @NonNull QosBearerFilter create( @NonNull android.hardware.radio.V1_6.QosFilter qosFilter) { @NonNull android.hardware.radio.V1_6.QosFilter qosFilter) { QosFilter ret = new QosFilter(); QosBearerFilter ret = new QosBearerFilter(); String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new); String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new); if (localAddresses != null) { if (localAddresses != null) { Loading Loading @@ -202,6 +222,14 @@ public final class QosFilter implements Parcelable { this.end = end; this.end = end; } } public int getStart() { return start; } public int getEnd() { return end; } @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(start); dest.writeInt(start); Loading Loading @@ -254,7 +282,7 @@ public final class QosFilter implements Parcelable { @Override @Override public String toString() { public String toString() { return "QosFilter {" return "QosBearerFilter {" + " localAddresses=" + localAddresses + " localAddresses=" + localAddresses + " remoteAddresses=" + remoteAddresses + " remoteAddresses=" + remoteAddresses + " localPort=" + localPort + " localPort=" + localPort Loading @@ -278,11 +306,11 @@ public final class QosFilter implements Parcelable { public boolean equals(Object o) { public boolean equals(Object o) { if (this == o) return true; if (this == o) return true; if (o == null || !(o instanceof QosFilter)) { if (o == null || !(o instanceof QosBearerFilter)) { return false; return false; } } QosFilter other = (QosFilter) o; QosBearerFilter other = (QosBearerFilter) o; return localAddresses.size() == other.localAddresses.size() return localAddresses.size() == other.localAddresses.size() && localAddresses.containsAll(other.localAddresses) && localAddresses.containsAll(other.localAddresses) Loading Loading @@ -324,7 +352,7 @@ public final class QosFilter implements Parcelable { LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN); LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN); } } private QosFilter(Parcel source) { private QosBearerFilter(Parcel source) { localAddresses = new ArrayList<>(); localAddresses = new ArrayList<>(); source.readList(localAddresses, LinkAddress.class.getClassLoader()); source.readList(localAddresses, LinkAddress.class.getClassLoader()); remoteAddresses = new ArrayList<>(); remoteAddresses = new ArrayList<>(); Loading Loading @@ -358,16 +386,16 @@ public final class QosFilter implements Parcelable { return 0; return 0; } } public static final @NonNull Parcelable.Creator<QosFilter> CREATOR = public static final @NonNull Parcelable.Creator<QosBearerFilter> CREATOR = new Parcelable.Creator<QosFilter>() { new Parcelable.Creator<QosBearerFilter>() { @Override @Override public QosFilter createFromParcel(Parcel source) { public QosBearerFilter createFromParcel(Parcel source) { return new QosFilter(source); return new QosBearerFilter(source); } } @Override @Override public QosFilter[] newArray(int size) { public QosBearerFilter[] newArray(int size) { return new QosFilter[size]; return new QosBearerFilter[size]; } } }; }; } }
telephony/java/android/telephony/data/QosSession.java→telephony/java/android/telephony/data/QosBearerSession.java +137 −0 Original line number Original line Diff line number Diff line Loading @@ -30,50 +30,62 @@ import java.util.Objects; * * * @hide * @hide */ */ public final class QosSession implements Parcelable{ public final class QosBearerSession implements Parcelable{ final int qosSessionId; final int qosBearerSessionId; final Qos qos; final Qos qos; final List<QosFilter> qosFilterList; final List<QosBearerFilter> qosBearerFilterList; public QosSession(int qosSessionId, @NonNull Qos qos, @NonNull List<QosFilter> qosFilterList) { public QosBearerSession(int qosBearerSessionId, @NonNull Qos qos, @NonNull List<QosBearerFilter> qosBearerFilterList) { this.qosSessionId = qosSessionId; this.qosBearerSessionId = qosBearerSessionId; this.qos = qos; this.qos = qos; this.qosFilterList = qosFilterList; this.qosBearerFilterList = qosBearerFilterList; } } private QosSession(Parcel source) { private QosBearerSession(Parcel source) { qosSessionId = source.readInt(); qosBearerSessionId = source.readInt(); qos = source.readParcelable(Qos.class.getClassLoader()); qos = source.readParcelable(Qos.class.getClassLoader()); qosFilterList = new ArrayList<>(); qosBearerFilterList = new ArrayList<>(); source.readList(qosFilterList, QosFilter.class.getClassLoader()); source.readList(qosBearerFilterList, QosBearerFilter.class.getClassLoader()); } public int getQosBearerSessionId() { return qosBearerSessionId; } public Qos getQos() { return qos; } public List<QosBearerFilter> getQosBearerFilterList() { return qosBearerFilterList; } } @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(qosSessionId); dest.writeInt(qosBearerSessionId); if (qos.getType() == Qos.QOS_TYPE_EPS) { if (qos.getType() == Qos.QOS_TYPE_EPS) { dest.writeParcelable((EpsQos)qos, flags); dest.writeParcelable((EpsQos)qos, flags); } else { } else { dest.writeParcelable((NrQos)qos, flags); dest.writeParcelable((NrQos)qos, flags); } } dest.writeList(qosFilterList); dest.writeList(qosBearerFilterList); } } public static @NonNull QosSession create( public static @NonNull QosBearerSession create( @NonNull android.hardware.radio.V1_6.QosSession qosSession) { @NonNull android.hardware.radio.V1_6.QosSession qosSession) { List<QosFilter> qosFilters = new ArrayList<>(); List<QosBearerFilter> qosBearerFilters = new ArrayList<>(); if (qosSession.qosFilters != null) { if (qosSession.qosFilters != null) { for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) { for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) { qosFilters.add(QosFilter.create(filter)); qosBearerFilters.add(QosBearerFilter.create(filter)); } } } } return new QosSession( return new QosBearerSession( qosSession.qosSessionId, qosSession.qosSessionId, Qos.create(qosSession.qos), Qos.create(qosSession.qos), qosFilters); qosBearerFilters); } } @Override @Override Loading @@ -83,43 +95,43 @@ public final class QosSession implements Parcelable{ @Override @Override public String toString() { public String toString() { return "QosSession {" return "QosBearerSession {" + " qosSessionId=" + qosSessionId + " qosBearerSessionId=" + qosBearerSessionId + " qos=" + qos + " qos=" + qos + " qosFilterList=" + qosFilterList + "}"; + " qosBearerFilterList=" + qosBearerFilterList + "}"; } } @Override @Override public int hashCode() { public int hashCode() { return Objects.hash(qosSessionId, qos, qosFilterList); return Objects.hash(qosBearerSessionId, qos, qosBearerFilterList); } } @Override @Override public boolean equals(Object o) { public boolean equals(Object o) { if (this == o) return true; if (this == o) return true; if (o == null || !(o instanceof QosSession)) { if (o == null || !(o instanceof QosBearerSession)) { return false; return false; } } QosSession other = (QosSession) o; QosBearerSession other = (QosBearerSession) o; return this.qosSessionId == other.qosSessionId return this.qosBearerSessionId == other.qosBearerSessionId && this.qos.equals(other.qos) && this.qos.equals(other.qos) && this.qosFilterList.size() == other.qosFilterList.size() && this.qosBearerFilterList.size() == other.qosBearerFilterList.size() && this.qosFilterList.containsAll(other.qosFilterList); && this.qosBearerFilterList.containsAll(other.qosBearerFilterList); } } public static final @NonNull Parcelable.Creator<QosSession> CREATOR = public static final @NonNull Parcelable.Creator<QosBearerSession> CREATOR = new Parcelable.Creator<QosSession>() { new Parcelable.Creator<QosBearerSession>() { @Override @Override public QosSession createFromParcel(Parcel source) { public QosBearerSession createFromParcel(Parcel source) { return new QosSession(source); return new QosBearerSession(source); } } @Override @Override public QosSession[] newArray(int size) { public QosBearerSession[] newArray(int size) { return new QosSession[size]; return new QosBearerSession[size]; } } }; }; } }