Skip to content

Commit

Permalink
softdevice_controller: rev ec1cf8c824a0740e97d5b383152559cde0847c09
Browse files Browse the repository at this point in the history
CHANGELOG.rst contains the list of changes.

Signed-off-by: Yuxuan Cai <[email protected]>
  • Loading branch information
yuxCai committed Dec 11, 2024
1 parent 90ff607 commit 9ae415f
Show file tree
Hide file tree
Showing 35 changed files with 155 additions and 142 deletions.
13 changes: 13 additions & 0 deletions softdevice_controller/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@ Added
=====

* Production support for scanning and initiating at the same time. (DRGN-23824)
* :ref:`Experimental <nrf:software_maturity>` support for Channel Sounding step mode-3.
* :ref:`Experimental <nrf:software_maturity>` support for Channel Sounding multiple antenna elements.
* :ref:`Experimental <nrf:software_maturity>` support for the following Channel Sounding HCI commands:

* LE CS Write Cached Remote Supported Capabilities
* LE CS Write Cached Remote FAE Table
* LE CS Remove Config

Changes
=======

* The vendor-specific Set Connection Event Trigger HCI command has been removed. (DRGN-23981)

Bug fixes
=========
Expand All @@ -25,6 +37,7 @@ Bug fixes
The issue would only happen when the scanner received a long extended advertising packet that did not fit into a single advertising report and the scanning was stopped explicitly or through a timeout. (DRGN-23966)
* Fixed an issue where the CIS TX Power was set according to the LE Power Control state of the previous CIS in a CIG. (DRGN-21721)
* Fixed an issue where the BIS receiver running with FEM could enable the radio at the wrong time, causing the receiver to drop packets and lose sync. (DRGN-23891)
* Fixed an issue where the controller would raise Number Of Completed Packets events for a disconnected CIS. (DRGN-23869)

nRF Connect SDK v2.8.0
**********************
Expand Down
115 changes: 103 additions & 12 deletions softdevice_controller/doc/channel_sounding.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,128 @@ LE Channel Sounding (CS) is a feature defined in the `Bluetooth Core Specificati
CS allows two devices in a connection to perform measurements of their communication channel, both the round trip time (RTT), and the phase and magnitude (as in-phase and quadrature (IQ) values) can be measured.
The RTT and IQ values can then be sent to an application to calculate the distance between devices.

Support status
**************

Channel Sounding currently has :ref:`Experimental <nrf:software_maturity>` support in the |controller| for the nRF54L15 SoC.
CS can be enabled by building with the :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_SOUNDING` Kconfig option enabled.

Developing with CS
******************

Currently, the :zephyr:code-sample:`bluetooth_hci_uart` sample is recommended to get started with Channel Sounding.
Build the sample with the following command to enable the CS feature:
Command support
---------------

.. code-block:: console
west build -b nrf54l15dk/nrf54l15/cpuapp --pristine -- -DCONFIG_BT_CTLR_CHANNEL_SOUNDING=y
You can use the sample to run the following supported HCI commands over UART:
The following LE CS commands are supported:

* LE CS Read Local Supported Capabilities
* LE CS Read Remote Supported Capabilities
* LE CS Write Cached Remote Supported Capabilities
* LE CS Security Enable
* LE CS Set Default Settings
* LE CS Read Remote FAE Table
* LE CS Write Cached Remote FAE Table
* LE CS Create Config
* LE CS Remove Config
* LE CS Set Channel Classification
* LE CS Set Procedure Parameters
* LE CS Procedure Enable
* LE CS Test
* LE CS Test End

Experimental Limitations
************************
Supported capabilities
----------------------

The |controller| currently has the following supported capabilities:

* One CS Configuration per ACL connection.
* Indefinite Procedure Repeats.
* Four Antennas and Four Antenna Paths.
* CS Reflector and CS Initiator Roles.
* Step modes 1, 2, and 3.
* 150 ns time-of-flight precision
* RTT with AA-only and 32, 64, 96, and 128 bits random payloads
* 1M and 2M CS Sync Phy
* No Transmitter Frequency Actuation Error

The supported timing values for the |controller| are as follows:

* A T_IP1 of 60 µs or greater.
* A T_IP2 of 30 µs or greater.
* A T_FCS of 60 µs or greater.
* A T_PM of 10 µs or greater.
* A T_SW of 10 µs.

Multiple antennas support
-------------------------

Currently, the |controller| supports multiple antennas with a fixed pinout for the multi-antenna switch.
In order to use the |controller| with multiple antennas, an external GPIO controlled multi-antenna switch needs to be set up with the following truth table:

.. list-table:: Antenna control for multi-antenna switching.
:widths: 30 5 5 5 5
:header-rows: 1

