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

Commit fa565ffc authored by Sarah Chin's avatar Sarah Chin Committed by Gerrit Code Review
Browse files

Merge "Update constructors for IRadioData classes"

parents 28856230 e3070d75
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