Merge "Update constructors for IRadioData classes"
This commit is contained in:
@@ -228,6 +228,12 @@ java_library {
|
|||||||
"android.hardware.radio-V1.4-java",
|
"android.hardware.radio-V1.4-java",
|
||||||
"android.hardware.radio-V1.5-java",
|
"android.hardware.radio-V1.5-java",
|
||||||
"android.hardware.radio-V1.6-java",
|
"android.hardware.radio-V1.6-java",
|
||||||
|
"android.hardware.radio.data-V1-java",
|
||||||
|
"android.hardware.radio.messaging-V1-java",
|
||||||
|
"android.hardware.radio.modem-V1-java",
|
||||||
|
"android.hardware.radio.network-V1-java",
|
||||||
|
"android.hardware.radio.sim-V1-java",
|
||||||
|
"android.hardware.radio.voice-V1-java",
|
||||||
"android.hardware.thermal-V1.0-java-constants",
|
"android.hardware.thermal-V1.0-java-constants",
|
||||||
"android.hardware.thermal-V1.0-java",
|
"android.hardware.thermal-V1.0-java",
|
||||||
"android.hardware.thermal-V1.1-java",
|
"android.hardware.thermal-V1.1-java",
|
||||||
|
|||||||
@@ -32,15 +32,9 @@ public final class EpsQos extends Qos implements Parcelable {
|
|||||||
|
|
||||||
int qosClassId;
|
int qosClassId;
|
||||||
|
|
||||||
public EpsQos() {
|
public EpsQos(QosBandwidth downlink, QosBandwidth uplink, int qosClassId) {
|
||||||
super(Qos.QOS_TYPE_EPS,
|
super(Qos.QOS_TYPE_EPS, downlink, uplink);
|
||||||
new android.hardware.radio.V1_6.QosBandwidth(),
|
this.qosClassId = qosClassId;
|
||||||
new android.hardware.radio.V1_6.QosBandwidth());
|
|
||||||
}
|
|
||||||
|
|
||||||
public EpsQos(@NonNull android.hardware.radio.V1_6.EpsQos qos) {
|
|
||||||
super(Qos.QOS_TYPE_EPS, qos.downlink, qos.uplink);
|
|
||||||
qosClassId = qos.qci;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private EpsQos(Parcel source) {
|
private EpsQos(Parcel source) {
|
||||||
|
|||||||
@@ -32,11 +32,12 @@ public final class NrQos extends Qos implements Parcelable {
|
|||||||
int fiveQi;
|
int fiveQi;
|
||||||
int averagingWindowMs;
|
int averagingWindowMs;
|
||||||
|
|
||||||
public NrQos(@NonNull android.hardware.radio.V1_6.NrQos qos) {
|
public NrQos(QosBandwidth downlink, QosBandwidth uplink, int qosFlowId, int fiveQi,
|
||||||
super(Qos.QOS_TYPE_NR, qos.downlink, qos.uplink);
|
int averagingWindowMs) {
|
||||||
fiveQi = qos.fiveQi;
|
super(Qos.QOS_TYPE_NR, downlink, uplink);
|
||||||
qosFlowId = qos.qfi;
|
this.qosFlowId = qosFlowId;
|
||||||
averagingWindowMs = qos.averagingWindowMs;
|
this.fiveQi = fiveQi;
|
||||||
|
this.averagingWindowMs = averagingWindowMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NrQos(Parcel source) {
|
private NrQos(Parcel source) {
|
||||||
|
|||||||
@@ -48,12 +48,10 @@ public abstract class Qos {
|
|||||||
final QosBandwidth downlink;
|
final QosBandwidth downlink;
|
||||||
final QosBandwidth uplink;
|
final QosBandwidth uplink;
|
||||||
|
|
||||||
Qos(int type,
|
Qos(int type, QosBandwidth downlink, QosBandwidth uplink) {
|
||||||
@NonNull android.hardware.radio.V1_6.QosBandwidth downlink,
|
|
||||||
@NonNull android.hardware.radio.V1_6.QosBandwidth uplink) {
|
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.downlink = new QosBandwidth(downlink.maxBitrateKbps, downlink.guaranteedBitrateKbps);
|
this.downlink = downlink;
|
||||||
this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps);
|
this.uplink = uplink;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QosBandwidth getDownlinkBandwidth() {
|
public QosBandwidth getDownlinkBandwidth() {
|
||||||
@@ -68,10 +66,7 @@ public abstract class Qos {
|
|||||||
int maxBitrateKbps;
|
int maxBitrateKbps;
|
||||||
int guaranteedBitrateKbps;
|
int guaranteedBitrateKbps;
|
||||||
|
|
||||||
QosBandwidth() {
|
public QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
|
||||||
}
|
|
||||||
|
|
||||||
QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
|
|
||||||
this.maxBitrateKbps = maxBitrateKbps;
|
this.maxBitrateKbps = maxBitrateKbps;
|
||||||
this.guaranteedBitrateKbps = guaranteedBitrateKbps;
|
this.guaranteedBitrateKbps = guaranteedBitrateKbps;
|
||||||
}
|
}
|
||||||
@@ -157,18 +152,6 @@ public abstract class Qos {
|
|||||||
dest.writeParcelable(uplink, flags);
|
dest.writeParcelable(uplink, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
|
||||||
public static @NonNull Qos create(@NonNull android.hardware.radio.V1_6.Qos qos) {
|
|
||||||
switch (qos.getDiscriminator()) {
|
|
||||||
case android.hardware.radio.V1_6.Qos.hidl_discriminator.eps:
|
|
||||||
return new EpsQos(qos.eps());
|
|
||||||
case android.hardware.radio.V1_6.Qos.hidl_discriminator.nr:
|
|
||||||
return new NrQos(qos.nr());
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public @QosType int getType() {
|
public @QosType int getType() {
|
||||||
return type;
|
return type;
|
||||||
|
|||||||
@@ -18,15 +18,12 @@ package android.telephony.data;
|
|||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.net.InetAddresses;
|
|
||||||
import android.net.LinkAddress;
|
import android.net.LinkAddress;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.Inet4Address;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -91,20 +88,13 @@ public final class QosBearerFilter implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
private int precedence;
|
private int precedence;
|
||||||
|
|
||||||
QosBearerFilter() {
|
|
||||||
localAddresses = new ArrayList<>();
|
|
||||||
remoteAddresses = new ArrayList<>();
|
|
||||||
localPort = new PortRange();
|
|
||||||
remotePort = new PortRange();
|
|
||||||
protocol = QOS_PROTOCOL_UNSPECIFIED;
|
|
||||||
filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public QosBearerFilter(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 = new ArrayList<>();
|
||||||
this.remoteAddresses = remoteAddresses;
|
this.localAddresses.addAll(localAddresses);
|
||||||
|
this.remoteAddresses = new ArrayList<>();
|
||||||
|
this.remoteAddresses.addAll(remoteAddresses);
|
||||||
this.localPort = localPort;
|
this.localPort = localPort;
|
||||||
this.remotePort = remotePort;
|
this.remotePort = remotePort;
|
||||||
this.protocol = protocol;
|
this.protocol = protocol;
|
||||||
@@ -135,82 +125,10 @@ public final class QosBearerFilter implements Parcelable {
|
|||||||
return precedence;
|
return precedence;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
|
||||||
public static @NonNull QosBearerFilter create(
|
|
||||||
@NonNull android.hardware.radio.V1_6.QosFilter qosFilter) {
|
|
||||||
QosBearerFilter ret = new QosBearerFilter();
|
|
||||||
|
|
||||||
String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new);
|
|
||||||
if (localAddresses != null) {
|
|
||||||
for (String address : localAddresses) {
|
|
||||||
ret.localAddresses.add(createLinkAddressFromString(address));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] remoteAddresses = qosFilter.remoteAddresses.stream().toArray(String[]::new);
|
|
||||||
if (remoteAddresses != null) {
|
|
||||||
for (String address : remoteAddresses) {
|
|
||||||
ret.remoteAddresses.add(createLinkAddressFromString(address));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qosFilter.localPort != null) {
|
|
||||||
if (qosFilter.localPort.getDiscriminator()
|
|
||||||
== android.hardware.radio.V1_6.MaybePort.hidl_discriminator.range) {
|
|
||||||
final android.hardware.radio.V1_6.PortRange portRange = qosFilter.localPort.range();
|
|
||||||
ret.localPort.start = portRange.start;
|
|
||||||
ret.localPort.end = portRange.end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qosFilter.remotePort != null) {
|
|
||||||
if (qosFilter.remotePort.getDiscriminator()
|
|
||||||
== android.hardware.radio.V1_6.MaybePort.hidl_discriminator.range) {
|
|
||||||
final android.hardware.radio.V1_6.PortRange portRange
|
|
||||||
= qosFilter.remotePort.range();
|
|
||||||
ret.remotePort.start = portRange.start;
|
|
||||||
ret.remotePort.end = portRange.end;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.protocol = qosFilter.protocol;
|
|
||||||
|
|
||||||
if (qosFilter.tos != null) {
|
|
||||||
if (qosFilter.tos.getDiscriminator()
|
|
||||||
== android.hardware.radio.V1_6.QosFilter.TypeOfService.hidl_discriminator.value) {
|
|
||||||
ret.typeOfServiceMask = qosFilter.tos.value();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qosFilter.flowLabel != null) {
|
|
||||||
if (qosFilter.flowLabel.getDiscriminator()
|
|
||||||
== android.hardware.radio.V1_6.QosFilter.Ipv6FlowLabel.hidl_discriminator.value) {
|
|
||||||
ret.flowLabel = qosFilter.flowLabel.value();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qosFilter.spi != null) {
|
|
||||||
if (qosFilter.spi.getDiscriminator()
|
|
||||||
== android.hardware.radio.V1_6.QosFilter.IpsecSpi.hidl_discriminator.value) {
|
|
||||||
ret.securityParameterIndex = qosFilter.spi.value();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.filterDirection = qosFilter.direction;
|
|
||||||
ret.precedence = qosFilter.precedence;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class PortRange implements Parcelable {
|
public static class PortRange implements Parcelable {
|
||||||
int start;
|
int start;
|
||||||
int end;
|
int end;
|
||||||
|
|
||||||
PortRange() {
|
|
||||||
start = -1;
|
|
||||||
end = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private PortRange(Parcel source) {
|
private PortRange(Parcel source) {
|
||||||
start = source.readInt();
|
start = source.readInt();
|
||||||
end = source.readInt();
|
end = source.readInt();
|
||||||
@@ -325,32 +243,6 @@ public final class QosBearerFilter implements Parcelable {
|
|||||||
&& precedence == other.precedence;
|
&& precedence == other.precedence;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static LinkAddress createLinkAddressFromString(String addressString) {
|
|
||||||
addressString = addressString.trim();
|
|
||||||
InetAddress address = null;
|
|
||||||
int prefixLength = -1;
|
|
||||||
try {
|
|
||||||
String[] pieces = addressString.split("/", 2);
|
|
||||||
address = InetAddresses.parseNumericAddress(pieces[0]);
|
|
||||||
if (pieces.length == 1) {
|
|
||||||
prefixLength = (address instanceof Inet4Address) ? 32 : 128;
|
|
||||||
} else if (pieces.length == 2) {
|
|
||||||
prefixLength = Integer.parseInt(pieces[1]);
|
|
||||||
}
|
|
||||||
} catch (NullPointerException e) { // Null string.
|
|
||||||
} catch (ArrayIndexOutOfBoundsException e) { // No prefix length.
|
|
||||||
} catch (NumberFormatException e) { // Non-numeric prefix.
|
|
||||||
} catch (IllegalArgumentException e) { // Invalid IP address.
|
|
||||||
}
|
|
||||||
|
|
||||||
if (address == null || prefixLength == -1) {
|
|
||||||
throw new IllegalArgumentException("Invalid link address " + addressString);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new LinkAddress(address, prefixLength, 0, 0,
|
|
||||||
LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
private QosBearerFilter(Parcel source) {
|
private QosBearerFilter(Parcel source) {
|
||||||
localAddresses = new ArrayList<>();
|
localAddresses = new ArrayList<>();
|
||||||
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
||||||
|
|||||||
@@ -36,10 +36,12 @@ public final class QosBearerSession implements Parcelable{
|
|||||||
final Qos qos;
|
final Qos qos;
|
||||||
final List<QosBearerFilter> qosBearerFilterList;
|
final List<QosBearerFilter> qosBearerFilterList;
|
||||||
|
|
||||||
public QosBearerSession(int qosBearerSessionId, @NonNull Qos qos, @NonNull List<QosBearerFilter> qosBearerFilterList) {
|
public QosBearerSession(int qosBearerSessionId, @NonNull Qos qos,
|
||||||
|
@NonNull List<QosBearerFilter> qosBearerFilterList) {
|
||||||
this.qosBearerSessionId = qosBearerSessionId;
|
this.qosBearerSessionId = qosBearerSessionId;
|
||||||
this.qos = qos;
|
this.qos = qos;
|
||||||
this.qosBearerFilterList = qosBearerFilterList;
|
this.qosBearerFilterList = new ArrayList<>();
|
||||||
|
this.qosBearerFilterList.addAll(qosBearerFilterList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private QosBearerSession(Parcel source) {
|
private QosBearerSession(Parcel source) {
|
||||||
@@ -72,22 +74,6 @@ public final class QosBearerSession implements Parcelable{
|
|||||||
dest.writeList(qosBearerFilterList);
|
dest.writeList(qosBearerFilterList);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull QosBearerSession create(
|
|
||||||
@NonNull android.hardware.radio.V1_6.QosSession qosSession) {
|
|
||||||
List<QosBearerFilter> qosBearerFilters = new ArrayList<>();
|
|
||||||
|
|
||||||
if (qosSession.qosFilters != null) {
|
|
||||||
for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) {
|
|
||||||
qosBearerFilters.add(QosBearerFilter.create(filter));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new QosBearerSession(
|
|
||||||
qosSession.qosSessionId,
|
|
||||||
Qos.create(qosSession.qos),
|
|
||||||
qosBearerFilters);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int describeContents() {
|
public int describeContents() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -119,44 +119,24 @@ public final class RouteSelectionDescriptor implements Parcelable {
|
|||||||
private final List<NetworkSliceInfo> mSliceInfo;
|
private final List<NetworkSliceInfo> mSliceInfo;
|
||||||
private final List<String> mDnn;
|
private final List<String> mDnn;
|
||||||
|
|
||||||
/** @hide */
|
|
||||||
RouteSelectionDescriptor(android.hardware.radio.V1_6.RouteSelectionDescriptor rsd) {
|
|
||||||
this(rsd.precedence, rsd.sessionType.value(), rsd.sscMode.value(), rsd.sliceInfo,
|
|
||||||
rsd.dnn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public RouteSelectionDescriptor(int precedence, int sessionType, int sscMode,
|
public RouteSelectionDescriptor(int precedence, int sessionType, int sscMode,
|
||||||
List<android.hardware.radio.V1_6.SliceInfo> sliceInfo, List<String> dnn) {
|
List<NetworkSliceInfo> sliceInfo, List<String> dnn) {
|
||||||
mPrecedence = precedence;
|
mPrecedence = precedence;
|
||||||
mSessionType = sessionType;
|
mSessionType = sessionType;
|
||||||
mSscMode = sscMode;
|
mSscMode = sscMode;
|
||||||
mSliceInfo = new ArrayList<NetworkSliceInfo>();
|
mSliceInfo = new ArrayList<>();
|
||||||
for (android.hardware.radio.V1_6.SliceInfo si : sliceInfo) {
|
mSliceInfo.addAll(sliceInfo);
|
||||||
mSliceInfo.add(sliceInfoBuilder(si));
|
mDnn = new ArrayList<>();
|
||||||
}
|
|
||||||
mDnn = new ArrayList<String>();
|
|
||||||
mDnn.addAll(dnn);
|
mDnn.addAll(dnn);
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkSliceInfo sliceInfoBuilder(android.hardware.radio.V1_6.SliceInfo si) {
|
|
||||||
NetworkSliceInfo.Builder builder = new NetworkSliceInfo.Builder()
|
|
||||||
.setSliceServiceType(si.sst)
|
|
||||||
.setMappedHplmnSliceServiceType(si.mappedHplmnSst);
|
|
||||||
if (si.sliceDifferentiator != NetworkSliceInfo.SLICE_DIFFERENTIATOR_NO_SLICE) {
|
|
||||||
builder
|
|
||||||
.setSliceDifferentiator(si.sliceDifferentiator)
|
|
||||||
.setMappedHplmnSliceDifferentiator(si.mappedHplmnSD);
|
|
||||||
}
|
|
||||||
return builder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private RouteSelectionDescriptor(Parcel p) {
|
private RouteSelectionDescriptor(Parcel p) {
|
||||||
mPrecedence = p.readInt();
|
mPrecedence = p.readInt();
|
||||||
mSessionType = p.readInt();
|
mSessionType = p.readInt();
|
||||||
mSscMode = p.readInt();
|
mSscMode = p.readInt();
|
||||||
mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
|
mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
|
||||||
mDnn = new ArrayList<String>();
|
mDnn = new ArrayList<>();
|
||||||
p.readStringList(mDnn);
|
p.readStringList(mDnn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,39 +33,15 @@ public final class SlicingConfig implements Parcelable {
|
|||||||
private final List<NetworkSliceInfo> mSliceInfo;
|
private final List<NetworkSliceInfo> mSliceInfo;
|
||||||
|
|
||||||
public SlicingConfig() {
|
public SlicingConfig() {
|
||||||
mUrspRules = new ArrayList<UrspRule>();
|
mUrspRules = new ArrayList<>();
|
||||||
mSliceInfo = new ArrayList<NetworkSliceInfo>();
|
mSliceInfo = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public SlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
|
public SlicingConfig(List<UrspRule> urspRules, List<NetworkSliceInfo> sliceInfo) {
|
||||||
this(sc.urspRules, sc.sliceInfo);
|
this();
|
||||||
}
|
mUrspRules.addAll(urspRules);
|
||||||
|
mSliceInfo.addAll(sliceInfo);
|
||||||
/** @hide */
|
|
||||||
public SlicingConfig(List<android.hardware.radio.V1_6.UrspRule> urspRules,
|
|
||||||
List<android.hardware.radio.V1_6.SliceInfo> sliceInfo) {
|
|
||||||
mUrspRules = new ArrayList<UrspRule>();
|
|
||||||
for (android.hardware.radio.V1_6.UrspRule ur : urspRules) {
|
|
||||||
mUrspRules.add(new UrspRule(ur.precedence, ur.trafficDescriptors,
|
|
||||||
ur.routeSelectionDescriptor));
|
|
||||||
}
|
|
||||||
mSliceInfo = new ArrayList<NetworkSliceInfo>();
|
|
||||||
for (android.hardware.radio.V1_6.SliceInfo si : sliceInfo) {
|
|
||||||
mSliceInfo.add(sliceInfoBuilder(si));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private NetworkSliceInfo sliceInfoBuilder(android.hardware.radio.V1_6.SliceInfo si) {
|
|
||||||
NetworkSliceInfo.Builder builder = new NetworkSliceInfo.Builder()
|
|
||||||
.setSliceServiceType(si.sst)
|
|
||||||
.setMappedHplmnSliceServiceType(si.mappedHplmnSst);
|
|
||||||
if (si.sliceDifferentiator != NetworkSliceInfo.SLICE_DIFFERENTIATOR_NO_SLICE) {
|
|
||||||
builder
|
|
||||||
.setSliceDifferentiator(si.sliceDifferentiator)
|
|
||||||
.setMappedHplmnSliceDifferentiator(si.mappedHplmnSD);
|
|
||||||
}
|
|
||||||
return builder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
|
|||||||
@@ -19,12 +19,9 @@ package android.telephony.data;
|
|||||||
import android.annotation.IntRange;
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.hardware.radio.V1_6.OptionalDnn;
|
|
||||||
import android.hardware.radio.V1_6.OptionalOsAppId;
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -52,48 +49,14 @@ public final class UrspRule implements Parcelable {
|
|||||||
private final List<TrafficDescriptor> mTrafficDescriptors;
|
private final List<TrafficDescriptor> mTrafficDescriptors;
|
||||||
private final List<RouteSelectionDescriptor> mRouteSelectionDescriptor;
|
private final List<RouteSelectionDescriptor> mRouteSelectionDescriptor;
|
||||||
|
|
||||||
UrspRule(android.hardware.radio.V1_6.UrspRule ur) {
|
|
||||||
this(ur.precedence, ur.trafficDescriptors, ur.routeSelectionDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public UrspRule(int precedence,
|
public UrspRule(int precedence, List<TrafficDescriptor> trafficDescriptors,
|
||||||
List<android.hardware.radio.V1_6.TrafficDescriptor> trafficDescriptors,
|
List<RouteSelectionDescriptor> routeSelectionDescriptor) {
|
||||||
List<android.hardware.radio.V1_6.RouteSelectionDescriptor> routeSelectionDescriptor) {
|
|
||||||
mPrecedence = precedence;
|
mPrecedence = precedence;
|
||||||
mTrafficDescriptors = new ArrayList<TrafficDescriptor>();
|
mTrafficDescriptors = new ArrayList<>();
|
||||||
for (android.hardware.radio.V1_6.TrafficDescriptor td : trafficDescriptors) {
|
mTrafficDescriptors.addAll(trafficDescriptors);
|
||||||
mTrafficDescriptors.add(convertToTrafficDescriptor(td));
|
mRouteSelectionDescriptor = new ArrayList<>();
|
||||||
}
|
mRouteSelectionDescriptor.addAll(routeSelectionDescriptor);
|
||||||
mRouteSelectionDescriptor = new ArrayList<RouteSelectionDescriptor>();
|
|
||||||
for (android.hardware.radio.V1_6.RouteSelectionDescriptor rsd : routeSelectionDescriptor) {
|
|
||||||
mRouteSelectionDescriptor.add(new RouteSelectionDescriptor(rsd));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Convert an ArrayList of Bytes to an exactly-sized primitive array */
|
|
||||||
private byte[] arrayListToPrimitiveArray(ArrayList<Byte> bytes) {
|
|
||||||
byte[] ret = new byte[bytes.size()];
|
|
||||||
for (int i = 0; i < ret.length; i++) {
|
|
||||||
ret[i] = bytes.get(i);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
private TrafficDescriptor convertToTrafficDescriptor(
|
|
||||||
android.hardware.radio.V1_6.TrafficDescriptor td) {
|
|
||||||
String dnn = td.dnn.getDiscriminator() == OptionalDnn.hidl_discriminator.noinit
|
|
||||||
? null : td.dnn.value();
|
|
||||||
String osAppId = td.osAppId.getDiscriminator() == OptionalOsAppId.hidl_discriminator.noinit
|
|
||||||
? null : new String(arrayListToPrimitiveArray(td.osAppId.value().osAppId));
|
|
||||||
TrafficDescriptor.Builder builder = new TrafficDescriptor.Builder();
|
|
||||||
if (dnn != null) {
|
|
||||||
builder.setDataNetworkName(dnn);
|
|
||||||
}
|
|
||||||
if (osAppId != null) {
|
|
||||||
builder.setOsAppId(osAppId);
|
|
||||||
}
|
|
||||||
return builder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private UrspRule(Parcel p) {
|
private UrspRule(Parcel p) {
|
||||||
|
|||||||
@@ -566,7 +566,7 @@ public interface RILConstants {
|
|||||||
int RIL_UNSOL_RINGBACK_TONE = 1029;
|
int RIL_UNSOL_RINGBACK_TONE = 1029;
|
||||||
int RIL_UNSOL_RESEND_INCALL_MUTE = 1030;
|
int RIL_UNSOL_RESEND_INCALL_MUTE = 1030;
|
||||||
int RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED = 1031;
|
int RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED = 1031;
|
||||||
int RIL_UNSOl_CDMA_PRL_CHANGED = 1032;
|
int RIL_UNSOL_CDMA_PRL_CHANGED = 1032;
|
||||||
int RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE = 1033;
|
int RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE = 1033;
|
||||||
int RIL_UNSOL_RIL_CONNECTED = 1034;
|
int RIL_UNSOL_RIL_CONNECTED = 1034;
|
||||||
int RIL_UNSOL_VOICE_RADIO_TECH_CHANGED = 1035;
|
int RIL_UNSOL_VOICE_RADIO_TECH_CHANGED = 1035;
|
||||||
|
|||||||
Reference in New Issue
Block a user