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

Commit 6b9aa7f0 authored by Chienyuan Huang's avatar Chienyuan Huang
Browse files

Address API feedback for Bluetooth Distance Measurement

Bug: 269252708
Test: atest DistanceMeasurementParamsTest
Test: atest DistanceMeasurementResultTest
Test: atest DistanceMeasurementSessionTest
Change-Id: I238c84c462a90859d314737fca0046858011075e
parent 3e151e2d
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