Update constructors for IRadioData classes

Test: atest FrameworksTelephonyTests
Bug: 198331673
Change-Id: I8480df1164548dde491c6ae6251bbc2725c3eadf
Merged-In: I8480df1164548dde491c6ae6251bbc2725c3eadf
This commit is contained in:
Sarah Chin
2021-09-29 12:13:27 -07:00
parent 8dafa60a2f
commit 80b8c7f128
10 changed files with 45 additions and 264 deletions

View File

@ -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",

View File

@ -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) {

View File

@ -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 */

View File

@ -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) {

View File

@ -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;

View File

@ -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());

View File

@ -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;

View File

@ -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);
}

View File

@ -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) {

View File

@ -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;