Update constructors for IRadioData classes
Test: atest FrameworksTelephonyTests Bug: 198331673 Change-Id: I8480df1164548dde491c6ae6251bbc2725c3eadf Merged-In: I8480df1164548dde491c6ae6251bbc2725c3eadf
This commit is contained in:
@ -244,6 +244,12 @@ java_library {
|
||||
"android.hardware.radio-V1.4-java",
|
||||
"android.hardware.radio-V1.5-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",
|
||||
"android.hardware.thermal-V1.1-java",
|
||||
|
@ -32,15 +32,9 @@ public final class EpsQos extends Qos implements Parcelable {
|
||||
|
||||
int qosClassId;
|
||||
|
||||
public EpsQos() {
|
||||
super(Qos.QOS_TYPE_EPS,
|
||||
new android.hardware.radio.V1_6.QosBandwidth(),
|
||||
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;
|
||||
public EpsQos(QosBandwidth downlink, QosBandwidth uplink, int qosClassId) {
|
||||
super(Qos.QOS_TYPE_EPS, downlink, uplink);
|
||||
this.qosClassId = qosClassId;
|
||||
}
|
||||
|
||||
private EpsQos(Parcel source) {
|
||||
|
@ -33,39 +33,15 @@ public final class NetworkSlicingConfig implements Parcelable {
|
||||
private final List<NetworkSliceInfo> mSliceInfo;
|
||||
|
||||
public NetworkSlicingConfig() {
|
||||
mUrspRules = new ArrayList<UrspRule>();
|
||||
mSliceInfo = new ArrayList<NetworkSliceInfo>();
|
||||
mUrspRules = new ArrayList<>();
|
||||
mSliceInfo = new ArrayList<>();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public NetworkSlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
|
||||
this(sc.urspRules, sc.sliceInfo);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public NetworkSlicingConfig(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();
|
||||
public NetworkSlicingConfig(List<UrspRule> urspRules, List<NetworkSliceInfo> sliceInfo) {
|
||||
this();
|
||||
mUrspRules.addAll(urspRules);
|
||||
mSliceInfo.addAll(sliceInfo);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
@ -32,11 +32,12 @@ public final class NrQos extends Qos implements Parcelable {
|
||||
int fiveQi;
|
||||
int averagingWindowMs;
|
||||
|
||||
public NrQos(@NonNull android.hardware.radio.V1_6.NrQos qos) {
|
||||
super(Qos.QOS_TYPE_NR, qos.downlink, qos.uplink);
|
||||
fiveQi = qos.fiveQi;
|
||||
qosFlowId = qos.qfi;
|
||||
averagingWindowMs = qos.averagingWindowMs;
|
||||
public NrQos(QosBandwidth downlink, QosBandwidth uplink, int qosFlowId, int fiveQi,
|
||||
int averagingWindowMs) {
|
||||
super(Qos.QOS_TYPE_NR, downlink, uplink);
|
||||
this.qosFlowId = qosFlowId;
|
||||
this.fiveQi = fiveQi;
|
||||
this.averagingWindowMs = averagingWindowMs;
|
||||
}
|
||||
|
||||
private NrQos(Parcel source) {
|
||||
|
@ -48,12 +48,10 @@ public abstract class Qos {
|
||||
final QosBandwidth downlink;
|
||||
final QosBandwidth uplink;
|
||||
|
||||
Qos(int type,
|
||||
@NonNull android.hardware.radio.V1_6.QosBandwidth downlink,
|
||||
@NonNull android.hardware.radio.V1_6.QosBandwidth uplink) {
|
||||
Qos(int type, QosBandwidth downlink, QosBandwidth uplink) {
|
||||
this.type = type;
|
||||
this.downlink = new QosBandwidth(downlink.maxBitrateKbps, downlink.guaranteedBitrateKbps);
|
||||
this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps);
|
||||
this.downlink = downlink;
|
||||
this.uplink = uplink;
|
||||
}
|
||||
|
||||
public QosBandwidth getDownlinkBandwidth() {
|
||||
@ -68,10 +66,7 @@ public abstract class Qos {
|
||||
int maxBitrateKbps;
|
||||
int guaranteedBitrateKbps;
|
||||
|
||||
QosBandwidth() {
|
||||
}
|
||||
|
||||
QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
|
||||
public QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
|
||||
this.maxBitrateKbps = maxBitrateKbps;
|
||||
this.guaranteedBitrateKbps = guaranteedBitrateKbps;
|
||||
}
|
||||
@ -157,18 +152,6 @@ public abstract class Qos {
|
||||
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 */
|
||||
public @QosType int getType() {
|
||||
return type;
|
||||
|
@ -18,15 +18,12 @@ package android.telephony.data;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.net.InetAddresses;
|
||||
import android.net.LinkAddress;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Inet4Address;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -97,20 +94,13 @@ public final class QosBearerFilter implements Parcelable {
|
||||
*/
|
||||
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,
|
||||
PortRange localPort, PortRange remotePort, int protocol, int tos,
|
||||
long flowLabel, long spi, int direction, int precedence) {
|
||||
this.localAddresses = localAddresses;
|
||||
this.remoteAddresses = remoteAddresses;
|
||||
this.localAddresses = new ArrayList<>();
|
||||
this.localAddresses.addAll(localAddresses);
|
||||
this.remoteAddresses = new ArrayList<>();
|
||||
this.remoteAddresses.addAll(remoteAddresses);
|
||||
this.localPort = localPort;
|
||||
this.remotePort = remotePort;
|
||||
this.protocol = protocol;
|
||||
@ -141,82 +131,10 @@ public final class QosBearerFilter implements Parcelable {
|
||||
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 {
|
||||
int start;
|
||||
int end;
|
||||
|
||||
PortRange() {
|
||||
start = -1;
|
||||
end = -1;
|
||||
}
|
||||
|
||||
private PortRange(Parcel source) {
|
||||
start = source.readInt();
|
||||
end = source.readInt();
|
||||
@ -337,32 +255,6 @@ public final class QosBearerFilter implements Parcelable {
|
||||
&& 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) {
|
||||
localAddresses = new ArrayList<>();
|
||||
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
||||
|
@ -36,10 +36,12 @@ public final class QosBearerSession implements Parcelable{
|
||||
final Qos qos;
|
||||
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.qos = qos;
|
||||
this.qosBearerFilterList = qosBearerFilterList;
|
||||
this.qosBearerFilterList = new ArrayList<>();
|
||||
this.qosBearerFilterList.addAll(qosBearerFilterList);
|
||||
}
|
||||
|
||||
private QosBearerSession(Parcel source) {
|
||||
@ -72,22 +74,6 @@ public final class QosBearerSession implements Parcelable{
|
||||
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
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
|
@ -119,44 +119,24 @@ public final class RouteSelectionDescriptor implements Parcelable {
|
||||
private final List<NetworkSliceInfo> mSliceInfo;
|
||||
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 */
|
||||
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;
|
||||
mSessionType = sessionType;
|
||||
mSscMode = sscMode;
|
||||
mSliceInfo = new ArrayList<NetworkSliceInfo>();
|
||||
for (android.hardware.radio.V1_6.SliceInfo si : sliceInfo) {
|
||||
mSliceInfo.add(sliceInfoBuilder(si));
|
||||
}
|
||||
mDnn = new ArrayList<String>();
|
||||
mSliceInfo = new ArrayList<>();
|
||||
mSliceInfo.addAll(sliceInfo);
|
||||
mDnn = new ArrayList<>();
|
||||
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) {
|
||||
mPrecedence = p.readInt();
|
||||
mSessionType = p.readInt();
|
||||
mSscMode = p.readInt();
|
||||
mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
|
||||
mDnn = new ArrayList<String>();
|
||||
mDnn = new ArrayList<>();
|
||||
p.readStringList(mDnn);
|
||||
}
|
||||
|
||||
|
@ -19,12 +19,9 @@ package android.telephony.data;
|
||||
import android.annotation.IntRange;
|
||||
import android.annotation.NonNull;
|
||||
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.Parcelable;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -52,48 +49,14 @@ public final class UrspRule implements Parcelable {
|
||||
private final List<TrafficDescriptor> mTrafficDescriptors;
|
||||
private final List<RouteSelectionDescriptor> mRouteSelectionDescriptor;
|
||||
|
||||
UrspRule(android.hardware.radio.V1_6.UrspRule ur) {
|
||||
this(ur.precedence, ur.trafficDescriptors, ur.routeSelectionDescriptor);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public UrspRule(int precedence,
|
||||
List<android.hardware.radio.V1_6.TrafficDescriptor> trafficDescriptors,
|
||||
List<android.hardware.radio.V1_6.RouteSelectionDescriptor> routeSelectionDescriptor) {
|
||||
public UrspRule(int precedence, List<TrafficDescriptor> trafficDescriptors,
|
||||
List<RouteSelectionDescriptor> routeSelectionDescriptor) {
|
||||
mPrecedence = precedence;
|
||||
mTrafficDescriptors = new ArrayList<TrafficDescriptor>();
|
||||
for (android.hardware.radio.V1_6.TrafficDescriptor td : trafficDescriptors) {
|
||||
mTrafficDescriptors.add(convertToTrafficDescriptor(td));
|
||||
}
|
||||
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();
|
||||
byte[] osAppId = td.osAppId.getDiscriminator() == OptionalOsAppId.hidl_discriminator.noinit
|
||||
? null : 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();
|
||||
mTrafficDescriptors = new ArrayList<>();
|
||||
mTrafficDescriptors.addAll(trafficDescriptors);
|
||||
mRouteSelectionDescriptor = new ArrayList<>();
|
||||
mRouteSelectionDescriptor.addAll(routeSelectionDescriptor);
|
||||
}
|
||||
|
||||
private UrspRule(Parcel p) {
|
||||
|
@ -566,7 +566,7 @@ public interface RILConstants {
|
||||
int RIL_UNSOL_RINGBACK_TONE = 1029;
|
||||
int RIL_UNSOL_RESEND_INCALL_MUTE = 1030;
|
||||
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_RIL_CONNECTED = 1034;
|
||||
int RIL_UNSOL_VOICE_RADIO_TECH_CHANGED = 1035;
|
||||
|
Reference in New Issue
Block a user