diff --git a/wifi/java/android/net/wifi/rtt/RangingResult.java b/wifi/java/android/net/wifi/rtt/RangingResult.java index 7fe85be809640..5518d35eb4c7f 100644 --- a/wifi/java/android/net/wifi/rtt/RangingResult.java +++ b/wifi/java/android/net/wifi/rtt/RangingResult.java @@ -22,7 +22,6 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.net.MacAddress; import android.net.wifi.aware.PeerHandle; -import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; @@ -79,19 +78,24 @@ public final class RangingResult implements Parcelable { private final int mDistanceMm; private final int mDistanceStdDevMm; private final int mRssi; + private final int mNumAttemptedMeasurements; + private final int mNumSuccessfulMeasurements; private final byte[] mLci; private final byte[] mLcr; private final long mTimestamp; /** @hide */ public RangingResult(@RangeResultStatus int status, @NonNull MacAddress mac, int distanceMm, - int distanceStdDevMm, int rssi, byte[] lci, byte[] lcr, long timestamp) { + int distanceStdDevMm, int rssi, int numAttemptedMeasurements, + int numSuccessfulMeasurements, byte[] lci, byte[] lcr, long timestamp) { mStatus = status; mMac = mac; mPeerHandle = null; mDistanceMm = distanceMm; mDistanceStdDevMm = distanceStdDevMm; mRssi = rssi; + mNumAttemptedMeasurements = numAttemptedMeasurements; + mNumSuccessfulMeasurements = numSuccessfulMeasurements; mLci = lci == null ? EMPTY_BYTE_ARRAY : lci; mLcr = lcr == null ? EMPTY_BYTE_ARRAY : lcr; mTimestamp = timestamp; @@ -99,13 +103,16 @@ public final class RangingResult implements Parcelable { /** @hide */ public RangingResult(@RangeResultStatus int status, PeerHandle peerHandle, int distanceMm, - int distanceStdDevMm, int rssi, byte[] lci, byte[] lcr, long timestamp) { + int distanceStdDevMm, int rssi, int numAttemptedMeasurements, + int numSuccessfulMeasurements, byte[] lci, byte[] lcr, long timestamp) { mStatus = status; mMac = null; mPeerHandle = peerHandle; mDistanceMm = distanceMm; mDistanceStdDevMm = distanceStdDevMm; mRssi = rssi; + mNumAttemptedMeasurements = numAttemptedMeasurements; + mNumSuccessfulMeasurements = numSuccessfulMeasurements; mLci = lci == null ? EMPTY_BYTE_ARRAY : lci; mLcr = lcr == null ? EMPTY_BYTE_ARRAY : lcr; mTimestamp = timestamp; @@ -190,6 +197,42 @@ public final class RangingResult implements Parcelable { return mRssi; } + /** + * @return The number of attempted measurements used in the RTT exchange resulting in this set + * of results. + *
+ * Only valid if {@link #getStatus()} returns {@link #STATUS_SUCCESS}, otherwise will throw an + * exception. + * @hide + */ + public int getNumAttemptedMeasurements() { + if (mStatus != STATUS_SUCCESS) { + throw new IllegalStateException( + "getNumAttemptedMeasurements(): invoked on an invalid result: getStatus()=" + + mStatus); + } + return mNumAttemptedMeasurements; + } + + /** + * @return The number of successful measurements used to calculate the distance and standard + * deviation. If the number of successful measurements if 1 then then standard deviation, + * returned by {@link #getDistanceStdDevMm()}, is not valid (a 0 is returned for the standard + * deviation). + *
+ * Only valid if {@link #getStatus()} returns {@link #STATUS_SUCCESS}, otherwise will throw an
+ * exception.
+ * @hide
+ */
+ public int getNumSuccessfulMeasurements() {
+ if (mStatus != STATUS_SUCCESS) {
+ throw new IllegalStateException(
+ "getNumSuccessfulMeasurements(): invoked on an invalid result: getStatus()="
+ + mStatus);
+ }
+ return mNumSuccessfulMeasurements;
+ }
+
/**
* @return The Location Configuration Information (LCI) as self-reported by the peer. The format
* is specified in the IEEE 802.11-2016 specifications, section 9.4.2.22.10.
@@ -269,6 +312,8 @@ public final class RangingResult implements Parcelable {
dest.writeInt(mDistanceMm);
dest.writeInt(mDistanceStdDevMm);
dest.writeInt(mRssi);
+ dest.writeInt(mNumAttemptedMeasurements);
+ dest.writeInt(mNumSuccessfulMeasurements);
dest.writeByteArray(mLci);
dest.writeByteArray(mLcr);
dest.writeLong(mTimestamp);
@@ -296,15 +341,17 @@ public final class RangingResult implements Parcelable {
int distanceMm = in.readInt();
int distanceStdDevMm = in.readInt();
int rssi = in.readInt();
+ int numAttemptedMeasurements = in.readInt();
+ int numSuccessfulMeasurements = in.readInt();
byte[] lci = in.createByteArray();
byte[] lcr = in.createByteArray();
long timestamp = in.readLong();
if (peerHandlePresent) {
return new RangingResult(status, peerHandle, distanceMm, distanceStdDevMm, rssi,
- lci, lcr, timestamp);
+ numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp);
} else {
return new RangingResult(status, mac, distanceMm, distanceStdDevMm, rssi,
- lci, lcr, timestamp);
+ numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp);
}
}
};
@@ -316,7 +363,9 @@ public final class RangingResult implements Parcelable {
mMac).append(", peerHandle=").append(
mPeerHandle == null ? "