Skip to content

Commit 65831e2

Browse files
yuxCaijukkar
authored andcommitted
softdevice_controller: rev 2d79a1c86a40b73cf674f90b22d3c480747282ba
CHANGELOG.rst contains the list of changes. Signed-off-by: Yuxuan Cai <[email protected]>
1 parent a46ffe7 commit 65831e2

35 files changed

+155
-142
lines changed

softdevice_controller/CHANGELOG.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ Added
1616
=====
1717

1818
* Production support for scanning and initiating at the same time. (DRGN-23824)
19+
* :ref:`Experimental <nrf:software_maturity>` support for Channel Sounding step mode-3.
20+
* :ref:`Experimental <nrf:software_maturity>` support for Channel Sounding multiple antenna elements.
21+
* :ref:`Experimental <nrf:software_maturity>` support for the following Channel Sounding HCI commands:
22+
23+
* LE CS Write Cached Remote Supported Capabilities
24+
* LE CS Write Cached Remote FAE Table
25+
* LE CS Remove Config
26+
27+
Changes
28+
=======
29+
30+
* The vendor-specific Set Connection Event Trigger HCI command has been removed. (DRGN-23981)
1931

2032
Bug fixes
2133
=========
@@ -25,6 +37,7 @@ Bug fixes
2537
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)
2638
* 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)
2739
* 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)
40+
* Fixed an issue where the controller would raise Number Of Completed Packets events for a disconnected CIS. (DRGN-23869)
2841

2942
nRF Connect SDK v2.8.0
3043
**********************

softdevice_controller/doc/channel_sounding.rst

Lines changed: 103 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,128 @@ LE Channel Sounding (CS) is a feature defined in the `Bluetooth Core Specificati
1111
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.
1212
The RTT and IQ values can then be sent to an application to calculate the distance between devices.
1313

14+
Support status
15+
**************
16+
1417
Channel Sounding currently has :ref:`Experimental <nrf:software_maturity>` support in the |controller| for the nRF54L15 SoC.
1518
CS can be enabled by building with the :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_SOUNDING` Kconfig option enabled.
1619

17-
Developing with CS
18-
******************
19-
20-
Currently, the :zephyr:code-sample:`bluetooth_hci_uart` sample is recommended to get started with Channel Sounding.
21-
Build the sample with the following command to enable the CS feature:
20+
Command support
21+
---------------
2222

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

2925
* LE CS Read Local Supported Capabilities
3026
* LE CS Read Remote Supported Capabilities
27+
* LE CS Write Cached Remote Supported Capabilities
3128
* LE CS Security Enable
3229
* LE CS Set Default Settings
3330
* LE CS Read Remote FAE Table
31+
* LE CS Write Cached Remote FAE Table
3432
* LE CS Create Config
33+
* LE CS Remove Config
3534
* LE CS Set Channel Classification
3635
* LE CS Set Procedure Parameters
3736
* LE CS Procedure Enable
3837
* LE CS Test
3938
* LE CS Test End
4039

41-
Experimental Limitations
42-
************************
40+
Supported capabilities
41+
----------------------
42+
43+
The |controller| currently has the following supported capabilities:
44+
45+
* One CS Configuration per ACL connection.
46+
* Indefinite Procedure Repeats.
47+
* Four Antennas and Four Antenna Paths.
48+
* CS Reflector and CS Initiator Roles.
49+
* Step modes 1, 2, and 3.
50+
* 150 ns time-of-flight precision
51+
* RTT with AA-only and 32, 64, 96, and 128 bits random payloads
52+
* 1M and 2M CS Sync Phy
53+
* No Transmitter Frequency Actuation Error
54+
55+
The supported timing values for the |controller| are as follows:
56+
57+
* A T_IP1 of 60 µs or greater.
58+
* A T_IP2 of 30 µs or greater.
59+
* A T_FCS of 60 µs or greater.
60+
* A T_PM of 10 µs or greater.
61+
* A T_SW of 10 µs.
62+
63+
Multiple antennas support
64+
-------------------------
65+
66+
Currently, the |controller| supports multiple antennas with a fixed pinout for the multi-antenna switch.
67+
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:
68+
69+
.. list-table:: Antenna control for multi-antenna switching.
70+
:widths: 30 5 5 5 5
71+
:header-rows: 1
72+
73+
* - Active Antenna:
74+
- **P1.11**
75+
- **P1.12**
76+
- **P1.13**
77+
- **P1.14**
78+
* - Antenna 1
79+
- 1
80+
- 0
81+
- 0
82+
- 0
83+
* - Antenna 2
84+
- 0
85+
- 1
86+
- 0
87+
- 0
88+
* - Antenna 3
89+
- 0
90+
- 0
91+
- 1
92+
- 0
93+
* - Antenna 4
94+
- 0
95+
- 0
96+
- 0
97+
- 1
98+
99+
.. note::
100+
Currently, the |controller| needs a maximum of 4 µs to trigger an antenna switch within the T_SW period.
101+
This means that any multi-antenna switch with the correct pinout must switch within 6 µs to maintain 10 µs T_SW.
102+
103+
Experimental limitations
104+
------------------------
43105

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

