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

Commit 5082c034 authored by Roy Want's avatar Roy Want Committed by android-build-merger
Browse files

Merge "Increased precision of Lat/Lng decoder and enabled BSSID list to be...

Merge "Increased precision of Lat/Lng decoder and enabled BSSID list to be explicit (client)" into qt-r1-dev
am: 4e027572

Change-Id: Ia8e41fcc106d950465db50b1f5563ea4955b68fe
parents c223a445 4e027572
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -605,11 +605,11 @@ public final class ResponderLocation implements Parcelable {
            // Negative 2's complement value
            // Note: The Math.pow(...) method cannot return a NaN value because the bitFieldSize
            // for Lat or Lng is limited to exactly 34 bits.
            angle = Math.scalb(fields[offset] - Math.pow(2, bitFieldSizes[offset]),
            angle = Math.scalb((double) fields[offset] - Math.pow(2, bitFieldSizes[offset]),
                    -LATLNG_FRACTION_BITS);
        } else {
            // Positive 2's complement value
            angle = Math.scalb(fields[offset], -LATLNG_FRACTION_BITS);
            angle = Math.scalb((double) fields[offset], -LATLNG_FRACTION_BITS);
        }
        if (angle > limit) {
            angle = limit;
@@ -732,10 +732,11 @@ public final class ResponderLocation implements Parcelable {

        int maxBssidIndicator = (int) buffer[SUBELEMENT_BSSID_MAX_INDICATOR_INDEX] & BYTE_MASK;
        int bssidListLength = (buffer.length - 1) / BYTES_IN_A_BSSID;
        // Check the max number of BSSIDs agrees with the list length.
        if (maxBssidIndicator != bssidListLength) {
            return false;
        }
        // The maxBSSIDIndicator is ignored. Its use is still being clarified in 802.11REVmd,
        // which is not published at this time. This field will be used in a future
        // release of Android after 802.11REVmd is public. Here, we interpret the following
        // params as an explicit list of BSSIDs.


        int bssidOffset = SUBELEMENT_BSSID_LIST_INDEX;
        for (int i = 0; i < bssidListLength; i++) {
+9 −9
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ import java.util.List;
 */
@RunWith(JUnit4.class)
public class ResponderLocationTest {
    private static final double LATLNG_TOLERANCE_DEGREES = 0.00001;
    private static final double LATLNG_TOLERANCE_DEGREES = 0.000_000_05D; // 5E-8 = 6mm of meridian
    private static final double ALT_TOLERANCE_METERS = 0.01;
    private static final double HEIGHT_TOLERANCE_METERS = 0.01;
    private static final int INDEX_ELEMENT_TYPE = 2;
@@ -103,7 +103,7 @@ public class ResponderLocationTest {
    private static final byte[] sTestBssidListSE = {
            (byte) 0x07, // Subelement BSSID list
            (byte) 13, // length dependent on number of BSSIDs in list
            (byte) 0x02, // Number of BSSIDs in list
            (byte) 0x00, // List is explicit; no expansion of list required
            (byte) 0x01, // BSSID #1 (MSB)
            (byte) 0x02,
            (byte) 0x03,
@@ -266,11 +266,11 @@ public class ResponderLocationTest {
        assertTrue(valid);
        assertTrue(lciValid);
        assertFalse(zValid);
        assertEquals(0.0009765625, responderLocation.getLatitudeUncertainty());
        assertEquals(-33.857009, responderLocation.getLatitude(),
        assertEquals(0.0009765625D, responderLocation.getLatitudeUncertainty());
        assertEquals(-33.8570095D, responderLocation.getLatitude(),
                LATLNG_TOLERANCE_DEGREES);
        assertEquals(0.0009765625, responderLocation.getLongitudeUncertainty());
        assertEquals(151.215200, responderLocation.getLongitude(),
        assertEquals(0.0009765625D, responderLocation.getLongitudeUncertainty());
        assertEquals(151.2152005D, responderLocation.getLongitude(),
                LATLNG_TOLERANCE_DEGREES);
        assertEquals(1, responderLocation.getAltitudeType());
        assertEquals(64.0, responderLocation.getAltitudeUncertainty());
@@ -282,11 +282,11 @@ public class ResponderLocationTest {
        assertEquals(1, responderLocation.getLciVersion());

        // Testing Location Object
        assertEquals(-33.857009, location.getLatitude(),
        assertEquals(-33.8570095D, location.getLatitude(),
                LATLNG_TOLERANCE_DEGREES);
        assertEquals(151.215200, location.getLongitude(),
        assertEquals(151.2152005D, location.getLongitude(),
                LATLNG_TOLERANCE_DEGREES);
        assertEquals((0.0009765625 + 0.0009765625) / 2, location.getAccuracy(),
        assertEquals((0.0009765625D + 0.0009765625D) / 2, location.getAccuracy(),
                LATLNG_TOLERANCE_DEGREES);
        assertEquals(11.2, location.getAltitude(), ALT_TOLERANCE_METERS);
        assertEquals(64.0, location.getVerticalAccuracyMeters(), ALT_TOLERANCE_METERS);