Skip to content

Commit d4b4d0f

Browse files
alexstanoev-nordicsean-madigan
authored andcommitted
softdevice_controller: rev 90bc0f22a29e35bca5b8563ba94bceea7586a7b4
CHANGELOG.rst contains the list of changes. Signed-off-by: Aleksandar Stanoev <[email protected]>
1 parent 1cea4b9 commit d4b4d0f

File tree

46 files changed

+293
-36
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+293
-36
lines changed

softdevice_controller/include/sdc.h

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,6 @@ extern "C" {
142142
/** @brief Default number of antennas supported by the local device in Channel Sounding. */
143143
#define SDC_DEFAULT_CS_NUM_ANTENNAS_SUPPORTED 1
144144

145-
/** @brief Default optional support for Channel Sounding step mode-3. */
146-
#define SDC_DEFAULT_CS_STEP_MODE3_SUPPORTED false
147-
148145
/** @brief Size of build revision array in bytes. */
149146
#define SDC_BUILD_REVISION_SIZE 20
150147

@@ -217,6 +214,18 @@ extern "C" {
217214
*/
218215
#define SDC_MEM_SYNC_TRANSFER(num_links) ((num_links) > 0 ? (13 + (num_links) * 139) : 0)
219216

217+
/** @brief Maximum memory required when supporting extended feature set.
218+
*
219+
* @param[in] num_links Total number of peripheral and central links supported.
220+
*/
221+
#define SDC_MEM_EXTENDED_FEATURE_SET(num_links) ((num_links) > 0 ? (11 + (num_links) * 259) : 0)
222+
223+
/** @brief Maximum memory required when supporting frame space update.
224+
*
225+
* @param[in] num_links Total number of peripheral and central links supported.
226+
*/
227+
#define SDC_MEM_FRAME_SPACE_UPDATE(num_links) ((num_links) > 0 ? (12 + (num_links) * 68) : 0)
228+
220229
/** Memory required for Quality of Service (QoS) channel survey module. */
221230
#define SDC_MEM_QOS_CHANNEL_SURVEY (40)
222231

@@ -351,7 +360,7 @@ extern "C" {
351360
* @param[in] max_antenna_paths_supported Maximum number of antenna paths supported in CS.
352361
* @param[in] step_mode3_supported Whether step mode3 is supported.
353362
*/
354-
#define SDC_MEM_CS(count, max_antenna_paths_supported, step_mode3_supported) ((count) > 0 ? (13 + (count) * (4203 + __MEM_CS_ANTENNA_PATHS(max_antenna_paths_supported) + __MEM_CS_STEP_MODE3(step_mode3_supported))) : 0)
363+
#define SDC_MEM_CS(count, max_antenna_paths_supported, step_mode3_supported) ((count) > 0 ? (13 + (count) * (4211 + __MEM_CS_ANTENNA_PATHS(max_antenna_paths_supported) + __MEM_CS_STEP_MODE3(step_mode3_supported))) : 0)
355364

356365
/** @brief Maximum additional memory required to support Channel Sounding setup phase procedures.
357366
*
@@ -569,11 +578,6 @@ typedef struct
569578
* Default: @ref SDC_DEFAULT_CS_NUM_ANTENNAS_SUPPORTED.
570579
*/
571580
uint8_t num_antennas_supported;
572-
/** Configures support of optional step mode-3 in Channel Sounding.
573-
*
574-
* Default: @ref SDC_DEFAULT_CS_STEP_MODE3_SUPPORTED.
575-
*/
576-
bool step_mode3_supported;
577581
} sdc_cfg_cs_cfg_t;
578582

579583

@@ -1351,6 +1355,47 @@ int32_t sdc_support_connection_subrating_central(void);
13511355
*/
13521356
int32_t sdc_support_connection_subrating_peripheral(void);
13531357

1358+
/** @brief Support Extended Feature Set
1359+
*
1360+
* After this API is called, the controller will support the HCI commands
1361+
* related to Extended Feature Set.
1362+
*
1363+
* @retval 0 Success
1364+
* @retval -NRF_EPERM This API must be called before @ref sdc_cfg_set() or @ref sdc_enable().
1365+
* @retval -NRF_EOPNOTSUPP Extended Feature Set is not supported.
1366+
*/
1367+
int32_t sdc_support_extended_feature_set(void);
1368+
1369+
/** @brief Support Frame Space Update for central role
1370+
*
1371+
* After this API is called, the controller will support the HCI commands
1372+
* related to Frame Space Update.
1373+
*
1374+
* @note The application is required to call both @ref sdc_support_frame_space_update_central()
1375+
* and @ref sdc_support_frame_space_update_peripheral()
1376+
* if both central and peripheral roles are supported.
1377+
*
1378+
* @retval 0 Success
1379+
* @retval -NRF_EPERM This API must be called before @ref sdc_cfg_set() or @ref sdc_enable().
1380+
* @retval -NRF_EOPNOTSUPP Frame Space Update is not supported.
1381+
*/
1382+
int32_t sdc_support_frame_space_update_central(void);
1383+
1384+
/** @brief Support Frame Space Update for peripheral role
1385+
*
1386+
* After this API is called, the controller will support the HCI commands
1387+
* related to Frame Space Update.
1388+
*
1389+
* @note The application is required to call both @ref sdc_support_frame_space_update_central()
1390+
* and @ref sdc_support_frame_space_update_peripheral()
1391+
* if both central and peripheral roles are supported.
1392+
*
1393+
* @retval 0 Success
1394+
* @retval -NRF_EPERM This API must be called before @ref sdc_cfg_set() or @ref sdc_enable().
1395+
* @retval -NRF_EOPNOTSUPP Frame Space Update is not supported.
1396+
*/
1397+
int32_t sdc_support_frame_space_update_peripheral(void);
1398+
13541399
/** @brief Support Channel Sounding test command
13551400
*
13561401
* After this API is called, the controller will support the HCI command

softdevice_controller/include/sdc_hci_cmd_le.h

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,10 @@ enum sdc_hci_opcode_le
259259
SDC_HCI_OPCODE_CMD_LE_EXT_CREATE_CONN_V2 = 0x2085,
260260
/** @brief See @ref sdc_hci_cmd_le_set_periodic_adv_params_v2(). */
261261
SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_PARAMS_V2 = 0x2086,
262+
/** @brief See @ref sdc_hci_cmd_le_read_all_local_supported_features(). */
263+
SDC_HCI_OPCODE_CMD_LE_READ_ALL_LOCAL_SUPPORTED_FEATURES = 0x2087,
264+
/** @brief See @ref sdc_hci_cmd_le_read_all_remote_features(). */
265+
SDC_HCI_OPCODE_CMD_LE_READ_ALL_REMOTE_FEATURES = 0x2088,
262266
/** @brief See @ref sdc_hci_cmd_le_cs_read_local_supported_capabilities(). */
263267
SDC_HCI_OPCODE_CMD_LE_CS_READ_LOCAL_SUPPORTED_CAPABILITIES = 0x2089,
264268
/** @brief See @ref sdc_hci_cmd_le_cs_read_remote_supported_capabilities(). */
@@ -289,6 +293,8 @@ enum sdc_hci_opcode_le
289293
SDC_HCI_OPCODE_CMD_LE_CS_TEST_END = 0x2096,
290294
/** @brief See @ref sdc_hci_cmd_le_set_host_feature_v2(). */
291295
SDC_HCI_OPCODE_CMD_LE_SET_HOST_FEATURE_V2 = 0x2097,
296+
/** @brief See @ref sdc_hci_cmd_le_frame_space_update(). */
297+
SDC_HCI_OPCODE_CMD_LE_FRAME_SPACE_UPDATE = 0x209d,
292298
};
293299

294300
/** @brief LE subevent Code values. */
@@ -306,6 +312,8 @@ enum sdc_hci_subevent_le
306312
SDC_HCI_SUBEVENT_LE_SUBRATE_CHANGE = 0x23,
307313
/** @brief See @ref sdc_hci_subevent_le_cis_established_v2_t. */
308314
SDC_HCI_SUBEVENT_LE_CIS_ESTABLISHED_V2 = 0x2a,
315+
/** @brief See @ref sdc_hci_subevent_le_read_all_remote_features_complete_t. */
316+
SDC_HCI_SUBEVENT_LE_READ_ALL_REMOTE_FEATURES_COMPLETE = 0x2b,
309317
/** @brief See @ref sdc_hci_subevent_le_cs_read_remote_supported_capabilities_complete_t. */
310318
SDC_HCI_SUBEVENT_LE_CS_READ_REMOTE_SUPPORTED_CAPABILITIES_COMPLETE = 0x2c,
311319
/** @brief See @ref sdc_hci_subevent_le_cs_read_remote_fae_table_complete_t. */
@@ -322,6 +330,8 @@ enum sdc_hci_subevent_le
322330
SDC_HCI_SUBEVENT_LE_CS_SUBEVENT_RESULT_CONTINUE = 0x32,
323331
/** @brief See @ref sdc_hci_subevent_le_cs_test_end_complete_t. */
324332
SDC_HCI_SUBEVENT_LE_CS_TEST_END_COMPLETE = 0x33,
333+
/** @brief See @ref sdc_hci_subevent_le_frame_space_update_complete_t. */
334+
SDC_HCI_SUBEVENT_LE_FRAME_SPACE_UPDATE_COMPLETE = 0x35,
325335
};
326336

