Update constructors for IRadioData classes

Test: atest FrameworksTelephonyTests
Bug: 198331673
Change-Id: I8480df1164548dde491c6ae6251bbc2725c3eadf
Merged-In: I8480df1164548dde491c6ae6251bbc2725c3eadf
diff --git a/Android.bp b/Android.bp
index 93209d8..d976b91 100644
--- a/Android.bp
+++ b/Android.bp
@@ -244,6 +244,12 @@
         "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",
diff --git a/telephony/java/android/telephony/data/EpsQos.java b/telephony/java/android/telephony/data/EpsQos.java
index 22c8b0a..64c956f 100644
--- a/telephony/java/android/telephony/data/EpsQos.java
+++ b/telephony/java/android/telephony/data/EpsQos.java
@@ -32,15 +32,9 @@
 
     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) {
diff --git a/telephony/java/android/telephony/data/NetworkSlicingConfig.java b/telephony/java/android/telephony/data/NetworkSlicingConfig.java
index dec787f..024a3f5 100644
--- a/telephony/java/android/telephony/data/NetworkSlicingConfig.java
+++ b/telephony/java/android/telephony/data/NetworkSlicingConfig.java
@@ -33,39 +33,15 @@
     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 */
diff --git a/telephony/java/android/telephony/data/NrQos.java b/telephony/java/android/telephony/data/NrQos.java
index fe124ac..a24d5fa 100644
--- a/telephony/java/android/telephony/data/NrQos.java
+++ b/telephony/java/android/telephony/data/NrQos.java
@@ -32,11 +32,12 @@
     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) {
diff --git a/telephony/java/android/telephony/data/Qos.java b/telephony/java/android/telephony/data/Qos.java
index c286c621..8c437c8 100644
--- a/telephony/java/android/telephony/data/Qos.java
+++ b/telephony/java/android/telephony/data/Qos.java
@@ -48,12 +48,10 @@
     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 @@
         int maxBitrateKbps;
         int guaranteedBitrateKbps;
 
-        QosBandwidth() {
-        }
-
-        QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
+        public QosBandwidth(int maxBitrateKbps, int guaranteedBitrateKbps) {
             this.maxBitrateKbps = maxBitrateKbps;
             this.guaranteedBitrateKbps = guaranteedBitrateKbps;
         }
@@ -158,18 +153,6 @@
     }
 
     /** @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;
     }
diff --git a/telephony/java/android/telephony/data/QosBearerFilter.java b/telephony/java/android/telephony/data/QosBearerFilter.java
index 54930d0..5f5762b 100644
--- a/telephony/java/android/telephony/data/QosBearerFilter.java
+++ b/telephony/java/android/telephony/data/QosBearerFilter.java
@@ -18,15 +18,12 @@
 
 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 @@
      */
     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 @@
         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 @@
                 && 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());
diff --git a/telephony/java/android/telephony/data/QosBearerSession.java b/telephony/java/android/telephony/data/QosBearerSession.java
index 30effc9..ffeb08a 100644
--- a/telephony/java/android/telephony/data/QosBearerSession.java
+++ b/telephony/java/android/telephony/data/QosBearerSession.java
@@ -36,10 +36,12 @@
     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 @@
         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;
diff --git a/telephony/java/android/telephony/data/RouteSelectionDescriptor.java b/telephony/java/android/telephony/data/RouteSelectionDescriptor.java
index c2457f2..b3b8464 100644
--- a/telephony/java/android/telephony/data/RouteSelectionDescriptor.java
+++ b/telephony/java/android/telephony/data/RouteSelectionDescriptor.java
@@ -120,43 +120,23 @@
     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);
     }
 
diff --git a/telephony/java/android/telephony/data/UrspRule.java b/telephony/java/android/telephony/data/UrspRule.java
index fbe1999..afbd429 100644
--- a/telephony/java/android/telephony/data/UrspRule.java
+++ b/telephony/java/android/telephony/data/UrspRule.java
@@ -19,12 +19,9 @@
 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 @@
     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) {
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index fe8e671..b73f827 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -566,7 +566,7 @@
     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;