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

Commit 0976b5d9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I8d3b81a5,I36a6c9f1

* changes:
  Implement parcelable for UWB types
  Implement UWB Address
parents f860dff7 3c99301a
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.uwb;

import android.annotation.FloatRange;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * Angle measurement
@@ -26,7 +28,7 @@ import android.annotation.FloatRange;
 *
 * @hide
 */
public final class AngleMeasurement {
public final class AngleMeasurement implements Parcelable {
    private final double mRadians;
    private final double mErrorRadians;
    private final double mConfidenceLevel;
@@ -73,6 +75,35 @@ public final class AngleMeasurement {
        return mConfidenceLevel;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeDouble(mRadians);
        dest.writeDouble(mErrorRadians);
        dest.writeDouble(mConfidenceLevel);
    }

    public static final @android.annotation.NonNull Creator<AngleMeasurement> CREATOR =
            new Creator<AngleMeasurement>() {
                @Override
                public AngleMeasurement createFromParcel(Parcel in) {
                    Builder builder = new Builder();
                    builder.setRadians(in.readDouble());
                    builder.setErrorRadians(in.readDouble());
                    builder.setConfidenceLevel(in.readDouble());
                    return builder.build();
                }

                @Override
                public AngleMeasurement[] newArray(int size) {
                    return new AngleMeasurement[size];
                }
    };

    /**
     * Builder class for {@link AngleMeasurement}.
     */
+35 −1
Original line number Diff line number Diff line
@@ -18,13 +18,15 @@ package android.uwb;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * Represents an angle of arrival measurement between two devices using Ultra Wideband
 *
 * @hide
 */
public final class AngleOfArrivalMeasurement {
public final class AngleOfArrivalMeasurement implements Parcelable {
    private final AngleMeasurement mAzimuthAngleMeasurement;
    private final AngleMeasurement mAltitudeAngleMeasurement;

@@ -70,6 +72,38 @@ public final class AngleOfArrivalMeasurement {
        return mAltitudeAngleMeasurement;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(mAzimuthAngleMeasurement, flags);
        dest.writeParcelable(mAltitudeAngleMeasurement, flags);
    }

    public static final @android.annotation.NonNull Creator<AngleOfArrivalMeasurement> CREATOR =
            new Creator<AngleOfArrivalMeasurement>() {
                @Override
                public AngleOfArrivalMeasurement createFromParcel(Parcel in) {
                    Builder builder = new Builder();

                    builder.setAzimuthAngleMeasurement(
                            in.readParcelable(AngleMeasurement.class.getClassLoader()));

                    builder.setAltitudeAngleMeasurement(
                            in.readParcelable(AngleMeasurement.class.getClassLoader()));

                    return builder.build();
                }

                @Override
                public AngleOfArrivalMeasurement[] newArray(int size) {
                    return new AngleOfArrivalMeasurement[size];
                }
            };

    /**
     * Builder class for {@link AngleOfArrivalMeasurement}.
     */
+32 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.uwb;

import android.annotation.FloatRange;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * A data point for the distance measurement
@@ -26,7 +28,7 @@ import android.annotation.FloatRange;
 *
 * @hide
 */
public final class DistanceMeasurement {
public final class DistanceMeasurement implements Parcelable {
    private final double mMeters;
    private final double mErrorMeters;
    private final double mConfidenceLevel;
@@ -69,6 +71,35 @@ public final class DistanceMeasurement {
        return mConfidenceLevel;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeDouble(mMeters);
        dest.writeDouble(mErrorMeters);
        dest.writeDouble(mConfidenceLevel);
    }

    public static final @android.annotation.NonNull Creator<DistanceMeasurement> CREATOR =
            new Creator<DistanceMeasurement>() {
                @Override
                public DistanceMeasurement createFromParcel(Parcel in) {
                    Builder builder = new Builder();
                    builder.setMeters(in.readDouble());
                    builder.setErrorMeters(in.readDouble());
                    builder.setConfidenceLevel(in.readDouble());
                    return builder.build();
                }

                @Override
                public DistanceMeasurement[] newArray(int size) {
                    return new DistanceMeasurement[size];
                }
    };