* - Active Antenna:
- **P1.11**
- **P1.12**
- **P1.13**
- **P1.14**
* - Antenna 1
- 1
- 0
- 0
- 0
* - Antenna 2
- 0
- 1
- 0
- 0
* - Antenna 3
- 0
- 0
- 1
- 0
* - Antenna 4
- 0
- 0
- 0
- 1

.. note::
Currently, the |controller| needs a maximum of 4 µs to trigger an antenna switch within the T_SW period.
This means that any multi-antenna switch with the correct pinout must switch within 6 µs to maintain 10 µs T_SW.

Experimental limitations
------------------------

Currently, the following limitations apply to the :ref:`Experimental <nrf:software_maturity>` support of Channel Sounding:

* :ref:`radio coexistence <nrf:ug_radio_coex>` and :ref:`front-end modules <mpsl_fem>` are not supported.
* Only one subevent per event is supported in CS.

Developing with CS
******************

The following samples are recommended for getting started with Channel Sounding:

1. Using the Ranging Service samples:

* :ref:`Bluetooth: Channel Sounding Initiator with Ranging Requestor <nrf:channel_sounding_ras_initiator>`.
* :ref:`Bluetooth: Channel Sounding Reflector with Ranging Responder <nrf:channel_sounding_ras_reflector>`.

2. Using the :zephyr:code-sample:`bluetooth_hci_uart` sample and running HCI commands over UART.