327337
/** @brief Advertising Event Properties parameters. */
@@ -968,6 +978,42 @@ typedef struct __PACKED __ALIGN(1)
968978
uint8_t framing;
969979
} sdc_hci_subevent_le_cis_established_v2_t;
970980

981+
/** @brief LE Read All Remote Features Complete.
982+
*
983+
* The description below is extracted from Core_v6.0,
984+
* Vol 4, Part E, Section 7.7.65.38
985+
*
986+
* The HCI_LE_Read_All_Remote_Features_Complete event is used to indicate the
987+
* completion of the process of the Controller obtaining the features supported by the
988+
* remote Bluetooth device specified by the Connection_Handle event parameter.
989+
*
990+
* The Max_Remote_Page parameter specifies the highest-numbered page of the remote
991+
* device’s supported LE features that contains at least one bit set to 1; all higher-number
992+
* pages therefore only contain zeroes. The Max_Valid_Page parameter specifies the
993+
* highest-numbered page of features that the Controller has obtained from the remote
994+
* device or, if it has obtained all pages from 1 to Max_Remote_Page, then any value
995+
* greater than or equal to Max_Remote_Page.
996+
*
997+
* The LE_Features parameter contains the LE features. The Controller shall set all pages
998+
* between 0 and Max_Valid_Page to valid data and shall set all higher-numbered pages
999+
* to all zero bits.
1000+
*
1001+
* Note: If Max_Valid_Page ≥ Max_Remote_Page, then all pages will contain valid data,
1002+
* which will be all zero bits for pages numbered greater than Max_Remote_Page.
1003+
*
1004+
* If the feature mask is requested more than once while a connection exists between the
1005+
* two devices, then the second and subsequent requests may report a cached copy of the
1006+
* feature mask rather than fetching the feature mask again.
1007+
*/
1008+
typedef struct __PACKED __ALIGN(1)
1009+
{
1010+
uint8_t status;
1011+
uint16_t conn_handle;
1012+
uint8_t max_remote_page;
1013+
uint8_t max_valid_page;
1014+
uint8_t le_features[248];
1015+
} sdc_hci_subevent_le_read_all_remote_features_complete_t;
1016+
9711017
/** @brief LE CS Read Remote Supported Capabilities Complete.
9721018
*
9731019
* The description below is extracted from Core_v6.0,
@@ -1345,6 +1391,34 @@ typedef struct __PACKED __ALIGN(1)
13451391
uint8_t status;
13461392
} sdc_hci_subevent_le_cs_test_end_complete_t;
13471393

1394+
/** @brief LE Frame Space Update Complete.
1395+
*
1396+
* The description below is extracted from Core_v6.0,
1397+
* Vol 4, Part E, Section 7.7.65.48
1398+
*
1399+
* The HCI_LE_Frame_Space_Update_Complete event is used to indicate that the Frame
1400+
* Space Update procedure has completed (see [Vol 6] Part B, Section 5.1.30) and, if
1401+
* initiated autonomously by the local Controller or the peer device, that at least one frame
1402+
* space value has changed.
1403+
*
1404+
* The Initiator parameter indicates who initiated the Frame Space Update procedure.
1405+
*
1406+
* The Frame_Space parameter indicates the new frame space value that the Controller is
1407+
* now using.
1408+
*
1409+
* The PHYS and Spacing_Types parameters indicate which PHYs and spacing types are
1410+
* using the new frame space value.
1411+
*/
1412+
typedef struct __PACKED __ALIGN(1)
1413+
{
1414+
uint8_t status;
1415+
uint16_t conn_handle;
1416+
uint8_t initiator;
1417+
uint16_t frame_space;
1418+
uint8_t phys;
1419+
uint16_t spacing_types;
1420+
} sdc_hci_subevent_le_frame_space_update_complete_t;
1421+
13481422
/** @} end of HCI_EVENTS */
13491423

