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

Commit f787f083 authored by Steven Liu's avatar Steven Liu
Browse files

Add new APIs of channel sounding

1. DistanceMeasurementResult#getElapsedRealtimeNanos
2. DistanceMeasurementMethod#getMethodId

Flag: com.android.bluetooth.flags.channel_sounding_25q2_apis
Bug: 367409858
Bug: 340528388
Test: m com.andorid.btservices
Change-Id: I1827594fbc3a0e75d271e78a955690cbf827a5ba
parent e7a55e26
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -1231,17 +1231,18 @@ public:
  void OnDistanceMeasurementResult(RawAddress address, uint32_t centimeter,
                                   uint32_t error_centimeter, int azimuth_angle,
                                   int error_azimuth_angle, int altitude_angle,
                                   int error_altitude_angle, uint8_t method) {
                                   int error_altitude_angle, long elapsedRealtimeNanos,
                                   uint8_t method) {
    std::shared_lock<std::shared_mutex> lock(callbacks_mutex);
    CallbackEnv sCallbackEnv(__func__);
    if (!sCallbackEnv.valid() || !mDistanceMeasurementCallbacksObj) {
      return;
    }
    ScopedLocalRef<jstring> addr(sCallbackEnv.get(), bdaddr2newjstr(sCallbackEnv.get(), &address));
    sCallbackEnv->CallVoidMethod(mDistanceMeasurementCallbacksObj,
                                 method_onDistanceMeasurementResult, addr.get(), centimeter,
                                 error_centimeter, azimuth_angle, error_azimuth_angle,
                                 altitude_angle, error_altitude_angle, method);
    sCallbackEnv->CallVoidMethod(
            mDistanceMeasurementCallbacksObj, method_onDistanceMeasurementResult, addr.get(),
            centimeter, error_centimeter, azimuth_angle, error_azimuth_angle, altitude_angle,
            error_altitude_angle, elapsedRealtimeNanos, method);
  }
};

@@ -2826,7 +2827,7 @@ static int register_com_android_bluetooth_gatt_distance_measurement(JNIEnv* env)
           &method_onDistanceMeasurementStartFail},
          {"onDistanceMeasurementStopped", "(Ljava/lang/String;II)V",
           &method_onDistanceMeasurementStopped},
          {"onDistanceMeasurementResult", "(Ljava/lang/String;IIIIIII)V",
          {"onDistanceMeasurementResult", "(Ljava/lang/String;IIIIIIJI)V",
           &method_onDistanceMeasurementResult},
  };
  GET_JAVA_METHODS(env, "com/android/bluetooth/gatt/DistanceMeasurementNativeInterface",
+2 −0
Original line number Diff line number Diff line
@@ -468,6 +468,7 @@ public class DistanceMeasurementManager {
            int errorAzimuthAngle,
            int altitudeAngle,
            int errorAltitudeAngle,
            long elapsedRealtimeNanos,
            int method) {
        logd(
                "onDistanceMeasurementResult "
@@ -476,6 +477,7 @@ public class DistanceMeasurementManager {
                        + centimeter);
        DistanceMeasurementResult result =
                new DistanceMeasurementResult.Builder(centimeter / 100.0, errorCentimeter / 100.0)
                        .setMeasurementTimestampNanos(elapsedRealtimeNanos)
                        .build();
        switch (method) {
            case DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI:
+2 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ public class DistanceMeasurementNativeInterface {
            int errorAzimuthAngle,
            int altitudeAngle,
            int errorAltitudeAngle,
            long elapsedRealtimeNanos,
            int method) {
        mDistanceMeasurementManager.onDistanceMeasurementResult(
                address,
@@ -119,6 +120,7 @@ public class DistanceMeasurementNativeInterface {
                errorAzimuthAngle,
                altitudeAngle,
                errorAltitudeAngle,
                elapsedRealtimeNanos,
                method);
    }

+3 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ public class DistanceMeasurementManagerTest {
                -1,
                -1,
                -1,
                1000L,
                DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        ArgumentCaptor<DistanceMeasurementResult> result =
                ArgumentCaptor.forClass(DistanceMeasurementResult.class);
@@ -206,6 +207,7 @@ public class DistanceMeasurementManagerTest {
        assertThat(result.getValue().getErrorAzimuthAngle()).isEqualTo(Double.NaN);
        assertThat(result.getValue().getAltitudeAngle()).isEqualTo(Double.NaN);
        assertThat(result.getValue().getErrorAltitudeAngle()).isEqualTo(Double.NaN);
        assertThat(result.getValue().getMeasurementTimestampNanos()).isEqualTo(1000L);
    }

    @Test
@@ -232,6 +234,7 @@ public class DistanceMeasurementManagerTest {
                -1,
                -1,
                -1,
                1000L,
                DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        DistanceMeasurementResult result =
                new DistanceMeasurementResult.Builder(1.00, 1.00).build();
+9 −1
Original line number Diff line number Diff line
@@ -15,3 +15,11 @@ flag {
    description: "Enable Channel Sounding in the Bluetooth stack"
    bug: "324185011"
}

flag {
    name:"channel_sounding_25q2_apis"
    namespace: "bluetooth"
    is_exported: true
    description: "Add new APIs for channel sounding"
    bug: "367409858"
}
Loading