.. note::
To build the :zephyr:code-sample:`bluetooth_hci_uart` sample with Channel Sounding enabled, set :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_SOUNDING` to ``y``.

.. code-block:: console
west build -b nrf54l15dk/nrf54l15/cpuapp --pristine -- -DCONFIG_BT_CTLR_CHANNEL_SOUNDING=y
Optional CS Kconfigs
--------------------

Use the following Kconfig options to enable the desired optional CS features:

* Set :kconfig:option:`BT_CTLR_SDC_CS_STEP_MODE3` to ``y`` to enable Channel Sounding step mode-3 support.

* Set :kconfig:option:`BT_CTLR_SDC_CS_MAX_ANTENNA_PATHS` to a value between ``2`` and ``4`` to enable Channel Sounding multiple antenna paths support.
* Set :kconfig:option:`BT_CTLR_SDC_CS_NUM_ANTENNAS` to a value between ``2`` and :kconfig:option:`BT_CTLR_SDC_CS_MAX_ANTENNA_PATHS` to enable Channel Sounding multiple antennas support.
91 changes: 0 additions & 91 deletions softdevice_controller/include/sdc_hci_vs.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ enum sdc_hci_opcode_vs
SDC_HCI_OPCODE_CMD_VS_READ_AVERAGE_RSSI = 0xfd11,
/** @brief See @ref sdc_hci_cmd_vs_central_acl_event_spacing_set(). */
SDC_HCI_OPCODE_CMD_VS_CENTRAL_ACL_EVENT_SPACING_SET = 0xfd12,
/** @brief See @ref sdc_hci_cmd_vs_set_conn_event_trigger(). */
SDC_HCI_OPCODE_CMD_VS_SET_CONN_EVENT_TRIGGER = 0xfd13,
/** @brief See @ref sdc_hci_cmd_vs_get_next_conn_event_counter(). */
SDC_HCI_OPCODE_CMD_VS_GET_NEXT_CONN_EVENT_COUNTER = 0xfd14,
/** @brief See @ref sdc_hci_cmd_vs_allow_parallel_connection_establishments(). */
Expand Down Expand Up @@ -122,21 +120,6 @@ enum sdc_hci_subevent_vs
SDC_HCI_SUBEVENT_VS_CONN_ANCHOR_POINT_UPDATE_REPORT = 0x82,
};

/** @brief Connection Event Trigger Role Selection. */
enum sdc_hci_vs_conn_event_trigger_role
{
/** @brief Unused. */
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_UNUSED = 0x00,
/** @brief Connection event trigger for the Scanner. */
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_SCAN = 0x01,
/** @brief Connection event trigger for the Initiator. */
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_INIT = 0x02,
/** @brief Connection event trigger for connections (Central or Peripheral). */
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_CONN = 0x03,
/** @brief Connection event trigger for the Advertiser. */
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_ADV = 0x04,
};

/** @brief Peripheral latency disable/enable modes. */
enum sdc_hci_vs_peripheral_latency_mode
{
Expand Down Expand Up @@ -628,30 +611,6 @@ typedef struct __PACKED __ALIGN(1)
uint32_t central_acl_event_spacing_us;
} sdc_hci_cmd_vs_central_acl_event_spacing_set_t;

/** @brief Set Connection Event Trigger command parameter(s). */
typedef struct __PACKED __ALIGN(1)
{
/** @brief Connection handle to set up trigger for. In case @ref
* sdc_hci_vs_conn_event_trigger_role specifies the Scanner or Initiator, this parameter
* is ignored.
*/
uint16_t conn_handle;
/** @brief Selected role to set triggers for. See @ref sdc_hci_vs_conn_event_trigger_role. */
uint8_t role;
/** @brief (D)PPI channel to use. This channel should be regarded as reserved until the
* connection event (D)PPI task triggering is stopped.
*/
uint8_t ppi_ch_id;
/** @brief Task Endpoint to trigger. If this is 0, then the connection event triggering feature
* is disabled.
*/
uint32_t task_endpoint;
/** @brief Connection event counter when the task end point triggering should start. */
uint16_t conn_evt_counter_start;
/** @brief The period in events between triggering of the task end point. */
uint16_t period_in_events;
} sdc_hci_cmd_vs_set_conn_event_trigger_t;

/** @brief Get Next Connection Event Counter command parameter(s). */
typedef struct __PACKED __ALIGN(1)
{
Expand Down Expand Up @@ -1374,56 +1333,6 @@ uint8_t sdc_hci_cmd_vs_read_average_rssi(const sdc_hci_cmd_vs_read_average_rssi_
*/
uint8_t sdc_hci_cmd_vs_central_acl_event_spacing_set(const sdc_hci_cmd_vs_central_acl_event_spacing_set_t * p_params);

/** @brief Set Connection Event Trigger.
*
* Start triggering a given task on radio event start.
*
* When enabled, this feature will trigger a (D)PPI task at the start of radio events.
*
* When used for connections, the connection event trigger can be configured to trigger
* every N connection events starting from a given connection event counter.
*
* Disabling scanning, removing the advertising set, or disconnecting the connection will reset the
* connection event trigger configuration.
*
* If the selected (D)PPI channel is reserved by the controller, the controller will
* return the error code Invalid HCI Command Parameters (0x12).
*
* If enabling/disabling the connection event trigger and the trigger is already
* enabled/disabled, the controller will return the error code Command Disallowed (0x0C).
*
* If the role is 0x1, 0x2, or 0x4, and the role is not currently active,
* the controller will return the error code Command Disallowed (0x0C).
*
* If the role is 0x3 and conn_handle does not refer to an active connection, the controller
* will return the error code Unknown Connection Identifier (0x02).
*
* If the role is 0x4 and legacy advertising is used, conn_handle must be set to 0.
* If extended advertising is used, conn_handle must refer to an active advertising set.
* Otherwise, the controller will return the error code Unknown Advertising Identifier (0x42).
*
* If the role is 0x3 and conn_evt_counter_start has already passed, the controller will return
* the error code Command Disallowed (0x0C).
*
* If the role is 0x3 and period_in_events is zero, the controller will return the error code
* Invalid HCI Command Parameters (0x12).
*
* If the role is 0x1, 0x2, or 0x4 and conn_evt_counter_start or period_in_events is non-zero,
* the controller will return the error code Invalid HCI Command Parameters (0x12).
*
* After HCI Reset, this feature is disabled.
*
* Event(s) generated (unless masked away):
* When the command has completed, an HCI_Command_Complete event shall be generated.
*
* @param[in] p_params Input parameters.
*
* @retval 0 if success.
* @return Returns value between 0x01-0xFF in case of error.
* See Vol 2, Part D, Error for a list of error codes and descriptions.
*/
uint8_t sdc_hci_cmd_vs_set_conn_event_trigger(const sdc_hci_cmd_vs_set_conn_event_trigger_t * p_params);

/** @brief Get Next Connection Event Counter.
*
* This command can be used to fetch the upcoming connection event counter value for Centrals or
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x1063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x106A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:38:50Z'
timestamp: '2024-12-11T14:11:47Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x1063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x106A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:38:50Z'
timestamp: '2024-12-11T14:11:47Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x1063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x106A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:38:50Z'
timestamp: '2024-12-11T14:11:47Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf53/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x2063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x206A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:40:03Z'
timestamp: '2024-12-11T14:12:29Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x4063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x406A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:41:19Z'
timestamp: '2024-12-11T14:13:28Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x4063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x406A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:41:19Z'
timestamp: '2024-12-11T14:13:28Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x4063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x406A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:41:19Z'
timestamp: '2024-12-11T14:13:28Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x3063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x306A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:42:39Z'
timestamp: '2024-12-11T14:14:26Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x3063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x306A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:42:39Z'
timestamp: '2024-12-11T14:14:26Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x3063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x306A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:42:39Z'
timestamp: '2024-12-11T14:14:26Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l_ns/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x3063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x306A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:43:48Z'
timestamp: '2024-12-11T14:15:19Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l_ns/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
ll_subversion_number: '0x3063'
git_revision: ec1cf8c824a0740e97d5b383152559cde0847c09
ll_subversion_number: '0x306A'
ll_version_number: '0x0E'
timestamp: '2024-12-04T15:43:48Z'
timestamp: '2024-12-11T14:15:19Z'
Binary file not shown.
Loading

0 comments on commit 9ae415f

Please sign in to comment.