13501424
/**
@@ -2510,6 +2584,20 @@ typedef struct __PACKED __ALIGN(1)
25102584
uint8_t adv_handle;
25112585
} sdc_hci_cmd_le_set_periodic_adv_params_v2_return_t;
25122586

2587+
/** @brief LE Read All Local Supported Features return parameter(s). */
2588+
typedef struct __PACKED __ALIGN(1)
2589+
{
2590+
uint8_t max_page;
2591+
uint8_t le_features[248];
2592+
} sdc_hci_cmd_le_read_all_local_supported_features_return_t;
2593+
2594+
/** @brief LE Read All Remote Features command parameter(s). */
2595+
typedef struct __PACKED __ALIGN(1)
2596+
{
2597+
uint16_t conn_handle;
2598+
uint8_t pages_requested;
2599+
} sdc_hci_cmd_le_read_all_remote_features_t;
2600+
25132601
/** @brief LE CS Read Local Supported Capabilities return parameter(s). */
25142602
typedef struct __PACKED __ALIGN(1)
25152603
{
@@ -2720,6 +2808,16 @@ typedef struct __PACKED __ALIGN(1)
27202808
uint8_t bit_value;
27212809
} sdc_hci_cmd_le_set_host_feature_v2_t;
27222810

2811+
/** @brief LE Frame Space Update command parameter(s). */
2812+
typedef struct __PACKED __ALIGN(1)
2813+
{
2814+
uint16_t conn_handle;
2815+
uint16_t frame_space_min;
2816+
uint16_t frame_space_max;
2817+
uint8_t phys;
2818+
uint16_t spacing_types;
2819+
} sdc_hci_cmd_le_frame_space_update_t;
2820+
27232821
/** @} end of HCI_COMMAND_PARAMETERS */
27242822