46108
* :ref:`radio coexistence <nrf:ug_radio_coex>` and :ref:`front-end modules <mpsl_fem>` are not supported.
47109
* Only one subevent per event is supported in CS.
110+
111+
Developing with CS
112+
******************
113+
114+
The following samples are recommended for getting started with Channel Sounding:
115+
116+
1. Using the Ranging Service samples:
117+
118+
* :ref:`Bluetooth: Channel Sounding Initiator with Ranging Requestor <nrf:channel_sounding_ras_initiator>`.
119+
* :ref:`Bluetooth: Channel Sounding Reflector with Ranging Responder <nrf:channel_sounding_ras_reflector>`.
120+
121+
2. Using the :zephyr:code-sample:`bluetooth_hci_uart` sample and running HCI commands over UART.
122+
123+
.. note::
124+
To build the :zephyr:code-sample:`bluetooth_hci_uart` sample with Channel Sounding enabled, set :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_SOUNDING` to ``y``.
125+
126+
.. code-block:: console
127+
128+
west build -b nrf54l15dk/nrf54l15/cpuapp --pristine -- -DCONFIG_BT_CTLR_CHANNEL_SOUNDING=y
129+
130+
Optional CS Kconfigs
131+
--------------------
132+
133+
Use the following Kconfig options to enable the desired optional CS features:
134+
135+
* Set :kconfig:option:`BT_CTLR_SDC_CS_STEP_MODE3` to ``y`` to enable Channel Sounding step mode-3 support.
136+
137+
* 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.
138+
* 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.

softdevice_controller/include/sdc_hci_vs.h

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ enum sdc_hci_opcode_vs
8383
SDC_HCI_OPCODE_CMD_VS_READ_AVERAGE_RSSI = 0xfd11,
8484
/** @brief See @ref sdc_hci_cmd_vs_central_acl_event_spacing_set(). */
8585
SDC_HCI_OPCODE_CMD_VS_CENTRAL_ACL_EVENT_SPACING_SET = 0xfd12,
86-
/** @brief See @ref sdc_hci_cmd_vs_set_conn_event_trigger(). */
87-
SDC_HCI_OPCODE_CMD_VS_SET_CONN_EVENT_TRIGGER = 0xfd13,
8886
/** @brief See @ref sdc_hci_cmd_vs_get_next_conn_event_counter(). */
8987
SDC_HCI_OPCODE_CMD_VS_GET_NEXT_CONN_EVENT_COUNTER = 0xfd14,
9088
/** @brief See @ref sdc_hci_cmd_vs_allow_parallel_connection_establishments(). */
@@ -122,21 +120,6 @@ enum sdc_hci_subevent_vs
122120
SDC_HCI_SUBEVENT_VS_CONN_ANCHOR_POINT_UPDATE_REPORT = 0x82,
123121
};
124122

125-
/** @brief Connection Event Trigger Role Selection. */
126-
enum sdc_hci_vs_conn_event_trigger_role
127-
{
128-
/** @brief Unused. */
129-
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_UNUSED = 0x00,
130-
/** @brief Connection event trigger for the Scanner. */
131-
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_SCAN = 0x01,
132-
/** @brief Connection event trigger for the Initiator. */
133-
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_INIT = 0x02,
134-
/** @brief Connection event trigger for connections (Central or Peripheral). */
135-
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_CONN = 0x03,
136-
/** @brief Connection event trigger for the Advertiser. */
137-
SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_ADV = 0x04,
138-
};
139-
140123
/** @brief Peripheral latency disable/enable modes. */
141124
enum sdc_hci_vs_peripheral_latency_mode
142125
{
@@ -628,30 +611,6 @@ typedef struct __PACKED __ALIGN(1)
628611
uint32_t central_acl_event_spacing_us;
629612
} sdc_hci_cmd_vs_central_acl_event_spacing_set_t;
630613

631-
/** @brief Set Connection Event Trigger command parameter(s). */
632-
typedef struct __PACKED __ALIGN(1)
633-
{
634-
/** @brief Connection handle to set up trigger for. In case @ref
635-
* sdc_hci_vs_conn_event_trigger_role specifies the Scanner or Initiator, this parameter
636-
* is ignored.
637-
*/
638-
uint16_t conn_handle;
639-
/** @brief Selected role to set triggers for. See @ref sdc_hci_vs_conn_event_trigger_role. */
640-
uint8_t role;
641-
/** @brief (D)PPI channel to use. This channel should be regarded as reserved until the
642-
* connection event (D)PPI task triggering is stopped.
643-
*/
644-
uint8_t ppi_ch_id;
645-
/** @brief Task Endpoint to trigger. If this is 0, then the connection event triggering feature
646-
* is disabled.
647-
*/
648-
uint32_t task_endpoint;
649-
/** @brief Connection event counter when the task end point triggering should start. */
650-
uint16_t conn_evt_counter_start;
651-
/** @brief The period in events between triggering of the task end point. */
652-
uint16_t period_in_events;
653-
} sdc_hci_cmd_vs_set_conn_event_trigger_t;
654-
655614
/** @brief Get Next Connection Event Counter command parameter(s). */
656615
typedef struct __PACKED __ALIGN(1)
657616
{
@@ -1374,56 +1333,6 @@ uint8_t sdc_hci_cmd_vs_read_average_rssi(const sdc_hci_cmd_vs_read_average_rssi_
13741333
*/
13751334
uint8_t sdc_hci_cmd_vs_central_acl_event_spacing_set(const sdc_hci_cmd_vs_central_acl_event_spacing_set_t * p_params);
13761335

1377-
/** @brief Set Connection Event Trigger.
1378-
*
1379-
* Start triggering a given task on radio event start.
1380-
*
1381-
* When enabled, this feature will trigger a (D)PPI task at the start of radio events.
1382-
*
1383-
* When used for connections, the connection event trigger can be configured to trigger
1384-
* every N connection events starting from a given connection event counter.
1385-
*
1386-
* Disabling scanning, removing the advertising set, or disconnecting the connection will reset the
1387-
* connection event trigger configuration.
1388-
*
1389-
* If the selected (D)PPI channel is reserved by the controller, the controller will
1390-
* return the error code Invalid HCI Command Parameters (0x12).
1391-
*
1392-
* If enabling/disabling the connection event trigger and the trigger is already
1393-
* enabled/disabled, the controller will return the error code Command Disallowed (0x0C).
1394-
*
1395-
* If the role is 0x1, 0x2, or 0x4, and the role is not currently active,
1396-
* the controller will return the error code Command Disallowed (0x0C).
1397-
*
1398-
* If the role is 0x3 and conn_handle does not refer to an active connection, the controller
1399-
* will return the error code Unknown Connection Identifier (0x02).
1400-
*
1401-
* If the role is 0x4 and legacy advertising is used, conn_handle must be set to 0.
1402-
* If extended advertising is used, conn_handle must refer to an active advertising set.
1403-
* Otherwise, the controller will return the error code Unknown Advertising Identifier (0x42).
1404-
*
1405-
* If the role is 0x3 and conn_evt_counter_start has already passed, the controller will return
1406-
* the error code Command Disallowed (0x0C).
1407-
*
1408-
* If the role is 0x3 and period_in_events is zero, the controller will return the error code
1409-
* Invalid HCI Command Parameters (0x12).
1410-
*
1411-
* If the role is 0x1, 0x2, or 0x4 and conn_evt_counter_start or period_in_events is non-zero,
1412-
* the controller will return the error code Invalid HCI Command Parameters (0x12).
1413-
*
1414-
* After HCI Reset, this feature is disabled.
1415-
*
1416-
* Event(s) generated (unless masked away):
1417-
* When the command has completed, an HCI_Command_Complete event shall be generated.
1418-
*
1419-
* @param[in] p_params Input parameters.
1420-
*
1421-
* @retval 0 if success.
1422-
* @return Returns value between 0x01-0xFF in case of error.
1423-
* See Vol 2, Part D, Error for a list of error codes and descriptions.
1424-
*/
1425-
uint8_t sdc_hci_cmd_vs_set_conn_event_trigger(const sdc_hci_cmd_vs_set_conn_event_trigger_t * p_params);
1426-
14271336
/** @brief Get Next Connection Event Counter.
14281337
*
14291338
* This command can be used to fetch the upcoming connection event counter value for Centrals or
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
description: SoftDevice Controller
2-
git_revision: 5e894059db09d7b704e6678dc1e38ccc0ce19cd3
3-
ll_subversion_number: '0x1063'
2+
git_revision: 2d79a1c86a40b73cf674f90b22d3c480747282ba
3+
ll_subversion_number: '0x106B'
44
ll_version_number: '0x0E'
5-
timestamp: '2024-12-04T15:38:50Z'
5+
timestamp: '2024-12-12T12:43:01Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)