Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3070d75 authored by Sarah Chin's avatar Sarah Chin
Browse files

Update constructors for IRadioData classes

Test: atest FrameworksTelephonyTests
Bug: 198331673
Change-Id: I8480df1164548dde491c6ae6251bbc2725c3eadf
Merged-In: I8480df1164548dde491c6ae6251bbc2725c3eadf
parent 662af62f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -228,6 +228,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",
+3 −9
Original line number Diff line number Diff line
@@ -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) {
+6 −5
Original line number Diff line number Diff line
@@ -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) {
+4 −21
Original line number Diff line number Diff line
@@ -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;
+4 −112
Original line number Diff line number Diff line
@@ -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;
@@ -91,20 +88,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;
@@ -135,82 +125,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();
@@ -325,32 +243,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());
Loading