27252823
/**
@@ -8600,6 +8698,67 @@ uint8_t sdc_hci_cmd_le_ext_create_conn_v2(const sdc_hci_cmd_le_ext_create_conn_v
86008698
uint8_t sdc_hci_cmd_le_set_periodic_adv_params_v2(const sdc_hci_cmd_le_set_periodic_adv_params_v2_t * p_params,
86018699
sdc_hci_cmd_le_set_periodic_adv_params_v2_return_t * p_return);
86028700

8701+
/** @brief LE Read All Local Supported Features.
8702+
*
8703+
* The description below is extracted from Core_v6.0,
8704+
* Vol 4, Part E, Section 7.8.128
8705+
*
8706+
* This command requests the supported LE features for the Controller.
8707+
*
8708+
* Event(s) generated (unless masked away):
8709+
* When the HCI_LE_Read_All_Local_Supported_Features command has completed, an
8710+
* HCI_Command_Complete event shall be generated.
8711+
*
8712+
* @param[out] p_return Extra return parameters.
8713+
*
8714+
* @retval 0 if success.
8715+
* @return Returns value between 0x01-0xFF in case of error.
8716+
* See Vol 2, Part D, Error for a list of error codes and descriptions.
8717+
*/
8718+
uint8_t sdc_hci_cmd_le_read_all_local_supported_features(sdc_hci_cmd_le_read_all_local_supported_features_return_t * p_return);
8719+
8720+
/** @brief LE Read All Remote Features.
8721+
*
8722+
* The description below is extracted from Core_v6.0,
8723+
* Vol 4, Part E, Section 7.8.129
8724+
*
8725+
* This command requests, from the remote device identified by the Connection_Handle,
8726+
* the features used on the connection and the features supported by the remote device.
8727+
* For details see [Vol 6] Part B, Section 4.6.
8728+
*
8729+
* This command may be issued on both the Central and Peripheral.
8730+
*
8731+
* The Pages_Requested parameter specifies the highest-numbered page of features
8732+
* that the Host requires. The Controller shall obtain all pages up to the lesser of
8733+
* Pages_Requested and the highest page number on the remote device that contains
8734+
* at least one bit set to 1, and may obtain some or all higher-numbered pages.
8735+
*
8736+
* If a connection already exists between the two devices and the features have already
8737+
* been fetched on that connection, then the Controller may use a cached copy of the
8738+
* features.
8739+
*
8740+
* If the Host issues this command when another HCI_LE_Read_All_Remote_Features
8741+
* command is pending in the Controller, then the Controller shall return the error code
8742+
* Command Disallowed (0x0C).
8743+
*
8744+
* Event(s) generated (unless masked away):
8745+
* When the Controller receives the HCI_LE_Read_All_Remote_Features command,
8746+
* the Controller shall send the HCI_Command_Status event to the Host. When the
8747+
* Controller has completed the procedure to determine the remote features or has
8748+
* determined that it will be using a cached copy, the Controller shall send an
8749+
* HCI_LE_Read_All_Remote_Features_Complete event to the Host.
8750+
*
8751+
* The HCI_LE_Read_All_Remote_Features_Complete event contains the status of this
8752+
* command and the parameters describing the features supported by the remote device.
8753+
*
8754+
* @param[in] p_params Input parameters.
8755+
*
8756+
* @retval 0 if success.
8757+
* @return Returns value between 0x01-0xFF in case of error.
8758+
* See Vol 2, Part D, Error for a list of error codes and descriptions.
8759+
*/
8760+
uint8_t sdc_hci_cmd_le_read_all_remote_features(const sdc_hci_cmd_le_read_all_remote_features_t * p_params);
8761+
86038762
/** @brief LE CS Read Local Supported Capabilities.
86048763
*
86058764
* The description below is extracted from Core_v6.0,
@@ -9438,6 +9597,59 @@ uint8_t sdc_hci_cmd_le_cs_test_end(void);
94389597
*/
94399598
uint8_t sdc_hci_cmd_le_set_host_feature_v2(const sdc_hci_cmd_le_set_host_feature_v2_t * p_params);
94409599

