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

Commit 758a564a authored by Chienyuan Huang's avatar Chienyuan Huang
Browse files

CS: Return confidence level

Flag: com.android.bluetooth.flags.channel_sounding_in_stack
Bug: 324185011
Bug: 371187745
Test: m com.android.btservice
Change-Id: I93630422b0805f3c0afeeb1621e12850c1164651
parent a5df47c6
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1235,7 +1235,7 @@ public:
                                   uint32_t error_centimeter, int azimuth_angle,
                                   int error_azimuth_angle, int altitude_angle,
                                   int error_altitude_angle, long elapsedRealtimeNanos,
                                   uint8_t method) {
                                   int8_t confidence_level, uint8_t method) {
    std::shared_lock<std::shared_mutex> lock(callbacks_mutex);
    CallbackEnv sCallbackEnv(__func__);
    if (!sCallbackEnv.valid() || !mDistanceMeasurementCallbacksObj) {
@@ -1245,7 +1245,7 @@ public:
    sCallbackEnv->CallVoidMethod(
            mDistanceMeasurementCallbacksObj, method_onDistanceMeasurementResult, addr.get(),
            centimeter, error_centimeter, azimuth_angle, error_azimuth_angle, altitude_angle,
            error_altitude_angle, elapsedRealtimeNanos, method);
            error_altitude_angle, elapsedRealtimeNanos, confidence_level, method);
  }
};

@@ -2979,7 +2979,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;IIIIIIJI)V",
          {"onDistanceMeasurementResult", "(Ljava/lang/String;IIIIIIJII)V",
           &method_onDistanceMeasurementResult},
  };
  GET_JAVA_METHODS(env, "com/android/bluetooth/gatt/DistanceMeasurementNativeInterface",
+10 −4
Original line number Diff line number Diff line
@@ -469,16 +469,22 @@ public class DistanceMeasurementManager {
            int altitudeAngle,
            int errorAltitudeAngle,
            long elapsedRealtimeNanos,
            int confidenceLevel,
            int method) {
        logd(
                "onDistanceMeasurementResult "
                        + BluetoothUtils.toAnonymizedAddress(address)
                        + ", centimeter "
                        + centimeter);
        DistanceMeasurementResult result =
                        + centimeter
                        + ", confidenceLevel "
                        + confidenceLevel);
        DistanceMeasurementResult.Builder builder =
                new DistanceMeasurementResult.Builder(centimeter / 100.0, errorCentimeter / 100.0)
                        .setMeasurementTimestampNanos(elapsedRealtimeNanos)
                        .build();
                        .setMeasurementTimestampNanos(elapsedRealtimeNanos);
        if (confidenceLevel != -1) {
            builder.setConfidenceLevel(confidenceLevel / 100.0);
        }
        DistanceMeasurementResult result = builder.build();
        switch (method) {
            case DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI:
                handleRssiResult(address, result);
+2 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ public class DistanceMeasurementNativeInterface {
            int altitudeAngle,
            int errorAltitudeAngle,
            long elapsedRealtimeNanos,
            int confidenceLevel,
            int method) {
        mDistanceMeasurementManager.onDistanceMeasurementResult(
                address,
@@ -121,6 +122,7 @@ public class DistanceMeasurementNativeInterface {
                altitudeAngle,
                errorAltitudeAngle,
                elapsedRealtimeNanos,
                confidenceLevel,
                method);
    }

+2 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ public class DistanceMeasurementManagerTest {
                -1,
                -1,
                1000L,
                -1,
                DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        ArgumentCaptor<DistanceMeasurementResult> result =
                ArgumentCaptor.forClass(DistanceMeasurementResult.class);
@@ -235,6 +236,7 @@ public class DistanceMeasurementManagerTest {
                -1,
                -1,
                1000L,
                -1,
                DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_RSSI);
        DistanceMeasurementResult result =
                new DistanceMeasurementResult.Builder(1.00, 1.00).build();
+3 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ struct ChannelSoundingRawData {

struct RangingResult {
  double result_meters_;
  // A normalized value from 0 (low confidence) to 100 (high confidence) representing the confidence
  // of estimated distance. The value is -1 when unavailable.
  int8_t confidence_level_;
};

class RangingHalCallback {
Loading