    /**
     * Builder to get a {@link DistanceMeasurement} object.
     */
+39 −1
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;

import java.lang.annotation.Retention;
@@ -30,7 +32,7 @@ import java.lang.annotation.RetentionPolicy;
 *
 * @hide
 */
public final class RangingMeasurement {
public final class RangingMeasurement implements Parcelable {
    private final UwbAddress mRemoteDeviceAddress;
    private final @Status int mStatus;
    private final long mElapsedRealtimeNanos;
@@ -127,6 +129,42 @@ public final class RangingMeasurement {
        return mAngleOfArrivalMeasurement;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(mRemoteDeviceAddress, flags);
        dest.writeInt(mStatus);
        dest.writeLong(mElapsedRealtimeNanos);
        dest.writeParcelable(mDistanceMeasurement, flags);
        dest.writeParcelable(mAngleOfArrivalMeasurement, flags);
    }

    public static final @android.annotation.NonNull Creator<RangingMeasurement> CREATOR =
            new Creator<RangingMeasurement>() {
                @Override
                public RangingMeasurement createFromParcel(Parcel in) {
                    Builder builder = new Builder();
                    builder.setRemoteDeviceAddress(
                            in.readParcelable(UwbAddress.class.getClassLoader()));
                    builder.setStatus(in.readInt());
                    builder.setElapsedRealtimeNanos(in.readLong());
                    builder.setDistanceMeasurement(
                            in.readParcelable(DistanceMeasurement.class.getClassLoader()));
                    builder.setAngleOfArrivalMeasurement(
                            in.readParcelable(AngleOfArrivalMeasurement.class.getClassLoader()));
                    return builder.build();
                }

                @Override
                public RangingMeasurement[] newArray(int size) {
                    return new RangingMeasurement[size];
                }
    };

    /**
     * Builder for a {@link RangingMeasurement} object.
     */
+60 −2
Original line number Diff line number Diff line
@@ -19,11 +19,13 @@ package android.uwb;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.util.Duration;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -36,7 +38,7 @@ import java.util.Set;
 *
 *  @hide
 */
public final class RangingParams {
public final class RangingParams implements Parcelable {
    private final boolean mIsInitiator;
    private final boolean mIsController;
    private final Duration mSamplePeriod;
@@ -199,6 +201,62 @@ public final class RangingParams {
        return new PersistableBundle(mSpecificationParameters);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeBoolean(mIsInitiator);
        dest.writeBoolean(mIsController);
        dest.writeLong(mSamplePeriod.getSeconds());
        dest.writeInt(mSamplePeriod.getNano());
        dest.writeParcelable(mLocalDeviceAddress, flags);

        UwbAddress[] remoteAddresses = new UwbAddress[mRemoteDeviceAddresses.size()];
        mRemoteDeviceAddresses.toArray(remoteAddresses);
        dest.writeParcelableArray(remoteAddresses, flags);

        dest.writeInt(mChannelNumber);
        dest.writeInt(mTransmitPreambleCodeIndex);
        dest.writeInt(mReceivePreambleCodeIndex);
        dest.writeInt(mStsPhyPacketType);
        dest.writePersistableBundle(mSpecificationParameters);
    }

    public static final @android.annotation.NonNull Creator<RangingParams> CREATOR =
            new Creator<RangingParams>() {
                @Override
                public RangingParams createFromParcel(Parcel in) {
                    Builder builder = new Builder();
                    builder.setIsInitiator(in.readBoolean());
                    builder.setIsController(in.readBoolean());
                    builder.setSamplePeriod(Duration.ofSeconds(in.readLong(), in.readInt()));
                    builder.setLocalDeviceAddress(
                            in.readParcelable(UwbAddress.class.getClassLoader()));

                    UwbAddress[] remoteAddresses =
                            in.readParcelableArray(null, UwbAddress.class);
                    for (UwbAddress remoteAddress : remoteAddresses) {
                        builder.addRemoteDeviceAddress(remoteAddress);
                    }

                    builder.setChannelNumber(in.readInt());
                    builder.setTransmitPreambleCodeIndex(in.readInt());
                    builder.setReceivePreambleCodeIndex(in.readInt());
                    builder.setStsPhPacketType(in.readInt());
                    builder.setSpecificationParameters(in.readPersistableBundle());

                    return builder.build();
                }

                @Override
                public RangingParams[] newArray(int size) {
                    return new RangingParams[size];
                }
    };

    /**
     * Builder class for {@link RangingParams}.
     */
Loading