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

Commit 6f66ca77 authored by Chienyuan Huang's avatar Chienyuan Huang Committed by Gerrit Code Review
Browse files

Merge "Address API feedback for Bluetooth Distance Measurement"

parents 43811684 6b9aa7f0
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -86,13 +86,13 @@ public class DistanceMeasurementManager {
    void startDistanceMeasurement(UUID uuid, DistanceMeasurementParams params,
            IDistanceMeasurementCallback callback) {
        Log.i(TAG, "startDistanceMeasurement device:" + params.getDevice().getAnonymizedAddress()
                + ", method: " + params.getMethod());
                + ", method: " + params.getMethodId());
        String identityAddress = mAdapterService.getIdentityAddress(
                params.getDevice().getAddress());
        logd("Get identityAddress: " + params.getDevice().getAnonymizedAddress() + " => "
                + BluetoothUtils.toAnonymizedAddress(identityAddress));

        int frequencyValue = getFrequencyValue(params.getFrequency(), params.getMethod());
        int frequencyValue = getFrequencyValue(params.getFrequency(), params.getMethodId());
        if (frequencyValue == -1) {
            invokeStartFail(callback, params.getDevice(),
                    BluetoothStatusCodes.ERROR_BAD_PARAMETERS);
@@ -102,7 +102,7 @@ public class DistanceMeasurementManager {
        DistanceMeasurementTracker tracker = new DistanceMeasurementTracker(
                this, params, identityAddress, uuid, frequencyValue, callback);

        switch (params.getMethod()) {
        switch (params.getMethodId()) {
            case DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_AUTO:
            case DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI:
                startRssiTracker(tracker);
@@ -140,7 +140,7 @@ public class DistanceMeasurementManager {
                return stopRssiTracker(uuid, identityAddress, timeout);
            default:
                Log.w(TAG, "stopDistanceMeasurement with invalid method:" + method);
                return BluetoothStatusCodes.DISTANCE_MEASUREMENT_ERROR_INTERNAL;
                return BluetoothStatusCodes.ERROR_DISTANCE_MEASUREMENT_INTERNAL;
        }
    }

@@ -149,7 +149,7 @@ public class DistanceMeasurementManager {
        HashSet<DistanceMeasurementTracker> set = mRssiTrackers.get(identityAddress);
        if (set == null) {
            Log.w(TAG, "Can't find rssi tracker");
            return BluetoothStatusCodes.DISTANCE_MEASUREMENT_ERROR_INTERNAL;
            return BluetoothStatusCodes.ERROR_DISTANCE_MEASUREMENT_INTERNAL;
        }

        for (DistanceMeasurementTracker tracker : set) {
+1 −1
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ public class DistanceMeasurementNativeInterface {
            case REASON_INVALID_PARAMETERS:
                return BluetoothStatusCodes.ERROR_BAD_PARAMETERS;
            case REASON_INTERNAL_ERROR:
                return BluetoothStatusCodes.DISTANCE_MEASUREMENT_ERROR_INTERNAL;
                return BluetoothStatusCodes.ERROR_DISTANCE_MEASUREMENT_INTERNAL;
            default:
                return BluetoothStatusCodes.ERROR_UNKNOWN;
        }
+2 −2
Original line number Diff line number Diff line
@@ -52,8 +52,8 @@ class DistanceMeasurementTracker {
        mIdentityAddress = identityAddress;
        mUuid = uuid;
        mFrequency = frequency;
        mDuration = params.getDuration();
        mMethod = params.getMethod();
        mDuration = params.getDurationSeconds();
        mMethod = params.getMethodId();
        mCallback = callback;
    }

+17 −17
Original line number Diff line number Diff line
@@ -86,9 +86,9 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testStartRssiTracker() {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        verify(mDistanceMeasurementNativeInterface).startDistanceMeasurement(
@@ -99,9 +99,9 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testStopRssiTracker() {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        mDistanceMeasurementManager.stopDistanceMeasurement(mUuid, mDevice,
@@ -113,9 +113,9 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testHandleRssiStarted() throws RemoteException {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        verify(mDistanceMeasurementNativeInterface).startDistanceMeasurement(
@@ -129,27 +129,27 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testHandleRssiStartFail() throws RemoteException {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        verify(mDistanceMeasurementNativeInterface).startDistanceMeasurement(
            IDENTITY_ADDRESS, RSSI_FREQUENCY_LOW,
            DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        mDistanceMeasurementManager.onDistanceMeasurementStartFail(IDENTITY_ADDRESS,
                BluetoothStatusCodes.DISTANCE_MEASUREMENT_ERROR_INTERNAL,
                BluetoothStatusCodes.ERROR_DISTANCE_MEASUREMENT_INTERNAL,
                DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        verify(mCallback).onStartFail(mDevice,
                BluetoothStatusCodes.DISTANCE_MEASUREMENT_ERROR_INTERNAL);
                BluetoothStatusCodes.ERROR_DISTANCE_MEASUREMENT_INTERNAL);
    }

    @Test
    public void testHandleRssiStopped() throws RemoteException {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        mDistanceMeasurementManager.onDistanceMeasurementStarted(IDENTITY_ADDRESS,
@@ -166,9 +166,9 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testHandleRssiResult() throws RemoteException {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setMethodId(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        mDistanceMeasurementManager.onDistanceMeasurementStarted(IDENTITY_ADDRESS,
@@ -181,7 +181,7 @@ public class DistanceMeasurementManagerTest {
        ArgumentCaptor<DistanceMeasurementResult> result =
                ArgumentCaptor.forClass(DistanceMeasurementResult.class);
        verify(mCallback, times(1)).onResult(eq(mDevice), result.capture());
        assertThat(result.getValue().getMeters()).isEqualTo(1.00);
        assertThat(result.getValue().getResultMeters()).isEqualTo(1.00);
        assertThat(result.getValue().getErrorMeters()).isEqualTo(1.00);
        assertThat(result.getValue().getAzimuthAngle()).isEqualTo(Double.NaN);
        assertThat(result.getValue().getErrorAzimuthAngle()).isEqualTo(Double.NaN);
@@ -192,9 +192,9 @@ public class DistanceMeasurementManagerTest {
    @Test
    public void testReceivedResultAfterStopped() throws RemoteException {
        DistanceMeasurementParams params = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(1000)
                .setDurationSeconds(1000)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .setDurationSeconds(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI)
                .build();
        mDistanceMeasurementManager.startDistanceMeasurement(mUuid, params, mCallback);
        mDistanceMeasurementManager.stopDistanceMeasurement(mUuid, mDevice,
+2 −2
Original line number Diff line number Diff line
@@ -64,9 +64,9 @@ public class DistanceMeasurementTrackerTest {
        mUuid = UUID.randomUUID();
        mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(IDENTITY_ADDRESS);
        mParams = new DistanceMeasurementParams.Builder(mDevice)
                .setDuration(TIMEOUT_S)
                .setDurationSeconds(TIMEOUT_S)
                .setFrequency(DistanceMeasurementParams.REPORT_FREQUENCY_LOW)
                .setMethod(mMethod)
                .setMethodId(mMethod)
                .build();
        mTracker = new DistanceMeasurementTracker(
                mDistanceMeasurementManager, mParams, IDENTITY_ADDRESS, mUuid, 1000, mCallback);
Loading