diff --git a/doc/nrf/external_comp/bt_fast_pair.rst b/doc/nrf/external_comp/bt_fast_pair.rst index 4138f4c37941..e7899da24dde 100644 --- a/doc/nrf/external_comp/bt_fast_pair.rst +++ b/doc/nrf/external_comp/bt_fast_pair.rst @@ -284,6 +284,7 @@ You can use the following API functions only in the *unready* state of the FMDN * The :c:func:`bt_fast_pair_fmdn_info_cb_register` function (optional) * The :c:func:`bt_fast_pair_fmdn_ring_cb_register` function (mandatory with the Kconfig configuration for at least one ringing component) * The :c:func:`bt_fast_pair_fmdn_read_mode_cb_register` function (optional) + * The :c:func:`bt_fast_pair_fmdn_motion_detector_cb_register` function (mandatory if the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` Kconfig option is enabled) * The :c:func:`bt_fast_pair_fmdn_id_set` API function used for assigning Bluetooth identity to FMDN activities (like advertising and connections) * The :c:func:`bt_fast_pair_factory_reset` API function used for performing factory reset of all Fast Pair data @@ -768,6 +769,8 @@ The following sources of ringing activity are supported: * :c:enum:`BT_FAST_PAIR_FMDN_RING_SRC_FMDN_BT_GATT` - This ringing source originates from the Bluetooth Fast Pair service and its Beacon Actions characteristic that is defined in the FMDN Accessory specification. * :c:enum:`BT_FAST_PAIR_FMDN_RING_SRC_DULT_BT_GATT` - This ringing source originates from the Bluetooth Accessory Non-owner service and its characteristic that are defined in the DULT specification. This source is available only when the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT` Kconfig option is enabled. +* :c:enum:`BT_FAST_PAIR_FMDN_RING_SRC_DULT_MOTION_DETECTOR` - This ringing source originates from the DULT motion detector module. + This source is available only when the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` Kconfig option is enabled. The following callbacks are defined in the :c:struct:`bt_fast_pair_fmdn_ring_cb` structure: @@ -780,6 +783,8 @@ The following callbacks are defined in the :c:struct:`bt_fast_pair_fmdn_ring_cb` * Ringing timeout in deciseconds. The timeout value of the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_RING_REQ_TIMEOUT_DULT_BT_GATT` Kconfig option is used for the :c:enum:`BT_FAST_PAIR_FMDN_RING_SRC_DULT_BT_GATT` DULT source. The default value of this Kconfig is in line with the `Fast Pair Unwanted Tracking Prevention Guidelines`_ documentation. + The timeout value of the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_RING_REQ_TIMEOUT_DULT_MOTION_DETECTOR` Kconfig option is used for the :c:enum:`BT_FAST_PAIR_FMDN_RING_SRC_DULT_MOTION_DETECTOR` DULT source. + There are no specific requirements for this Kconfig value in neither the FMDN nor the DULT specification. * Ringing volume level. The :c:member:`bt_fast_pair_fmdn_ring_cb.start_request` callback can be called again when the ringing action has already started. @@ -835,6 +840,38 @@ This update policy applies to all listed stop trigger types. To satisfy the requirements from the DULT specification when the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT` Kconfig option is enabled, the FMDN extension communicates with the DULT module to receive ringing requests from the DULT peers and to send updates regarding the ringing state. For more details on the ringing mechanism in the DULT module, see the :ref:`ug_dult_sound` documentation. +.. _ug_bt_fast_pair_gatt_service_fmdn_dult_motion_detector: + +Interacting with the motion detector from DULT +---------------------------------------------- + +The motion detector is an optional feature of the DULT subsystem that can be integrated into the FMDN extension. +For more details about the feature, see the `DULT Motion detector`_ section of the DULT specification. +You can enable the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` Kconfig option to support the DULT motion detector functionality in the FMDN extension. +The FMDN extension implementation acts as a thin wrapper for the DULT motion detector module callbacks. +It passes callbacks from the DULT motion detector module to the user application. + +To register the motion detector callbacks, use the :c:func:`bt_fast_pair_fmdn_motion_detector_cb_register` function. +All motion detector callbacks defined in the :c:struct:`bt_fast_pair_fmdn_motion_detector_cb` structure are mandatory to register: + +* The motion detector start request is indicated by the :c:member:`bt_fast_pair_fmdn_motion_detector_cb.start` callback. + After this callback is called, the motion detector events are polled periodically with the :c:member:`bt_fast_pair_fmdn_motion_detector_cb.period_expired` callback. + Typical action after the motion detector start request is to power up the accelerometer and start collecting motion data. +* The motion detector period expired event is indicated by the :c:member:`bt_fast_pair_fmdn_motion_detector_cb.period_expired` callback. + This callback is called at the end of each motion detector period. + The :c:member:`bt_fast_pair_fmdn_motion_detector_cb.start` callback indicates the beginning of the first motion detector period. + The next period is started as soon as the previous period expires. + The user should notify the DULT module if motion was detected in the previous period. + The return value of this callback is used to pass this information. + The motion must be considered as detected if it fulfills the requirements defined in the `DULT Motion detector`_ section of the DULT documentation. +* The motion detector stop request is indicated by the :c:member:`bt_fast_pair_fmdn_motion_detector_cb.stop` callback. + It concludes the motion detector activity that was started by the :c:member:`bt_fast_pair_fmdn_motion_detector_cb.start` callback. + Typical action after the motion detector stop request is to power down the accelerometer. + +The motion detector is started by the DULT subsystem when the accessory is in the separated state for a sufficient amount of time. +When the motion is detected during the motion detector active period, the :c:member:`bt_fast_pair_fmdn_ring_cb.start_request` callback is called to request the ringing action. +It is done to inform the non-owner that is moving the accessory, that the device might have been used to track the non-owner. + .. _ug_bt_fast_pair_gatt_service_fmdn_battery_dult: Battery information with DULT diff --git a/doc/nrf/external_comp/dult.rst b/doc/nrf/external_comp/dult.rst index f03b840df79d..a71a3e8fce5c 100644 --- a/doc/nrf/external_comp/dult.rst +++ b/doc/nrf/external_comp/dult.rst @@ -47,6 +47,7 @@ The DULT integration in the |NCS| consists of the following steps: #. :ref:`Managing the identification process ` #. :ref:`Using the sound callbacks and managing the sound state ` #. :ref:`Managing the battery information ` +#. :ref:`Interacting with the motion detector ` These steps are described in the following sections. @@ -128,6 +129,7 @@ Use the following functions to register callbacks: * :c:func:`dult_id_read_state_cb_register` (mandatory) * :c:func:`dult_sound_cb_register` (mandatory) + * :c:func:`dult_motion_detector_cb_register` (mandatory if the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` Kconfig option is enabled) Preset configuration ==================== @@ -213,6 +215,9 @@ There are following sound sources available: * Bluetooth GATT (:c:enum:`DULT_SOUND_SRC_BT_GATT`) - Sound source type originating from the Bluetooth ANOS. The non-owner device can trigger the sound callbacks by sending the relevant request message over the DULT GATT service. +* Motion detector (:c:enum:`DULT_SOUND_SRC_MOTION_DETECTOR`) - Sound source type originating from the motion detector. + The motion detector may trigger the sound callbacks if the accessory separated from the owner for a sufficient amount of time is moving. + Used only when the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` Kconfig option is enabled. * External (:c:enum:`DULT_SOUND_SRC_EXTERNAL`) - Sound source type originating from the location unknown to the DULT module. The accessory-locating network often provides a native mechanism for playing sounds. The :c:enum:`DULT_SOUND_SRC_EXTERNAL` sound source is used to notify the DULT module that externally defined sound action is in progress. @@ -221,12 +226,12 @@ To register the sound callbacks, use the :c:func:`dult_sound_cb_register` functi All sound callbacks defined in the :c:struct:`dult_sound_cb` structure are mandatory to register: * The sound start request is indicated by the :c:member:`dult_sound_cb.sound_start` callback. - The minimum duration for the DULT sound action is defined by the :c:macro:`DULT_SOUND_DURATION_MIN_MS`. - The upper layer determines the sound duration, and the duration must be greater than the value set in the :c:macro:`DULT_SOUND_DURATION_MIN_MS` macro. + The minimum duration for the DULT sound action originating from the Bluetooth ANOS is defined by the :c:macro:`DULT_SOUND_DURATION_BT_GATT_MIN_MS`. + The upper layer determines the sound duration, and, in case of the sound action originating from the Bluetooth ANOS, the duration must be greater than the value set in the :c:macro:`DULT_SOUND_DURATION_BT_GATT_MIN_MS` macro. + In case of the sound action originating from the motion detector, the minimum duration is not defined. * The sound stop request is indicated by the :c:member:`dult_sound_cb.sound_stop` callback. -All callbacks pass the sound source as a first parameter and only report the internal sound sources. -Currently, callbacks always use the :c:enum:`DULT_SOUND_SRC_BT_GATT` (internal) sound source. +All callbacks pass the sound source as a first parameter and only report the internal sound sources (:c:enum:`DULT_SOUND_SRC_BT_GATT` or :c:enum:`DULT_SOUND_SRC_MOTION_DETECTOR`). The :c:enum:`DULT_SOUND_SRC_EXTERNAL` never appears as the callback parameter as the external sound source cannot originate from the DULT module. You must treat all callbacks from the :c:struct:`dult_sound_cb` structure as requests. The internal sound state of the DULT subsystem is not automatically changed on any callback event. @@ -244,6 +249,41 @@ Asynchronous support is also necessary to report sound state changes that are tr .. rst-class:: numbered-step +.. _ug_dult_motion_detector: + +Interacting with the motion detector +************************************ + +DULT motion detector is an optional feature of the DULT subsystem. +For more details, see the `DULT Motion detector`_ section of the DULT documentation. +You can enable the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` Kconfig option to support the DULT motion detector feature in your project. + +To integrate the motion detector feature, set the motion detector unwanted tracking accessory capability bit (:c:enum:`DULT_ACCESSORY_CAPABILITY_MOTION_DETECTOR_UT_BIT_POS`) in the accessory capabilities bitmask. +You must do this when registering the DULT user to indicate support for this feature. + +To register the motion detector callbacks, use the :c:func:`dult_motion_detector_cb_register` function. +All motion detector callbacks defined in the :c:struct:`dult_motion_detector_cb` structure are mandatory to register: + +* The motion detector start request is indicated by the :c:member:`dult_motion_detector_cb.start` callback. + After this callback is called, the motion detector events are polled periodically with the :c:member:`dult_motion_detector_cb.period_expired` callback. + Typical action after the motion detector start request is to power up the accelerometer and start collecting motion data. +* The motion detector period expired event is indicated by the :c:member:`dult_motion_detector_cb.period_expired` callback. + This callback is called at the end of each motion detector period. + The :c:member:`dult_motion_detector_cb.start` callback indicates the beginning of the first motion detector period. + The next period is started as soon as the previous period expires. + The user should notify the DULT module if motion was detected in the previous period. + The return value of this callback is used to pass this information. + The motion must be considered as detected if it fulfills the requirements defined in the `DULT Motion detector`_ section of the DULT documentation. +* The motion detector stop request is indicated by the :c:member:`dult_motion_detector_cb.stop` callback. + It concludes the motion detector activity that was started by the :c:member:`dult_motion_detector_cb.start` callback. + Typical action after the motion detector stop request is to power down the accelerometer. + +The motion detector is started by the DULT subsystem when the accessory is in the separated state for a sufficient amount of time. +When the motion is detected during the motion detector active period, the DULT subsystem calls the :c:member:`dult_sound_cb.sound_start` callback to request the sound action. +It is done to inform the non-owner that is moving the accessory, that the device might have been used to track the non-owner. + +.. rst-class:: numbered-step + .. _ug_dult_battery: Managing the battery information diff --git a/doc/nrf/libraries/bluetooth_services/services/fast_pair.rst b/doc/nrf/libraries/bluetooth_services/services/fast_pair.rst index 96c2d07ef898..c7cf92955017 100644 --- a/doc/nrf/libraries/bluetooth_services/services/fast_pair.rst +++ b/doc/nrf/libraries/bluetooth_services/services/fast_pair.rst @@ -62,6 +62,7 @@ With the :kconfig:option:`CONFIG_BT_FAST_PAIR` Kconfig option enabled, the follo * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MODEL_NAME` - The option configures the model name parameter. * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_ACCESSORY_CATEGORY` - The option configures the accessory category parameter. * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_FIRMWARE_VERSION_MAJOR`, :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_FIRMWARE_VERSION_MINOR` and :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_FIRMWARE_VERSION_REVISION` - These options configure the firmware version parameter. + * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` - The option enables the DULT motion detector functionality support in the FMDN extension (see :ref:`ug_bt_fast_pair_gatt_service_fmdn_dult_motion_detector`). * There are following advertising configuration options for the FMDN extension (see :ref:`ug_bt_fast_pair_advertising_fmdn`): @@ -90,6 +91,8 @@ With the :kconfig:option:`CONFIG_BT_FAST_PAIR` Kconfig option enabled, the follo * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_RING_VOLUME` - The option enables ringing volume support. * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_RING_REQ_TIMEOUT_DULT_BT_GATT` - The option configures the ringing timeout for connected peers that use DULT-based ringing mechanism. This option can only be used when the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT` is enabled. + * :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_RING_REQ_TIMEOUT_DULT_MOTION_DETECTOR` - The option configures the ringing timeout for ringing requests from the DULT motion detector. + This option can only be used when the :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT` is enabled. * There are following beacon clock service configuration options for the FMDN extension (see :ref:`ug_bt_fast_pair_prerequisite_ops_fmdn_clock_svc`): @@ -193,6 +196,9 @@ The FMDN extension implementation also acts as middleware between the user appli The DULT module integration is required for small and not easily discoverable accessories. The :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT` is enabled by default. +The :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` of the FMDN extension selects the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` Kconfig option to enable the motion detector feature of the DULT module. +With this option enabled, the FMDN extension passes the DULT motion detector callbacks from the DULT module to application. + The :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_BATTERY_DULT` of the FMDN extension selects the :kconfig:option:`CONFIG_DULT_BATTERY` Kconfig option to enable the battery support in the DULT module. With this option enabled, the FMDN extension passes the battery information also to the DULT module. diff --git a/doc/nrf/libraries/others/dult.rst b/doc/nrf/libraries/others/dult.rst index 5a403fed03e9..d3538105d7c8 100644 --- a/doc/nrf/libraries/others/dult.rst +++ b/doc/nrf/libraries/others/dult.rst @@ -44,6 +44,24 @@ The following Kconfig options are also available for this module: * :kconfig:option:`CONFIG_DULT_BT_ANOS_INDICATION_COUNT` - This option allows to configure the number of simultaneously processed GATT indications by the ANOS. The default value is set to ``2``. +* :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` - This option enables support for motion detector. + The motion detector is an optional feature in the DULT specification. + For more details see the `DULT Motion detector`_ section of the DULT specification. + By default, this option is disabled. + + * :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_TEST_MODE` - This option allows to configure motion detector parameters for testing purposes. + These values are defined in the DULT specification and should not be changed in the production code. + By default, this option is disabled. + * :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_BACKOFF_PERIOD` - This option allows to configure the period in minutes to disable the motion detector if the accessory is in the separated state. + If the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_TEST_MODE` is enabled, this option is configurable and its default value is set to ``2``. + Otherwise, the option is not configurable and its default value is set to ``360`` according to the DULT specification. + * :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_TIMEOUT_PERIOD_MIN` - This option allows to configure the minimum time span in minutes in separated state before enabling motion detector. + If the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_TEST_MODE` is enabled, this option is configurable and its default value is set to ``3``. + Otherwise, the option is not configurable and its default value is set to ``480`` according to the DULT specification. + * :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_TIMEOUT_PERIOD_MAX` - This option allows to configure the maximum time span in minutes in separated state before enabling motion detector. + If the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_TEST_MODE` is enabled, this option is configurable and its default value is set to ``3``. + Otherwise, the option is not configurable and its default value is set to ``1440`` according to the DULT specification. + See the Kconfig help for details. Implementation details diff --git a/doc/nrf/links.txt b/doc/nrf/links.txt index 034b338b7058..1667f8161db9 100644 --- a/doc/nrf/links.txt +++ b/doc/nrf/links.txt @@ -1118,6 +1118,7 @@ .. _`DULT Manufacturer Network ID Registry`: https://www.ietf.org/archive/id/draft-detecting-unwanted-location-trackers-01.html#name-manufacturer-network-id-reg .. _`DULT Accessory Category Values table`: https://www.ietf.org/archive/id/draft-detecting-unwanted-location-trackers-01.html#_table-accessory-category-values .. _`DULT Sound maker`: https://www.ietf.org/archive/id/draft-detecting-unwanted-location-trackers-01.html#name-sound-maker +.. _`DULT Motion detector`: https://www.ietf.org/archive/id/draft-detecting-unwanted-location-trackers-01.html#name-motion-detector .. ### Source: *.amazon.com diff --git a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst index 02eb234a9fce..c244f6153c41 100644 --- a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst +++ b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst @@ -455,6 +455,7 @@ Bluetooth Fast Pair samples * An application versioning using the :file:`VERSION` file. * The DFU support which can be enabled using the ``SB_CONFIG_APP_DFU`` sysbuild Kconfig option. DFU is available for all supported targets except the ``debug`` configurations of :ref:`zephyr:nrf52dk_nrf52832` and :ref:`zephyr:nrf52833dk_nrf52833` due to size constraints. + * The DULT motion detector feature integration in the sample. * Updated: @@ -760,6 +761,8 @@ Bluetooth libraries and services If this option is enabled, the Fast Pair subsystem tracks the Bluetooth bonds created through the Fast Pair Procedure and unpairs them if the procedure is incomplete or the Account Key associated with the bonds is removed. It also unpairs the Fast Pair Bluetooth bonds on Fast Pair factory reset. The option is enabled by default for Fast Pair use cases that are selected using :kconfig:option:`CONFIG_BT_FAST_PAIR_USE_CASE_INPUT_DEVICE` and :kconfig:option:`CONFIG_BT_FAST_PAIR_USE_CASE_MOUSE` Kconfig options. + * The DULT motion detector feature integration in the FMDN extension. + It can be enabled using :kconfig:option:`CONFIG_BT_FAST_PAIR_FMDN_DULT_MOTION_DETECTOR` Kconfig option. * Removed: @@ -1189,7 +1192,8 @@ CoreMark integration DULT integration ---------------- -|no_changes_yet_note| +* Added DULT motion detector feature integration. + It can be enabled using :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR` Kconfig option. MCUboot ======= diff --git a/samples/bluetooth/fast_pair/locator_tag/README.rst b/samples/bluetooth/fast_pair/locator_tag/README.rst index 0637e614f6db..8c70a31390f3 100644 --- a/samples/bluetooth/fast_pair/locator_tag/README.rst +++ b/samples/bluetooth/fast_pair/locator_tag/README.rst @@ -79,6 +79,18 @@ Recovery mode In the provisioned state, you can enter the recovery mode for a limited time. This mode allows the Android device to recover a lost provisioning key from the locator tag. +DULT Motion detector active mode +-------------------------------- + +In the provisioned state, the accessory can enter the DULT motion detector active mode. +It happens when the accessory is separated from the owner for a randomized amount of time between :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_TIMEOUT_PERIOD_MIN` and :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_TIMEOUT_PERIOD_MAX`. +In this state, if the motion is detected, the accessory starts the ringing action. +It is done to inform the non-owner that is moving the accessory, that the device might have been used to track the non-owner. +On DKs the simulated motion can be generated by button action. +On Thingy:53 the built-in accelerometer is used to detect the motion. +The motion detector is deactivated for :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_BACKOFF_PERIOD` after the :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_MAX_SOUND_COUNT` number of sounds has been played or after the motion has been detected and :kconfig:option:`CONFIG_DULT_MOTION_DETECTOR_SEPARATED_UT_ACTIVE_POLL_DURATION` amount of time has passed. +The motion detector is also deactivated if the accessory reappears near its owner. + FMDN unprovisioning =================== @@ -220,11 +232,13 @@ The user interface of the sample depends on the hardware platform you are using. * Blinks at a 0.25 second interval if the DFU mode is enabled. LED 2: - Indicates that the ringing action is in progress. - Depending on the ringing state: + Indicates that the ringing action is in progress, informs that the simulated motion has been detected, and informs that the motion detector is active. + Depending on the motion detected event, the ringing state, and the motion detector state: - * Lit if the device is ringing. - * Off if the device is not ringing. + * Blinks fast twice if the motion detected event appears. + * Lit if the device is ringing and motion detected event is not being signalized. + * Blinks at a 0.25 second interval if the motion detector is active and none of the above conditions are met. + * Off if none of the above conditions are met. LED 3: Depending on the FMDN provisioning state and the Fast Pair advertising state: @@ -248,7 +262,8 @@ The user interface of the sample depends on the hardware platform you are using. See the :ref:`fast_pair_locator_tag_fp_adv_policy` section for details. Button 2: - Stops the ongoing ringing action. + Stops the ongoing ringing action on single press. + Generates simulated motion event on double press. Button 3: Decrements the battery level by 10% (the default value in the :ref:`CONFIG_APP_BATTERY_LEVEL_DECREMENT ` Kconfig option), starting from the full battery level of 100%. @@ -303,11 +318,13 @@ The user interface of the sample depends on the hardware platform you are using. * Blinks at a 0.25 second interval if the DFU mode is enabled. LED 1: - Indicates that the ringing action is in progress. - Depending on the ringing state: + Indicates that the ringing action is in progress, informs that the simulated motion has been detected, and informs that the motion detector is active. + Depending on the motion detected event, the ringing state, and the motion detector state: - * Lit if the device is ringing. - * Off if the device is not ringing. + * Blinks fast twice if the motion detected event appears. + * Lit if the device is ringing and motion detected event is not being signalized. + * Blinks at a 0.25 second interval if the motion detector is active and none of the above conditions are met. + * Off if none of the above conditions are met. LED 2: Depending on the FMDN provisioning state and the Fast Pair advertising state: @@ -331,7 +348,8 @@ The user interface of the sample depends on the hardware platform you are using. See the :ref:`fast_pair_locator_tag_fp_adv_policy` section for details. Button 1: - Stops the ongoing ringing action. + Stops the ongoing ringing action on single press. + Generates simulated motion event on double press. Button 2: Decrements the battery level by 10% (the default value in the :ref:`CONFIG_APP_BATTERY_LEVEL_DECREMENT ` Kconfig option), starting from the full battery level of 100%. @@ -390,6 +408,7 @@ The user interface of the sample depends on the hardware platform you are using. * Red - Indicates that the recovery mode is active. * White - Indicates that the Fast Pair advertising is active. * Purple - Indicates that the DFU mode is active. + * Cyan - Indicates that the motion detector is active. Speaker/Buzzer: Produces sound when the ringing action is in progress and to indicate a new button action.