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

Commit faba66e4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Support the measurement duration selection" into main

parents 959dc5d6 73df4ed5
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ class DistanceMeasurementInitiator {
        }
    }

    private static final int DISTANCE_MEASUREMENT_DURATION_SEC = 3600;
    private static final List<Pair<Integer, String>> mDistanceMeasurementMethodMapping =
            List.of(
                    new Pair<>(DistanceMeasurementMethod.DISTANCE_MEASUREMENT_METHOD_AUTO, "AUTO"),
@@ -151,8 +150,13 @@ class DistanceMeasurementInitiator {
        return List.of(Freq.MEDIUM.toString(), Freq.HIGH.toString(), Freq.LOW.toString());
    }

    List<String> getMeasureDurationsInSeconds() {
        return List.of("3600", "300", "60", "10");
    }

    @SuppressLint("MissingPermission") // permissions are checked upfront
    void startDistanceMeasurement(String distanceMeasurementMethodName, String selectedFreq) {
    void startDistanceMeasurement(
            String distanceMeasurementMethodName, String selectedFreq, int duration) {

        if (mTargetDevice == null) {
            printLog("do Gatt connect first");
@@ -163,7 +167,7 @@ class DistanceMeasurementInitiator {

        DistanceMeasurementParams params =
                new DistanceMeasurementParams.Builder(mTargetDevice)
                        .setDurationSeconds(DISTANCE_MEASUREMENT_DURATION_SEC)
                        .setDurationSeconds(duration)
                        .setFrequency(Freq.fromName(selectedFreq).getFreq())
                        .setMethodId(getDistanceMeasurementMethodId(distanceMeasurementMethodName))
                        .build();
+14 −1
Original line number Diff line number Diff line
@@ -44,10 +44,12 @@ public class InitiatorFragment extends Fragment {

    private ArrayAdapter<String> mDmMethodArrayAdapter;
    private ArrayAdapter<String> mFreqArrayAdapter;
    private ArrayAdapter<String> mDurationArrayAdapter;
    private TextView mDistanceText;
    private CanvasView mDistanceCanvasView;
    private Spinner mSpinnerDmMethod;
    private Spinner mSpinnerFreq;
    private Spinner mSpinnerDuration;
    private Button mButtonCs;
    private LinearLayout mDistanceViewLayout;
    private TextView mLogText;
@@ -66,6 +68,7 @@ public class InitiatorFragment extends Fragment {
        mButtonCs = (Button) root.findViewById(R.id.btn_cs);
        mSpinnerDmMethod = (Spinner) root.findViewById(R.id.spinner_dm_method);
        mSpinnerFreq = (Spinner) root.findViewById(R.id.spinner_freq);
        mSpinnerDuration = (Spinner) root.findViewById(R.id.spinner_duration);
        mDistanceViewLayout = (LinearLayout) root.findViewById(R.id.layout_distance_view);
        mDistanceText = new TextView(getContext());
        mDistanceViewLayout.addView(mDistanceText);
@@ -93,6 +96,12 @@ public class InitiatorFragment extends Fragment {
                        getContext(), android.R.layout.simple_spinner_item, new ArrayList<>());
        mFreqArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSpinnerFreq.setAdapter(mFreqArrayAdapter);
        mDurationArrayAdapter =
                new ArrayAdapter<String>(
                        getContext(), android.R.layout.simple_spinner_item, new ArrayList<>());
        mDurationArrayAdapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
        mSpinnerDuration.setAdapter(mDurationArrayAdapter);

        mInitiatorViewModel = new ViewModelProvider(this).get(InitiatorViewModel.class);
        mBleConnectionViewModel = new ViewModelProvider(this).get(BleConnectionViewModel.class);
@@ -143,14 +152,18 @@ public class InitiatorFragment extends Fragment {

        mDmMethodArrayAdapter.addAll(mInitiatorViewModel.getSupportedDmMethods());
        mFreqArrayAdapter.addAll(mInitiatorViewModel.getMeasurementFreqs());
        mDurationArrayAdapter.addAll(mInitiatorViewModel.getMeasurementDurations());
        mButtonCs.setOnClickListener(
                v -> {
                    String methodName = mSpinnerDmMethod.getSelectedItem().toString();
                    String freq = mSpinnerFreq.getSelectedItem().toString();
                    int duration = Integer.parseInt(mSpinnerDuration.getSelectedItem().toString());

                    if (TextUtils.isEmpty(methodName)) {
                        printLog("the device doesn't support any distance measurement methods.");
                    }
                    mInitiatorViewModel.toggleCsStartStop(methodName, freq);

                    mInitiatorViewModel.toggleCsStartStop(methodName, freq, duration);
                });
    }

+6 −2
Original line number Diff line number Diff line
@@ -75,10 +75,14 @@ public class InitiatorViewModel extends AndroidViewModel {
        return mDistanceMeasurementInitiator.getMeasurementFreqs();
    }

    void toggleCsStartStop(String distanceMeasurementMethodName, String freq) {
    List<String> getMeasurementDurations() {
        return mDistanceMeasurementInitiator.getMeasureDurationsInSeconds();
    }

    void toggleCsStartStop(String distanceMeasurementMethodName, String freq, int duration) {
        if (!mCsStarted.getValue()) {
            mDistanceMeasurementInitiator.startDistanceMeasurement(
                    distanceMeasurementMethodName, freq);
                    distanceMeasurementMethodName, freq, duration);
        } else {
            mDistanceMeasurementInitiator.stopDistanceMeasurement();
        }
+68 −36
Original line number Diff line number Diff line
@@ -16,49 +16,81 @@
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            app:layout_constraintBottom_toTopOf="@id/spinner_dm_method"
            app:layout_constraintBottom_toTopOf="@id/layout_methods"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <LinearLayout android:id="@+id/layout_methods"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toBottomOf="@id/init_ble_connection_container"
            app:layout_constraintBottom_toTopOf="@id/layout_parameters"
            android:weightSum="4"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/dm_method_label"
            android:layout_width="wrap_content"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.6"
                android:text= "Method"
            app:layout_constraintBottom_toTopOf="@id/btn_cs"
            app:layout_constraintEnd_toStartOf="@id/spinner_dm_method"
                app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/init_ble_connection_container"
                app:layout_constraintEnd_toStartOf="@id/spinner_dm_method"
                />
            <Spinner
                android:id="@+id/spinner_dm_method"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
                android:layout_weight="1.4"
                android:padding="10dp"
            app:layout_constraintEnd_toStartOf="@id/freq_label"
                app:layout_constraintStart_toEndOf="@id/dm_method_label"
            app:layout_constraintTop_toBottomOf="@id/init_ble_connection_container" />
                app:layout_constraintEnd_toEndOf="parent"
                />
        </LinearLayout>
        <LinearLayout android:id="@+id/layout_parameters"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toBottomOf="@id/layout_methods"
            app:layout_constraintBottom_toTopOf="@id/btn_cs"
            android:weightSum="4"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/freq_label"
            android:layout_width="wrap_content"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.6"
                android:text= "Freq"
            app:layout_constraintBottom_toTopOf="@id/btn_cs"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toStartOf="@id/spinner_freq"
            app:layout_constraintStart_toEndOf="@id/spinner_dm_method"
            app:layout_constraintTop_toBottomOf="@id/init_ble_connection_container"
                />
            <Spinner
                android:id="@+id/spinner_freq"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
                android:layout_weight="1.4"
                android:padding="10dp"
            app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@id/freq_label"
            app:layout_constraintTop_toBottomOf="@id/init_ble_connection_container" />
                app:layout_constraintEnd_toStartOf="@id/duration_label"
                />
            <TextView
                android:id="@+id/duration_label"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.7"
                android:text= "Duration (s)"
                app:layout_constraintStart_toEndOf="@id/spinner_freq"
                app:layout_constraintEnd_toStartOf="@id/spinner_duration"
                />
            <Spinner
                android:id="@+id/spinner_duration"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.3"
                android:padding="10dp"
                app:layout_constraintStart_toEndOf="@id/duration_label"
                app:layout_constraintEnd_toEndOf="parent"
                />
        </LinearLayout>
        <Button
            android:id="@+id/btn_cs"
            android:layout_width="wrap_content"
@@ -69,7 +101,7 @@
            android:text="Start Distance Measurement"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/spinner_dm_method" />
            app:layout_constraintTop_toBottomOf="@id/layout_parameters" />
        <TextView
            android:id="@+id/text_log"
            android:layout_width="match_parent"