9600+
/** @brief LE Frame Space Update.
9601+
*
9602+
* The description below is extracted from Core_v6.0,
9603+
* Vol 4, Part E, Section 7.8.151
9604+
*
9605+
* The HCI_LE_Frame_Space_Update command allows the Host to request a change to
9606+
* one or more frame space values. This command may be issued on both the Central and
9607+
* the Peripheral.
9608+
*
9609+
* The Frame_Space_Min and Frame_Space_Max parameters indicate the minimum and
9610+
* maximum allowed frame space values that the Controller should use, respectively.
9611+
* The Frame_Space_Min parameter shall not be greater than the Frame_Space_Max
9612+
* parameter.
9613+
*
9614+
* The PHYS and Spacing_Types parameters indicate which frame space values are to be
9615+
* updated. At least one bit shall be set in the PHYS parameter and at least one bit shall
9616+
* be set in the Spacing_Types parameter.
9617+
*
9618+
* The actual parameter values selected by the Link Layer may be different from the
9619+
* parameter values provided by the Host through this command.
9620+
*
9621+
* If the Host issues this command with Frame_Space_Max less than the frame space
9622+
* value, then the Controller shall ignore the value provided by the Host and shall use the
9623+
* frame space value in use as the Frame_Space_Max.
9624+
*
9625+
* If the Connection_Handle parameter does not identify an active ACL connection, then
9626+
* the Controller shall return the error code Unknown Connection Identifier (0x02).
9627+
*
9628+
* If the Host issues this command with Frame_Space_Max less than Frame_Space_Min,
9629+
* then the Controller shall return the error code Invalid HCI Command Parameters (0x12).
9630+
*
9631+
* If the Host issues this command with no bits set in the PHYS or the Spacing_Types
9632+
* parameter, then the Controller shall reject the command and return the error code
9633+
* Invalid HCI Command Parameters (0x12).
9634+
*
9635+
* If the Host issues this command with a bit set in the PHYS or the Spacing_Types
9636+
* parameter that the Controller does not support, then the Controller shall reject the
9637+
* command and return the error code Invalid HCI Command Parameters (0x12).
9638+
*
9639+
* Event(s) generated (unless masked away):
9640+
* When the Controller receives the HCI_LE_Frame_Space_Update command,
9641+
* the Controller shall send the HCI_Command_Status event to the Host.
9642+
* When the HCI_LE_Frame_Space_Update command has completed, an
9643+
* HCI_LE_Frame_Space_Update_Complete event shall be generated.
9644+
*
9645+
* @param[in] p_params Input parameters.
9646+
*
9647+
* @retval 0 if success.
9648+
* @return Returns value between 0x01-0xFF in case of error.
9649+
* See Vol 2, Part D, Error for a list of error codes and descriptions.
9650+
*/
9651+
uint8_t sdc_hci_cmd_le_frame_space_update(const sdc_hci_cmd_le_frame_space_update_t * p_params);
9652+
94419653
/** @} end of HCI_VS_API */
94429654

94439655
/** @} */
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: 8c48a30a4c2d7148486ff6dde512f6e2b745afc1
3-
ll_subversion_number: '0x105E'
2+
git_revision: 90bc0f22a29e35bca5b8563ba94bceea7586a7b4
3+
ll_subversion_number: '0x1064'
44
ll_version_number: '0x0F'
5-
timestamp: '2025-08-01T14:12:31Z'
5+
timestamp: '2025-08-07T13:19:52Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)