Loading wifi/java/android/net/wifi/rtt/RangingResult.java +58 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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. * <p> * 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). * <p> * 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. Loading Loading @@ -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); Loading Loading @@ -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); } } }; Loading @@ -316,7 +363,9 @@ public final class RangingResult implements Parcelable { mMac).append(", peerHandle=").append( mPeerHandle == null ? "<null>" : mPeerHandle.peerId).append(", distanceMm=").append( mDistanceMm).append(", distanceStdDevMm=").append(mDistanceStdDevMm).append( ", rssi=").append(mRssi).append(", lci=").append(mLci).append(", lcr=").append( ", rssi=").append(mRssi).append(", numAttemptedMeasurements=").append( mNumAttemptedMeasurements).append(", numSuccessfulMeasurements=").append( mNumSuccessfulMeasurements).append(", lci=").append(mLci).append(", lcr=").append( mLcr).append(", timestamp=").append(mTimestamp).append("]").toString(); } Loading @@ -335,6 +384,8 @@ public final class RangingResult implements Parcelable { return mStatus == lhs.mStatus && Objects.equals(mMac, lhs.mMac) && Objects.equals( mPeerHandle, lhs.mPeerHandle) && mDistanceMm == lhs.mDistanceMm && mDistanceStdDevMm == lhs.mDistanceStdDevMm && mRssi == lhs.mRssi && mNumAttemptedMeasurements == lhs.mNumAttemptedMeasurements && mNumSuccessfulMeasurements == lhs.mNumSuccessfulMeasurements && Arrays.equals(mLci, lhs.mLci) && Arrays.equals(mLcr, lhs.mLcr) && mTimestamp == lhs.mTimestamp; } Loading @@ -342,6 +393,6 @@ public final class RangingResult implements Parcelable { @Override public int hashCode() { return Objects.hash(mStatus, mMac, mPeerHandle, mDistanceMm, mDistanceStdDevMm, mRssi, mLci, mLcr, mTimestamp); mNumAttemptedMeasurements, mNumSuccessfulMeasurements, mLci, mLcr, mTimestamp); } } wifi/tests/src/android/net/wifi/rtt/WifiRttManagerTest.java +11 −7 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class WifiRttManagerTest { List<RangingResult> results = new ArrayList<>(); results.add( new RangingResult(RangingResult.STATUS_SUCCESS, MacAddress.BROADCAST_ADDRESS, 15, 5, 10, null, null, 666)); 10, 8, 5, null, null, 666)); RangingResultCallback callbackMock = mock(RangingResultCallback.class); ArgumentCaptor<IRttCallback> callbackCaptor = ArgumentCaptor.forClass(IRttCallback.class); Loading Loading @@ -232,13 +232,15 @@ public class WifiRttManagerTest { int distanceCm = 105; int distanceStdDevCm = 10; int rssi = 5; int numAttemptedMeasurements = 8; int numSuccessfulMeasurements = 3; long timestamp = System.currentTimeMillis(); byte[] lci = { 0x5, 0x6, 0x7 }; byte[] lcr = { 0x1, 0x2, 0x3, 0xA, 0xB, 0xC }; // RangingResults constructed with a MAC address RangingResult result = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, lci, lcr, timestamp); numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp); Parcel parcelW = Parcel.obtain(); result.writeToParcel(parcelW, 0); Loading @@ -254,7 +256,7 @@ public class WifiRttManagerTest { // RangingResults constructed with a PeerHandle result = new RangingResult(status, peerHandle, distanceCm, distanceStdDevCm, rssi, null, null, timestamp); numAttemptedMeasurements, numSuccessfulMeasurements, null, null, timestamp); parcelW = Parcel.obtain(); result.writeToParcel(parcelW, 0); Loading @@ -280,14 +282,16 @@ public class WifiRttManagerTest { int distanceCm = 105; int distanceStdDevCm = 10; int rssi = 5; int numAttemptedMeasurements = 10; int numSuccessfulMeasurements = 3; long timestamp = System.currentTimeMillis(); byte[] lci = { }; byte[] lcr = { }; RangingResult rr1 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, lci, lcr, timestamp); RangingResult rr2 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, null, null, timestamp); RangingResult rr1 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp); RangingResult rr2 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, numAttemptedMeasurements, numSuccessfulMeasurements, null, null, timestamp); assertEquals(rr1, rr2); } Loading Loading
wifi/java/android/net/wifi/rtt/RangingResult.java +58 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; Loading Loading @@ -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. * <p> * 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). * <p> * 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. Loading Loading @@ -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); Loading Loading @@ -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); } } }; Loading @@ -316,7 +363,9 @@ public final class RangingResult implements Parcelable { mMac).append(", peerHandle=").append( mPeerHandle == null ? "<null>" : mPeerHandle.peerId).append(", distanceMm=").append( mDistanceMm).append(", distanceStdDevMm=").append(mDistanceStdDevMm).append( ", rssi=").append(mRssi).append(", lci=").append(mLci).append(", lcr=").append( ", rssi=").append(mRssi).append(", numAttemptedMeasurements=").append( mNumAttemptedMeasurements).append(", numSuccessfulMeasurements=").append( mNumSuccessfulMeasurements).append(", lci=").append(mLci).append(", lcr=").append( mLcr).append(", timestamp=").append(mTimestamp).append("]").toString(); } Loading @@ -335,6 +384,8 @@ public final class RangingResult implements Parcelable { return mStatus == lhs.mStatus && Objects.equals(mMac, lhs.mMac) && Objects.equals( mPeerHandle, lhs.mPeerHandle) && mDistanceMm == lhs.mDistanceMm && mDistanceStdDevMm == lhs.mDistanceStdDevMm && mRssi == lhs.mRssi && mNumAttemptedMeasurements == lhs.mNumAttemptedMeasurements && mNumSuccessfulMeasurements == lhs.mNumSuccessfulMeasurements && Arrays.equals(mLci, lhs.mLci) && Arrays.equals(mLcr, lhs.mLcr) && mTimestamp == lhs.mTimestamp; } Loading @@ -342,6 +393,6 @@ public final class RangingResult implements Parcelable { @Override public int hashCode() { return Objects.hash(mStatus, mMac, mPeerHandle, mDistanceMm, mDistanceStdDevMm, mRssi, mLci, mLcr, mTimestamp); mNumAttemptedMeasurements, mNumSuccessfulMeasurements, mLci, mLcr, mTimestamp); } }
wifi/tests/src/android/net/wifi/rtt/WifiRttManagerTest.java +11 −7 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class WifiRttManagerTest { List<RangingResult> results = new ArrayList<>(); results.add( new RangingResult(RangingResult.STATUS_SUCCESS, MacAddress.BROADCAST_ADDRESS, 15, 5, 10, null, null, 666)); 10, 8, 5, null, null, 666)); RangingResultCallback callbackMock = mock(RangingResultCallback.class); ArgumentCaptor<IRttCallback> callbackCaptor = ArgumentCaptor.forClass(IRttCallback.class); Loading Loading @@ -232,13 +232,15 @@ public class WifiRttManagerTest { int distanceCm = 105; int distanceStdDevCm = 10; int rssi = 5; int numAttemptedMeasurements = 8; int numSuccessfulMeasurements = 3; long timestamp = System.currentTimeMillis(); byte[] lci = { 0x5, 0x6, 0x7 }; byte[] lcr = { 0x1, 0x2, 0x3, 0xA, 0xB, 0xC }; // RangingResults constructed with a MAC address RangingResult result = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, lci, lcr, timestamp); numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp); Parcel parcelW = Parcel.obtain(); result.writeToParcel(parcelW, 0); Loading @@ -254,7 +256,7 @@ public class WifiRttManagerTest { // RangingResults constructed with a PeerHandle result = new RangingResult(status, peerHandle, distanceCm, distanceStdDevCm, rssi, null, null, timestamp); numAttemptedMeasurements, numSuccessfulMeasurements, null, null, timestamp); parcelW = Parcel.obtain(); result.writeToParcel(parcelW, 0); Loading @@ -280,14 +282,16 @@ public class WifiRttManagerTest { int distanceCm = 105; int distanceStdDevCm = 10; int rssi = 5; int numAttemptedMeasurements = 10; int numSuccessfulMeasurements = 3; long timestamp = System.currentTimeMillis(); byte[] lci = { }; byte[] lcr = { }; RangingResult rr1 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, lci, lcr, timestamp); RangingResult rr2 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, null, null, timestamp); RangingResult rr1 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, numAttemptedMeasurements, numSuccessfulMeasurements, lci, lcr, timestamp); RangingResult rr2 = new RangingResult(status, mac, distanceCm, distanceStdDevCm, rssi, numAttemptedMeasurements, numSuccessfulMeasurements, null, null, timestamp); assertEquals(rr1, rr2); } Loading