API documentation

SoftDevice Controller

group sdc

The main APIs needed to configure, enable, and use the SoftDevice Controller.

Defines

SDC_DEFAULT_RESOURCE_CFG_TAG

Default resource configuration tag.

SDC_DEFAULT_ADV_COUNT

Default maximum number of concurrent advertisers.

SDC_DEFAULT_PERIODIC_ADV_COUNT

Default maximum number of concurrent periodic advertisers.

SDC_DEFAULT_PERIODIC_SYNC_COUNT

Default maximum number of concurrent synchronizations to periodic advertisers.

SDC_DEFAULT_PERIODIC_ADV_RSP_COUNT

Default maximum number of concurrent periodic advertisers with responses.

SDC_DEFAULT_PERIODIC_ADV_RSP_TX_BUFFER_COUNT

Default number of buffers for subevent data.

SDC_DEFAULT_PERIODIC_ADV_RSP_MAX_TX_DATA

Default maximum data size for subevent data.

SDC_DEFAULT_PERIODIC_ADV_RSP_RX_BUFFER_COUNT

Default number of buffers for response reports.

SDC_DEFAULT_PERIODIC_SYNC_RSP_TX_BUFFER_COUNT

Default number of buffers for response data.

SDC_DEFAULT_PERIPHERAL_COUNT

Default maximum number of concurrent peripheral links.

SDC_DEFAULT_CENTRAL_COUNT

Default maximum number of concurrent central links.

SDC_DEFAULT_TX_PACKET_SIZE

Default maximum Link Layer TX packet size.

SDC_DEFAULT_RX_PACKET_SIZE

Default maximum Link Layer RX packet size.

SDC_DEFAULT_TX_PACKET_COUNT

Default maximum Link Layer TX packet count per connection.

With the default count, the application is able to refill the buffers during a connection event.

SDC_DEFAULT_RX_PACKET_COUNT

Default maximum Link Layer RX packet count per connection.

With the default count, the application is able to empty the buffers during a connection event.

SDC_DEFAULT_FAL_SIZE

Default maximum size of the Filter Accept List.

SDC_DEFAULT_SCAN_BUFFER_COUNT

Default maximum number of advertising reports available in the scanner.

The default buffer configuration allows the scanner to continue scanning with a pending advertising and scan response report.

SDC_DEFAULT_PERIODIC_SYNC_BUFFER_COUNT

Default maximum number of periodic advertising reports available.

SDC_DEFAULT_ADV_BUF_SIZE

Default advertising data size when legacy advertising is supported.

SDC_DEFAULT_PERIODIC_ADV_LIST_SIZE

Default number of devices that can be added to the periodic advertiser list.

SDC_DEFAULT_CIG_COUNT

Default maximum number of concurrent Connected Isochronous Groups.

SDC_DEFAULT_CIS_COUNT

Default maximum number of concurrent Connected Isochronous Streams.

SDC_DEFAULT_BIG_COUNT

Default maximum number of concurrent Broadcast Isochronous Groups.

SDC_DEFAULT_BIS_SINK_COUNT

Default maximum number of concurrent Sink Broadcast Isochronous Streams.

SDC_DEFAULT_BIS_SOURCE_COUNT

Default maximum number of concurrent Source Broadcast Isochronous Streams.

SDC_DEFAULT_ISO_RX_PDU_BUFFER_PER_STREAM_COUNT

Default ISO RX PDU buffer per stream count.

SDC_DEFAULT_ISO_RX_SDU_BUFFER_COUNT

Default ISO RX SDU buffer count.

SDC_DEFAULT_ISO_RX_SDU_BUFFER_SIZE

Default ISO RX SDU buffer size.

SDC_DEFAULT_ISO_TX_SDU_BUFFER_COUNT

Default ISO SDU TX buffer count.

SDC_DEFAULT_ISO_TX_SDU_BUFFER_SIZE

Default ISO SDU TX buffer size.

SDC_DEFAULT_ISO_TX_PDU_BUFFER_PER_STREAM_COUNT

Default ISO TX PDU buffer per stream count.

SDC_BUILD_REVISION_SIZE

Size of build revision array in bytes.

Typedefs

typedef void (*sdc_fault_handler_t)(const char *file, const uint32_t line)

Function prototype for the fault handler.

Note

The SoftDevice Controller will disable all interrupts prior to calling the fault handler. The SoftDevice Controller will reset the chip if the application returns from this function.

Param file:

[in] The filename where the assertion occurred.

Param line:

[in] The line number where the assertion occurred.

typedef void (*sdc_callback_t)(void)

Function prototype for the SoftDevice Controller callback.

See also sdc_enable().

Enums

enum sdc_cfg_type

Values:

enumerator SDC_CFG_TYPE_NONE

No configuration update.

enumerator SDC_CFG_TYPE_CENTRAL_COUNT

See sdc_cfg_t::central_count.

enumerator SDC_CFG_TYPE_PERIPHERAL_COUNT

See sdc_cfg_t::peripheral_count.

enumerator SDC_CFG_TYPE_BUFFER_CFG

See sdc_cfg_t::buffer_cfg.

enumerator SDC_CFG_TYPE_ADV_COUNT

See sdc_cfg_t::adv_count.

enumerator SDC_CFG_TYPE_SCAN_BUFFER_CFG

See sdc_cfg_t::scan_buffer_cfg.

enumerator SDC_CFG_TYPE_ADV_BUFFER_CFG

See sdc_cfg_t::adv_buffer_cfg.

enumerator SDC_CFG_TYPE_FAL_SIZE

See sdc_cfg_t::fal_size

enumerator SDC_CFG_TYPE_PERIODIC_ADV_COUNT

See sdc_cfg_t::periodic_adv_count.

enumerator SDC_CFG_TYPE_PERIODIC_SYNC_COUNT

See sdc_cfg_t::periodic_sync_count.

enumerator SDC_CFG_TYPE_PERIODIC_SYNC_BUFFER_CFG

See sdc_cfg_t::periodic_sync_buffer_cfg.

enumerator SDC_CFG_TYPE_PERIODIC_ADV_LIST_SIZE

See sdc_cfg_t::periodic_adv_list_size.

enumerator SDC_CFG_TYPE_PERIODIC_ADV_RSP_COUNT

See sdc_cfg_t::periodic_adv_rsp_count.

enumerator SDC_CFG_TYPE_PERIODIC_ADV_RSP_BUFFER_CFG

See sdc_cfg_t::periodic_adv_rsp_buffer_cfg.

enumerator SDC_CFG_TYPE_PERIODIC_ADV_RSP_FAILURE_REPORTING_CFG

See sdc_cfg_t::periodic_adv_rsp_failure_reporting_cfg.

enumerator SDC_CFG_TYPE_PERIODIC_SYNC_RSP_TX_BUFFER_CFG

See sdc_cfg_t::periodic_sync_rsp_tx_buffer_cfg.

enumerator SDC_CFG_TYPE_CIG_COUNT

See sdc_cfg_t::cig_count.

enumerator SDC_CFG_TYPE_CIS_COUNT

See sdc_cfg_t::cis_count.

enumerator SDC_CFG_TYPE_BIG_COUNT

See sdc_cfg_t::big_count.

enumerator SDC_CFG_TYPE_BIS_SINK_COUNT

See sdc_cfg_t::bis_sink_count.

enumerator SDC_CFG_TYPE_BIS_SOURCE_COUNT

See sdc_cfg_t::bis_source_count.

enumerator SDC_CFG_TYPE_ISO_BUFFER_CFG

See sdc_cfg_t::iso_buffer_cfg.

Functions

int32_t sdc_init(sdc_fault_handler_t fault_handler)

Initialize the SoftDevice Controller.

After this function is called, the application may use SoC APIs.

Parameters:
  • fault_handler[in] The fault handler will be executed when there is an internal error in the SoftDevice Controller.

Return values:
  • 0 – Success

  • -NRF_EINVAL – Invalid argument provided

  • -NRF_EPERM – Unable to initialize because

    • MPSL is not initialized

    • MPSL needs to be configured with a LFCLK accuracy of 500 ppm or better.

int32_t sdc_cfg_set(uint8_t config_tag, uint8_t config_type, sdc_cfg_t const *p_resource_cfg)

Change or add a SoftDevice Controller configuration.

To change the default configuration, update SDC_DEFAULT_RESOURCE_CFG_TAG. To create or update a new configuration, provide another resource_cfg_tag.

Note

The application can set config_type to SDC_CFG_TYPE_NONE to obtain the required memory size for the current configuration in bytes.

Note

Resource configuration can only be performed prior to calling sdc_enable(). However, the current configuration may be changed after enabling the SoftDevice Controller.

Parameters:
  • config_tag[in] Configuration tag.

  • config_type[in] Configuration type. See also sdc_cfg_type.

  • p_resource_cfg[in] Configuration to be changed.

Return values:
  • -NRF_EOPNOTSUPP – Unsupported configuration.

  • -NRF_ENOMEM – Configuration required over 64 kB of RAM that is not supported currently.

  • -NRF_EINVAL – Invalid argument provided.

  • -NRF_EPERM – This API was called after sdc_enable().

Returns:

Required memory size for the current configuration in bytes.

int32_t sdc_enable(sdc_callback_t callback, uint8_t *p_mem)

Enable the SoftDevice Controller.

After this function is called, the application may utilize HCI APIs.

Parameters:
  • callback[in] The callback will be executed when HCI data or and HCI event is available. The callback will be executed in the same context as mpsl_low_priority_process. See also sdc_hci_get().

  • p_mem[in] Provide memory for the current resource configuration. To obtain the required memory size, use the value returned from sdc_cfg_set(). The pointer must be 8 bytes aligned.

Return values:
  • 0 – Success

  • -NRF_EINVAL – Invalid argument provided

  • -NRF_EPERM – The entropy source is not configured. Call sdc_rand_source_register() first.

int32_t sdc_disable(void)

Disable the SoftDevice Controller.

This call is synchronous. After the SoftDevice Controller is disabled, Bluetooth LE functionality is no longer available.

Return values:

0 – Success

int32_t sdc_build_revision_get(uint8_t *p_build_revision)

Obtain build revision string.

The application must provide a buffer that is at least SDC_BUILD_REVISION_SIZE bytes long. The SoftDevice Controller will copy the build revision string to the provided buffer.

Parameters:
  • p_build_revision[inout] Build revision.

Return values:
  • 0 – Success

  • -NRF_EINVAL – Invalid argument provided

int32_t sdc_support_adv(void)

Support Advertising State.

After this API is called, the controller will support the HCI commands and events related to the Advertising State. Only non-connectable advertising is supported. To support connectable advertising, call sdc_support_peripheral().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Advertising state is not supported.

int32_t sdc_support_ext_adv(void)

Support extended advertising.

After this API is called, the controller will support the HCI commands and events related to both legacy and extended advertising.

To reduce the size of the final linked image, the application should call either sdc_support_adv() or sdc_support_ext_adv().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Extended advertising state is not supported.

int32_t sdc_support_peripheral(void)

Support Peripheral role.

After this API is called, the controller will support the HCI commands and events related to the peripheral role.

The application shall call either sdc_support_adv() or sdc_support_ext_adv() to be able to support connection establishment.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Peripheral role is not supported.

int32_t sdc_support_scan(void)

Support Scanning state.

After this API is called, the controller will support the HCI commands and events related to the scanning state.

To reduce the size of the final linked image, the application should not call both sdc_support_scan() and sdc_support_ext_scan().

This API shall not be called together with sdc_support_central() or sdc_support_ext_central().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Scanning state is not supported.

int32_t sdc_support_ext_scan(void)

Support scanning for extended advertising PDUs.

After this API is called, the controller will support the HCI commands and events related to both legacy and extended scanning.

To reduce the size of the final linked image, the application should not call both sdc_support_scan() and sdc_support_ext_scan().

This API shall not be called together with sdc_support_central() or sdc_support_ext_central().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Extended scanning state is not supported.

int32_t sdc_support_central(void)

Support Scanner, Initiator, and Central role.

After this API is called, the controller will support the HCI commands and events related to the scanner, initiator, and central role.

To reduce the size of the final linked image, the application should not call both sdc_support_central() and sdc_support_ext_central().

This API shall not be called together with sdc_support_scan() or sdc_support_ext_scan().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – These features are not supported.

int32_t sdc_support_ext_central(void)

Support Extended Scanner, Extended Initiator, and Central role.

After this API is called, the controller will support the HCI commands and events related to the extended scanner, initiator, and central role.

To reduce the size of the final linked image, the application should not call both sdc_support_central() and sdc_support_ext_central().

This API shall not be called together with sdc_support_scan() or sdc_support_ext_scan().

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – These features are not supported.

int32_t sdc_support_parallel_scanning_and_initiating(void)

Support for scanning and initiating at the same time.

After this API is called, the controller will support:

  • Creating a connection while passive or active scanning is enabled

  • Enabling passive or active scanning while a connection attempt is ongoing

This API should be called only when centrals are supported (the application should call either sdc_support_central() or sdc_support_ext_central()).

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Scanning and initiating in parallel is not supported.

int32_t sdc_support_dle_central(void)

Support Data Length Extensions for a central device.

After this API is called, the controller will support data length extension in the central role. That is:

  • DLE is marked supported in the LL Feature Exchange procedure.

  • All DLE HCI APIs are supported. The controller replies with LL_LENGTH_RSP when a LL_LENGTH_REQ is received.

Note

The application is required to call both sdc_support_dle_central() and sdc_support_dle_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Data Length Extension or Central Role is not supported.

int32_t sdc_support_dle_peripheral(void)

Support Data Length Extensions for a peripheral device.

After this API is called, the controller will support data length extension in the peripheral role. That is:

  • DLE is marked supported in the LL Feature Exchange procedure.

  • All DLE HCI APIs are supported. The controller replies with LL_LENGTH_RSP when a LL_LENGTH_REQ is received.

Note

The application is required to call both sdc_support_dle_central() and sdc_support_dle_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Data Length Extension or Peripheral Role is not supported.

int32_t sdc_support_le_2m_phy(void)

Support LE 2M PHY.

After this API is called, the controller will support LE 2M PHY. That is:

  • The controller can use 2M PHY in both the connected and non-connected state.

  • LE 2M PHY is marked supported in the LL Feature Exchange procedure.

Note

The application is required to call sdc_support_phy_update_central() and/or sdc_support_phy_update_peripheral() to enable the PHY update procedure.

Return values:
int32_t sdc_support_le_coded_phy(void)

Support LE Coded PHY.

After this API is called, the controller will support LE Coded PHY. That is:

  • The controller can use LE Coded PHY in both the connected and non-connected state.

  • LE Coded PHY is marked supported in the LL Feature Exchange procedure.

Note

The application is required to call sdc_support_phy_update_central() and/or sdc_support_phy_update_peripheral() to enable the PHY update procedure.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Coded PHY is not supported.

int32_t sdc_support_phy_update_central(void)

Support PHY Update Procedure for central role.

After this API is called, the controller will support PHY update procedure in central role. That is:

  • All HCI APIs for obtaining or changing PHYs are supported for central role.

Note

The application is required to call both sdc_support_phy_update_central() and sdc_support_phy_update_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Coded PHY is not supported.

int32_t sdc_support_phy_update_peripheral(void)

Support LE Coded PHY for peripheral role.

After this API is called, the controller will support PHY update procedure in peripheral role. That is:

  • All HCI APIs for obtaining or changing PHYs are supported for peripheral role.

Note

The application is required to call both sdc_support_phy_update_central() and sdc_support_phy_update_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Coded PHY is not supported.

int32_t sdc_support_le_periodic_adv(void)

Support LE Periodic Advertising in the Advertising state.

After this API is called, the controller will support the HCI commands related to the Periodic Advertising State.

The application shall also call sdc_support_ext_adv() to enable support for extended advertising before enabling support for periodic advertising.

Note

This API also enables support for ADI in periodic advertising packets.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Periodic advertising is not supported.

int32_t sdc_support_le_periodic_sync(void)

Support LE Periodic Advertising in the Synchronization state.

After this API is called, the controller will support the HCI commands related to the Synchronization State.

The application shall also call sdc_support_ext_scan() to enable support for scanning for periodic advertisers before enabling support for this feature.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Periodic advertising is not supported.

int32_t sdc_support_le_periodic_adv_with_rsp(void)

Support LE Periodic Advertising with Responses in the Advertising state.

After this API is called, the controller will support the HCI commands related to Periodic Advertising with Responses.

The application shall also call sdc_support_ext_adv(), sdc_support_le_periodic_adv(), and at least one of sdc_support_periodic_adv_sync_transfer_sender_central() and sdc_support_periodic_adv_sync_transfer_sender_peripheral() to enable support for the extended advertising, periodic advertising, and sync transfer sender features before enabling support for Periodic Advertising with Responses.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Periodic Advertising with Responses is not supported.

int32_t sdc_support_le_periodic_sync_with_rsp(void)

Support LE Periodic Advertising with Responses in the Synchronization state.

After this API is called, the controller will support the HCI commands related to Periodic Sync with Responses.

The application shall also call sdc_support_ext_adv(), sdc_support_le_periodic_sync(), and at least one of sdc_support_periodic_adv_sync_transfer_receiver_central and sdc_support_periodic_adv_sync_transfer_receiver_peripheral to enable support for extended advertising, periodic advertising, and the sync transfer receiver features before enabling support for Periodic Sync with Responses.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Periodic Sync with Responses is not supported.

int32_t sdc_support_le_power_control_central(void)

Support LE Power Control for central role.

After this API is called, the controller will support the HCI commands related to the LE Power Control.

Note

The application is required to call both sdc_support_le_power_control_central() and sdc_support_le_power_control_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Power Control is not supported.

int32_t sdc_support_le_power_control_peripheral(void)

Support LE Power Control for peripheral role.

After this API is called, the controller will support the HCI commands related to the LE Power Control.

Note

The application is required to call both sdc_support_le_power_control_central() and sdc_support_le_power_control_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Power Control is not supported.

int32_t sdc_support_sca_central(void)

Support Sleep Clock Accuracy (SCA) Update procedure for central role.

Note

The application is required to call both sdc_support_sca_central() and sdc_support_sca_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – SCA Update procedure is not supported.

int32_t sdc_support_sca_peripheral(void)

Support Sleep Clock Accuracy (SCA) Update procedure for peripheral role.

Note

The application is required to call both sdc_support_sca_central() and sdc_support_sca_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – SCA Update procedure is not supported.

int32_t sdc_support_le_conn_cte_rsp_central(void)

Support LE Connection CTE response for central role.

After this API is called, the controller will support the HCI commands related to the LE Connection CTE Response.

Note

The application is required to call both sdc_support_le_conn_cte_rsp_central() and sdc_support_le_conn_cte_rsp_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Connection CTE Response is not supported.

int32_t sdc_support_le_conn_cte_rsp_peripheral(void)

Support LE Connection CTE response for peripheral role.

After this API is called, the controller will support the HCI commands related to the LE Connection CTE Response.

Note

The application is required to call both sdc_support_le_conn_cte_rsp_central() and sdc_support_le_conn_cte_rsp_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – LE Connection CTE Response is not supported.

int32_t sdc_support_periodic_adv_sync_transfer_sender_central(void)

Support for sending periodic advertising sync transfers as central role.

Note

The application is required to call both sdc_support_periodic_adv_sync_transfer_sender_central() and sdc_support_periodic_adv_sync_transfer_sender_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Sending periodic advertising sync transfers is not supported.

int32_t sdc_support_periodic_adv_sync_transfer_sender_peripheral(void)

Support for sending periodic advertising sync transfers as peripheral role.

Note

The application is required to call both sdc_support_periodic_adv_sync_transfer_sender_central() and sdc_support_periodic_adv_sync_transfer_sender_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Sending periodic advertising sync transfers is not supported.

int32_t sdc_support_periodic_adv_sync_transfer_receiver_central(void)

Support for receiving periodic advertising sync transfers as central role.

Note

The application is required to call both sdc_support_periodic_adv_sync_transfer_receiver_central() and sdc_support_periodic_adv_sync_transfer_receiver_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Receiving periodic advertising sync transfers is not supported.

int32_t sdc_support_periodic_adv_sync_transfer_receiver_peripheral(void)

Support for receiving periodic advertising sync transfers as peripheral role.

Note

The application is required to call both sdc_support_periodic_adv_sync_transfer_receiver_central() and sdc_support_periodic_adv_sync_transfer_receiver_peripheral() if both central and peripheral roles are supported.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Receiving periodic advertising sync transfers is not supported.

int32_t sdc_support_cis_peripheral(void)

Support Connected Isochronous streams in the peripheral role.

After this API is called, the controller will support the HCI commands related to Connected Isochronous channels in the peripheral role

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Connected Isochronous streams in the peripheral role is not supported.

int32_t sdc_support_cis_central(void)

Support Connected Isochronous streams in the central role.

After this API is called, the controller will support the HCI commands related to Connected Isochronous channels in the central role

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Connected Isochronous streams in the central role is not supported.

int32_t sdc_support_bis_source(void)

Support Broadcast Isochronous streams as a source.

After this API is called, the controller will support the HCI commands related to Broadcast Isochronous channels as a source

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Broadcast Isochronous streams as a source is not supported.

int32_t sdc_support_bis_sink(void)

Support Broadcast Isochronous streams as a sink.

After this API is called, the controller will support the HCI commands related to Broadcast Isochronous channels as a sink

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – Broadcast Isochronous streams as a sink is not supported.

int32_t sdc_iso_host_timestamps_ignore(bool ignore)

Configure the controller to ignore HCI ISO data timestamps from the host.

The controller requires that timestamps coming from the host/application are based on the controller’s clock. This option can instruct the controller to ignore the timestamps, if the host sends timestamps that are not based on the controller’s clock.

Parameters:
  • ignore – indicates if timestamps in HCI ISO data packets from the host should be ignored.

Return values:
  • 0 – Success

  • -NRF_EOPNOTSUPP – Broadcast Isochronous streams as source and Connected Isochronous Channels are not supported.

int32_t sdc_support_qos_channel_survey(void)

Support for Quality of Service (QoS) channel survey module.

After this API is called, the controller will support the sdc_hci_cmd_vs_qos_channel_survey_enable HCI command

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_cfg_set() or sdc_enable().

  • -NRF_EOPNOTSUPP – QoS channel survey is not supported.

int32_t sdc_coex_adv_mode_configure(bool adv_cont_on_denial)

Configure the coex advertising mode.

Configure how the advertiser behaves on denial of an advertising packet. The advertiser can be configured to carry on with the advertisement after the denial or to abort the advertising event, once an advertising packet gets denied.

The default behavior is that the advertiser tries to carry on with the advertising event after the denial.

Note

Setting adv_cont_on_denial to True is not supported for the MPSL_COEX_1WIRE_GPIOTE_ID coex interface type. Using the MPSL_COEX_1WIRE_GPIOTE_ID coex interface without using this API call with adv_cont_on_denial set to False will result in unexpected behavior.

Return values:
  • 0 – Success

  • -NRF_EOPNOTSUPP – The coexistence feature is not supported.

int32_t sdc_default_tx_power_set(int8_t requested_power_level)

Support for setting the default radio TX power level.

This API sets the default power level for radio TX activity in the controller.

The power level set will be equal to or less than the one requested, based on the values supported by the hardware used. Values outside the suported range will be set to the nearest supported value.

requested_power_level represents the actual power level fed to the antenna. When a Front-End Module is used, gain values for the SoC and FEM are calculated automatically to guarantee the closest possible match to the value requested by the user at the RF output.

Parameters:
  • requested_power_level[in] The power level in dBm to use.

Return values:
  • 0 – Success

  • -NRF_EPERM – This API must be called before sdc_enable().

struct sdc_cfg_role_count_t
#include <sdc.h>

Role count.

Public Members

uint8_t count

Max number of concurrent roles.

struct sdc_cfg_buffer_cfg_t
#include <sdc.h>

Buffer configuration.

Public Members

uint8_t tx_packet_size

Link Layer TX packet size. Valid range: 27-251. Default: SDC_DEFAULT_TX_PACKET_SIZE.

uint8_t rx_packet_size

Link Layer RX packet size. Valid range: 27-251. Default: SDC_DEFAULT_RX_PACKET_SIZE.

uint8_t tx_packet_count

Link Layer TX packet count per link. Minimum of 1. Default: SDC_DEFAULT_TX_PACKET_COUNT.

uint8_t rx_packet_count

Link Layer RX packet count per link. Minimum of 1. Default: SDC_DEFAULT_RX_PACKET_COUNT.

struct sdc_cfg_buffer_count_t
#include <sdc.h>

Buffer count configuration.

Public Members

uint8_t count

Number of buffers.

struct sdc_cfg_adv_buffer_cfg_t
#include <sdc.h>

Public Members

uint16_t max_adv_data

The maximum advertising data length that can be used by an advertiser

If set to 31, the controller will support 31 bytes of advertising data and scan response data. Setting a value larger than 31 bytes is only useful when supporting extended advertising.

Default: SDC_DEFAULT_ADV_BUF_SIZE.

struct sdc_cfg_periodic_adv_rsp_buffer_cfg_t
#include <sdc.h>

Public Members

uint8_t tx_buffer_count

Configures the size of the buffer pool allocated to each periodic advertising set with responses for subevent data.

Default: SDC_DEFAULT_PERIODIC_ADV_RSP_TX_BUFFER_COUNT.

uint8_t max_tx_data_size

Configures the maximum amount of data which can be sent in a PAwR subevent.

Default: SDC_DEFAULT_PERIODIC_ADV_RSP_MAX_TX_DATA.

uint8_t rx_buffer_count

Configures the size of the buffer pool allocated to each periodic advertising set with responses for response reports.

The value can be set to 0 to disable listening for responses.

Default: SDC_DEFAULT_PERIODIC_ADV_RSP_RX_BUFFER_COUNT.

struct sdc_cfg_iso_buffer_cfg_t
#include <sdc.h>

Public Members

uint8_t tx_sdu_buffer_count

Configures the number of shared SDU TX buffers allocated for ISO.

Default: SDC_DEFAULT_ISO_TX_SDU_BUFFER_COUNT.

uint16_t tx_sdu_buffer_size

Configures the size of shared SDU TX buffers allocated for ISO.

Default: SDC_DEFAULT_ISO_TX_SDU_BUFFER_SIZE.

uint8_t tx_pdu_buffer_per_stream_count

Configures the number of TX PDU buffers allocated per ISO stream.

This is the number of maximum size (251 bytes) PDU buffers. When PDU size is smaller than the maximum size, the pool will be repartitioned into a larger number of adjusted PDUs.

For BIS, this value is used to determine the furthest PDU that can be stored in the buffers. Therefore, limiting the number of pretransmission subevents and maximum pretransmission offset (PTO) that the controller can use.

Default: SDC_DEFAULT_ISO_TX_PDU_BUFFER_PER_STREAM_COUNT.

uint8_t rx_pdu_buffer_per_stream_count

Configures the number of RX PDU buffers allocated per ISO stream.

This is the number of maximum size (251 bytes) PDU buffers. When PDU size is smaller than the maximum size, the pool will be repartitioned into a larger number of adjusted PDUs.

For BIS, this value determines how many pretransmissions can be stored and utilized.

Default: SDC_DEFAULT_ISO_RX_PDU_BUFFER_PER_STREAM_COUNT.

uint8_t rx_sdu_buffer_count

Configures the number of RX SDU buffers allocated for ISO.

Default: SDC_DEFAULT_ISO_RX_SDU_BUFFER_COUNT.

uint16_t rx_sdu_buffer_size

Configures the size of RX SDU buffers allocated for ISO.

Default: SDC_DEFAULT_ISO_RX_SDU_BUFFER_SIZE.

union sdc_cfg_t
#include <sdc.h>

SoftDevice Controller configuration.

Public Members

sdc_cfg_role_count_t central_count

Max number of concurrent central connections. Default: SDC_DEFAULT_CENTRAL_COUNT.

sdc_cfg_role_count_t peripheral_count

Max number of concurrent peripheral connections. Default: SDC_DEFAULT_PERIPHERAL_COUNT.

sdc_cfg_buffer_cfg_t buffer_cfg

Configures the number and size of the data buffers available per link. Default: See sdc_cfg_buffer_cfg_t.

sdc_cfg_role_count_t adv_count

Max number of concurrent advertisers. Must be more than or equal to sdc_cfg_t::periodic_adv_count. Default: SDC_DEFAULT_ADV_COUNT.

sdc_cfg_buffer_count_t scan_buffer_cfg

Configures the maximum number of advertising reports available in the scanner.

The minimum allowed number of buffers is 2.

It is recommended to support at least three buffers, otherwise the scan response report will likely not be generated.

Default: SDC_DEFAULT_SCAN_BUFFER_COUNT.

sdc_cfg_adv_buffer_cfg_t adv_buffer_cfg

Configures the maximum advertising data per advertising set. Default: See sdc_cfg_adv_buffer_cfg_t.

uint16_t fal_size

Configures the maximum size of the Filter Accept List.

Default: SDC_DEFAULT_FAL_SIZE.

sdc_cfg_role_count_t periodic_adv_count

Configures the maximum number of concurrent periodic advertisers. Must be less than or equal to sdc_cfg_t::adv_count. Default: SDC_DEFAULT_PERIODIC_ADV_COUNT.

sdc_cfg_role_count_t periodic_sync_count

Configures the maximum number of concurrent synchronizations to periodic advertisers. Default: SDC_DEFAULT_PERIODIC_SYNC_COUNT.

sdc_cfg_buffer_count_t periodic_sync_buffer_cfg

Configures the maximum number of periodic advertising reports available for each synchronization to a periodic advertiser.

Each synchronization to a periodic advertiser allocates its own buffer pool.

When periodic sync with responses is not supported, the minimum allowed number of buffers is 2.

When periodic sync with responses is supported, the minimum allowed number of buffers is 1.

No reports for a new advertising event containing chained PDUs will be enqueued until the host has emptied the previous event’s buffers.

Default: SDC_DEFAULT_PERIODIC_SYNC_BUFFER_COUNT.

uint8_t periodic_adv_list_size

Configures the size of the periodic advertiser list.

The maximum number of supported devices is 8.

Default: SDC_DEFAULT_PERIODIC_ADV_LIST_SIZE.

sdc_cfg_role_count_t periodic_adv_rsp_count

Configures the maximum number of concurrent periodic advertising sets with responses.

Default: SDC_DEFAULT_PERIODIC_ADV_RSP_COUNT.

sdc_cfg_periodic_adv_rsp_buffer_cfg_t periodic_adv_rsp_buffer_cfg

Configures the number and size of the data buffers available per periodic advertising set with responses. Default: See sdc_cfg_periodic_adv_rsp_buffer_cfg_t.

uint8_t periodic_adv_rsp_failure_reporting_cfg

Enables/disables failure response reports for Periodic Advertising with Responses - Advertiser.

Set to 1 to enable RX failure reporting, 0 to disable.

Default: disabled.

sdc_cfg_buffer_count_t periodic_sync_rsp_tx_buffer_cfg

Configures the maximum number of responses that can be stored in the controller when synchronized to a periodic advertiser with responses.

The minimum number of buffers is 1.

Default: SDC_DEFAULT_PERIODIC_SYNC_RSP_TX_BUFFER_COUNT.

sdc_cfg_role_count_t cig_count

Configures the maximum number of concurrent CIGs.

Default: SDC_DEFAULT_CIG_COUNT.

sdc_cfg_role_count_t cis_count

Configures the maximum number of concurrent CISs.

Default: SDC_DEFAULT_CIS_COUNT.

sdc_cfg_role_count_t big_count

Configures the maximum number of concurrent BIGs.

Default: SDC_DEFAULT_BIG_COUNT.

sdc_cfg_role_count_t bis_sink_count

Configures the maximum number of concurrent sink BISs.

Default: SDC_DEFAULT_BIS_SINK_COUNT.

sdc_cfg_role_count_t bis_source_count

Configures the maximum number of concurrent source BISs.

Default: SDC_DEFAULT_BIS_SOURCE_COUNT.

sdc_cfg_iso_buffer_cfg_t iso_buffer_cfg

Configures the number and size of buffers allocated for ISO.

Default: See sdc_cfg_iso_buffer_cfg_t.

Memory requirement defines

group sdc_mem_defines

The SoftDevice Controller memory requirement defines may be used to determine the dynamic memory usage at compile time. The defines specify an upper limit, therefore the actual memory required may be less.

Note

The values of the memory requirement defines may change between minor releases.

Defines

Maximum memory required per central link.

Parameters:
  • tx_size[in] Link Layer TX packet size.

  • rx_size[in] Link Layer RX packet size.

  • tx_count[in] Link Layer TX packet count.

  • rx_count[in] Link Layer RX packet count.

Maximum memory required per peripheral link.

Parameters:
  • tx_size[in] Link Layer TX packet size.

  • rx_size[in] Link Layer RX packet size.

  • tx_count[in] Link Layer TX packet count.

  • rx_count[in] Link Layer RX packet count.

Maximum shared memory required for central links.

Maximum shared memory required for peripheral links.

SDC_MEM_LE_POWER_CONTROL(num_links)

Maximum memory required when supporting LE Power Control.

Parameters:
  • num_links[in] Total number of peripheral and central links supported.

SDC_MEM_QOS_CHANNEL_SURVEY

Memory required for Quality of Service (QoS) channel survey module.

SDC_MEM_SCAN(buffer_count)

Memory required for the scanner when only supporting legacy scanning.

SDC_MEM_SCAN_EXT(buffer_count)

Memory required for the scanner when supporting extended scanning.

SDC_MEM_INITIATOR

Additional memory required for the initiator when supporting scanning and initiating at the same time.

SDC_MEM_FAL(max_num_entries)

Memory required for the Filter Accept List

SDC_MEM_PER_ADV_SET(max_adv_data)

Maximum required memory for a given advertising buffer size.

Parameters:
  • max_adv_data[in] The desired advertising data size.

SDC_MEM_PER_PERIODIC_ADV_SET(max_adv_data)

Additional memory required for periodic advertising.

Note

The max_adv_data must be the same as for advertising in SDC_MEM_PER_ADV_SET.

Parameters:
  • max_adv_data[in] The desired periodic advertising data size.

SDC_MEM_PER_PERIODIC_SYNC(buffer_count)

Memory required per periodic sync when periodic sync with responses is not supported.

Parameters:
  • buffer_count[in] The number of periodic synchronization receive buffers.

SDC_MEM_PER_PERIODIC_SYNC_RSP(tx_buffer_count, rx_buffer_count)

Memory required per periodic sync when periodic sync with responses is supported.

Parameters:
  • tx_buffer_count[in] The number of buffers for sending data. Minimum of 1.

  • rx_buffer_count[in] The number of buffers for receiving data.

SDC_MEM_PERIODIC_ADV_LIST(list_size)

Memory required for the periodic adv list.

Parameters:
  • list_size[in] The number of entries the list can fit.

SDC_MEM_PER_PERIODIC_ADV_RSP_SET(max_adv_data, tx_buffer_count, rx_buffer_count, max_tx_data_size, failure_reporting_enabled)

Memory required per periodic advertising with responses set.

Parameters:
  • max_adv_data[in] The maximum size of data whcih can be sent in chains.

  • tx_buffer_count[in] The number of buffers for sending data. Minimum of 1.

  • rx_buffer_count[in] The number of buffers for receiving data.

  • max_tx_data_size[in] The maximum size of data which can be sent in subevents.

  • failure_reporting_enabled[in] Whether failure reporting is enabled.

SDC_MEM_PER_CIG(count)

Maximum memory required per CIG.

SDC_MEM_PER_CIS(count)

Maximum memory required per CIS. Buffer and CIG memory comes in addition.

SDC_MEM_PER_BIG(count)

Maximum memory required per BIG.

SDC_MEM_PER_BIS(count)

Maximum memory required per BIS. Buffer and BIG memory comes in addition.

SDC_MEM_ISO_RX_PDU_POOL_PER_STREAM_SIZE(rx_pdu_buffer_per_stream_count, cis_count, bis_sink_count)

Maximum memory required for the ISO RX PDU pool per stream.

Parameters:
  • rx_pdu_buffer_per_stream_count[in] Number of RX PDU buffers allocated for each BIS or CIS stream. Minimum of 1. For BIS, this value determines the number of pretransmission that can be stored.

  • cis_count[in] The number of supported CIS streams.

  • bis_sink_count[in] The number of supported sink BIS streams.

SDC_MEM_ISO_RX_SDU_POOL_SIZE(count, size)

Maximum memory required for the ISO RX path SDUs.

Parameters:
  • count[in] Number of shared SDUs allocated for the RX path.

  • size[in] Maximum size of SDUs being used.

SDC_MEM_ISO_TX_PDU_POOL_SIZE(tx_pdu_buffer_per_stream_count, cis_count, bis_source_count)

Maximum memory required for the ISO TX PDU pool.

Parameters:
  • tx_pdu_buffer_per_stream_count[in] Number of TX PDU buffers allocated for each BIS or CIS stream. For BIS, this value determines the number of pretransmission that can be stored.

  • cis_count[in] The number of supported CIS streams.

  • bis_source_count[in] The number of supported source BIS streams.

SDC_MEM_ISO_TX_SDU_POOL_SIZE(count, size)

Maximum memory required for the ISO TX path SDUs.

Parameters:
  • count[in] Number of shared SDUs allocated for the TX path.

  • size[in] Maximum size of SDUs being used.

SoftDevice Controller HCI

group sdc_hci

The SoftDevice Controller HCI APIs are used to send HCI commands/data and receive events/data to and from the SoftDevice Controller. The HCI packet format is described in the Bluetooth Core Specification, i.e. in Core v5. Vol 2, Part E. All APIs in this header file are expected to be called from the same execution priority as mpsl_low_priority_process. Not doing so will lead to undefined behavior.

Defines

HCI_CMD_HEADER_SIZE

The size of a command packet header.

HCI_DATA_HEADER_SIZE

The size of a data packet header.

HCI_EVENT_HEADER_SIZE

The size of an event packet header.

HCI_CMD_MAX_SIZE

The maximum size of a command.

HCI_DATA_MAX_SIZE

The maximum size of data.

HCI_EVENT_MAX_SIZE

The maximum size of an event.

HCI_CMD_PACKET_MAX_SIZE

The maximum size of an HCI command packet.

HCI_DATA_PACKET_MAX_SIZE

The maximum size of an HCI data packet.

HCI_EVENT_PACKET_MAX_SIZE

The maximum size of an HCI event packet.

HCI_MSG_BUFFER_MAX_SIZE

The maximum size of an HCI packet.

HCI_ISO_TX_SDU_ARRIVAL_MARGIN_US

The arrival margin in microseconds the controller needs to receive an ISO SDU before it can be sent on air.

For more details, see the SoftDevice Controller documentation that describes how to provide data for isochronous channels.

Enums

enum sdc_hci_msg_type_t

Values:

enumerator SDC_HCI_MSG_TYPE_DATA
enumerator SDC_HCI_MSG_TYPE_EVT
enumerator SDC_HCI_MSG_TYPE_ISO

Functions

int32_t sdc_hci_data_put(uint8_t const *p_data_in)

Send an HCI data packet to the SoftDevice Controller.

Parameters:
  • p_data_in[in] HCI Data packet. The first byte in the buffer should correspond to Handle, as specified by the Bluetooth Core Specification.

Return values:
  • 0 – Success

  • -NRF_EINVAL – Invalid input

int32_t sdc_hci_iso_data_put(uint8_t const *p_data_in)

Send an HCI ISO data packet to the SoftDevice Controller.

If an error is returned, the HCI ISO data packet is dropped by the SoftDevice Controller and will not be further processed.

Parameters:
  • p_data_in[in] HCI Data packet. The first byte in the buffer should correspond to Handle, as specified by the Bluetooth Core Specification.

Return values:
  • 0 – Success

  • -NRF_EINVAL – Invalid input

  • -NRF_EPERM – There is no data-path for the selected Handle

  • -NRF_EAGAIN – The data is provided too late

  • -NRF_EFAULT – Failure during processing of the data

int32_t sdc_hci_get(uint8_t *p_packet_out, uint8_t *p_msg_type_out)

Retrieve an HCI packet from the SoftDevice Controller.

This API is non-blocking.

Note

The application should ensure that the size of the provided buffer is at least HCI_MSG_BUFFER_MAX_SIZE bytes.

Parameters:
  • p_packet_out[inout] Buffer where the HCI packet will be stored. If an event is retrieved, the first byte corresponds to the Event Code. If a data packet is retrieved, the first byte corresponds to the Handle.

  • p_msg_type_out[out] Type of HCI packet produced by the controller. See sdc_hci_msg_type_t for possible values.

Return values:
  • 0 – Success

  • -NRF_EAGAIN – No event available

  • -NRF_EINVAL – Invalid input

SoftDevice Controller HCI VS

group sdc_hci_vs

The SoftDevice Controller VS HCI APIs define additional functionality provided by the SoftDevice Controller library. All APIs in this header file are expected to be called from the same execution priority as mpsl_low_priority_process. Not doing so will lead to undefined behavior.

HCI Types

group HCI_TYPES

Enums

enum sdc_hci_opcode_cb

HCI CB OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_CB_SET_EVENT_MASK

See sdc_hci_cmd_cb_set_event_mask().

enumerator SDC_HCI_OPCODE_CMD_CB_RESET

See sdc_hci_cmd_cb_reset().

enumerator SDC_HCI_OPCODE_CMD_CB_READ_CONN_ACCEPT_TIMEOUT

See sdc_hci_cmd_cb_read_conn_accept_timeout().

enumerator SDC_HCI_OPCODE_CMD_CB_WRITE_CONN_ACCEPT_TIMEOUT

See sdc_hci_cmd_cb_write_conn_accept_timeout().

enumerator SDC_HCI_OPCODE_CMD_CB_READ_TRANSMIT_POWER_LEVEL

See sdc_hci_cmd_cb_read_transmit_power_level().

enumerator SDC_HCI_OPCODE_CMD_CB_SET_CONTROLLER_TO_HOST_FLOW_CONTROL

See sdc_hci_cmd_cb_set_controller_to_host_flow_control().

enumerator SDC_HCI_OPCODE_CMD_CB_HOST_BUFFER_SIZE

See sdc_hci_cmd_cb_host_buffer_size().

enumerator SDC_HCI_OPCODE_CMD_CB_HOST_NUMBER_OF_COMPLETED_PACKETS

See sdc_hci_cmd_cb_host_number_of_completed_packets().

enumerator SDC_HCI_OPCODE_CMD_CB_SET_EVENT_MASK_PAGE_2

See sdc_hci_cmd_cb_set_event_mask_page_2().

enumerator SDC_HCI_OPCODE_CMD_CB_READ_AUTHENTICATED_PAYLOAD_TIMEOUT

See sdc_hci_cmd_cb_read_authenticated_payload_timeout().

enumerator SDC_HCI_OPCODE_CMD_CB_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT

See sdc_hci_cmd_cb_write_authenticated_payload_timeout().

enum sdc_hci_opcode_ip

HCI IP OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_IP_READ_LOCAL_VERSION_INFORMATION

See sdc_hci_cmd_ip_read_local_version_information().

enumerator SDC_HCI_OPCODE_CMD_IP_READ_LOCAL_SUPPORTED_COMMANDS

See sdc_hci_cmd_ip_read_local_supported_commands().

enumerator SDC_HCI_OPCODE_CMD_IP_READ_LOCAL_SUPPORTED_FEATURES

See sdc_hci_cmd_ip_read_local_supported_features().

enumerator SDC_HCI_OPCODE_CMD_IP_READ_BD_ADDR

See sdc_hci_cmd_ip_read_bd_addr().

enum sdc_hci_opcode_le

HCI LE OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EVENT_MASK

See sdc_hci_cmd_le_set_event_mask().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_BUFFER_SIZE

See sdc_hci_cmd_le_read_buffer_size().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_LOCAL_SUPPORTED_FEATURES

See sdc_hci_cmd_le_read_local_supported_features().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_RANDOM_ADDRESS

See sdc_hci_cmd_le_set_random_address().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_ADV_PARAMS

See sdc_hci_cmd_le_set_adv_params().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_ADV_PHYSICAL_CHANNEL_TX_POWER

See sdc_hci_cmd_le_read_adv_physical_channel_tx_power().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_ADV_DATA

See sdc_hci_cmd_le_set_adv_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_SCAN_RESPONSE_DATA

See sdc_hci_cmd_le_set_scan_response_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_ADV_ENABLE

See sdc_hci_cmd_le_set_adv_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_SCAN_PARAMS

See sdc_hci_cmd_le_set_scan_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_SCAN_ENABLE

See sdc_hci_cmd_le_set_scan_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_CREATE_CONN

See sdc_hci_cmd_le_create_conn().

enumerator SDC_HCI_OPCODE_CMD_LE_CREATE_CONN_CANCEL

See sdc_hci_cmd_le_create_conn_cancel().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_FILTER_ACCEPT_LIST_SIZE

See sdc_hci_cmd_le_read_filter_accept_list_size().

enumerator SDC_HCI_OPCODE_CMD_LE_CLEAR_FILTER_ACCEPT_LIST

See sdc_hci_cmd_le_clear_filter_accept_list().

enumerator SDC_HCI_OPCODE_CMD_LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST

See sdc_hci_cmd_le_add_device_to_filter_accept_list().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST

See sdc_hci_cmd_le_remove_device_from_filter_accept_list().

enumerator SDC_HCI_OPCODE_CMD_LE_CONN_UPDATE

See sdc_hci_cmd_le_conn_update().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_HOST_CHANNEL_CLASSIFICATION

See sdc_hci_cmd_le_set_host_channel_classification().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_CHANNEL_MAP

See sdc_hci_cmd_le_read_channel_map().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_REMOTE_FEATURES

See sdc_hci_cmd_le_read_remote_features().

enumerator SDC_HCI_OPCODE_CMD_LE_ENCRYPT

See sdc_hci_cmd_le_encrypt().

enumerator SDC_HCI_OPCODE_CMD_LE_RAND

See sdc_hci_cmd_le_rand().

enumerator SDC_HCI_OPCODE_CMD_LE_ENABLE_ENCRYPTION

See sdc_hci_cmd_le_enable_encryption().

enumerator SDC_HCI_OPCODE_CMD_LE_LONG_TERM_KEY_REQUEST_REPLY

See sdc_hci_cmd_le_long_term_key_request_reply().

enumerator SDC_HCI_OPCODE_CMD_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY

See sdc_hci_cmd_le_long_term_key_request_negative_reply().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_SUPPORTED_STATES

See sdc_hci_cmd_le_read_supported_states().

enumerator SDC_HCI_OPCODE_CMD_LE_TEST_END

See sdc_hci_cmd_le_test_end().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_DATA_LENGTH

See sdc_hci_cmd_le_set_data_length().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH

See sdc_hci_cmd_le_read_suggested_default_data_length().

enumerator SDC_HCI_OPCODE_CMD_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH

See sdc_hci_cmd_le_write_suggested_default_data_length().

enumerator SDC_HCI_OPCODE_CMD_LE_ADD_DEVICE_TO_RESOLVING_LIST

See sdc_hci_cmd_le_add_device_to_resolving_list().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST

See sdc_hci_cmd_le_remove_device_from_resolving_list().

enumerator SDC_HCI_OPCODE_CMD_LE_CLEAR_RESOLVING_LIST

See sdc_hci_cmd_le_clear_resolving_list().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_RESOLVING_LIST_SIZE

See sdc_hci_cmd_le_read_resolving_list_size().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_ADDRESS_RESOLUTION_ENABLE

See sdc_hci_cmd_le_set_address_resolution_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT

See sdc_hci_cmd_le_set_resolvable_private_address_timeout().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_MAX_DATA_LENGTH

See sdc_hci_cmd_le_read_max_data_length().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_PHY

See sdc_hci_cmd_le_read_phy().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_DEFAULT_PHY

See sdc_hci_cmd_le_set_default_phy().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PHY

See sdc_hci_cmd_le_set_phy().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_ADV_SET_RANDOM_ADDRESS

See sdc_hci_cmd_le_set_adv_set_random_address().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_ADV_PARAMS

See sdc_hci_cmd_le_set_ext_adv_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_ADV_DATA

See sdc_hci_cmd_le_set_ext_adv_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_SCAN_RESPONSE_DATA

See sdc_hci_cmd_le_set_ext_scan_response_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_ADV_ENABLE

See sdc_hci_cmd_le_set_ext_adv_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_MAX_ADV_DATA_LENGTH

See sdc_hci_cmd_le_read_max_adv_data_length().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_NUMBER_OF_SUPPORTED_ADV_SETS

See sdc_hci_cmd_le_read_number_of_supported_adv_sets().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_ADV_SET

See sdc_hci_cmd_le_remove_adv_set().

enumerator SDC_HCI_OPCODE_CMD_LE_CLEAR_ADV_SETS

See sdc_hci_cmd_le_clear_adv_sets().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_PARAMS

See sdc_hci_cmd_le_set_periodic_adv_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_DATA

See sdc_hci_cmd_le_set_periodic_adv_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_ENABLE

See sdc_hci_cmd_le_set_periodic_adv_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_SCAN_PARAMS

See sdc_hci_cmd_le_set_ext_scan_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_EXT_SCAN_ENABLE

See sdc_hci_cmd_le_set_ext_scan_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_EXT_CREATE_CONN

See sdc_hci_cmd_le_ext_create_conn().

enumerator SDC_HCI_OPCODE_CMD_LE_PERIODIC_ADV_CREATE_SYNC

See sdc_hci_cmd_le_periodic_adv_create_sync().

enumerator SDC_HCI_OPCODE_CMD_LE_PERIODIC_ADV_CREATE_SYNC_CANCEL

See sdc_hci_cmd_le_periodic_adv_create_sync_cancel().

enumerator SDC_HCI_OPCODE_CMD_LE_PERIODIC_ADV_TERMINATE_SYNC

See sdc_hci_cmd_le_periodic_adv_terminate_sync().

enumerator SDC_HCI_OPCODE_CMD_LE_ADD_DEVICE_TO_PERIODIC_ADV_LIST

See sdc_hci_cmd_le_add_device_to_periodic_adv_list().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_DEVICE_FROM_PERIODIC_ADV_LIST

See sdc_hci_cmd_le_remove_device_from_periodic_adv_list().

enumerator SDC_HCI_OPCODE_CMD_LE_CLEAR_PERIODIC_ADV_LIST

See sdc_hci_cmd_le_clear_periodic_adv_list().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_PERIODIC_ADV_LIST_SIZE

See sdc_hci_cmd_le_read_periodic_adv_list_size().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_TRANSMIT_POWER

See sdc_hci_cmd_le_read_transmit_power().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_RF_PATH_COMPENSATION

See sdc_hci_cmd_le_read_rf_path_compensation().

enumerator SDC_HCI_OPCODE_CMD_LE_WRITE_RF_PATH_COMPENSATION

See sdc_hci_cmd_le_write_rf_path_compensation().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PRIVACY_MODE

See sdc_hci_cmd_le_set_privacy_mode().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_CONNLESS_CTE_TRANSMIT_PARAMS

See sdc_hci_cmd_le_set_connless_cte_transmit_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_CONNLESS_CTE_TRANSMIT_ENABLE

See sdc_hci_cmd_le_set_connless_cte_transmit_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_CONN_CTE_TRANSMIT_PARAMS

See sdc_hci_cmd_le_set_conn_cte_transmit_params().

enumerator SDC_HCI_OPCODE_CMD_LE_CONN_CTE_RESPONSE_ENABLE

See sdc_hci_cmd_le_conn_cte_response_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_ANTENNA_INFORMATION

See sdc_hci_cmd_le_read_antenna_information().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_RECEIVE_ENABLE

See sdc_hci_cmd_le_set_periodic_adv_receive_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_PERIODIC_ADV_SYNC_TRANSFER

See sdc_hci_cmd_le_periodic_adv_sync_transfer().

enumerator SDC_HCI_OPCODE_CMD_LE_PERIODIC_ADV_SET_INFO_TRANSFER

See sdc_hci_cmd_le_periodic_adv_set_info_transfer().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_SYNC_TRANSFER_PARAMS

See sdc_hci_cmd_le_set_periodic_adv_sync_transfer_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_DEFAULT_PERIODIC_ADV_SYNC_TRANSFER_PARAMS

See sdc_hci_cmd_le_set_default_periodic_adv_sync_transfer_params().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_BUFFER_SIZE_V2

See sdc_hci_cmd_le_read_buffer_size_v2().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_ISO_TX_SYNC

See sdc_hci_cmd_le_read_iso_tx_sync().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_CIG_PARAMS

See sdc_hci_cmd_le_set_cig_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_CIG_PARAMS_TEST

See sdc_hci_cmd_le_set_cig_params_test().

enumerator SDC_HCI_OPCODE_CMD_LE_CREATE_CIS

See sdc_hci_cmd_le_create_cis().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_CIG

See sdc_hci_cmd_le_remove_cig().

enumerator SDC_HCI_OPCODE_CMD_LE_ACCEPT_CIS_REQUEST

See sdc_hci_cmd_le_accept_cis_request().

enumerator SDC_HCI_OPCODE_CMD_LE_REJECT_CIS_REQUEST

See sdc_hci_cmd_le_reject_cis_request().

enumerator SDC_HCI_OPCODE_CMD_LE_CREATE_BIG

See sdc_hci_cmd_le_create_big().

enumerator SDC_HCI_OPCODE_CMD_LE_CREATE_BIG_TEST

See sdc_hci_cmd_le_create_big_test().

enumerator SDC_HCI_OPCODE_CMD_LE_TERMINATE_BIG

See sdc_hci_cmd_le_terminate_big().

enumerator SDC_HCI_OPCODE_CMD_LE_BIG_CREATE_SYNC

See sdc_hci_cmd_le_big_create_sync().

enumerator SDC_HCI_OPCODE_CMD_LE_BIG_TERMINATE_SYNC

See sdc_hci_cmd_le_big_terminate_sync().

enumerator SDC_HCI_OPCODE_CMD_LE_REQUEST_PEER_SCA

See sdc_hci_cmd_le_request_peer_sca().

enumerator SDC_HCI_OPCODE_CMD_LE_SETUP_ISO_DATA_PATH

See sdc_hci_cmd_le_setup_iso_data_path().

enumerator SDC_HCI_OPCODE_CMD_LE_REMOVE_ISO_DATA_PATH

See sdc_hci_cmd_le_remove_iso_data_path().

enumerator SDC_HCI_OPCODE_CMD_LE_ISO_TRANSMIT_TEST

See sdc_hci_cmd_le_iso_transmit_test().

enumerator SDC_HCI_OPCODE_CMD_LE_ISO_RECEIVE_TEST

See sdc_hci_cmd_le_iso_receive_test().

enumerator SDC_HCI_OPCODE_CMD_LE_ISO_READ_TEST_COUNTERS

See sdc_hci_cmd_le_iso_read_test_counters().

enumerator SDC_HCI_OPCODE_CMD_LE_ISO_TEST_END

See sdc_hci_cmd_le_iso_test_end().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_HOST_FEATURE

See sdc_hci_cmd_le_set_host_feature().

See sdc_hci_cmd_le_read_iso_link_quality().

enumerator SDC_HCI_OPCODE_CMD_LE_ENHANCED_READ_TRANSMIT_POWER_LEVEL

See sdc_hci_cmd_le_enhanced_read_transmit_power_level().

enumerator SDC_HCI_OPCODE_CMD_LE_READ_REMOTE_TRANSMIT_POWER_LEVEL

See sdc_hci_cmd_le_read_remote_transmit_power_level().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PATH_LOSS_REPORTING_PARAMS

See sdc_hci_cmd_le_set_path_loss_reporting_params().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PATH_LOSS_REPORTING_ENABLE

See sdc_hci_cmd_le_set_path_loss_reporting_enable().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_TRANSMIT_POWER_REPORTING_ENABLE

See sdc_hci_cmd_le_set_transmit_power_reporting_enable().

See sdc_hci_cmd_le_set_data_related_address_changes().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_DEFAULT_SUBRATE

See sdc_hci_cmd_le_set_default_subrate().

enumerator SDC_HCI_OPCODE_CMD_LE_SUBRATE_REQUEST

See sdc_hci_cmd_le_subrate_request().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_SUBEVENT_DATA

See sdc_hci_cmd_le_set_periodic_adv_subevent_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_RESPONSE_DATA

See sdc_hci_cmd_le_set_periodic_adv_response_data().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_SYNC_SUBEVENT

See sdc_hci_cmd_le_set_periodic_sync_subevent().

enumerator SDC_HCI_OPCODE_CMD_LE_EXT_CREATE_CONN_V2

See sdc_hci_cmd_le_ext_create_conn_v2().

enumerator SDC_HCI_OPCODE_CMD_LE_SET_PERIODIC_ADV_PARAMS_V2

See sdc_hci_cmd_le_set_periodic_adv_params_v2().

enum sdc_hci_subevent_le

LE subevent Code values.

Values:

enumerator SDC_HCI_SUBEVENT_LE_SUBRATE_CHANGE

See sdc_hci_subevent_le_subrate_change_t.

enum sdc_hci_opcode_lc

HCI LC OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_LC_DISCONNECT

See sdc_hci_cmd_lc_disconnect().

enumerator SDC_HCI_OPCODE_CMD_LC_READ_REMOTE_VERSION_INFORMATION

See sdc_hci_cmd_lc_read_remote_version_information().

enum sdc_hci_opcode_sp

HCI SP OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_SP_READ_RSSI

See sdc_hci_cmd_sp_read_rssi().

enum sdc_hci_opcode_vs

HCI VS OpCode Field values.

Values:

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_VERSION_INFO

See sdc_hci_cmd_vs_zephyr_read_version_info().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_SUPPORTED_COMMANDS

See sdc_hci_cmd_vs_zephyr_read_supported_commands().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_WRITE_BD_ADDR

See sdc_hci_cmd_vs_zephyr_write_bd_addr().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_STATIC_ADDRESSES

See sdc_hci_cmd_vs_zephyr_read_static_addresses().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_KEY_HIERARCHY_ROOTS

See sdc_hci_cmd_vs_zephyr_read_key_hierarchy_roots().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_CHIP_TEMP

See sdc_hci_cmd_vs_zephyr_read_chip_temp().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_WRITE_TX_POWER

See sdc_hci_cmd_vs_zephyr_write_tx_power().

enumerator SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_TX_POWER

See sdc_hci_cmd_vs_zephyr_read_tx_power().

enumerator SDC_HCI_OPCODE_CMD_VS_READ_SUPPORTED_VS_COMMANDS

See sdc_hci_cmd_vs_read_supported_vs_commands().

enumerator SDC_HCI_OPCODE_CMD_VS_LLPM_MODE_SET

See sdc_hci_cmd_vs_llpm_mode_set().

enumerator SDC_HCI_OPCODE_CMD_VS_CONN_UPDATE

See sdc_hci_cmd_vs_conn_update().

enumerator SDC_HCI_OPCODE_CMD_VS_CONN_EVENT_EXTEND

See sdc_hci_cmd_vs_conn_event_extend().

enumerator SDC_HCI_OPCODE_CMD_VS_QOS_CONN_EVENT_REPORT_ENABLE

See sdc_hci_cmd_vs_qos_conn_event_report_enable().

enumerator SDC_HCI_OPCODE_CMD_VS_EVENT_LENGTH_SET

See sdc_hci_cmd_vs_event_length_set().

enumerator SDC_HCI_OPCODE_CMD_VS_PERIODIC_ADV_EVENT_LENGTH_SET

See sdc_hci_cmd_vs_periodic_adv_event_length_set().

enumerator SDC_HCI_OPCODE_CMD_VS_COEX_SCAN_MODE_CONFIG

See sdc_hci_cmd_vs_coex_scan_mode_config().

enumerator SDC_HCI_OPCODE_CMD_VS_COEX_PRIORITY_CONFIG

See sdc_hci_cmd_vs_coex_priority_config().

enumerator SDC_HCI_OPCODE_CMD_VS_PERIPHERAL_LATENCY_MODE_SET

See sdc_hci_cmd_vs_peripheral_latency_mode_set().

enumerator SDC_HCI_OPCODE_CMD_VS_WRITE_REMOTE_TX_POWER

See sdc_hci_cmd_vs_write_remote_tx_power().

enumerator SDC_HCI_OPCODE_CMD_VS_SET_ADV_RANDOMNESS

See sdc_hci_cmd_vs_set_adv_randomness().

enumerator SDC_HCI_OPCODE_CMD_VS_COMPAT_MODE_WINDOW_OFFSET_SET

See sdc_hci_cmd_vs_compat_mode_window_offset_set().

enumerator SDC_HCI_OPCODE_CMD_VS_QOS_CHANNEL_SURVEY_ENABLE

See sdc_hci_cmd_vs_qos_channel_survey_enable().

enumerator SDC_HCI_OPCODE_CMD_VS_SET_POWER_CONTROL_REQUEST_PARAMS

See sdc_hci_cmd_vs_set_power_control_request_params().

enumerator SDC_HCI_OPCODE_CMD_VS_READ_AVERAGE_RSSI

See sdc_hci_cmd_vs_read_average_rssi().

enumerator SDC_HCI_OPCODE_CMD_VS_CENTRAL_ACL_EVENT_SPACING_SET

See sdc_hci_cmd_vs_central_acl_event_spacing_set().

enumerator SDC_HCI_OPCODE_CMD_VS_SET_CONN_EVENT_TRIGGER

See sdc_hci_cmd_vs_set_conn_event_trigger().

enumerator SDC_HCI_OPCODE_CMD_VS_GET_NEXT_CONN_EVENT_COUNTER

See sdc_hci_cmd_vs_get_next_conn_event_counter().

enumerator SDC_HCI_OPCODE_CMD_VS_ALLOW_PARALLEL_CONNECTION_ESTABLISHMENTS

See sdc_hci_cmd_vs_allow_parallel_connection_establishments().

enumerator SDC_HCI_OPCODE_CMD_VS_MIN_VAL_OF_MAX_ACL_TX_PAYLOAD_SET

See sdc_hci_cmd_vs_min_val_of_max_acl_tx_payload_set().

enumerator SDC_HCI_OPCODE_CMD_VS_ISO_READ_TX_TIMESTAMP

See sdc_hci_cmd_vs_iso_read_tx_timestamp().

enumerator SDC_HCI_OPCODE_CMD_VS_BIG_RESERVED_TIME_SET

See sdc_hci_cmd_vs_big_reserved_time_set().

enumerator SDC_HCI_OPCODE_CMD_VS_CIG_RESERVED_TIME_SET

See sdc_hci_cmd_vs_cig_reserved_time_set().

enumerator SDC_HCI_OPCODE_CMD_VS_CIS_SUBEVENT_LENGTH_SET

See sdc_hci_cmd_vs_cis_subevent_length_set().

enumerator SDC_HCI_OPCODE_CMD_VS_SCAN_CHANNEL_MAP_SET

See sdc_hci_cmd_vs_scan_channel_map_set().

enumerator SDC_HCI_OPCODE_CMD_VS_SCAN_ACCEPT_EXT_ADV_PACKETS_SET

See sdc_hci_cmd_vs_scan_accept_ext_adv_packets_set().

enumerator SDC_HCI_OPCODE_CMD_VS_SET_ROLE_PRIORITY

See sdc_hci_cmd_vs_set_role_priority().

enum sdc_hci_subevent_vs

VS subevent Code values.

Values:

enumerator SDC_HCI_SUBEVENT_VS_QOS_CONN_EVENT_REPORT

See sdc_hci_subevent_vs_qos_conn_event_report_t.

enumerator SDC_HCI_SUBEVENT_VS_QOS_CHANNEL_SURVEY_REPORT

See sdc_hci_subevent_vs_qos_channel_survey_report_t.

enum sdc_hci_vs_coex_bt_role

Bluetooth roles that are recognized by the coexistence interface.

Values:

enumerator SDC_HCI_VS_COEX_BT_ROLE_ADVERTISER
enumerator SDC_HCI_VS_COEX_BT_ROLE_SCANNER
enumerator SDC_HCI_VS_COEX_BT_ROLE_CENTRAL
enumerator SDC_HCI_VS_COEX_BT_ROLE_PERIPHERAL
enum sdc_hci_vs_coex_scan_mode

Scanner coexistence session request modes.

Values:

enumerator SDC_HCI_VS_COEX_SCAN_MODE_REQUEST_ON_AA

Request after receiving a valid access address.

enumerator SDC_HCI_VS_COEX_SCAN_MODE_REQUEST_ON_TX

Request before transmitting.

enum sdc_hci_vs_conn_event_trigger_role

Connection Event Trigger Role Selection.

Values:

enumerator SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_UNUSED

Unused.

enumerator SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_SCAN

Connection event trigger for the Scanner.

enumerator SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_INIT

Connection event trigger for the Initiator.

enumerator SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_CONN

Connection event trigger for connections (Central or Peripheral).

enumerator SDC_HCI_VS_CONN_EVENT_TRIGGER_ROLE_ADV

Connection event trigger for the Advertiser.

enum sdc_hci_vs_peripheral_latency_mode

Peripheral latency disable/enable modes.

Values:

enumerator SDC_HCI_VS_PERIPHERAL_LATENCY_MODE_ENABLE

Peripheral latency enable.

enumerator SDC_HCI_VS_PERIPHERAL_LATENCY_MODE_DISABLE

Peripheral latency disable.

enumerator SDC_HCI_VS_PERIPHERAL_LATENCY_MODE_WAIT_FOR_ACK

Peripheral latency wait for ack.

enum sdc_hci_vs_set_role_priority_handle_type

Handle type for priority update.

Values:

enumerator SDC_HCI_VS_SET_ROLE_PRIORITY_HANDLE_TYPE_INITIATOR_SECONDARY_CHANNEL

Handle of type initiator. Only affects secondary channel priority.

enum sdc_hci_vs_tx_power_handle_type

TX power handle type.

Values:

enumerator SDC_HCI_VS_TX_POWER_HANDLE_TYPE_ADV

Handle of type Advertiser.

enumerator SDC_HCI_VS_TX_POWER_HANDLE_TYPE_SCAN_INIT

Handle of type Scanner or Initiator.

enumerator SDC_HCI_VS_TX_POWER_HANDLE_TYPE_CONN

Handle of type Connection.

enumerator SDC_HCI_VS_TX_POWER_HANDLE_TYPE_SYNC

Handle of type Periodic Sync.

Variables

sdc_hci_cb_event_mask_t
sdc_hci_cb_event_mask_page_2_t
sdc_hci_cb_host_number_of_completed_packets_array_params_t
sdc_hci_ip_lmp_features_t
sdc_hci_ip_supported_commands_t
sdc_hci_le_adv_event_properties_params_t
sdc_hci_le_big_create_sync_array_params_t
sdc_hci_le_create_cis_array_params_t
sdc_hci_le_ext_create_conn_array_params_t
sdc_hci_le_ext_create_conn_v2_array_params_t
sdc_hci_le_le_event_mask_t
sdc_hci_le_le_features_t
sdc_hci_le_periodic_adv_create_sync_options_params_t
sdc_hci_le_set_cig_params_array_params_t
sdc_hci_le_set_cig_params_output_array_params_t
sdc_hci_le_set_cig_params_test_array_params_t
sdc_hci_le_set_cig_params_test_output_array_params_t
sdc_hci_le_set_conn_cte_transmit_params_array_params_t
sdc_hci_le_set_connless_cte_transmit_params_array_params_t
sdc_hci_le_set_data_related_address_changes_reasons_params_t
sdc_hci_le_set_ext_adv_enable_array_params_t
sdc_hci_le_set_ext_scan_params_array_params_t
sdc_hci_le_set_periodic_adv_enable_params_t
sdc_hci_le_set_periodic_adv_receive_enable_params_t
sdc_hci_le_set_periodic_adv_subevent_data_array_params_t
sdc_hci_vs_supported_vs_commands_t
sdc_hci_vs_zephyr_static_address_t
sdc_hci_vs_zephyr_supported_commands_t

HCI Events

group HCI_EVENTS

Variables

sdc_hci_subevent_le_subrate_change_t
sdc_hci_subevent_vs_qos_conn_event_report_t
sdc_hci_subevent_vs_qos_channel_survey_report_t

HCI Commands

group HCI_COMMAND_PARAMETERS

Variables

sdc_hci_cmd_cb_set_event_mask_t
sdc_hci_cmd_cb_read_conn_accept_timeout_return_t
sdc_hci_cmd_cb_write_conn_accept_timeout_t
sdc_hci_cmd_cb_read_transmit_power_level_t
sdc_hci_cmd_cb_read_transmit_power_level_return_t
sdc_hci_cmd_cb_set_controller_to_host_flow_control_t
sdc_hci_cmd_cb_host_buffer_size_t
sdc_hci_cmd_cb_host_number_of_completed_packets_t
sdc_hci_cmd_cb_set_event_mask_page_2_t
sdc_hci_cmd_cb_read_authenticated_payload_timeout_t
sdc_hci_cmd_cb_read_authenticated_payload_timeout_return_t
sdc_hci_cmd_cb_write_authenticated_payload_timeout_t
sdc_hci_cmd_cb_write_authenticated_payload_timeout_return_t
sdc_hci_cmd_ip_read_local_version_information_return_t
sdc_hci_cmd_ip_read_local_supported_commands_return_t
sdc_hci_cmd_ip_read_local_supported_features_return_t
sdc_hci_cmd_ip_read_bd_addr_return_t
sdc_hci_cmd_le_set_event_mask_t
sdc_hci_cmd_le_read_buffer_size_return_t
sdc_hci_cmd_le_read_local_supported_features_return_t
sdc_hci_cmd_le_set_random_address_t
sdc_hci_cmd_le_set_adv_params_t
sdc_hci_cmd_le_read_adv_physical_channel_tx_power_return_t
sdc_hci_cmd_le_set_adv_data_t
sdc_hci_cmd_le_set_scan_response_data_t
sdc_hci_cmd_le_set_adv_enable_t
sdc_hci_cmd_le_set_scan_params_t
sdc_hci_cmd_le_set_scan_enable_t
sdc_hci_cmd_le_create_conn_t
sdc_hci_cmd_le_read_filter_accept_list_size_return_t
sdc_hci_cmd_le_add_device_to_filter_accept_list_t
sdc_hci_cmd_le_remove_device_from_filter_accept_list_t
sdc_hci_cmd_le_conn_update_t
sdc_hci_cmd_le_set_host_channel_classification_t
sdc_hci_cmd_le_read_channel_map_t
sdc_hci_cmd_le_read_channel_map_return_t
sdc_hci_cmd_le_read_remote_features_t
sdc_hci_cmd_le_encrypt_t
sdc_hci_cmd_le_encrypt_return_t
sdc_hci_cmd_le_rand_return_t
sdc_hci_cmd_le_enable_encryption_t
sdc_hci_cmd_le_long_term_key_request_reply_t
sdc_hci_cmd_le_long_term_key_request_reply_return_t
sdc_hci_cmd_le_long_term_key_request_negative_reply_t
sdc_hci_cmd_le_long_term_key_request_negative_reply_return_t
sdc_hci_cmd_le_read_supported_states_return_t
sdc_hci_cmd_le_test_end_return_t
sdc_hci_cmd_le_set_data_length_t
sdc_hci_cmd_le_set_data_length_return_t
sdc_hci_cmd_le_read_suggested_default_data_length_return_t
sdc_hci_cmd_le_write_suggested_default_data_length_t
sdc_hci_cmd_le_add_device_to_resolving_list_t
sdc_hci_cmd_le_remove_device_from_resolving_list_t
sdc_hci_cmd_le_read_resolving_list_size_return_t
sdc_hci_cmd_le_set_address_resolution_enable_t
sdc_hci_cmd_le_set_resolvable_private_address_timeout_t
sdc_hci_cmd_le_read_max_data_length_return_t
sdc_hci_cmd_le_read_phy_t
sdc_hci_cmd_le_read_phy_return_t
sdc_hci_cmd_le_set_default_phy_t
sdc_hci_cmd_le_set_phy_t
sdc_hci_cmd_le_set_adv_set_random_address_t
sdc_hci_cmd_le_set_ext_adv_params_t
sdc_hci_cmd_le_set_ext_adv_params_return_t
sdc_hci_cmd_le_set_ext_adv_data_t
sdc_hci_cmd_le_set_ext_scan_response_data_t
sdc_hci_cmd_le_set_ext_adv_enable_t
sdc_hci_cmd_le_read_max_adv_data_length_return_t
sdc_hci_cmd_le_read_number_of_supported_adv_sets_return_t
sdc_hci_cmd_le_remove_adv_set_t
sdc_hci_cmd_le_set_periodic_adv_params_t
sdc_hci_cmd_le_set_periodic_adv_data_t
sdc_hci_cmd_le_set_periodic_adv_enable_t
sdc_hci_cmd_le_set_ext_scan_params_t
sdc_hci_cmd_le_set_ext_scan_enable_t
sdc_hci_cmd_le_ext_create_conn_t
sdc_hci_cmd_le_periodic_adv_create_sync_t
sdc_hci_cmd_le_periodic_adv_terminate_sync_t
sdc_hci_cmd_le_add_device_to_periodic_adv_list_t
sdc_hci_cmd_le_remove_device_from_periodic_adv_list_t
sdc_hci_cmd_le_read_periodic_adv_list_size_return_t
sdc_hci_cmd_le_read_transmit_power_return_t
sdc_hci_cmd_le_read_rf_path_compensation_return_t
sdc_hci_cmd_le_write_rf_path_compensation_t
sdc_hci_cmd_le_set_privacy_mode_t
sdc_hci_cmd_le_set_connless_cte_transmit_params_t
sdc_hci_cmd_le_set_connless_cte_transmit_enable_t
sdc_hci_cmd_le_set_conn_cte_transmit_params_t
sdc_hci_cmd_le_set_conn_cte_transmit_params_return_t
sdc_hci_cmd_le_conn_cte_response_enable_t
sdc_hci_cmd_le_conn_cte_response_enable_return_t
sdc_hci_cmd_le_read_antenna_information_return_t
sdc_hci_cmd_le_set_periodic_adv_receive_enable_t
sdc_hci_cmd_le_periodic_adv_sync_transfer_t
sdc_hci_cmd_le_periodic_adv_sync_transfer_return_t
sdc_hci_cmd_le_periodic_adv_set_info_transfer_t
sdc_hci_cmd_le_periodic_adv_set_info_transfer_return_t
sdc_hci_cmd_le_set_periodic_adv_sync_transfer_params_t
sdc_hci_cmd_le_set_periodic_adv_sync_transfer_params_return_t
sdc_hci_cmd_le_set_default_periodic_adv_sync_transfer_params_t
sdc_hci_cmd_le_read_buffer_size_v2_return_t
sdc_hci_cmd_le_read_iso_tx_sync_t
sdc_hci_cmd_le_read_iso_tx_sync_return_t
sdc_hci_cmd_le_set_cig_params_t
sdc_hci_cmd_le_set_cig_params_return_t
sdc_hci_cmd_le_set_cig_params_test_t
sdc_hci_cmd_le_set_cig_params_test_return_t
sdc_hci_cmd_le_create_cis_t
sdc_hci_cmd_le_remove_cig_t
sdc_hci_cmd_le_remove_cig_return_t
sdc_hci_cmd_le_accept_cis_request_t
sdc_hci_cmd_le_reject_cis_request_t
sdc_hci_cmd_le_reject_cis_request_return_t
sdc_hci_cmd_le_create_big_t
sdc_hci_cmd_le_create_big_test_t
sdc_hci_cmd_le_terminate_big_t
sdc_hci_cmd_le_big_create_sync_t
sdc_hci_cmd_le_big_terminate_sync_t
sdc_hci_cmd_le_big_terminate_sync_return_t
sdc_hci_cmd_le_request_peer_sca_t
sdc_hci_cmd_le_setup_iso_data_path_t
sdc_hci_cmd_le_setup_iso_data_path_return_t
sdc_hci_cmd_le_remove_iso_data_path_t
sdc_hci_cmd_le_remove_iso_data_path_return_t
sdc_hci_cmd_le_iso_transmit_test_t
sdc_hci_cmd_le_iso_transmit_test_return_t
sdc_hci_cmd_le_iso_receive_test_t
sdc_hci_cmd_le_iso_receive_test_return_t
sdc_hci_cmd_le_iso_read_test_counters_t
sdc_hci_cmd_le_iso_read_test_counters_return_t
sdc_hci_cmd_le_iso_test_end_t
sdc_hci_cmd_le_iso_test_end_return_t
sdc_hci_cmd_le_set_host_feature_t
sdc_hci_cmd_le_read_iso_link_quality_t
sdc_hci_cmd_le_read_iso_link_quality_return_t
sdc_hci_cmd_le_enhanced_read_transmit_power_level_t
sdc_hci_cmd_le_enhanced_read_transmit_power_level_return_t
sdc_hci_cmd_le_read_remote_transmit_power_level_t
sdc_hci_cmd_le_set_path_loss_reporting_params_t
sdc_hci_cmd_le_set_path_loss_reporting_params_return_t
sdc_hci_cmd_le_set_path_loss_reporting_enable_t
sdc_hci_cmd_le_set_path_loss_reporting_enable_return_t
sdc_hci_cmd_le_set_transmit_power_reporting_enable_t
sdc_hci_cmd_le_set_transmit_power_reporting_enable_return_t
sdc_hci_cmd_le_set_data_related_address_changes_t
sdc_hci_cmd_le_set_default_subrate_t
sdc_hci_cmd_le_subrate_request_t
sdc_hci_cmd_le_set_periodic_adv_subevent_data_t
sdc_hci_cmd_le_set_periodic_adv_subevent_data_return_t
sdc_hci_cmd_le_set_periodic_adv_response_data_t
sdc_hci_cmd_le_set_periodic_adv_response_data_return_t
sdc_hci_cmd_le_set_periodic_sync_subevent_t
sdc_hci_cmd_le_set_periodic_sync_subevent_return_t
sdc_hci_cmd_le_ext_create_conn_v2_t
sdc_hci_cmd_le_set_periodic_adv_params_v2_t
sdc_hci_cmd_le_set_periodic_adv_params_v2_return_t
sdc_hci_cmd_lc_disconnect_t
sdc_hci_cmd_lc_read_remote_version_information_t
sdc_hci_cmd_sp_read_rssi_t
sdc_hci_cmd_sp_read_rssi_return_t
sdc_hci_cmd_vs_zephyr_read_version_info_return_t
sdc_hci_cmd_vs_zephyr_read_supported_commands_return_t
sdc_hci_cmd_vs_zephyr_write_bd_addr_t
sdc_hci_cmd_vs_zephyr_read_static_addresses_return_t
sdc_hci_cmd_vs_zephyr_read_key_hierarchy_roots_return_t
sdc_hci_cmd_vs_zephyr_read_chip_temp_return_t
sdc_hci_cmd_vs_zephyr_write_tx_power_t
sdc_hci_cmd_vs_zephyr_write_tx_power_return_t
sdc_hci_cmd_vs_zephyr_read_tx_power_t
sdc_hci_cmd_vs_zephyr_read_tx_power_return_t
sdc_hci_cmd_vs_read_supported_vs_commands_return_t
sdc_hci_cmd_vs_llpm_mode_set_t
sdc_hci_cmd_vs_conn_update_t
sdc_hci_cmd_vs_conn_event_extend_t
sdc_hci_cmd_vs_qos_conn_event_report_enable_t
sdc_hci_cmd_vs_event_length_set_t
sdc_hci_cmd_vs_periodic_adv_event_length_set_t
sdc_hci_cmd_vs_coex_scan_mode_config_t
sdc_hci_cmd_vs_coex_priority_config_t
sdc_hci_cmd_vs_peripheral_latency_mode_set_t
sdc_hci_cmd_vs_write_remote_tx_power_t
sdc_hci_cmd_vs_set_adv_randomness_t
sdc_hci_cmd_vs_compat_mode_window_offset_set_t
sdc_hci_cmd_vs_qos_channel_survey_enable_t
sdc_hci_cmd_vs_set_power_control_request_params_t
sdc_hci_cmd_vs_read_average_rssi_t
sdc_hci_cmd_vs_read_average_rssi_return_t
sdc_hci_cmd_vs_central_acl_event_spacing_set_t
sdc_hci_cmd_vs_set_conn_event_trigger_t
sdc_hci_cmd_vs_get_next_conn_event_counter_t
sdc_hci_cmd_vs_get_next_conn_event_counter_return_t
sdc_hci_cmd_vs_allow_parallel_connection_establishments_t
sdc_hci_cmd_vs_min_val_of_max_acl_tx_payload_set_t
sdc_hci_cmd_vs_iso_read_tx_timestamp_t
sdc_hci_cmd_vs_iso_read_tx_timestamp_return_t
sdc_hci_cmd_vs_big_reserved_time_set_t
sdc_hci_cmd_vs_cig_reserved_time_set_t
sdc_hci_cmd_vs_cis_subevent_length_set_t
sdc_hci_cmd_vs_scan_channel_map_set_t
sdc_hci_cmd_vs_scan_accept_ext_adv_packets_set_t
sdc_hci_cmd_vs_set_role_priority_t

HCI VS API

group HCI_VS_API

Functions

uint8_t sdc_hci_cmd_cb_set_event_mask(const sdc_hci_cmd_cb_set_event_mask_t *p_params)

Set Event Mask.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.1

The HCI_Set_Event_Mask command is used to control which events are generated by the HCI for the Host. If the bit in the Event_Mask is set to a one, then the event associated with that bit will be enabled. For an LE Controller, the “LE Meta event” bit in the event_Mask shall enable or disable all LE events in the LE Meta event (see Section 7.7.65). The event mask allows the Host to control how much it is interrupted.

The Controller shall ignore those bits which are reserved for future use or represent events which it does not support. If the Host sets any of these bits to 1, the Controller shall act as if they were set to 0.

Event(s) generated (unless masked away): When the HCI_Set_Event_Mask command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_reset(void)

Reset.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.2

The HCI_Reset command will reset the Controller and the Link Manager on the BR/EDR Controller or the Link Layer on an LE Controller. If the Controller supports both BR/EDR and LE then the HCI_Reset command shall reset the Link Manager, Baseband and Link Layer. The HCI_Reset command shall not affect the used HCI transport layer since the HCI transport layers may have reset mechanisms of their own. After the reset is completed, the current operational state will be lost, the Controller will enter standby mode and the Controller will automatically revert to the default values for the parameters for which default values are defined in the specification.

Note: The HCI_Reset command will not necessarily perform a hardware reset. This is implementation defined.

The Host shall not send additional HCI commands before the HCI_Command_Complete event related to the HCI_Reset command has been received.

Event(s) generated (unless masked away): When the reset has been performed, an HCI_Command_Complete event shall be generated.

Return values:

0 – if success.

Returns:

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_cb_read_conn_accept_timeout(sdc_hci_cmd_cb_read_conn_accept_timeout_return_t *p_return)

Read Connection Accept Timeout.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.13

This command reads the value for the Connection_Accept_Timeout configuration parameter. See Section 6.7.

Event(s) generated (unless masked away): When the HCI_Read_Connection_Timeout command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_cb_write_conn_accept_timeout(const sdc_hci_cmd_cb_write_conn_accept_timeout_t *p_params)

Write Connection Accept Timeout.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.14

This command writes the value for the Connection_Accept_Timeout configuration parameter. See Section 6.7.

Event(s) generated (unless masked away): When the HCI_Write_Connection_Accept_Timeout command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_read_transmit_power_level(const sdc_hci_cmd_cb_read_transmit_power_level_t *p_params, sdc_hci_cmd_cb_read_transmit_power_level_return_t *p_return)

Read Transmit Power Level.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.35

This command reads the values for the TX_Power_Level parameter for the specified Connection_Handle. The Connection_Handle shall be a Connection_Handle for an ACL connection.

Event(s) generated (unless masked away): When the HCI_Read_Transmit_Power_Level command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_cb_set_controller_to_host_flow_control(const sdc_hci_cmd_cb_set_controller_to_host_flow_control_t *p_params)

Set Controller To Host Flow Control.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.38

This command is used by the Host to turn flow control on or off for data and/or voice sent in the direction from the Controller to the Host. If flow control is turned off, the Host should not send the HCI_Host_Number_Of_Completed_Packets command. That command will be ignored by the Controller if it is sent by the Host and flow control is off. If flow control is turned on for HCI ACL Data packets and off for HCI Synchronous Data packets, HCI_Host_Number_Of_Completed_- Packets commands sent by the Host should only contain Connection_Handles for ACL connections. If flow control is turned off for HCI ACL Data packets and on for HCI Synchronous Data packets, HCI_Host_Number_Of_Completed_- Packets commands sent by the Host should only contain Connection_Handles for synchronous connections. If flow control is turned on for HCI ACL Data packets and HCI Synchronous Data packets, the Host will send HCI_Host_- Number_Of_Completed_Packets commands both for ACL connections and synchronous connections.

The Flow_Control_Enable parameter shall only be changed if no connections exist.

Event(s) generated (unless masked away): When the HCI_Set_Controller_To_Host_Flow_Control command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_host_buffer_size(const sdc_hci_cmd_cb_host_buffer_size_t *p_params)

Host Buffer Size.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.39

The HCI_Host_Buffer_Size command is used by the Host to notify the Controller about the maximum size of the data portion of HCI ACL and Synchronous Data packets sent from the Controller to the Host. The Controller shall segment the data to be transmitted from the Controller to the Host according to these sizes, so that the HCI Data packets will contain data with up to these sizes. The HCI_Host_Buffer_Size command also notifies the Controller about the total number of HCI ACL and Synchronous Data packets that can be stored in the data buffers of the Host. If flow control from the Controller to the Host is turned off, and the HCI_Host_Buffer_Size command has not been issued by the Host, this means that the Controller will send HCI Data packets to the Host with any lengths the Controller wants to use, and it is assumed that the data buffer sizes of the Host are unlimited. If flow control from the Controller to the Host is turned on, the HCI_Host_Buffer_Size command shall after a power-on or a reset always be sent by the Host before the first HCI_Host_Number_Of_Completed_Packets command is sent.

The Set Controller To Host Flow Control command is used to turn flow control on or off. The Host_ACL_Data_Packet_Length command parameter will be used to determine the size of the L2CAP segments contained in ACL Data packets, which are transferred from the Controller to the Host. The Host_Synchronous_Data_Packet_Length command parameter is used to determine the maximum size of HCI Synchronous Data packets. Both the Host and the Controller shall support command and event packets, where the data portion (excluding header) contained in the packets is 255 octets in size.

The Host_Total_Num_ACL_Data_Packets command parameter contains the total number of HCI ACL Data packets that can be stored in the data buffers of the Host. The Controller will determine how the buffers are to be divided between different Connection_Handles. The Host_Total_Num_Synchronous_- Data_Packets command parameter gives the same information for HCI Synchronous Data packets. If the Host does not support SCO or eSCO over HCI, then it shall set Host_Total_Num_Synchronous_Data_Packets to zero, in which case the Controller shall ignore the Host_Synchronous_Data_Packet_- Length parameter. Note: The Host_ACL_Data_Packet_Length and Host_Synchronous_Data_- Packet_Length command parameters do not include the length of the HCI ACL Data packet header or the HCI Synchronous Data packet header respectively.

Event(s) generated (unless masked away): When the HCI_Host_Buffer_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_host_number_of_completed_packets(const sdc_hci_cmd_cb_host_number_of_completed_packets_t *p_params)

Host Number Of Completed Packets.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.40

The HCI_Host_Number_Of_Completed_Packets command is used by the Host to indicate to the Controller the number of HCI Data packets that have been completed for each Connection_Handle since the previous HCI_Host_- Number_Of_Completed_Packets command was sent to the Controller. This means that the corresponding buffer space has been freed in the Host and is available for new packets to be sent. Based on this information, and the Host_Total_Num_ACL_Data_Packets and Host_Total_Num_Synchronous_- Data_Packets command parameters of the HCI_Host_Buffer_Size command, the Controller can determine for which Connection_Handles the following HCI Data packets should be sent to the Host. When the Host has completed one or more HCI Data packet(s) it shall send an HCI_Host_Number_Of_Completed_- Packets command to the Controller, until it finally reports that all pending HCI Data packets have been completed. The frequency at which this command is sent is manufacturer specific.

The Set Controller To Host Flow Control command is used to turn flow control on or off. If flow control from the Controller to the Host is turned on, the HCI_Host_- Buffer_Size command shall always be sent by the Host after a power-on or a reset before the first HCI_Host_Number_Of_Completed_Packets command is sent.

The HCI_Host_Number_Of_Completed_Packets command may be sent at any time by the Host when there is at least one connection, or if the Controller is in local loopback mode, independent of other commands. If the Host issues this command when neither of these cases applies, the Controller shall ignore it.

Event(s) generated (unless masked away): Normally, no event is generated after the HCI_Host_Number_Of_Completed_- Packets command has completed. However, if the HCI_Host_Number_Of_- Completed_Packets command contains one or more invalid parameters, the Controller shall return an HCI_Command_Complete event containing the error code Invalid HCI Command Parameters (0x12). The normal flow control for commands is not used for this command.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_set_event_mask_page_2(const sdc_hci_cmd_cb_set_event_mask_page_2_t *p_params)

Set Event Mask Page 2.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.69

The HCI_Set_Event_Mask_Page_2 command is used to control which events are generated by the HCI for the Host. The Event_Mask_Page_2 is a logical extension to the Event_Mask parameter of the HCI_Set_Event_Mask command. If the bit in the Event_Mask_Page_2 is set to a one, then the event associated with that bit shall be enabled. The event mask allows the Host to control how much it is interrupted.

The Controller shall ignore those bits which are reserved for future use or represent events which it does not support. If the Host sets any of these bits to 1, the Controller shall act as if they were set to 0.

Event(s) generated (unless masked away): When the HCI_Set_Event_Mask_Page_2 command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cb_read_authenticated_payload_timeout(const sdc_hci_cmd_cb_read_authenticated_payload_timeout_t *p_params, sdc_hci_cmd_cb_read_authenticated_payload_timeout_return_t *p_return)

Read Authenticated Payload Timeout.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.93

This command reads the Authenticated_Payload_Timeout (authenticatedPayloadTO, see [Vol 2] Part B, Appendix B for BR/EDR connections and [Vol 6] Part B, Section 5.4 for LE connections) parameter in the Controller on the specified Connection_Handle.

When the Connection_Handle identifies a BR/EDR synchronous connection, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_Read_Authenticated_Payload_Timeout command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_cb_write_authenticated_payload_timeout(const sdc_hci_cmd_cb_write_authenticated_payload_timeout_t *p_params, sdc_hci_cmd_cb_write_authenticated_payload_timeout_return_t *p_return)

Write Authenticated Payload Timeout.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.3.94

This command writes the Authenticated_Payload_Timeout (authenticatedPayloadTO, see [Vol 2] Part B, Appendix B and [Vol 6] Part B, Section 5.4 for the LE connection) parameter in the Controller for the specified Connection_Handle.

When the Connection_Handle identifies a BR/EDR ACL connection: • If the connection is in Sniff mode, the Authenticated_Payload_Timeout shall be equal to or greater than Tsniff. • If the connection is in Sniff Subrating mode, the Authenticated_Payload_Timeout shall be equal to or greater than (max subrate)xTsniff. • If the connection is in Hold mode, the Authenticated_Payload_Timeout shall be equal to or greater than the holdTO value.

When the Connection_Handle identifies a BR/EDR synchronous connection, this command shall be rejected with the error code Command Disallowed (0x0C).

When the Connection_Handle identifies an LE connection, the Authenticated_Payload_Timeout shall be equal to or greater than connInterval × connSubrateFactor × (1 + connPeripheralLatency).

When the Connection_Handle is associated with an ACL connection, the Link Manager will use this parameter to determine when to use the LMP ping sequence.

When the Connection_Handle is associated with an LE connection, the Link Layer will use this parameter to determine when to use the LE ping sequence.

Event(s) generated (unless masked away): When the HCI_Write_Authenticated_Payload_Timeout command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_ip_read_local_version_information(sdc_hci_cmd_ip_read_local_version_information_return_t *p_return)

Read Local Version Information.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.4.1

This command reads the values for the version information for the local Controller.

The HCI_Version information defines the version information of the HCI layer. The LMP_Version information defines the version of the LMP. The Company_Identifier information indicates the manufacturer of the local device.

The HCI_Subversion and LMP_Subversion are vendor-specific.

Event(s) generated (unless masked away): When the HCI_Read_Local_Version_Information command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_ip_read_local_supported_commands(sdc_hci_cmd_ip_read_local_supported_commands_return_t *p_return)

Read Local Supported Commands.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.4.2

This command reads the list of HCI commands supported for the local Controller.

This command shall return the Supported_Commands configuration parameter.

See Section 6.27 for more information.

Event(s) generated (unless masked away): When the HCI_Read_Local_Supported_Commands command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_ip_read_local_supported_features(sdc_hci_cmd_ip_read_local_supported_features_return_t *p_return)

Read Local Supported Features.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.4.3

This command requests a list of the supported features for the local BR/EDR Controller. This command will return a list of the LMP features. For details see [Vol 2] Part C, Link Manager Protocol Specification.

Event(s) generated (unless masked away): When the HCI_Read_Local_Supported_Features command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_ip_read_bd_addr(sdc_hci_cmd_ip_read_bd_addr_return_t *p_return)

Read BD_ADDR.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.4.6

On a BR/EDR Controller, this command reads the Bluetooth Controller address (BD_ADDR). (See [Vol 2] Part B, Section 1.2 and [Vol 3] Part C, Section 3.2.1).

On an LE Controller, this command shall read the Public Device Address as defined in [Vol 6] Part B, Section 1.3. If this Controller does not have a Public Device Address, the value 0x000000000000 shall be returned.

On a BR/EDR/LE Controller, the public address shall be the same as the BD_ADDR.

Event(s) generated (unless masked away): When the HCI_Read_BD_ADDR command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_event_mask(const sdc_hci_cmd_le_set_event_mask_t *p_params)

LE Set Event Mask.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.1

The HCI_LE_Set_Event_Mask command is used to control which LE events are generated by the HCI for the Host. If the bit in the LE_Event_Mask is set to a one, then the event associated with that bit will be enabled. The event mask allows the Host to control which events will interrupt it.

The Controller shall ignore those bits which are reserved for future use or represent events which it does not support. If the Host sets any of these bits to 1, the Controller shall act as if they were set to 0.

For LE events to be generated, the LE Meta event bit in the Event_Mask shall also be set. If that bit is not set, then LE events shall not be generated, regardless of how the LE_Event_Mask is set.

Event(s) generated (unless masked away): When the HCI_LE_Set_Event_Mask command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_buffer_size(sdc_hci_cmd_le_read_buffer_size_return_t *p_return)

LE Read Buffer Size [v1].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.2

This command is used to read the maximum size of the data portion of ACL data packets and isochronous data packets sent from the Host to the Control- ler. The Host shall segment the data transmitted to the Controller according to these values so that the HCI ACL Data packets and HCI ISO Data packets will contain data up to this size (“data” includes optional fields in the HCI ISO Data packet, such as ISO_SDU_Length). The HCI_LE_Read_Buffer_Size command also returns the total number of HCI LE ACL Data packets and iso- chronous data packets that can be stored in the data buffers of the Controller. The HCI_LE_Read_Buffer_Size command shall be issued by the Host before it sends any data to an LE Controller (see Section 4.1.1). If the Controller sup- ports HCI ISO Data packets, it shall return non-zero values for the ISO_Data_- Packet_Length and Total_Num_ISO_Data_Packets parameters.

If the Controller returns a length value of zero for ACL data packets, the Host shall use the HCI_Read_Buffer_Size command to determine the size of the data buffers (shared between BR/EDR and LE transports).

Note: Both the HCI_Read_Buffer_Size command and the HCI_LE_Read_- Buffer_Size command may return buffer length and number of packets param- eter values that are nonzero. This allows a Controller to offer different buffers and number of buffers for BR/EDR data packets and LE data packets.

The LE_ACL_Data_Packet_Length return parameter shall be used to deter- mine the maximum size of the L2CAP PDU segments that are contained in ACL data packets, and which are transferred from the Host to the Controller to be broken up into packets by the Link Layer. The Total_Num_LE_ACL_Data_- Packets return parameter contains the total number of HCI ACL Data packets that can be stored in the data buffers of the Controller. The Host determines how to divide the buffers between different connection handles.

The ISO_Data_Packet_Length return parameter shall be used to determine the maximum size of the SDU segments that are contained in isochronous data packets, and which are transferred from the Host to the Controller. The Total_Num_ISO_Data_Packets return parameter contains the total number of isochronous data packets that can be stored in the data buffers of the Controller. The Host determines how to divide the buffers between different connection handle(s).

Note: The LE_ACL_Data_Packet_Length and ISO_Data_Packet_Length return parameters do not include the length of the HCI ACL Data packet header or the HCI ISO Data packet header respectively.

Event(s) generated (unless masked away): When the HCI_LE_Read_Buffer_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_local_supported_features(sdc_hci_cmd_le_read_local_supported_features_return_t *p_return)

LE Read Local Supported Features.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.3

This command requests the list of the supported LE features for the Controller.

Event(s) generated (unless masked away): When the HCI_LE_Read_Local_Supported_Features command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_random_address(const sdc_hci_cmd_le_set_random_address_t *p_params)

LE Set Random Address.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.4

The HCI_LE_Set_Random_Address command is used by the Host to set the LE Random Device Address in the Controller (see [Vol 6] Part B, Section 1.3).

If this command is used to change the address, the new random address shall take effect for advertising no later than the next successful HCI_LE_Set_- Advertising_Enable command, for scanning no later than the next successful HCI_LE_Set_Scan_Enable command or HCI_LE_Set_Extended_Scan_- Enable command, and for initiating no later than the next successful HCI_LE_- Create_Connection command or HCI_LE_Extended_Create_Connection command.

Note: If the extended advertising commands are in use, this command only affects the address used for scanning and initiating. The addresses used for advertising are set by the HCI_LE_Set_Advertising_Set_Random_Address command (see Section 7.8.52).

If the Host issues this command when any of advertising (created using legacy advertising commands), scanning, or initiating are enabled, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Set_Random_Address command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_adv_params(const sdc_hci_cmd_le_set_adv_params_t *p_params)

LE Set Advertising Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.5

The HCI_LE_Set_Advertising_Parameters command is used by the Host to set the advertising parameters.

The Advertising_Interval_Min shall be less than or equal to the Advertising_Interval_Max. The Advertising_Interval_Min and Advertising_Interval_Max should not be the same value to enable the Controller to determine the best advertising interval given other activities.

For high duty cycle directed advertising, i.e. when Advertising_Type is 0x01 (ADV_DIRECT_IND, high duty cycle), the Advertising_Interval_Min and Advertising_Interval_Max parameters are not used and shall be ignored.

The Advertising_Type is used to determine the packet type that is used for advertising when advertising is enabled.

Own_Address_Type parameter indicates the type of address being used in the advertising packets.

If Own_Address_Type equals 0x02 or 0x03, the Peer_Address parameter contains the peer’s Identity Address and the Peer_Address_Type parameter contains the Peer’s Identity Type (i.e. 0x00 or 0x01). These parameters are used to locate the corresponding local IRK in the resolving list; this IRK is used to generate the own address used in the advertisement.

If directed advertising is performed, i.e. when Advertising_Type is set to 0x01 (ADV_DIRECT_IND, high duty cycle) or 0x04 (ADV_DIRECT_IND, low duty cycle mode), then the Peer_Address_Type and Peer_Address shall be valid.

If Own_Address_Type equals 0x02 or 0x03, the Controller generates the peer’s Resolvable Private Address using the peer’s IRK corresponding to the peer’s Identity Address contained in the Peer_Address parameter and peer’s Identity Address Type (i.e. 0x00 or 0x01) contained in the Peer_Address_Type parameter. The Advertising_Channel_Map is a bit field that indicates the advertising channel indices that shall be used when transmitting advertising packets. At least one channel bit shall be set in the Advertising_Channel_Map parameter.

The Advertising_Filter_Policy parameter shall be ignored when directed advertising is enabled.

The Host shall not issue this command when advertising is enabled in the Controller; if it is the Command Disallowed error code shall be used.

If the advertising interval range provided by the Host (Advertising_Interval_Min, Advertising_Interval_Max) does not overlap with the advertising interval range supported by the Controller, then the Controller shall return the Unsupported Feature or Parameter Value (0x11) error code.

Event(s) generated (unless masked away): When the HCI_LE_Set_Advertising_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_adv_physical_channel_tx_power(sdc_hci_cmd_le_read_adv_physical_channel_tx_power_return_t *p_return)

LE Read Advertising Physical Channel Tx Power.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.6

The HCI_LE_Read_Advertising_Physical_Channel_Tx_Power command is used by the Host to read the transmit power level used for LE advertising physical channel packets.

Event(s) generated (unless masked away): When the HCI_LE_Read_Advertising_Physical_Channel_Tx_Power command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_adv_data(const sdc_hci_cmd_le_set_adv_data_t *p_params)

LE Set Advertising Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.7

The HCI_LE_Set_Advertising_Data command is used to set the data used in advertising packets that have a data field. Only the significant part of the Advertising_Data should be transmitted in the advertising packets, as defined in [Vol 3] Part C, Section 11. If advertising is currently enabled, the Controller shall use the new data in subsequent advertising events. If an advertising event is in progress when this command is issued, the Controller may use the old or new data for that event. If advertising is currently disabled, the data shall be kept by the Controller and used once advertising is enabled. The default Advertising_Data_Length shall be zero and the default Advertising_Data shall be 31 zero octets.

Event(s) generated (unless masked away): When the HCI_LE_Set_Advertising_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_scan_response_data(const sdc_hci_cmd_le_set_scan_response_data_t *p_params)

LE Set Scan Response Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.8

This command is used to provide data used in Scanning Packets that have a data field.

Only the significant part of the Scan_Response_Data should be transmitted in the Scanning Packets, as defined in [Vol 3] Part C, Section 11.

If advertising is currently enabled, the Controller shall use the new data in subsequent advertising events. If an advertising event is in progress when this command is issued, the Controller may use the old or new data for that event. If advertising is currently disabled, the data shall be kept by the Controller and used once advertising is enabled.

The default Scan_Response_Data_Length shall be zero and the default Scan_Response_Data shall be 31 zero octets.

Event(s) generated (unless masked away): When the HCI_LE_Set_Scan_Response_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_adv_enable(const sdc_hci_cmd_le_set_adv_enable_t *p_params)

LE Set Advertising Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.9

The HCI_LE_Set_Advertising_Enable command is used to request the Controller to start or stop advertising. The Controller manages the timing of advertisements as per the advertising parameters given in the HCI_LE_Set_Advertising_Parameters command.

The Controller shall continue advertising until the Host issues an HCI_LE_- Set_Advertising_Enable command with Advertising_Enable set to 0x00 (Advertising is disabled). a connection is created using the advertising, or the Advertising is timed out due to high duty cycle Directed Advertising. In these cases, advertising is then disabled.

If Advertising_Enable is set to 0x01, the advertising parameters’ Own_- Address_Type parameter is set to 0x00, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If Advertising_Enable is set to 0x01, the advertising parameters’ Own_- Address_Type parameter is set to 0x01, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If Advertising_Enable is set to 0x01, the advertising parameters’ Own_- Address_Type parameter is set to 0x02, the Controller’s resolving list did not contain a matching entry, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If Advertising_Enable is set to 0x01, the advertising parameters’ Own_- Address_Type parameter is set to 0x03, the Controller’s resolving list did not contain a matching entry, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters.(0x12).

Enabling advertising when it is already enabled can cause the random address to change. Disabling advertising when it is already disabled has no effect.

Event(s) generated (unless masked away): When the HCI_LE_Set_Advertising_Enable command has completed, an HCI_Command_Complete event shall be generated.

If the Advertising_Type parameter is 0x01 (ADV_DIRECT_IND, high duty cycle) and the directed advertising fails to create a connection, an HCI_LE_Connection_Complete or HCI_LE_Enhanced_Connection_Complete event shall be generated with the Status code set to Advertising Timeout (0x3C).

If the Advertising_Type parameter is 0x00 (ADV_IND), 0x01 (ADV_DIRECT_- IND, high duty cycle), or 0x04 (ADV_DIRECT_IND, low duty cycle) and a connection is created, an HCI_LE_Connection_Complete or HCI_LE_- Enhanced_Connection_Complete event shall be generated.

Note: There is a possible race condition if the Advertising_Enable parameter is set to 0x00 (Disable) and the Advertising_Type parameter is 0x00, 0x01, or 0x04. The advertisements might not be stopped before a connection is created, and therefore both the HCI_Command_Complete event and either an HCI_LE_Connection_Complete event or an HCI_LE_Enhanced_Connection_- Complete event could be generated. This can also occur when high duty cycle directed advertising is timed out and this command disables advertising.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_scan_params(const sdc_hci_cmd_le_set_scan_params_t *p_params)

LE Set Scan Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.10

The HCI_LE_Set_Scan_Parameters command is used to set the scan parameters.

The LE_Scan_Type parameter controls the type of scan to perform.

The LE_Scan_Interval and LE_Scan_Window parameters are recommenda- tions from the Host on how long (LE_Scan_Window) and how frequently (LE_Scan_Interval) the Controller should scan (See [Vol 6] Part B, Section 4.4.3). The LE_Scan_Window parameter shall always be set to a value smaller or equal to the value set for the LE_Scan_Interval parameter. If they are set to the same value scanning should be run continuously.

Own_Address_Type parameter indicates the type of address being used in the scan request packets.

The Host shall not issue this command when scanning is enabled in the Controller; if it is the Command Disallowed error code shall be used.

Event(s) generated (unless masked away): When the HCI_LE_Set_Scan_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_scan_enable(const sdc_hci_cmd_le_set_scan_enable_t *p_params)

LE Set Scan Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.11

The HCI_LE_Set_Scan_Enable command is used to start and stop scanning for legacy PDUs (but not extended PDUs, even if the device supports extended advertising). Scanning is used to discover advertising devices nearby.

The Filter_Duplicates parameter controls whether the Link Layer should filter out duplicate advertising reports (Filtering_Enabled) to the Host, or if the Link Layer should generate advertising reports for each packet received (Filtering_Disabled). See [Vol 6] Part B, Section 4.4.3.5. If LE_Scan_Enable is set to 0x00 then Filter_Duplicates shall be ignored.

If LE_Scan_Enable is set to 0x01, the scanning parameters’ Own_Address_- Type parameter is set to 0x00 or 0x02, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If LE_Scan_Enable is set to 0x01, the scanning parameters’ Own_Address_- Type parameter is set to 0x01 or 0x03, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the LE_Scan_Enable parameter is set to 0x01 and scanning is already enabled, any change to the Filter_Duplicates setting shall take effect.

Disabling scanning when it is disabled has no effect.

Event(s) generated (unless masked away): When the HCI_LE_Set_Scan_Enable command has completed, an HCI_Command_Complete event shall be generated.

Zero or more HCI_LE_Advertising_Report events are generated by the Controller based on legacy advertising packets received and the duplicate filtering. More than one advertising packet may be reported in each HCI_LE_Advertising_Report event. No report shall be issued for extended advertising PDUs.

When the Scanning_Filter_Policy is set to 0x02 or 0x03 (see Section 7.8.10) and a directed advertisement was received where the advertiser used a resolvable private address which the Controller is unable to resolve, an HCI_LE_Directed_Advertising_Report event shall be generated instead of an HCI_LE_Advertising_Report event.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_create_conn(const sdc_hci_cmd_le_create_conn_t *p_params)

LE Create Connection.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.12

The HCI_LE_Create_Connection command is used to create an ACL connection, with the local device in the Central role, to a connectable advertiser. If a connection is created with the local device in the Peripheral role while this command is pending, then this command remains pending.

The LE_Scan_Interval and LE_Scan_Window parameters are recommenda- tions from the Host on how long (LE_Scan_Window) and how frequently (LE_Scan_Interval) the Controller should scan. The LE_Scan_Window param- eter shall be set to a value smaller or equal to the value set for the LE_Scan_- Interval parameter. If both are set to the same value, scanning should run continuously. The Initiator_Filter_Policy is used to determine whether the Filter Accept List is used. If the Filter Accept List is not used, the Peer_Address_Type and the Peer_Address parameters specify the address type and address of the advertising device to connect to. Peer_Address_Type parameter indicates the type of address used in the connectable advertisement sent by the peer. The Host shall not set Peer_Address_Type to either 0x02 or 0x03 if both the Host and the Controller support the HCI_LE_Set_Privacy_Mode command. If a Controller that supports the HCI_LE_Set_Privacy_Mode command receives the HCI_LE_Create_Connection command with Peer_Address_Type set to either 0x02 or 0x03, it may use either device privacy mode or network privacy mode for that peer device. Peer_Address parameter indicates the Peer’s Public Device Address, Random (static) Device Address, Non-Resolvable Private Address or Resolvable Private Address depending on the Peer_Address_Type parameter. Own_Address_Type parameter indicates the type of address being used in the connection request packets. The Connection_Interval_Min and Connection_Interval_Max parameters define the minimum and maximum allowed connection interval. The Connection_Interval_Min parameter shall not be greater than the Connection_Interval_Max parameter. The Max_Latency parameter defines the maximum allowed Peripheral latency (see [Vol 6] Part B, Section 4.5.1). The Supervision_Timeout parameter defines the link supervision timeout for the connection. The Supervision_Timeout in milliseconds shall be larger than (1 + Max_Latency) × Connection_Interval_Max × 2, where Connection_Interval_Max is given in milliseconds. (See [Vol 6] Part B, Section 4.5.2). The Min_CE_Length and Max_CE_Length parameters provide the Controller with the expected minimum and maximum length of the connection events. The Min_CE_Length parameter shall be less than or equal to the Max_CE_Length parameter. The Controller is not required to use these values. If the Host issues this command when another HCI_LE_Create_Connection command is pending in the Controller, the Controller shall return the error code Command Disallowed (0x0C).

If the Own_Address_Type parameter is set to 0x00 and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x01 and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x01, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x01, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Create_Connection command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_- Connection_Complete or HCI_LE_Enhanced_Connection_Complete event shall be generated when a connection is created because of this command or the connection creation procedure is cancelled; until one of these events is generated, the command is considered pending. If a connection is created and the Controller supports the LE Channel Selection Algorithm #2 feature, this event shall be immediately followed by an HCI_LE_Channel_Selection_- Algorithm event.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_create_conn_cancel(void)

LE Create Connection Cancel.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.13

The HCI_LE_Create_Connection_Cancel command is used to cancel the HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection commands.

If no HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection command is pending, then the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Create_Connection_Cancel command has completed, an HCI_Command_Complete event shall be generated.

If the cancellation was successful then, after the HCI_Command_Complete event for the HCI_LE_Create_Connection_Cancel command, either an HCI_LE_Connection_Complete or an HCI_LE_Enhanced_Connection_- Complete event shall be generated. In either case, the event shall be sent with the error code Unknown Connection Identifier (0x02).

Return values:

0 – if success.

Returns:

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_le_read_filter_accept_list_size(sdc_hci_cmd_le_read_filter_accept_list_size_return_t *p_return)

LE Read Filter Accept List Size.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.14

The HCI_LE_Read_Filter_Accept_List_Size command is used to read the total number of Filter Accept List entries that can be stored in the Controller.

Note: The number of entries that can be stored is not fixed and the Controller can change it at any time (e.g. because the memory used to store the Filter Accept List can also be used for other purposes).

Event(s) generated (unless masked away): When the HCI_LE_Read_Filter_Accept_List_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_clear_filter_accept_list(void)

LE Clear Filter Accept List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.15

The HCI_LE_Clear_Filter_Accept_List command is used to clear the Filter Accept List stored in the Controller.

This command shall not be used when: • any advertising filter policy uses the Filter Accept List and advertising is enabled, • the scanning filter policy uses the Filter Accept List and scanning is enabled, or • the initiator filter policy uses the Filter Accept List and an HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection command is pending.

Event(s) generated (unless masked away): When the HCI_LE_Clear_Filter_Accept_List command has completed, an HCI_Command_Complete event shall be generated.

Return values:

0 – if success.

Returns:

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_le_add_device_to_filter_accept_list(const sdc_hci_cmd_le_add_device_to_filter_accept_list_t *p_params)

LE Add Device To Filter Accept List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.16

The HCI_LE_Add_Device_To_Filter_Accept_List command is used to add a single device to the Filter Accept List stored in the Controller.

This command shall not be used when: • any advertising filter policy uses the Filter Accept List and advertising is enabled, • the scanning filter policy uses the Filter Accept List and scanning is enabled, or • the initiator filter policy uses the Filter Accept List and an HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection command is pending.

When a Controller cannot add a device to the Filter Accept List because there is no space available, it shall return the error code Memory Capacity Exceeded (0x07).

If the device is already in the Filter Accept List, the Controller should not add the device to the Filter Accept List again and should return success.

Address shall be ignored when Address_Type is set to 0xFF.

Event(s) generated (unless masked away): When the HCI_LE_Add_Device_To_Filter_Accept_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_remove_device_from_filter_accept_list(const sdc_hci_cmd_le_remove_device_from_filter_accept_list_t *p_params)

LE Remove Device From Filter Accept List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.17

The HCI_LE_Remove_Device_From_Filter_Accept_List command is used to remove a single device from the Filter Accept List stored in the Controller. This command shall not be used when: • any advertising filter policy uses the Filter Accept List and advertising is enabled, • the scanning filter policy uses the Filter Accept List and scanning is enabled, or • the initiator filter policy uses the Filter Accept List and an HCI_LE_- Create_Connection or HCI_LE_Extended_Create_Connection command is pending.

Address shall be ignored when Address_Type is set to 0xFF.

Event(s) generated (unless masked away): When the HCI_LE_Remove_Device_From_Filter_Accept_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_conn_update(const sdc_hci_cmd_le_conn_update_t *p_params)

LE Connection Update.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.18

The HCI_LE_Connection_Update command is used to change the ACL connection parameters. This command may be issued on both the Central and Peripheral.

The Connection_Interval_Min and Connection_Interval_Max parameters are used to define the minimum and maximum allowed connection interval. The Connection_Interval_Min parameter shall not be greater than the Connection_Interval_Max parameter.

The Max_Latency parameter shall define the maximum allowed Peripheral latency.

The Supervision_Timeout parameter shall define the link supervision timeout for the LE link. The Supervision_Timeout in milliseconds shall be larger than (1 + Max_Latency) × Subrate_Factor × Connection_Interval_Max × 2, where Connection_Interval_Max is given in milliseconds and Subrate_Factor is the current subrate factor of the connection.

The Min_CE_Length and Max_CE_Length are information parameters providing the Controller with a hint about the expected minimum and maximum length of the connection events. The Min_CE_Length shall be less than or equal to the Max_CE_Length.

The actual parameter values selected by the Link Layer may be different from the parameter values provided by the Host through this command.

If this command completes successfully and the connection interval has changed, then the subrating factor shall be set to 1 and the continuation number to 0. In this case, Max_Latency must be interpreted in underlying connection events. Otherwise the subrating factor and continuation number shall be unchanged and Max_Latency must be interpreted in subrated events.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Connection_Update command, the Controller sends the HCI_Command_Status event to the Host. The HCI_LE_- Connection_Update_Complete event shall be generated after the connection parameters have been applied by the Controller or if the command subsequently fails.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_host_channel_classification(const sdc_hci_cmd_le_set_host_channel_classification_t *p_params)

LE Set Host Channel Classification.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.19

The HCI_LE_Set_Host_Channel_Classification command allows the Host to specify a channel classification for the data, secondary advertising, periodic, and isochronous physical channels based on its “local information”. This classification persists until overwritten with a subsequent HCI_LE_Set_Host_Channel_Classification command or until the Controller is reset using the HCI_Reset command (see [Vol 6] Part B, Section 4.5.8.1).

If this command is used, the Host should send it within 10 seconds of knowing that the channel classification has changed. The interval between two successive commands sent shall be at least one second.

Event(s) generated (unless masked away): When the HCI_LE_Set_Host_Channel_Classification command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_channel_map(const sdc_hci_cmd_le_read_channel_map_t *p_params, sdc_hci_cmd_le_read_channel_map_return_t *p_return)

LE Read Channel Map.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.20

The HCI_LE_Read_Channel_Map command returns the current Channel_Map for the specified Connection_Handle. The returned value indicates the state of the Channel_Map specified by the last transmitted or received Channel_Map (in a CONNECT_IND or LL_CHANNEL_MAP_IND message) for the specified Connection_Handle, regardless of whether the Central has received an acknowledgment. If the connection handle does not identify an ACL connection, the Controller shall reject the command and should return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Read_Channel_Map command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_remote_features(const sdc_hci_cmd_le_read_remote_features_t *p_params)

LE Read Remote Features.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.21

This command requests, from the remote device identified by the Connection_Handle, the features used on the connection and the features supported by the remote device. For details see [Vol 6] Part B, Section 4.6.

This command may be issued on both the Central and Peripheral.

Note: If a connection already exists between the two devices and the features have already been fetched on that connection, the Controller may use a cached copy of the features.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Read_Remote_Features command, the Controller shall send the HCI_Command_Status event to the Host. When the Controller has completed the procedure to determine the remote features or has determined that it will be using a cached copy, the Controller shall send an HCI_LE_Read_Remote_Features_Complete event to the Host.

The HCI_LE_Read_Remote_Features_Complete event contains the status of this command and the parameter describing the features used on the connection and the features supported by the remote device.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_encrypt(const sdc_hci_cmd_le_encrypt_t *p_params, sdc_hci_cmd_le_encrypt_return_t *p_return)

LE Encrypt.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.22

The HCI_LE_Encrypt command is used to request the Controller to encrypt the Plaintext_Data in the command using the Key given in the command and returns the Encrypted_Data to the Host. The AES-128 bit block cypher is defined in NIST Publication FIPS-197 (http://csrc.nist.gov/publications/fips/ fips197/fips-197.pdf).

Event(s) generated (unless masked away): When the HCI_LE_Encrypt command has completed, an HCI_Command_- Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_rand(sdc_hci_cmd_le_rand_return_t *p_return)

LE Rand.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.23

The HCI_LE_Rand command is used to request the Controller to generate 8 octets of random data to be sent to the Host. The Random_Number shall be generated according to [Vol 2] Part H, Section 2 if the LE Feature (LE Encryption) is supported.

Event(s) generated (unless masked away): When the HCI_LE_Rand command has completed, an HCI_Command_- Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_enable_encryption(const sdc_hci_cmd_le_enable_encryption_t *p_params)

LE Enable Encryption.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.24

The HCI_LE_Enable_Encryption command is used to authenticate the given encryption key associated with the remote device specified by the Connection_Handle, and once authenticated will encrypt the connection. The parameters are as defined in [Vol 3] Part H, Section 2.4.4.

If the connection is already encrypted then the Controller shall pause connection encryption before attempting to authenticate the given encryption key, and then re-encrypt the connection. While encryption is paused no user data shall be transmitted.

If the Connection_Handle parameter identifies an ACL with an associated CIS that has been created, the Controller shall return the error code Command Disallowed (0x0C).

On an authentication failure, the connection shall be automatically disconnected by the Link Layer. If this command succeeds, then the connection shall be encrypted. This command shall only be used when the local device’s role is Central.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Enable_Encryption command it shall send the HCI_Command_Status event to the Host. If the connection is not encrypted when this command is issued, an HCI_Encryption_Change event shall occur when encryption has been started for the connection. If the connec- tion is encrypted when this command is issued, an HCI_Encryption_Key_- Refresh_Complete event shall occur when encryption has been resumed.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_long_term_key_request_reply(const sdc_hci_cmd_le_long_term_key_request_reply_t *p_params, sdc_hci_cmd_le_long_term_key_request_reply_return_t *p_return)

LE Long Term Key Request Reply.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.25

The HCI_LE_Long_Term_Key_Request_Reply command is used to reply to an HCI_LE_Long_Term_Key_Request event from the Controller, and specifies the Long_Term_Key parameter that shall be used for this Connection_Handle. The Long_Term_Key is used as defined in [Vol 6] Part B, Section 5.1.3. This command shall only be used when the local device’s role is Peripheral.

Event(s) generated (unless masked away): When the HCI_LE_Long_Term_Key_Request_Reply command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_long_term_key_request_negative_reply(const sdc_hci_cmd_le_long_term_key_request_negative_reply_t *p_params, sdc_hci_cmd_le_long_term_key_request_negative_reply_return_t *p_return)

LE Long Term Key Request Negative Reply.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.26

The HCI_LE_Long_Term_Key_Request_Negative_Reply command is used to reply to an HCI_LE_Long_Term_Key_Request event from the Controller if the Host cannot provide a Long Term Key for this Connection_Handle.

This command shall only be used when the local device’s role is Peripheral.

Event(s) generated (unless masked away): When the HCI_LE_Long_Term_Key_Request_Negative_Reply command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_supported_states(sdc_hci_cmd_le_read_supported_states_return_t *p_return)

LE Read Supported States.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.27

The HCI_LE_Read_Supported_States command reads the states and state combinations that the Link Layer supports. See [Vol 6] Part B, Section 1.1.1.

LE_States is an 8-octet bit field. If a bit is set to 1 then this state or state combination is supported by the Controller. Multiple bits in LE_States may be set to 1 to indicate support for multiple state and state combinations.

Note: This command only provides information about the supported states that can be used with legacy advertising. It does not provide information about states, and combinations of states, that can only be used with the extended advertising commands (see Section 3.1.1).

Event(s) generated (unless masked away): When the HCI_LE_Read_Supported_States command has completed, an HCI_Command_Complete event will be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_test_end(sdc_hci_cmd_le_test_end_return_t *p_return)

LE Test End.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.30

This command is used to stop any test which is in progress. The Num_Packets for a transmitter test shall be reported as 0x0000. The Num_Packets is an unsigned number and contains the number of received packets.

Event(s) generated (unless masked away): When the HCI_LE_Test_End command has completed, an HCI_Command_- Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_data_length(const sdc_hci_cmd_le_set_data_length_t *p_params, sdc_hci_cmd_le_set_data_length_return_t *p_return)

LE Set Data Length.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.33

The HCI_LE_Set_Data_Length command allows the Host to suggest the maximum transmission payload size and maximum packet transmission time (connMaxTxOctets and connMaxTxTime - see [Vol 6] Part B, Section 4.5.10) to be used for LL Data PDUs on a given connection. The Controller may use smaller or larger values based on local information.

Event(s) generated (unless masked away): When the HCI_LE_Set_Data_Length command has completed, an HCI_Command_Complete event shall be generated.

If the command causes the maximum transmission packet size or maximum packet transmission time to change, an HCI_LE_Data_Length_Change event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_suggested_default_data_length(sdc_hci_cmd_le_read_suggested_default_data_length_return_t *p_return)

LE Read Suggested Default Data Length.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.34

The HCI_LE_Read_Suggested_Default_Data_Length command allows the Host to read the Host’s suggested values (Suggested_Max_TX_Octets and Suggested_Max_TX_Time) for the Controller’s maximum transmitted number of payload octets and maximum packet transmission time for packets containing LL Data PDUs to be used for new connections (see [Vol 6] Part B, Section 4.5.10).

Event(s) generated (unless masked away): When the HCI_LE_Read_Suggested_Default_Data_Length command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_write_suggested_default_data_length(const sdc_hci_cmd_le_write_suggested_default_data_length_t *p_params)

LE Write Suggested Default Data Length.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.35

The HCI_LE_Write_Suggested_Default_Data_Length command allows the Host to specify its suggested values for the Controller’s maximum transmission number of payload octets and maximum packet transmission time for packets containing LL Data PDUs to be used for new connections. The Controller may use smaller or larger values for connInitialMaxTxOctets and connInitialMaxTxTime based on local information. (See [Vol 6] Part B, Section 4.5.10).

Event(s) generated (unless masked away): When the HCI_LE_Write_Suggested_Default_Data_Length command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_add_device_to_resolving_list(const sdc_hci_cmd_le_add_device_to_resolving_list_t *p_params)

LE Add Device To Resolving List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.38

The HCI_LE_Add_Device_To_Resolving_List command is used to add one device to the resolving list used to generate and resolve Resolvable Private Addresses in the Controller.

This command shall not be used when address resolution is enabled in the Controller and: • Advertising (other than periodic advertising) is enabled, • Scanning is enabled, or • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or HCI_LE_Periodic_Advertising_Create_Sync command is pending.

This command may be used at any time when address resolution is disabled in the Controller.

The added device shall be set to Network Privacy mode.

If Peer_Identity_Address_Type is 0x01 and Peer_Identity_Address is not a static address, then the Controller should return the error code Invalid HCI Command Parameters (0x12).

When a Controller cannot add a device to the list because there is no space available, it shall return the error code Memory Capacity Exceeded (0x07).

If an entry already exists in the resolving list with the same four parameter values, the Controller shall either reject the command or not add the device to the resolving list again and return success. If the command is rejected then the error code Invalid HCI Command Parameters (0x12) should be used.

If there is an existing entry in the resolving list with the same Peer_Identity_- Address and Peer_Identity_Address_Type, or with the same non-zero Peer_IRK, the Controller should return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the HCI_LE_Add_Device_To_Resolving_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_remove_device_from_resolving_list(const sdc_hci_cmd_le_remove_device_from_resolving_list_t *p_params)

LE Remove Device From Resolving List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.39

The HCI_LE_Remove_Device_From_Resolving_List command is used to remove one device from the resolving list used to resolve Resolvable Private Addresses in the Controller.

This command shall not be used when address resolution is enabled in the Controller and: • Advertising (other than periodic advertising) is enabled, • Scanning is enabled, or • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or HCI_LE_Periodic_Advertising_Create_Sync command is pending.

This command may be used at any time when address resolution is disabled in the Controller.

When a Controller cannot remove a device from the resolving list because it is not found, it shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Remove_Device_From_Resolving_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_clear_resolving_list(void)

LE Clear Resolving List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.40

The HCI_LE_Clear_Resolving_List command is used to remove all devices from the resolving list used to resolve Resolvable Private Addresses in the Controller.

This command shall not be used when address resolution is enabled in the Controller and: • Advertising (other than periodic advertising) is enabled, • Scanning is enabled, or • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or HCI_LE_Periodic_Advertising_Create_Sync command is pending.

This command may be used at any time when address resolution is disabled in the Controller.

Event(s) generated (unless masked away): When the HCI_LE_Clear_Resolving_List command has completed, an HCI_Command_Complete event shall be generated.

Return values:

0 – if success.

Returns:

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_le_read_resolving_list_size(sdc_hci_cmd_le_read_resolving_list_size_return_t *p_return)

LE Read Resolving List Size.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.41

The HCI_LE_Read_Resolving_List_Size command is used to read the total number of entries in the resolving list that can be stored in the Controller.

Note: The number of entries that can be stored is not fixed and the Controller can change it at any time (e.g. because the memory used to store the list can also be used for other purposes).

Event(s) generated (unless masked away): When the HCI_LE_Read_Resolving_List_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_address_resolution_enable(const sdc_hci_cmd_le_set_address_resolution_enable_t *p_params)

LE Set Address Resolution Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.44

The HCI_LE_Set_Address_Resolution_Enable command is used to enable resolution of Resolvable Private Addresses in the Controller. This causes the Controller to use the resolving list whenever the Controller receives a local or peer Resolvable Private Address.

This command shall not be used when: • Advertising (other than periodic advertising) is enabled, • Scanning is enabled, or • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or HCI_LE_Periodic_Advertising_Create_Sync command is pending.

Enabling address resolution when it is already enabled, or disabling it when it is already disabled, has no effect.

The requirements in [Vol 6] Part B, Section 6 related to the generation of Resolvable Private Addresses and the privacy of the device are independent of this command.

Event(s) generated (unless masked away): When the HCI_LE_Set_Address_Resolution_Enable command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_resolvable_private_address_timeout(const sdc_hci_cmd_le_set_resolvable_private_address_timeout_t *p_params)

LE Set Resolvable Private Address Timeout.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.45

The HCI_LE_Set_Resolvable_Private_Address_Timeout command set the length of time the Controller uses a Resolvable Private Address before a new resolvable private address is generated and starts being used.

This timeout applies to all resolvable private addresses generated by the Controller.

Event(s) generated (unless masked away): When the HCI_LE_Set_Resolvable_Private_Address_Timeout command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_max_data_length(sdc_hci_cmd_le_read_max_data_length_return_t *p_return)

LE Read Maximum Data Length.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.46

The HCI_LE_Read_Maximum_Data_Length command allows the Host to read the Controller’s maximum supported payload octets and packet duration times for transmission and reception (Supported_Max_TX_Octets, Supported_Max_- TX_Time, Supported_Max_RX_Octets, and Supported_Max_RX_Time, see [Vol 6] Part B, Section 4.5.10).

Event(s) generated (unless masked away): When the HCI_LE_Read_Maximum_Data_Length command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_phy(const sdc_hci_cmd_le_read_phy_t *p_params, sdc_hci_cmd_le_read_phy_return_t *p_return)

LE Read PHY.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.47

The HCI_LE_Read_PHY command is used to read the current transmitter PHY and receiver PHY on the connection identified by the Connection_Handle.

Event(s) generated (unless masked away): When the HCI_LE_Read_PHY command has completed, an HCI_Command_- Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_default_phy(const sdc_hci_cmd_le_set_default_phy_t *p_params)

LE Set Default PHY.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.48

The HCI_LE_Set_Default_PHY command allows the Host to specify its preferred values for the transmitter PHY and receiver PHY to be used for all subsequent connections over the LE transport.

The All_PHYs parameter is a bit field that allows the Host to specify, for each direction, whether it has no preference among the PHYs that the Controller supports in a given direction or whether it has specified particular PHYs that it prefers in the TX_PHYs or RX_PHYs parameter.

The TX_PHYs parameter is a bit field that indicates the transmitter PHYs that the Host prefers the Controller to use. If the All_PHYs parameter specifies that the Host has no preference, the TX_PHYs parameter shall be ignored; otherwise at least one bit shall be set to 1.

The RX_PHYs parameter is a bit field that indicates the receiver PHYs that the Host prefers the Controller to use. If the All_PHYs parameter specifies that the Host has no preference, the RX_PHYs parameter shall be ignored; otherwise at least one bit shall be set to 1.

If the Host sets, in the TX_PHYs or RX_PHYs parameter, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller does not support asymmetric connections (see [Vol 6] Part B, Section 4.6.9.1) and the Host sets All_PHYs to 0x00 and TX_PHYs to a different value than RX_PHYs, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_Set_Default_PHY command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_phy(const sdc_hci_cmd_le_set_phy_t *p_params)

LE Set PHY.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.49

The HCI_LE_Set_PHY command is used to set the PHY preferences for the connection identified by the Connection_Handle. The Controller might not be able to make the change (e.g. because the peer does not support the requested PHY) or may decide that the current PHY is preferable (e.g., because it could not schedule other activities if the requested PHY was used or because it requires a PHY that supports Constant Tone Extensions).

The All_PHYs parameter is a bit field that allows the Host to specify, for each direction, whether it has no preference among the PHYs that the Controller supports in a given direction or whether it has specified particular PHYs that it prefers in the TX_PHYs or RX_PHYs parameter.

The TX_PHYs parameter is a bit field that indicates the transmitter PHYs that the Host prefers the Controller to use. If the All_PHYs parameter specifies that the Host has no preference, the TX_PHYs parameter shall be ignored; otherwise at least one bit shall be set to 1.

The RX_PHYs parameter is a bit field that indicates the receiver PHYs that the Host prefers the Controller to use. If the All_PHYs parameter specifies that the Host has no preference, the RX_PHYs parameter shall be ignored; otherwise at least one bit shall be set to 1.

The Controller shall request a change unless it determines that this is unnecessary or that the current PHY is preferable, in which case it may, but need not, request a change.

The PHY preferences provided by the HCI_LE_Set_PHY command override those provided via the HCI_LE_Set_Default_PHY command (Section 7.8.48) or any preferences previously set using the HCI_LE_Set_PHY command on the same connection.

The PHY_Options parameter is a bit field that allows the Host to specify options for PHYs. The default value for a new connection shall be all zero bits. The Controller may override any preferred coding for transmitting on the LE Coded PHY. The Host may specify a preferred coding even if it prefers not to use the LE Coded transmitter PHY since the Controller may override the PHY preference.

If the Host sets, in the TX_PHYs or RX_PHYs parameter, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller does not support asymmetric connections (see [Vol 6] Part B, Section 4.6.9.1) and the Host sets All_PHYs to 0x00 and TX_PHYs to a different value than RX_PHYs, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Set_PHY command, the Controller shall send the HCI_Command_Status event to the Host. The HCI_LE_PHY_- Update_Complete event shall be generated either when one or both PHY changes or when the Controller determines that neither PHY will change immediately.

Note: If the peer negotiation resulted in no change to either PHY, this is not an error and the HCI_LE_PHY_Update_Complete event will contain a status indicating success.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_adv_set_random_address(const sdc_hci_cmd_le_set_adv_set_random_address_t *p_params)

LE Set Advertising Set Random Address.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.52

The HCI_LE_Set_Advertising_Set_Random_Address command is used by the Host to set the random device address specified by the Random_Address parameter. This address is used in the Controller (see [Vol 6] Part B, Section 1.3.2) for the advertiser’s address contained in the advertising PDUs for the advertising set specified by the Advertising_Handle parameter.

This command may be issued at any time after an advertising set identified by the Advertising_Handle parameter has been created using the HCI_LE_Set_- Extended_Advertising_Parameters command (see Section 7.8.53). However, if the Host issues this command while the advertising set identified by the Advertising_Handle parameter is using connectable advertising and is enabled, the Controller shall return the error code Command Disallowed (0x0C).

If this command is used to change the address, the new random address shall take effect for advertising no later than the next successful HCI_LE_Set_- Extended_Advertising_Enable command and for periodic advertising no later than the next successful HCI_LE_Periodic_Advertising_Enable command.

Event(s) generated (unless masked away): When the HCI_LE_Set_Advertising_Set_Random_Address command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_adv_params(const sdc_hci_cmd_le_set_ext_adv_params_t *p_params, sdc_hci_cmd_le_set_ext_adv_params_return_t *p_return)

LE Set Extended Advertising Parameters [v1].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.53

The HCI_LE_Set_Extended_Advertising_Parameters command is used by the Host to set the advertising parameters. The Advertising_Handle parameter identifies the advertising set whose parameters are being configured.

The Advertising_Event_Properties parameter describes the type of advertising event that is being configured and its basic properties. The type shall be one supported by the Controller. In particular, the following restrictions apply to this parameter: • If legacy advertising PDU types are being used, then the parameter value shall be one of those specified in Table 7.2. If the advertising set already contains data, the type shall be one that supports advertising data and the amount of data shall not exceed 31 octets.

                                                     Advertising
                                                     Event         Advertising
Event Type PDU Type Properties Data

Connectable and scannable ADV_IND 0b00010011 Supported undirected

Connectable directed ADV_DIRECT_IND 0b00010101 Not allowed (low duty cycle)

Connectable directed ADV_DIRECT_IND 0b00011101 Not allowed (high duty cycle)

Scannable undirected ADV_SCAN_IND 0b00010010 Supported

Non-connectable and non- ADV_NONCONN_IND 0b00010000 Supported scannable undirected

Table 7.2: Advertising_Event_Properties values for legacy PDUs

• If extended advertising PDU types are being used (bit 4 = 0) then: The advertisement shall not be both connectable and scannable. High duty cycle directed connectable advertising (≤ 3.75 ms advertising interval) shall not be used (bit 3 = 0).

If the Advertising_Event_Properties parameter does not describe an event type supported by the Controller, contains an invalid bit combination, or specifies a type that does not support advertising data when the advertising set already contains some, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

The parameters beginning with “Secondary” are only valid when extended advertising PDU types are being used (bit 4 = 0).

The Own_Address_Type parameter shall be ignored for undirected anonymous advertising (bit 2 = 0 and bit 5 = 1).

If Directed advertising is selected, the Peer_Address_Type and Peer_Address shall be valid and the Advertising_Filter_Policy parameter shall be ignored. The Primary_Advertising_Interval_Min parameter shall be less than or equal to the Primary_Advertising_Interval_Max parameter. The Primary_Advertising_- Interval_Min and Primary_Advertising_Interval_Max parameters should not be the same value so that the Controller can choose the best advertising interval given other activities.

For high duty cycle connectable directed advertising event type (ADV_DIRECT_IND), the Primary_Advertising_Interval_Min and Primary_Advertising_Interval_Max parameters are not used and shall be ignored.

If the primary advertising interval range provided by the Host (Primary_Advertising_Interval_Min, Primary_Advertising_Interval_Max) does not overlap with the advertising interval range supported by the Controller, then the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

The Primary_Advertising_Channel_Map is a bit field that indicates the advertis- ing channel indices that shall be used when transmitting advertising packets. At least one channel bit shall be set in the Primary_Advertising_Channel_Map parameter.

The Own_Address_Type parameter specifies the type of address being used in the advertising packets. For random addresses, the address is specified by the HCI_LE_Set_Advertising_Set_Random_Address command.

If Own_Address_Type equals 0x02 or 0x03, the Peer_Address parameter contains the peer’s Identity Address and the Peer_Address_Type parameter contains the peer’s Identity Type (i.e., 0x00 or 0x01). These parameters are used to locate the corresponding local IRK in the resolving list; this IRK is used to generate their own address used in the advertisement.

The Advertising_TX_Power parameter indicates the maximum power level at which the advertising packets are to be transmitted on the advertising physical channels. The Controller shall choose a power level lower than or equal to the one specified by the Host.

The Primary_Advertising_PHY parameter indicates the PHY on which the advertising packets are transmitted on the primary advertising physical chan- nel. If legacy advertising PDUs are being used, the Primary_Advertising_PHY shall indicate the LE 1M PHY. The Secondary_Advertising_PHY parameter indicates the PHY on which the advertising packets are be transmitted on the secondary advertising physical channel. If the Host specifies a PHY that is not supported by the Controller, including a value that is reserved for future use, it should return the error code Unsupported Feature or Parameter Value (0x11). If Constant Tone Extensions are enabled for the advertising set and Secondary_Advertising_PHY specifies a PHY that does not allow Constant Tone Extensions, the Controller shall return the error code Command Disal- lowed (0x0C). If the Primary_Advertising_PHY indicates the LE Coded PHY, then the Primary_Advertising_PHY_Options shall indicate the Host’s preference or requirement concerning coding scheme. Otherwise, Primary_Advertising_- PHY_Options shall be ignored. If the Secondary_Advertising_PHY indicates the LE Coded PHY, then the Secondary_Advertising_PHY_Options shall indi- cate the Host’s preference or requirement concerning coding scheme (includ- ing for periodic advertising). Otherwise, Secondary_Advertising_PHY_Options shall be ignored. If the Host specifies that it requires a specific coding (i.e., value 0x03 or 0x04) in the Primary_Advertising_PHY_Options or Secondary_Advertising_PHY_Options and the Controller supports the LE Fea- ture (Advertising Coding Selection) but is currently unable to provide all the required settings, then the Controller shall return the error code Command Dis- allowed (0x0C).

The Secondary_Advertising_Max_Skip parameter is the maximum number of advertising events that can be skipped before the AUX_ADV_IND can be sent.

The Advertising_SID parameter specifies the value to be transmitted in the Advertising SID subfield of the ADI field of the Extended Header of those advertising physical channel PDUs that have an ADI field. If the advertising set only uses PDUs that do not contain an ADI field, Advertising_SID shall be ignored.

The Scan_Request_Notification_Enable parameter indicates whether the Controller shall send notifications upon the receipt of a scan request PDU that is in response to an advertisement from the specified advertising set that contains its device address and is from a scanner that is allowed by the advertising filter policy.

The Controller shall set the Selected_TX_Power return parameter to the transmit power that it will use for transmitting the advertising packets for the specified advertising set. The Controller shall only change this value if requested by the Host. If the radiated power level will vary between packets (e.g., because of frequency-dependent properties of the transmitter) then the value should be the best estimate of the maximum power used.

If the Host issues this command when advertising is enabled for the specified advertising set, the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command when periodic advertising is enabled for the specified advertising set and connectable, scannable, legacy, or anonymous advertising is specified, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If periodic advertising is enabled for the advertising set and the Secondary_Advertising_PHY parameter does not specify the PHY currently being used for the periodic advertising, the Controller shall return the error code Command Disallowed (0x0C). If the Advertising_Handle does not identify an existing advertising set and the Controller is unable to support a new advertising set at present, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the advertising set already contains advertising data or scan response data, extended advertising is being used, and the length of the data is greater than the maximum that the Controller can transmit within the longest possible auxiliary advertising segment consistent with the parameters, the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If the Controller does not support the LE Feature (Advertising Coding Selection) and the Host does not set both Primary_Advertising_PHY_Options and Secondary_Advertising_PHY_Options to zero, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Missing parameters:

When a version of this command is issued that does not include all the parameters, the following values shall be used:

Parameter Value

Primary_Advertising_PHY_Options 0x00

Secondary_Advertising_PHY_Options 0x00

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Advertising_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_adv_data(const sdc_hci_cmd_le_set_ext_adv_data_t *p_params)

LE Set Extended Advertising Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.54

The HCI_LE_Set_Extended_Advertising_Data command is used to set the data used in advertising PDUs that have a data field. This command may be issued at any time after an advertising set identified by the Advertising_Handle parameter has been created using the HCI_LE_Set_Extended_Advertising_- Parameters command (see Section 7.8.53), regardless of whether advertising in that set is enabled or disabled.

If advertising is currently enabled for the specified advertising set, the Controller shall use the new data in subsequent extended advertising events for this advertising set. If an extended advertising event is in progress when this command is issued, the Controller may use the old or new data for that event.

If advertising is currently disabled for the specified advertising set, the data shall be kept by the Controller and used once advertising is enabled for that set. The data shall be discarded when the advertising set is removed.

Only the significant part of the advertising data should be transmitted in the advertising packets as defined in [Vol 3] Part C, Section 11.

The Host may set the advertising data in one or more operations using the Operation parameter in the command. If the combined length of the data exceeds the capacity of the advertising set identified by the Advertising_- Handle parameter (see Section 7.8.57 LE Read Maximum Advertising Data Length command) or the amount of memory currently available, all the data shall be discarded and the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the advertising set uses extended advertising and the combined length of the data is greater than the maximum that the Controller can transmit within the longest possible auxiliary advertising segment consistent with the current parameters of the advertising set (using the current advertising interval if advertising is enabled), all the data shall be discarded and the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If Operation indicates the start of new data (values 0x01 or 0x03), then any existing partial or complete advertising data shall be discarded.

If the advertising data is discarded by the command or the combined length of the data after the command completes is zero, the advertising set will have no advertising data.

If Operation is 0x04, the behavior is the same as if the current advertising data had been sent again; this can be used to cause the Advertising DID value to be updated (see [Vol 6] Part B, Section 4.4.2.11).

The Fragment_Preference parameter provides a hint to the Controller as to whether advertising data should be fragmented.

If the advertising set specifies a type that does not support advertising data, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the advertising set uses legacy advertising PDUs that support advertising data and either Operation is not 0x03 or the Advertising_Data_Length parameter exceeds 31 octets, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If Operation is 0x04 and: • advertising is currently disabled for the advertising set; • the advertising set contains no data; • the advertising set uses legacy PDUs; or • Advertising_Data_Length is not zero;

then the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If Operation is not 0x03 or 0x04 and Advertising_Data_Length is zero, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If advertising is currently enabled for the specified advertising set and Operation does not have the value 0x03 or 0x04, the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set corresponding to the Advertising_Handle parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Advertising_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_scan_response_data(const sdc_hci_cmd_le_set_ext_scan_response_data_t *p_params)

LE Set Extended Scan Response Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.55

The HCI_LE_Set_Extended_Scan_Response_Data command is used to provide scan response data used in scanning response PDUs. This command may be issued at any time after the advertising set identified by the Advertising_Handle parameter has been created using the HCI_LE_Set_- Extended_Advertising_Parameters command (see Section 7.8.53) regardless of whether advertising in that set is enabled or disabled.

If advertising is currently enabled for the specified advertising set, the Controller shall use the new data in subsequent extended advertising events for this advertising set. If an extended advertising event is in progress when this command is issued, the Controller may use the old or new data for that event.

If advertising is currently disabled for the specified advertising set, the data shall be kept by the Controller and used once advertising is enabled for that set. The data shall be discarded when the advertising set is removed.

Only the significant part of the scan response data should be transmitted in the advertising packets as defined in [Vol 3] Part C, Section 11.

The Host may set the scan response data in one or more operations using the Operation parameter in the command. If the combined length of the data exceeds the capacity of the advertising set identified by the Advertising_Handle parameter (see Section 7.8.57 LE Read Maximum Advertising Data Length command) or the amount of memory currently available, all the data shall be discarded and the Controller shall return the error code Memory Capacity Exceeded (0x07).

If Operation indicates the start of new data (values 0x01 or 0x03), then any existing partial or complete scan response data shall be discarded.

If the scan response data is discarded by the command or the combined length of the data after the command completes is zero, the advertising set will have no scan response data. The Fragment_Preference parameter provides a hint to the Controller as to whether advertising data should be fragmented. If the advertising set is non-scannable and the Host uses this command other than to discard existing data, the Controller shall return the error code Invalid HCI Command Parameters (0x12). If the advertising set uses scannable leg- acy advertising PDUs and either Operation is not 0x03 or the Scan_- Response_Data_Length parameter exceeds 31 octets, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If Operation is not 0x03 and Scan_Response_Data_Length is zero, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If advertising is currently enabled for the specified advertising set and Operation does not have the value 0x03, the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set uses extended advertising and the combined length of the data is greater than the maximum that the Controller can transmit within the longest possible auxiliary advertising segment consistent with the current parameters of the advertising set (using the current advertising interval if advertising is enabled), all the data shall be discarded and the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If the advertising set uses scannable extended advertising PDUs, advertising is currently enabled for the specified advertising set, and Scan_Response_- Data_Length is zero, the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set corresponding to the Advertising_Handle parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Scan_Response_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_adv_enable(const sdc_hci_cmd_le_set_ext_adv_enable_t *p_params)

LE Set Extended Advertising Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.56

The HCI_LE_Set_Extended_Advertising_Enable command is used to request the Controller to enable or disable one or more advertising sets using the advertising sets identified by the Advertising_Handle[i] parameter. The Control- ler manages the timing of advertisements in accordance with the advertising parameters given in the HCI_LE_Set_Extended_Advertising_Parameters command. The Num_Sets parameter is the number of advertising sets contained in the parameter arrays. If Enable and Num_Sets are both set to 0x00, then all advertising sets are disabled.

The Controller shall only start an advertising event when the corresponding advertising set is enabled. The Controller shall continue advertising until all advertising sets have been disabled. An advertising set shall be disabled when the Host issues an HCI_LE_Set_Extended_Advertising_Enable command with the Enable parameter set to 0x00 (Advertising is disabled), a connection is cre- ated using that advertising set, the duration specified in the Duration[i] parame- ter expires, or the number of extended advertising events transmitted for the set exceeds the Max_Extended_Advertising_Events[i] parameter.

The Duration[i] parameter indicates the duration for which that advertising set is enabled. The duration begins at the start of the first advertising event of this advertising set. The Controller should not start an extended advertising event that it cannot complete within the duration.

If the advertising is high duty cycle connectable directed advertising, then Duration[i] shall be less than or equal to 1.28 seconds and shall not be equal to 0.

The Max_Extended_Advertising_Events[i] parameter, if non-zero, indicates the maximum number of extended advertising events that shall be sent prior to disabling the extended advertising set even if the Duration[i] parameter has not expired.

Duration[i] and Max_Extended_Advertising_Events[i] shall be ignored when Enable is set to 0x00.

If the HCI_LE_Set_Extended_Advertising_Enable command is sent again for an advertising set while that set is enabled, the timer used for the duration and the number of events counter are reset and any change to the random address shall take effect.

Disabling the advertising set identified by the Advertising_Handle[i] parameter does not disable any periodic advertising associated with that set.

Disabling an advertising set that is already disabled has no effect.

If the same advertising set is identified by more than one entry in the Advertising_Handle[i] arrayed parameter, then the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the advertising set corresponding to the Advertising_Handle[i] parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

The remainder of this section only applies if Enable is set to 0x01.

If Num_Sets is set to 0x00, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the advertising set contains partial advertising data or partial scan response data, the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set uses scannable extended advertising PDUs and no scan response data is currently provided, the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set uses connectable extended advertising PDUs and the advertising data in the advertising set will not fit in the AUX_ADV_IND PDU, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

Note: The maximum amount of data that will fit in the PDU depends on which options are selected and on the maximum length of PDU that the Controller is able to transmit.

If extended advertising is being used and the length of any advertising data or of any scan response data is greater than the maximum that the Controller can transmit within the longest possible auxiliary advertising segment consistent with the chosen advertising interval, the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If the advertising set’s Own_Address_Type parameter is set to 0x00 and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the advertising set’s Own_Address_Type parameter is set to 0x01 and the random address for the advertising set has not been initialized using the HCI_LE_Set_Advertising_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the advertising set’s Own_Address_Type parameter is set to 0x02, the Controller’s resolving list did not contain a matching entry, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If the advertising set’s Own_Address_Type parameter is set to 0x03, the Controller’s resolving list did not contain a matching entry, and the random address for the advertising set has not been initialized using the HCI_LE_Set_Advertising_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Advertising_Enable command has completed, an HCI_Command_Complete event shall be generated.

If the Duration[i] parameter is set to a value other than 0x0000, an HCI_LE_- Advertising_Set_Terminated event shall be generated when the duration spec- ified in the Duration[i] parameter expires. However, if the advertising set is for high duty cycle connectable directed advertising and no connection is created before the duration expires, an HCI_LE_Connection_Complete or HCI_LE_- Enhanced_Connection_Complete event with the Status parameter set to the error code Advertising Timeout (0x3C) may be generated instead of or in addi- tion to the HCI_LE_Advertising_Set_Terminated event. If the Controller gener- ates both events, they may be in either order.

If the Max_Extended_Advertising_Events[i] parameter is set to a value other than 0x00, an HCI_LE_Advertising_Set_Terminated event shall be generated when the maximum number of extended advertising events has been transmitted by the Controller. If the advertising set is connectable and a connection gets created, an HCI_LE_Connection_Complete or HCI_LE_Enhanced_Connection_Complete event shall be generated followed by an HCI_LE_Advertising_Set_Terminated event with the Status parameter set to 0x00. The Controller should not send any other events in between these two events. If the Controller supports the LE Channel Selection Algorithm #2 feature, then the HCI_LE_Advertising_Set_- Terminated event may be immediately preceded or followed by an HCI_LE_- Channel_Selection_Algorithm event.

Note: If this command is used to disable advertising at about the same time that a connection is established or the advertising duration expires, there is a possible race condition in that it is possible to receive both an HCI_LE_- Connection_Complete, HCI_LE_Enhanced_Connection_Complete, or HCI_LE_Advertising_Set_Terminated event and the HCI_Command_- Complete event for this command.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_max_adv_data_length(sdc_hci_cmd_le_read_max_adv_data_length_return_t *p_return)

LE Read Maximum Advertising Data Length.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.57

The HCI_LE_Read_Maximum_Advertising_Data_Length command is used to read the maximum length of data supported by the Controller for use as advertisement data or scan response data in an advertising event or as periodic advertisement data.

Note: The maximum amount may be fragmented across multiple PDUs (see [Vol 6] Part B, Section 2.3.4.9).

Event(s) generated (unless masked away): When the HCI_LE_Read_Maximum_Advertising_Data_Length command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_number_of_supported_adv_sets(sdc_hci_cmd_le_read_number_of_supported_adv_sets_return_t *p_return)

LE Read Number of Supported Advertising Sets.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.58

The HCI_LE_Read_Number_of_Supported_Advertising_Sets command is used to read the maximum number of advertising sets supported by the advertising Controller at the same time.

Note: The number of advertising sets that can be supported is not fixed and the Controller can change it at any time because the memory used to store advertising sets can also be used for other purposes.

Event(s) generated (unless masked away): When the HCI_LE_Read_Number_of_Supported_Advertising_Sets command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_remove_adv_set(const sdc_hci_cmd_le_remove_adv_set_t *p_params)

LE Remove Advertising Set.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.59

The HCI_LE_Remove_Advertising_Set command is used to remove an advertising set from the Controller.

If the advertising set corresponding to the Advertising_Handle parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42). If advertising or periodic advertising on the advertising set is enabled, then the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Remove_Advertising_Set command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_clear_adv_sets(void)

LE Clear Advertising Sets.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.60

The HCI_LE_Clear_Advertising_Sets command is used to remove all existing advertising sets from the Controller.

If advertising or periodic advertising is enabled on any advertising set, then the Controller shall return the error code Command Disallowed (0x0C).

Note: All advertising sets are cleared on HCI reset.

Event(s) generated (unless masked away): When the HCI_LE_Clear_Advertising_Sets command has completed, an HCI_Command_Complete event shall be generated.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_params(const sdc_hci_cmd_le_set_periodic_adv_params_t *p_params)

LE Set Periodic Advertising Parameters [v1].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.61

The HCI_LE_Set_Periodic_Advertising_Parameters command is used by the Host to set the parameters for periodic advertising.

The Advertising_Handle parameter identifies the advertising set whose periodic advertising parameters are being configured. If the corresponding advertising set does not already exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

The Periodic_Advertising_Interval_Min parameter shall be less than or equal to the Periodic_Advertising_Interval_Max parameter. The Periodic_Advertising_- Interval_Min and Periodic_Advertising_Interval_Max parameters should not be the same value to enable the Controller to determine the best advertising interval given other activities.

If the periodic advertising interval range provided by the Host (Periodic_Advertising_Interval_Min, Periodic_Advertising_Interval_Max) does not overlap with the periodic advertising interval range supported by the Controller, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

The Periodic_Advertising_Properties parameter indicates which fields should be included in the advertising packet.

The Num_Subevents parameter identifies the number of subevents that shall be transmitted for each periodic advertising event. If the Num_Subevents parameter value is 0x00, then the Subevent_Interval, Response_Slot_Delay, Response_Slot_Spacing, and Num_Response_Slots parameters shall be ignored.

The Subevent_Interval parameter identifies the time between the subevents of PAwR. The Subevent_Interval shall be less than or equal to the Periodic_Advertising_Interval_Min divided by the Num_Subevents of the advertising set.

The Response_Slot_Delay parameter identifies the time between the start of the advertising packet at the start of a subevent and the start of the first response slot. The Response_Slot_Delay shall be less than the Subevent_Interval.

The Response_Slot_Spacing parameter identifies the time between the start of two consecutive response slots. The Response_Slot_Spacing shall be less than or equal to 10 × (Subevent_Interval - Response_Slot_Delay) / Num_Response_Slots. If the Num_Response_Slots parameter is set to 1, then the Controller shall ignore the Response_Slot_Spacing parameter.

The Num_Response_Slots parameter identifies the number of response slots in a subevent. If the Num_Response_Slots parameter value is 0x00, then the Response_Slot_Delay and Response_Slot_Spacing parameters shall be ignored.

If the advertising set identified by the Advertising_Handle specified scannable, connectable, legacy, or anonymous advertising, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command when periodic advertising is enabled for the specified advertising set, the Controller shall return the error code Command Disallowed (0x0C).

If the Advertising_Handle does not identify an advertising set that is already configured for periodic advertising and the Controller is unable to support more periodic advertising at present, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the advertising set already contains periodic advertising data and the length of the data is greater than the maximum that the Controller can transmit within a periodic advertising interval of Periodic_Advertising_Interval_Max, the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_data(const sdc_hci_cmd_le_set_periodic_adv_data_t *p_params)

LE Set Periodic Advertising Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.62

The HCI_LE_Set_Periodic_Advertising_Data command is used to set the data used in periodic advertising PDUs. This command may be issued at any time after the advertising set identified by the Advertising_Handle parameter has been configured for periodic advertising using the HCI_LE_Set_Periodic_- Advertising_Parameters command (see Section 7.8.61), regardless of whether periodic advertising in that set is enabled or disabled. If the advertising set has not been configured for periodic advertising, then the Controller shall return the error code Command Disallowed (0x0C).

If periodic advertising is currently enabled for the specified advertising set, the Controller shall use the new data in subsequent periodic advertising events for this advertising set. If a periodic advertising event is in progress when this command is issued, the Controller may use the old or new data for that event.

If periodic advertising is currently disabled for the specified advertising set, the data shall be kept by the Controller and used once periodic advertising is enabled for that set. The data shall be discarded when the advertising set is removed.

Only the significant part of the periodic advertising data should be transmitted in the advertising packets as defined in [Vol 3] Part C, Section 11.

The Host may set the periodic advertising data in one or more operations using the Operation parameter in the command. If the combined length of the data exceeds the capacity of the advertising set identified by the Advertising_- Handle parameter (see Section 7.8.57 LE Read Maximum Advertising Data Length command) or the amount of memory currently available, all the data shall be discarded and the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the combined length of the data is greater than the maximum that the Con- troller can transmit within the current periodic advertising interval (if periodic advertising is currently enabled) or the Periodic_Advertising_Interval_Max for the advertising set (if currently disabled), all the data shall be discarded and the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current adver- tising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If Operation indicates the start of new data (values 0x01 or 0x03), then any existing partial or complete data shall be discarded.

If Operation is 0x04, then the behavior is the same as if the current periodic advertising data had been sent again; this can be used to cause the Advertising DID value to be updated (see [Vol 6] Part B, Section 4.4.2.11).

If Operation is 0x04 and: • periodic advertising is currently disabled for the advertising set; • the periodic advertising set contains no data; or • Advertising_Data_Length is not zero;

then the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If Operation is not 0x03 or 0x04 and Advertising_Data_Length is zero, then the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the periodic advertising data is discarded by the command or the combined length of the data after the command completes is zero, the advertising set will have no periodic advertising data.

If periodic advertising is currently enabled for the specified advertising set and Operation does not have the value 0x03 or 0x04, then the Controller shall return the error code Command Disallowed (0x0C).

If the advertising set corresponding to the Advertising_Handle parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_enable(const sdc_hci_cmd_le_set_periodic_adv_enable_t *p_params)

LE Set Periodic Advertising Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.63

The HCI_LE_Set_Periodic_Advertising_Enable command is used to request the Controller to enable or disable the periodic advertising for the advertising set specified by the Advertising_Handle parameter (ordinary advertising is not affected).

If the advertising set is not currently enabled (see the HCI_LE_Set_Extended_- Advertising_Enable command), the periodic advertising is not started until the advertising set is enabled. Once the advertising set has been enabled, the Controller shall continue periodic advertising until the Host issues an HCI_LE_- Set_Periodic_Advertising_Enable command with bit 0 of Enable set to 0 (peri- odic advertising is disabled). Disabling the advertising set has no effect on the periodic advertising once the advertising set has been enabled.

The Controller manages the timing of advertisements in accordance with the advertising parameters given in the HCI_LE_Set_Periodic_Advertising_- Parameters command.

If the advertising set corresponding to the Advertising_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If bit 0 of Enable is set to 1 (periodic advertising is enabled) and the advertising set contains partial periodic advertising data, the Controller shall return the error code Command Disallowed (0x0C).

If bit 0 of Enable is set to 1 and the Host has not issued the HCI_LE_Set_- Periodic_Advertising_Parameters command for the advertising set, the Con- troller shall either use vendor-specified parameters or return the error code Command Disallowed (0x0C).

If bit 0 of Enable is set to 1 and the length of the periodic advertising data is greater than the maximum that the Controller can transmit within the chosen periodic advertising interval, the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel. If bit 0 of Enable is set to 1 and the advertising set identified by the Advertising_Handle specified scannable, connectable, legacy, or anonymous advertising, the Controller shall return the error code Command Disallowed (0x0C).

If bit 0 of Enable is set to 0 and the Controller supports the Periodic Advertising ADI Support feature, then the Controller shall ignore bit 1.

If bit 1 of Enable is set to 1 and the Controller does not support the Periodic Advertising ADI Support feature, the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

Enabling periodic advertising when it is already enabled can cause the random address to change. Disabling periodic advertising when it is already disabled has no effect.

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Enable command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_scan_params(const sdc_hci_cmd_le_set_ext_scan_params_t *p_params)

LE Set Extended Scan Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.64

The HCI_LE_Set_Extended_Scan_Parameters command is used to set the extended scan parameters to be used on the advertising physical channels.

The Scanning_PHYs parameter indicates the PHY(s) on which the advertising packets should be received on the primary advertising physical channel. The Host may enable one or more scanning PHYs. If the Host specifies a PHY that is not supported by the Controller, including a bit that is reserved for future use, it should return the error code Unsupported Feature or Parameter Value (0x11). The Scan_Type[i], Scan_Interval[i], and Scan_Window[i] parameters array elements are ordered in the same order as the set bits in the Scanning_PHY parameter, starting from bit 0. The number of array elements is determined by the number of bits set in the Scanning_PHY parameter.

The Scan_Type[i] parameter specifies the type of scan to perform.

The Scan_Interval[i] and Scan_Window[i] parameters are recommendations from the Host on how long (Scan_Window[i]) and how frequently (Scan_Interval[i]) the Controller should scan (see [Vol 6] Part B, Section 4.4.3); however the frequency and length of the scan is implementation specific. If the requested scan cannot be supported by the implementation, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

The Own_Address_Type parameter indicates the type of address being used in the scan request packets.

If the Host issues this command when scanning is enabled in the Controller, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Scan_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_ext_scan_enable(const sdc_hci_cmd_le_set_ext_scan_enable_t *p_params)

LE Set Extended Scan Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.65

The HCI_LE_Set_Extended_Scan_Enable command is used to enable or disable scanning for both legacy and extended advertising PDUs.

The Enable parameter determines whether scanning is enabled or disabled. If it is set to 0x00, the remaining parameters shall be ignored.

If Enable is set to 0x01 and the Host has not issued the HCI_LE_Set_- Extended_Scan_Parameters command, the Controller shall either use vendor- specified parameters or return the error code Command Disallowed (0x0C).

The Filter_Duplicates parameter controls whether the Link Layer should filter out duplicate advertising reports (filtering duplicates enabled) to the Host or if the Link Layer should generate advertising reports for each packet received (filtering duplicates disabled). See [Vol 6] Part B, Section 4.4.3.5.

If the Filter_Duplicates parameter is set to 0x00, all advertisements received from advertisers shall be sent to the Host in advertising report events.

If the Filter_Duplicates parameter is set to 0x01, duplicate advertisements should not be sent to the Host in advertising report events until scanning is disabled.

If the Filter_Duplicates parameter is set to 0x02, duplicate advertisements in a single scan period should not be sent to the Host in advertising report events; this setting shall only be used if both Period and Duration are non-zero. If Filter_Duplicates is set to 0x02 and either Period or Duration to zero, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Duration parameter is zero or both the Duration parameter and Period parameter are non-zero, the Controller shall continue scanning until scanning is disabled by the Host issuing an HCI_LE_Set_Extended_Scan_Enable command with the Enable parameter set to 0x00 (Scanning is disabled). The Period parameter shall be ignored when the Duration parameter is zero.

If the Duration parameter is non-zero and the Period parameter is zero, the Controller shall continue scanning until the duration specified in the Duration parameter has expired. If both the Duration and Period parameters are non-zero and the Duration is greater than or equal to the Period, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

When the Duration and Period parameters are non-zero, the Controller shall scan for the duration of the Duration parameter within a scan period specified by the Period parameter. After the scan period has expired, a new scan period shall begin and scanning shall begin again for the duration specified. The scan periods continue until the Host disables scanning.

If the HCI_LE_Set_Extended_Scan_Enable command with Enable set to 0x01 is sent while scanning is already enabled, the timers used for duration and period are reset to the new parameter values and a new scan period is started. Any change to the Filter_Duplicates setting or the random address shall take effect.

Disabling scanning when it is disabled has no effect.

Note: The duration of a scan period refers to the time spent scanning on both the primary and secondary advertising physical channels. However, expiry of the duration does not prevent the Link Layer from scanning for and receiving auxiliary packets of received advertisements.

If Enable is set to 0x01, the scanning parameters’ Own_Address_Type parameter is set to 0x00 or 0x02, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If Enable is set to 0x01, the scanning parameters’ Own_Address_Type parameter is set to 0x01 or 0x03, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the HCI_LE_Set_Extended_Scan_Enable command has completed, an HCI_Command_Complete event shall be generated.

Zero or more LE Extended Advertising Reports are generated by the Controller based on any advertising packets received and the duplicate filtering in effect. More than one advertising packet may be reported in each HCI_LE_- Extended_Advertising_Report event.

At the end of a single scan (Duration non-zero but Period zero), an HCI_LE_- Scan_Timeout event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_ext_create_conn(const sdc_hci_cmd_le_ext_create_conn_t *p_params)

LE Extended Create Connection [v1].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.66

The HCI_LE_Extended_Create_Connection command is used to create an ACL connection, with the local device in the Central role, to a connectable advertiser. The command is also used to create an ACL connection between a periodic advertiser and a synchronized device.

If a connection is created with the local device in the Peripheral role while this command is pending, then this command remains pending. The Advertising_Handle parameter is used to identify the periodic advertising train.

The Subevent parameter is used to identify the subevent where a connection request shall be initiated from a periodic advertising train.

The Advertising_Handle and Subevent parameters shall be set to 0xFF if these parameters are not used.

If the Advertising_Handle and Subevent parameters are set to valid values, then the Initiator_Filter_Policy, Initiating_PHYs, Scan_Interval[i], and Scan_Window[i] parameters shall be ignored.

The Initiator_Filter_Policy parameter is used to determine whether the Filter Accept List is used. If the Filter Accept List is not used, the Peer_Address_Type and the Peer_Address parameters specify the address type and address of the advertising device to connect to.

The Own_Address_Type parameter indicates the type of address being used in the connection request packets.

The Peer_Address_Type parameter indicates the type of address used in the connectable advertisement sent by the peer.

The Peer_Address parameter indicates the Peer’s Public Device Address, Random (static) Device Address, Non-Resolvable Private Address, or Resolvable Private Address depending on the Peer_Address_Type parameter.

The Initiating_PHYs parameter indicates the PHY(s) on which the advertising packets should be received on the primary advertising physical channel and the PHYs for which connection parameters have been specified. The Host may enable one or more initiating PHYs. If the Host specifies a PHY that is not supported by the Controller, including a bit that is reserved for future use, the latter should return the error code Unsupported Feature or Parameter Value (0x11). The array elements of the arrayed parameters are ordered in the same order as the set bits in the Initiating_PHYs parameter, starting from bit 0. The number of array elements is determined by the number of bits set in the Initiating_PHYs parameter. When a connectable advertisement is received and a connection request is sent on one PHY, scanning on any other PHYs is terminated.

The Scan_Interval[i] and Scan_Window[i] parameters are recommendations from the Host on how long (Scan_Window[i]) and how frequently (Scan_Interval[i]) the Controller should scan (see [Vol 6] Part B, Section 4.5.3); however the frequency and length of the scan is implementation specific. If the requested scan cannot be supported by the implementation, the Controller shall return the error code Invalid HCI Command Parameters (0x12). If bit 1 is set in Initiating_PHYs, the values for the LE 2M PHY shall be ignored. The Connection_Interval_Min[i] and Connection_Interval_Max[i] parameters define the minimum and maximum allowed connection interval. The Connection_Interval_Min[i] parameter shall not be greater than the Connection_Interval_Max[i] parameter.

The Max_Latency[i] parameter defines the maximum allowed Peripheral latency (see [Vol 6] Part B, Section 4.5.1).

The Supervision_Timeout[i] parameter defines the link supervision timeout for the connection. The Supervision_Timeout[i] in milliseconds shall be larger than (1 + Max_Latency[i]) × Connection_Interval_Max[i] × 2, where Connection_- Interval_Max[i] is given in milliseconds (see [Vol 6] Part B, Section 4.5.2).

The Min_CE_Length[i] and Max_CE_Length[i] parameters provide the Controller with the expected minimum and maximum length of the connection events. The Min_CE_Length[i] parameter shall be less than or equal to the Max_CE_Length[i] parameter. The Controller is not required to use these values.

Where the connection is made on a PHY whose bit is not set in the Initiating_- PHYs parameter, the Controller shall use the Connection_Interval_Min[i], Connection_Interval_Max[i], Max_Latency[i], Supervision_Timeout[i], Min_CE_Length[i], and Max_CE_Length[i] parameters for an implementation- chosen PHY whose bit is set in the Initiating_PHYs parameter.

If the Host issues this command when another HCI_LE_Extended_Create_- Connection command is pending in the Controller, the Controller shall return the error code Command Disallowed (0x0C).

If the Own_Address_Type parameter is set to 0x00 and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x01 and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x01, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x01, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Initiating_PHYs parameter does not have at least one bit set for a PHY allowed for scanning on the primary advertising physical channel, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command and the Controller has insufficient resources to handle any more connections, the Controller shall return the error code Connection Rejected due to Limited Resources (0x0D).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Extended_Create_Connection command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_Enhanced_Connection_Complete event shall be generated when a connection is created because of this command or the connection creation procedure is cancelled; until the event is generated, the command is consid- ered pending. If a connection creation is discarded, then the error code Con- nection Failed to be Established / Synchronization Timeout (0x3E) shall be used. If a connection is created, this event shall be immediately followed by an HCI_LE_Channel_Selection_Algorithm event.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_periodic_adv_create_sync(const sdc_hci_cmd_le_periodic_adv_create_sync_t *p_params)

LE Periodic Advertising Create Sync.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.67

The HCI_LE_Periodic_Advertising_Create_Sync command is used to synchronize with a periodic advertising train from an advertiser and begin receiving periodic advertising packets.

This command may be issued whether or not scanning is enabled and scanning may be enabled and disabled (see the LE Set Extended Scan Enable command) while this command is pending. However, synchronization can only occur when scanning is enabled. While scanning is disabled, no attempt to synchronize will take place.

The Options parameter is used to determine whether the Periodic Advertiser List is used, whether HCI_LE_Periodic_Advertising_Report events for this periodic advertising train are initially enabled or disabled, and whether duplicate reports are filtered or not. If the Periodic Advertiser List is not used, the Advertising_SID, Advertiser Address_Type, and Advertiser Address parameters specify the periodic advertising device to listen to; otherwise they shall be ignored.

The Advertising_SID parameter, if used, specifies the value that shall match the Advertising SID subfield in the ADI field of the received advertisement for it to be used to synchronize.

The Skip parameter specifies the maximum number of consecutive periodic advertising events that the receiver may skip after successfully receiving a periodic advertising packet.

The Sync_Timeout parameter specifies the maximum permitted time between successful receives. If this time is exceeded, synchronization is lost.

The Sync_CTE_Type parameter specifies whether to only synchronize to periodic advertising with certain types of Constant Tone Extension (a value of 0 indicates that the presence or absence of a Constant Tone Extension is irrelevant). If the periodic advertising has the wrong type of Constant Tone Extension then: • If bit 0 of Options is set, the Controller shall ignore this address and SID and continue to search for other periodic advertisements. • Otherwise, the Controller shall cancel the synchronization with the error code Unsupported Remote Feature (0x1A).

If the periodic advertiser changes the type of Constant Tone Extension after the scanner has synchronized with the periodic advertising, the scanner’s Link Layer shall remain synchronized.

If the Host sets all the non-reserved bits of the Sync_CTE_Type parameter to 1, the Controller shall return the error code Command Disallowed (0x0C).

Irrespective of the value of the Skip parameter, the Controller should stop skipping packets before the Sync_Timeout would be exceeded.

If the Host issues this command when another HCI_LE_Periodic_Advertising_- Create_Sync command is pending, the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command with bit 0 of Options not set and with Advertising_SID, Advertiser_Address_Type, and Advertiser_Address the same as those of a periodic advertising train that the Controller is already synchronized to, the Controller shall return the error code Connection Already Exists (0x0B).

If the Host issues this command and the Controller has insufficient resources to handle any more periodic advertising trains, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If bit 1 of Options is set to 1 and the Controller supports the Periodic Advertising ADI Support feature, then the Controller shall ignore bit 2.

If bit 1 of Options is set to 0, bit 2 is set to 1, and the Controller does not support the Periodic Advertising ADI Support feature, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

If bit 1 of the Options parameter is set to 1 and the Controller does not support the HCI_LE_Set_Periodic_Advertising_Receive_Enable command, the Controller shall return the error code Connection Failed to be Established / Synchronization Timeout (0x3E).

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Create_Sync command has been received, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_Periodic_Advertising_Sync_Established event shall be generated when the Controller starts receiving periodic advertising packets.

When the Controller receives periodic advertising packets then, if reporting is enabled, it sends HCI_LE_Periodic_Advertising_Report events to the Host.

Note: The HCI_LE_Periodic_Advertising_Sync_Established event can be sent as a result of synchronization being canceled by an HCI_LE_Periodic_- Advertising_Create_Sync_Cancel command.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_periodic_adv_create_sync_cancel(void)

LE Periodic Advertising Create Sync Cancel.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.68

The HCI_LE_Periodic_Advertising_Create_Sync_Cancel command is used to cancel the HCI_LE_Periodic_Advertising_Create_Sync command while it is pending.

If the Host issues this command while no HCI_LE_Periodic_Advertising_- Create_Sync command is pending, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Create_Sync_Cancel command has completed, the Controller sends an HCI_Command_Complete event to the Host.

After the HCI_Command_Complete is sent and if the cancellation was successful, the Controller sends an HCI_LE_Periodic_Advertising_Sync_- Established event to the Host with the error code Operation Cancelled by Host (0x44).

Return values:

0 – if success.

Returns:

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_le_periodic_adv_terminate_sync(const sdc_hci_cmd_le_periodic_adv_terminate_sync_t *p_params)

LE Periodic Advertising Terminate Sync.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.69

The HCI_LE_Periodic_Advertising_Terminate_Sync command is used to stop reception of the periodic advertising train identified by the Sync_Handle parameter.

If the periodic advertising train corresponding to the Sync_Handle parameter does not exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

Following successful completion of this command the Sync_Handle is destroyed.

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Terminate_Sync command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_add_device_to_periodic_adv_list(const sdc_hci_cmd_le_add_device_to_periodic_adv_list_t *p_params)

LE Add Device To Periodic Advertiser List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.70

The HCI_LE_Add_Device_To_Periodic_Advertiser_List command is used to add an entry, consisting of a single device address and SID, to the Periodic Advertiser list stored in the Controller. Any additions to the Periodic Advertiser list take effect immediately. If the entry is already on the list, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command when an HCI_LE_Periodic_Advertising_- Create_Sync command is pending, the Controller shall return the error code Command Disallowed (0x0C).

When a Controller cannot add an entry to the Periodic Advertiser list because the list is full, the Controller shall return the error code Memory Capacity Exceeded (0x07).

Event(s) generated (unless masked away): When the HCI_LE_Add_Device_To_Periodic_Advertiser_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_remove_device_from_periodic_adv_list(const sdc_hci_cmd_le_remove_device_from_periodic_adv_list_t *p_params)

LE Remove Device From Periodic Advertiser List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.71

The HCI_LE_Remove_Device_From_Periodic_Advertiser_List command is used to remove one entry from the list of Periodic Advertisers stored in the Controller. Removals from the Periodic Advertisers List take effect immediately.

If the Host issues this command when an HCI_LE_Periodic_Advertising_- Create_Sync command is pending, the Controller shall return the error code Command Disallowed (0x0C).

When a Controller cannot remove an entry from the Periodic Advertiser list because it is not found, the Controller shall return the error code Unknown Advertising Identifier (0x42).

Event(s) generated (unless masked away): When the HCI_LE_Remove_Device_From_Periodic_Advertiser_List command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_clear_periodic_adv_list(void)

LE Clear Periodic Advertiser List.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.72

The HCI_LE_Clear_Periodic_Advertiser_List command is used to remove all entries from the list of Periodic Advertisers in the Controller.

If this command is used when an HCI_LE_Periodic_Advertising_Create_Sync command is pending, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Clear_Periodic_Advertiser_List command has completed, an HCI_Command_Complete event shall be generated.

Return values:

0 – if success.

Returns:

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_le_read_periodic_adv_list_size(sdc_hci_cmd_le_read_periodic_adv_list_size_return_t *p_return)

LE Read Periodic Advertiser List Size.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.73

The HCI_LE_Read_Periodic_Advertiser_List_Size command is used to read the total number of Periodic Advertiser list entries that can be stored in the Controller.

Note: The number of entries that can be stored is not fixed and the Controller can change it at any time (e.g., because the memory used to store the list can also be used for other purposes).

Event(s) generated (unless masked away): When the HCI_LE_Read_Periodic_Advertiser_List_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_transmit_power(sdc_hci_cmd_le_read_transmit_power_return_t *p_return)

LE Read Transmit Power.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.74

The HCI_LE_Read_Transmit_Power command is used to read the minimum and maximum transmit powers supported by the Controller across all supported PHYs.

Event(s) generated (unless masked away): When the HCI_LE_Read _Transmit_Power command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_rf_path_compensation(sdc_hci_cmd_le_read_rf_path_compensation_return_t *p_return)

LE Read RF Path Compensation.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.75

The HCI_LE_Read_RF_Path_Compensation command is used to read the RF path compensation value parameters used in the Tx power level and RSSI calculation.

Event(s) generated (unless masked away): When the HCI_LE_Read_RF_Path_Compensation command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_write_rf_path_compensation(const sdc_hci_cmd_le_write_rf_path_compensation_t *p_params)

LE Write RF Path Compensation.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.76

The HCI_LE_Write_RF_Path_Compensation command is used to indicate the RF path gain or loss between the RF transceiver and the antenna contributed by intermediate components. A positive value means a net RF path gain and a negative value means a net RF path loss. The RF_TX_Path_Compensation_- Value parameter shall be used by the Controller to calculate the radiative Tx power level used in HCI commands, HCI events, Advertising physical channel PDUs, and Link Layer Control PDUs using the following equation:

Radiative Tx power level = Tx power level at RF transceiver output + RF_TX_- Path_Compensation_Value

For example, if the Tx power level is +4 (dBm) at RF transceiver output and the RF_TX_Path_Compensation_Value is -1.5 (dB), the radiative Tx power level is +4+(-1.5) = 2.5 (dBm).

The RF_RX_Path_Compensation_Value parameter shall be used by the Controller to calculate the RSSI value reported to the Host using the following equation:

Rx power level at RF transceiver input = Rx power level at antenna + RF_RX_- Path_Compensation_Value

For example, if the Rx power level is -45 (dBm) at RF transceiver input and the RF_RX_Path_Compensation_Value is -3.2 (dB), the Rx power level at antenna is -41.8 (dBm).

The default values for the RF path compensation are vendor-specific.

This command can be issued at any time. If this command is issued during an ongoing over-the-air RF activity, the Controller may apply the Tx path compensation immediately or after a vendor-specific delay.

The Controller shall apply a change to the Tx path compensation value either by leaving the power at the transceiver output unchanged and altering the radiative Tx power level or by altering the power at the transceiver output to maintain any previously chosen radiative Tx power level.

If the Host needs to maintain a specific radiative transmit power level for an advertising set, it should disable that set before issuing this command then, after the command completes, reissue the HCI_LE_Set_Extended_- Advertising_Parameters command for that set and then re-enable it.

Event(s) generated (unless masked away): When the HCI_LE_Write_RF_Path_Compensation command has completed, an HCI_Command_Complete event shall be generated.

If the command leads to a change in the local radiative transmit power level for an LE ACL connection, then the Controller shall generate an HCI_LE_- Transmit_Power_Reporting event if local reporting is enabled and initiate a Link Layer Power Change Indication procedure if remote reporting is enabled.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_privacy_mode(const sdc_hci_cmd_le_set_privacy_mode_t *p_params)

LE Set Privacy Mode.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.77

The HCI_LE_Set_Privacy_Mode command is used to allow the Host to specify the privacy mode to be used for a given entry on the resolving list. The effect of this setting is specified in [Vol 6] Part B, Section 4.7.

When an entry on the resolving list is removed, the mode associated with that entry shall also be removed.

This command shall not be used when address resolution is enabled in the Controller and: • Advertising (other than periodic advertising) is enabled, • Scanning is enabled, or • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or HCI_LE_Periodic_Advertising_Create_Sync command is pending.

This command may be used at any time when address resolution is disabled in the Controller.

If the device is not on the resolving list, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Set_Privacy_Mode command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_connless_cte_transmit_params(const sdc_hci_cmd_le_set_connless_cte_transmit_params_t *p_params)

LE Set Connectionless CTE Transmit Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.80

The HCI_LE_Set_Connectionless_CTE_Transmit_Parameters command is used to set the type, length, and antenna switching pattern for the transmission of Constant Tone Extensions in any periodic advertising on the advertising set identified by the Advertising_Handle parameter.

The CTE_Count parameter specifies how many packets with a Constant Tone Extension are to be transmitted in each periodic advertising event. If the number of packets that would otherwise be transmitted is less than this, the Controller shall transmit sufficient AUX_CHAIN_IND PDUs with no AdvData to make up the number. However, if a change in circumstances since this command was issued means that the Controller can no longer schedule all of these packets, it should transmit as many as possible.

If the Host issues this command when Constant Tone Extensions have been enabled in the advertising set, the Controller shall return the error code Command Disallowed (0x0C).

The Switching_Pattern_Length and Antenna_IDs[i] parameters are only used when transmitting an AoD Constant Tone Extension and shall be ignored if CTE_Type specifies an AoA Constant Tone Extension.

If the CTE_Length parameter is greater than the maximum length of Constant Tone Extension supported, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host requests a type of Constant Tone Extension that the Controller does not support, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller is unable to schedule CTE_Count packets in each event, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11). If the advertising set corresponding to the Advertising_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If Switching_Pattern_Length is greater than the maximum length of switching pattern supported by the Controller (see Section 7.8.87), the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller determines that any of the Antenna_IDs[i] values do not identify an antenna in the device’s antenna array, it shall return the error code Unsupported Feature or Parameter Value (0x11).

Note: Some Controllers may be unable to determine which values do or do not identify an antenna.

Event(s) generated (unless masked away): When the HCI_LE_Set_Connectionless_CTE_Transmit_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_connless_cte_transmit_enable(const sdc_hci_cmd_le_set_connless_cte_transmit_enable_t *p_params)

LE Set Connectionless CTE Transmit Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.81

The HCI_LE_Set_Connectionless_CTE_Transmit_Enable command is used to request that the Controller enables or disables the use of Constant Tone Extensions in any periodic advertising on the advertising set identified by Advertising_Handle.

In order to start sending periodic advertisements containing a Constant Tone Extension, the Host must also enable periodic advertising using the HCI_LE_Set_Periodic_Advertising_Enable command (see Section 7.8.63).

Note: Periodic advertising can only be enabled when advertising is enabled on the same advertising set, but can continue after advertising has been disabled.

If the Host issues this command before it has issued the HCI_LE_Set_Periodic_Advertising_Parameters command (see Section 7.8.61) for the advertising set, the Controller shall return the error code Command Disallowed (0x0C).

Once enabled, the Controller shall continue advertising with Constant Tone Extensions until either one of the following occurs: • The Host issues an HCI_LE_Set_Connectionless_CTE_Transmit_Enable command with CTE_Enable set to 0x00 (disabling Constant Tone Extensions but allowing periodic advertising to continue). • The Host issues an HCI_LE_Set_Periodic_Advertising_Enable command (see Section 7.8.63) with Enable set to 0x00 (disabling periodic advertising). If periodic advertising is re-enabled then it shall continue to contain Constant Tone Extensions.

If the Host issues this command before it has issued the HCI_LE_Set_Connectionless_CTE_Transmit_Parameters command for the advertising set, the Controller shall return the error code Command Disallowed (0x0C).

If the periodic advertising is on a PHY that does not allow Constant Tone Extensions, the Controller shall return the error code Command Disallowed (0x0C). If the advertising set corresponding to the Advertising_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

The Host may issue this command when advertising or periodic advertising is enabled in the advertising set.

Event(s) generated (unless masked away): When the HCI_LE_Set_Connectionless_CTE_Transmit_Enable command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_conn_cte_transmit_params(const sdc_hci_cmd_le_set_conn_cte_transmit_params_t *p_params, sdc_hci_cmd_le_set_conn_cte_transmit_params_return_t *p_return)

LE Set Connection CTE Transmit Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.84

The HCI_LE_Set_Connection_CTE_Transmit_Parameters command is used to set the antenna switching pattern and permitted Constant Tone Extension types used for transmitting Constant Tone Extensions requested by the peer device on the connection identified by the Connection_Handle parameter.

If the Host issues this command when Constant Tone Extension responses have been enabled on the connection, the Controller shall return the error code Command Disallowed (0x0C).

If the CTE_Types parameter has a bit set for a type of Constant Tone Extension that the Controller does not support, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

The Switching_Pattern_Length and Antenna_IDs[i] parameters are only used when transmitting an AoD Constant Tone Extension and shall be ignored when CTE_Types does not have a bit set for an AoD Constant Tone Extension; they do not affect the transmission of an AoA Constant Tone Extension.

If Switching_Pattern_Length is greater than the maximum length of switching pattern supported by the Controller, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller determines that any of the Antenna_IDs[i] values do not identify an antenna in the device’s antenna array, it shall return the error code Unsupported Feature or Parameter Value (0x11).

Note: Some Controllers may be unable to determine which values do or do not identify an antenna.

Event(s) generated (unless masked away): When the HCI_LE_Set_Connection_CTE_Transmit_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_conn_cte_response_enable(const sdc_hci_cmd_le_conn_cte_response_enable_t *p_params, sdc_hci_cmd_le_conn_cte_response_enable_return_t *p_return)

LE Connection CTE Response Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.86

The HCI_LE_Connection_CTE_Response_Enable command is used to request the Controller to respond to LL_CTE_REQ PDUs with LL_CTE_RSP PDUs on the specified connection.

If the Host issues this command before issuing the HCI_LE_Set_Connection_- CTE_Transmit_Parameters command at least once on the connection, the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command when the transmitter PHY for the connection is not a PHY that allows Constant Tone Extensions, the Controller shall return the error code Command Disallowed (0x0C).

If the transmitter PHY for the connection changes to a PHY that does not allow Constant Tone Extensions, then the Controller shall automatically disable Constant Tone Extension responses.

Event(s) generated (unless masked away): When the HCI_LE_Connection_CTE_Response_Enable command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_antenna_information(sdc_hci_cmd_le_read_antenna_information_return_t *p_return)

LE Read Antenna Information.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.87

The HCI_LE_Read_Antenna_Information command allows the Host to read the switching rates, the sampling rates, the number of antennae, and the maximum length of a transmitted Constant Tone Extension supported by the Controller.

If the Controller does not support antenna switching, the value of Max_Switching_Pattern_Length shall still be valid but will not be used by the Host.

Event(s) generated (unless masked away): When the HCI_LE_Read_Antenna_Information command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_receive_enable(const sdc_hci_cmd_le_set_periodic_adv_receive_enable_t *p_params)

LE Set Periodic Advertising Receive Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.88

The HCI_LE_Set_Periodic_Advertising_Receive_Enable command will enable or disable reports for the periodic advertising train identified by the Sync_Handle parameter.

The Enable parameter determines whether reporting and duplicate filtering are enabled or disabled. If the value is the same as the current state, the command has no effect.

If the periodic advertising train corresponding to the Sync_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Host sets both bits 0 and 1 of Enable and the Controller does not support the Periodic Advertising ADI Support feature, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Receive_Enable command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_periodic_adv_sync_transfer(const sdc_hci_cmd_le_periodic_adv_sync_transfer_t *p_params, sdc_hci_cmd_le_periodic_adv_sync_transfer_return_t *p_return)

LE Periodic Advertising Sync Transfer.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.89

The HCI_LE_Periodic_Advertising_Sync_Transfer command is used to instruct the Controller to send synchronization information about the periodic advertising train identified by the Sync_Handle parameter to a connected device.

The Service_Data parameter is a value provided by the Host for use by the Host of the peer device. It is not used by the Controller.

The connected device is identified by the Connection_Handle parameter.

If the periodic advertising train corresponding to the Sync_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Connection_Handle parameter does not identify a current connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the remote device has not indicated support for the Periodic Advertising Sync Transfer - Recipient feature, the Controller shall return the error code Unsupported Remote Feature (0x1A).

Note: This command may complete before the periodic advertising synchronization information is sent. No indication is given as to how the recipient handled the information.

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Sync_Transfer command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_periodic_adv_set_info_transfer(const sdc_hci_cmd_le_periodic_adv_set_info_transfer_t *p_params, sdc_hci_cmd_le_periodic_adv_set_info_transfer_return_t *p_return)

LE Periodic Advertising Set Info Transfer.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.90

The HCI_LE_Periodic_Advertising_Set_Info_Transfer command is used to instruct the Controller to send synchronization information about the periodic advertising in an advertising set to a connected device.

The Advertising_Handle parameter identifies the advertising set. If the parameters in the advertising set have changed since the periodic advertising was first enabled, the current parameters – not the original ones – are sent.

The Service_Data parameter is a value provided by the Host to identify the periodic advertising train to the peer device. It is not used by the Controller.

The connected device is identified by the Connection_Handle parameter.

If the advertising set corresponding to the Advertising_Handle parameter does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If periodic advertising is not currently in progress for the advertising set, the Controller shall return the error code Command Disallowed (0x0C).

If the Connection_Handle parameter does not identify a current connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the remote device has not indicated support for the Periodic Advertising Sync Transfer - Recipient feature, the Controller shall return the error code Unsupported Remote Feature (0x1A).

Note: This command may complete before the periodic advertising synchronization information is sent. No indication is given as to how the recipient handled the information.

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Set_Info_Transfer command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_sync_transfer_params(const sdc_hci_cmd_le_set_periodic_adv_sync_transfer_params_t *p_params, sdc_hci_cmd_le_set_periodic_adv_sync_transfer_params_return_t *p_return)

LE Set Periodic Advertising Sync Transfer Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.91

The HCI_LE_Set_Periodic_Advertising_Sync_Transfer_Parameters command is used to specify how the Controller will process periodic advertising synchronization information received from the device identified by the Connection_Handle parameter (the “transfer mode”).

The Mode parameter specifies the action to be taken when periodic advertising synchronization information is received. If Mode is 0x00, the Controller will ignore the information. Otherwise it will notify the Host and synchronize to the periodic advertising. Mode also specifies whether periodic advertising reports are initially enabled or disabled and whether duplicates are filtered.

The Skip parameter specifies the number of consecutive periodic advertising packets that the receiver may skip after successfully receiving a periodic advertising packet.

The Sync_Timeout parameter specifies the maximum permitted time between successful receives. If this time is exceeded, synchronization is lost.

Irrespective of the value of the Skip parameter, the Controller should stop skipping packets before the Sync_Timeout would be exceeded.

The CTE_Type parameter specifies whether to only synchronize to periodic advertising with certain types of Constant Tone Extension. If the periodic advertiser changes the type of the Constant Tone Extension after the Controller has synchronized with the periodic advertising, it shall remain synchronized.

Note: A value of 0 (i.e. all bits clear) indicates that the presence or absence of a Constant Tone Extension is irrelevant.

This command does not affect any processing of any periodic advertising synchronization information already received from the peer device, whether or not the Controller has yet synchronized to the periodic advertising train it describes.

The parameter values provided by this command override those provided via the HCI_LE_Set_Default_Periodic_Advertising_Sync_Transfer_Parameters command (Section 7.8.92) or any preferences previously set using the HCI_LE_Set_Periodic_Advertising_Sync_Transfer_Parameters command on the same connection.

If the Connection_Handle parameter does not identify a current connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host sets Mode to 0x03 and the Controller does not support the Periodic Advertising ADI Support feature, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Sync_Transfer_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_default_periodic_adv_sync_transfer_params(const sdc_hci_cmd_le_set_default_periodic_adv_sync_transfer_params_t *p_params)

LE Set Default Periodic Advertising Sync Transfer Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.92

The HCI_LE_Set_Default_Periodic_Advertising_Sync_Transfer_Parameters command is used to specify the initial value for the mode, skip, timeout, and Constant Tone Extension type (set by the HCI_LE_Set_Periodic_Advertising_- Sync_Transfer_Parameters command; see Section 7.8.91) to be used for all subsequent connections over the LE transport.

The Mode parameter specifies the initial action to be taken. If Mode is 0x00, the Controller will ignore the information. Otherwise it will notify the Host and synchronize to the periodic advertising. Mode also specifies whether periodic advertising reports are initially enabled or disabled and whether duplicates are filtered.

The Skip parameter specifies the number of consecutive periodic advertising packets that the receiver may skip after successfully receiving a periodic advertising packet.

The Sync_Timeout parameter specifies the maximum permitted time between successful receives. If this time is exceeded, synchronization is lost.

The CTE_Type parameter specifies whether to only synchronize to periodic advertising with certain types of Constant Tone Extension. If the periodic advertiser changes the type of the Constant Tone Extension after the Controller has synchronized with the periodic advertising, it shall remain synchronized.

Note: A value of 0 (i.e. all bits clear) indicates that the presence or absence of a Constant Tone Extension is irrelevant.

This command does not affect any existing connection.

If the Host sets Mode to 0x03 and the Controller does not support the Periodic Advertising ADI Support feature, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_Set_Default_Periodic_Advertising_Sync_Transfer_- Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_read_buffer_size_v2(sdc_hci_cmd_le_read_buffer_size_v2_return_t *p_return)

LE Read Buffer Size [v2].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.2

This command is used to read the maximum size of the data portion of ACL data packets and isochronous data packets sent from the Host to the Control- ler. The Host shall segment the data transmitted to the Controller according to these values so that the HCI ACL Data packets and HCI ISO Data packets will contain data up to this size (“data” includes optional fields in the HCI ISO Data packet, such as ISO_SDU_Length). The HCI_LE_Read_Buffer_Size command also returns the total number of HCI LE ACL Data packets and iso- chronous data packets that can be stored in the data buffers of the Controller. The HCI_LE_Read_Buffer_Size command shall be issued by the Host before it sends any data to an LE Controller (see Section 4.1.1). If the Controller sup- ports HCI ISO Data packets, it shall return non-zero values for the ISO_Data_- Packet_Length and Total_Num_ISO_Data_Packets parameters.

If the Controller returns a length value of zero for ACL data packets, the Host shall use the HCI_Read_Buffer_Size command to determine the size of the data buffers (shared between BR/EDR and LE transports).

Note: Both the HCI_Read_Buffer_Size command and the HCI_LE_Read_- Buffer_Size command may return buffer length and number of packets param- eter values that are nonzero. This allows a Controller to offer different buffers and number of buffers for BR/EDR data packets and LE data packets.

The LE_ACL_Data_Packet_Length return parameter shall be used to deter- mine the maximum size of the L2CAP PDU segments that are contained in ACL data packets, and which are transferred from the Host to the Controller to be broken up into packets by the Link Layer. The Total_Num_LE_ACL_Data_- Packets return parameter contains the total number of HCI ACL Data packets that can be stored in the data buffers of the Controller. The Host determines how to divide the buffers between different connection handles.

The ISO_Data_Packet_Length return parameter shall be used to determine the maximum size of the SDU segments that are contained in isochronous data packets, and which are transferred from the Host to the Controller. The Total_Num_ISO_Data_Packets return parameter contains the total number of isochronous data packets that can be stored in the data buffers of the Controller. The Host determines how to divide the buffers between different connection handle(s).

Note: The LE_ACL_Data_Packet_Length and ISO_Data_Packet_Length return parameters do not include the length of the HCI ACL Data packet header or the HCI ISO Data packet header respectively.

Event(s) generated (unless masked away): When the HCI_LE_Read_Buffer_Size command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_iso_tx_sync(const sdc_hci_cmd_le_read_iso_tx_sync_t *p_params, sdc_hci_cmd_le_read_iso_tx_sync_return_t *p_return)

LE Read ISO TX Sync.

The description below is extracted from Core_v5.3, Vol 4, Part E, Section 7.8.96

This command is used to read the TX_Time_Stamp and Time_Offset of a transmitted SDU identified by the Packet_Sequence_Number on a CIS or BIS identified by the Connection_Handle parameter on the Central or Peripheral.

The Packet_Sequence_Number parameter contains the sequence number of a transmitted SDU.

The TX_Time_Stamp and Time_Offset parameters are described in [Vol 6] Part G, Section 3.3 and [Vol 6] Part G, Section 3.1 respectively. When the Connection_Handle identifies a CIS or BIS that is transmitting unframed PDUs, the value of Time_Offset returned shall be zero.

If the Host issues this command with a connection handle that does not exist, or the connection handle is not associated with a CIS or BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command on an existing connection handle for a CIS or BIS that is not configured for transmitting SDUs, the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command before an SDU has been transmitted by the Controller, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Read_ISO_TX_Sync command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_cig_params(const sdc_hci_cmd_le_set_cig_params_t *p_params, sdc_hci_cmd_le_set_cig_params_return_t *p_return)

LE Set CIG Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.97

The HCI_LE_Set_CIG_Parameters command is used by a Central’’s Host to create a CIG and to set the parameters of one or more CISes that are associated with a CIG in the Controller.

The CIG_ID parameter identifies a CIG. This parameter is allocated by the Central’s Host and passed to the Peripheral’s Host through the Link Layers during the process of creating a CIS. If the CIG_ID does not exist, then the Controller shall first create a new CIG. Once the CIG is created (whether through this command or previously), the Controller shall modify or add CIS configurations in the CIG that is identified by the CIG_ID and update all the parameters that apply to the CIG.

The SDU_Interval_C_To_P parameter specifies the time interval between the start of consecutive SDUs from the Central’s Host for all the CISes in the CIG. This parameter shall be ignored for all CISes that are unidirectional from Peripheral to Central.

The SDU_Interval_P_To_C parameter specifies the time interval between the start of consecutive SDUs from the Peripheral’s Host for all the CISes in the CIG. This parameter shall be ignored for all CISes that are unidirectional from Central to Peripheral. The Worst_Case_SCA parameter shall be the worst-case sleep clock accuracy of all the Peripherals that will participate in the CIG. The Host should get the sleep clock accuracy from all the Peripherals before issuing this command. If the Host cannot get the sleep clock accuracy from all the Peripherals, it shall set the Worst_Case_SCA parameter to zero.

Note: The Worst_Case_SCA parameter can be used by the Link Layer to better allow for clock drift when scheduling the CISes in the CIG. For example, if a CIS has more than two subevents, the Link Layer of the Central can set the timing of the subevents such that the worst case drift in the Peripheral’s clock will not exceed 2 × Sub_Interval. This prevents the Peripheral from synchronizing its timing to the wrong subevent (adjacent subevents cannot be on the same channel).

The Packing parameter indicates the preferred method of arranging subevents of multiple CISes. The subevents can be arranged in Sequential or Interleaved arrangement (see [Vol 6] Part B, Section 4.5.14.2). This is a recommendation to the Controller which the Controller may ignore. This parameter shall be ignored when there is only one CIS in the CIG.

The Framing parameter indicates the format of the CIS Data PDUs of the specified CISes. If the Framing parameter is set to 1 then the CIS Data PDUs of the specified CISes shall be framed. If the Framing parameter is set to 0 the CIS Data PDUs of a given CIS may be either unframed or framed (determined separately for each specified CIS) (see [Vol 6] Part G, Section 1).

The Max_Transport_Latency_C_To_P parameter contains the maximum transport latency from the Central to the Peripheral, in milliseconds, as described in [Vol 6] Part G, Section 3.2.1 and [Vol 6] Part G, Section 3.2.2. This parameter shall be ignored for all CISes that are unidirectional from Peripheral to Central.

The Max_Transport_Latency_P_To_C parameter contains the maximum transport latency from the Peripheral to the Central, in milliseconds, as described in [Vol 6] Part G, Section 3.2.1 and [Vol 6] Part G, Section 3.2.2. This parameter shall be ignored for all CISes that are unidirectional from Central to Peripheral.

The CIS_Count parameter indicates the number of CIS configurations being modified or added by this command. The Controller shall set the CIS_Count return parameter equal to this.

The CIS_ID[i] parameter identifies a CIS and is set by the Central’s Host and passed to the Peripheral’s Host through the Link Layers during the process of establishing a CIS.

The Max_SDU_C_To_P[i] parameter identifies the maximum size of an SDU from the Central’s Host. If the CIS is unidirectional from Peripheral to Central, this parameter shall be set to 0. If a CIS configuration that is being modified has a data path set in the Central to Peripheral direction and the Host has specified that Max_SDU_C_To_P[i] shall be set to zero, the Controller shall return the error code Command Disallowed (0x0C).

The Max_SDU_P_To_C[i] parameter identifies the maximum size of an SDU from the Peripheral’s Host. If the CIS is unidirectional from Central to Peripheral, this parameter shall be set to 0. If a CIS configuration that is being modified has a data path set in the Peripheral to Central direction and the Host has specified that Max_SDU_P_To_C[i] shall be set to zero, the Controller shall return the error code Command Disallowed (0x0C).

The PHY_C_To_P[i] parameter identifies which PHY to use for transmission from the Central to the Peripheral. The Host shall set at least one bit in this parameter and the Controller shall pick a PHY from the bits that are set.

The PHY_P_To_C[i] parameter identifies which PHY to use for transmission from the Peripheral to the Central. The Host shall set at least one bit in this parameter and the Controller shall pick a PHY from the bits that are set.

The RTN_C_To_P[i] (Retransmission Number) parameter contains the number of times that a CIS Data PDU should be retransmitted from the Central to Peripheral before being acknowledged or flushed (irrespective of which CIS events the retransmission opportunities occur in). If the CIS is unidirectional from Peripheral to Central, this parameter shall be ignored. Otherwise, this parameter is a recommendation to the Controller which the Controller may ignore.

The RTN_P_To_C[i] parameter contains the number of times that a CIS Data PDU should be retransmitted from the Peripheral to Central before being acknowledged or flushed (irrespective of which CIS events the retransmission opportunities occur in). If the CIS is unidirectional from Central to Peripheral, this parameter shall be ignored. Otherwise, this parameter is a recommendation to the Controller which the Controller may ignore.

In each direction, if the Controller satisfies the recommendation, then every PDU will have at least RTN+1 opportunities for transmission (assuming that the initial transmission of that PDU happens at the earliest allowed subevent). The RTN value indicates that the Host is recommending that the Controller selects a combination of CIS parameters that satisfy the inequality:

NSE * FT - NSE ÷ BN * ( BN - 1 ) ≥ RTN + 1

If the Status return parameter is non-zero, then the state of the CIG and its CIS configurations shall not be changed by the command. If the CIG did not already exist, it shall not be created.

If the Status return parameter is zero, then the Controller shall set the Connection_Handle arrayed return parameter to the connection handle(s) corresponding to the CIS configurations specified in the CIS_IDs command parameter, in the same order. If the same CIS_ID is being reconfigured, the same connection handle shall be returned. The connection handle of a CIS shall refer to the CIS when it exists and to the configuration of the CIS stored in a CIG when the CIG exists but the CIS with that CIS_ID does not.

If the Host issues this command when the CIG is not in the configurable state, the Controller shall return the error code Command Disallowed (0x0C).

If the Host attempts to create a CIG or set parameters that exceed the maximum supported resources in the Controller, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the Host attempts to set CIS parameters that exceed the maximum supported connections in the Controller, the Controller shall return the error code Connection Limit Exceeded (0x09).

If the Host sets, in the PHY_C_To_P[i] or PHY_P_To_C[i] parameters, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller does not support asymmetric PHYs and the Host sets PHY_C_To_P[i] to a different value than PHY_P_To_C[i], the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host specifies an invalid combination of CIS parameters, the Controller shall return the error code Invalid HCI Command Parameters (0x12) or the error code Unsupported Feature or Parameter Value (0x11); it should return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the HCI_LE_Set_CIG_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_cig_params_test(const sdc_hci_cmd_le_set_cig_params_test_t *p_params, sdc_hci_cmd_le_set_cig_params_test_return_t *p_return)

LE Set CIG Parameters Test.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.98

The HCI_LE_Set_CIG_Parameters_Test command should only be used for testing purposes.

The command is used by a Central’s Host to create a CIG and to set the parameters of one or more CISes that are associated with a CIG in the Controller.

The CIG_ID parameter identifies a CIG. This parameter is allocated by the Central’s Host and passed to the Peripheral’s Host through the Link Layers during the process of creating a CIS. If the CIG_ID does not exist, then the Controller shall first create a new CIG. Once the CIG is created (whether through this command or previously), the Controller shall modify or add CIS configurations in the CIG that is identified by the CIG_ID and update all the parameters that apply to the CIG.

The SDU_Interval_C_To_P parameter specifies the time interval of periodic SDUs from the Central’s Host. The SDU_Interval_P_To_C parameter specifies the time interval of periodic SDUs from the Peripheral’s Host.

The FT_C_To_P parameter identifies the maximum time for a payload from the Central to Peripheral to be transmitted and re-transmitted, after which it is flushed (see [Vol 6] Part B, Section 4.5.13.5). This parameter is expressed in multiples of ISO_Interval.

The FT_P_To_C parameter identifies the maximum time for a payload from the Peripheral to Central to be transmitted and re-transmitted, after which it is flushed (see[Vol 6] Part B, Section 4.5.13.5). This parameter is expressed in multiples of ISO_Interval.

The ISO_Interval parameter specifies the time between two consecutive CIS anchor points.

The CIS_Count parameter contains the number of CIS configurations being added or modified by this command. The Controller shall set the CIS_Count return parameter equal to this.

The CIS_ID[i] parameter identifies the CIS and is set by the Central’s Host and passed to the Peripheral’s Host through the Link Layers during the process of establishing a CIS.

The Worst_Case_SCA parameter is the worst-case sleep clock accuracy of all the Peripherals that will participate in the CIG. The Host should get the sleep clock accuracy from all the Peripherals before issuing this command. In case the Host cannot get the sleep clock accuracy from all the Peripherals, it shall set the Worst_Case_SCA parameter to zero.

Note: The Worst_Case_SCA parameter can be used by the Link Layer to better allow for clock drift when scheduling the CISes in the CIG. For example, if a CIS has more than two subevents, the Link Layer of the Central can set the timing of the subevents such that the worst case drift in the Peripheral’s clock will not exceed 2 × Sub_Interval. This prevents the Peripheral from synchronizing its timing to the wrong subevent (adjacent subevents cannot be on the same channel).

The Packing parameter is used to indicate the preferred method of arranging subevents of multiple CISes. The subevents can be arranged in Sequential or Interleaved arrangement. This is a recommendation to the Controller which it may ignore. This parameter shall be ignored when there is only one CIS in the CIG.

The Framing parameter indicates the format of the CIS Data PDUs of all the CISes. If the Framing parameter is set to 1 then the CIS Data PDUs of the specified CISes shall be framed, and when set to 0 they shall be unframed (see [Vol 6] Part G, Section 1).

The CIS_ID[i] parameter is used to identify a CIS. The NSE[i] parameter identifies the maximum number of subevents for each CIS in a CIG event.

The Max_SDU_C_To_P[i] parameter identifies the maximum size of SDU from the Central’s Host. If the CIS is unidirectional from Peripheral to Central, this parameter shall be set to 0. If a CIS configuration that is being modified has a data path set in the Central to Peripheral direction and the Host has specified that Max_SDU_C_To_P[i] shall be set to zero, the Controller shall return the error code Command Disallowed (0x0C). The minimum value of the Max_SDU_Size parameter in the ISO Transmit Test mode when the Payload_Type = 1 or 2 shall be 4 octets.

The Max_SDU_P_To_C[i] parameter identifies the maximum size of SDU from the Peripheral’s Host. If the CIS is unidirectional from Central to Peripheral, this parameter shall be set to 0. If a CIS configuration that is being modified has a data path set in the Peripheral to Central direction and the Host has specified that Max_SDU_P_To_C[i] shall be set to zero, the Controller shall return the error code Command Disallowed (0x0C).The minimum value of the Max_SDU parameter in the ISO Transmit Test mode when the Payload_Type = 1 or 2 shall be 4 octets.

The Max_PDU_C_To_P[i] parameter identifies the maximum size PDU from the Central to Peripheral.

The Max_PDU_P_To_C[i] parameter identifies the maximum size PDU from the Peripheral to Central.

The PHY_C_To_P[i] parameter identifies the PHY to be used for transmission of packets from the Central to the Peripheral. The Host shall set only one bit in this parameter and the Controller shall use the PHY set by the Host.

The PHY_P_To_C[i] parameter identifies the PHY to be used for transmission of packets from the Peripheral to the Central. The Host shall set only one bit in this parameter and the Controller shall use the PHY set by the Host.

The BN_C_To_P[i] parameter identifies the burst number for Central to Peripheral (see [Vol 6] Part B, Section 4.5.13). If the CIS is unidirectional from Peripheral to Central, this parameter shall be set to zero.

The BN_P_To_C[i] parameter identifies the burst number for Peripheral to Central (see [Vol 6] Part B, Section 4.5.13). If the CIS is unidirectional from Central to Peripheral, this parameter shall be set to zero.

If the Status return parameter is non-zero, then the state of the CIG and its CIS configurations shall not be changed by the command. If the CIG did not already exist, it shall not be created.

If the Status return parameter is zero, then the Controller shall set the Connection_Handle arrayed return parameter to the connection handle(s) corresponding to the CIS configurations specified in the CIS_IDs command parameter, in the same order. If the same CIS_ID is being reconfigured, the same connection handle shall be returned.

If the Host issues this command when the CIG is not in the configurable state, the Controller shall return the error code Command Disallowed (0x0C).

If the Host attempts to create a CIG or set parameters that exceed the maximum supported resources in the Controller, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the Host attempts to set CIS parameters that exceed the maximum supported connections in the Controller, the Controller shall return the error code Connection Limit Exceeded (0x09).

If the Host attempts to set an invalid combination of CIS parameters, the Controller shall return the error code Invalid HCI Command Parameters (0x12) or the error code Unsupported Feature or Parameter Value (0x11); it should return the error code Invalid HCI Command Parameters (0x12).

If the Host sets, in the PHY_C_To_P[i] or PHY_P_To_C[i] parameters, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Controller does not support asymmetric PHYs and the Host sets PHY_C_To_P[i] to a different value than PHY_P_To_C[i], the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_Set_CIG_Parameters_Test command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_create_cis(const sdc_hci_cmd_le_create_cis_t *p_params)

LE Create CIS.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.99

The HCI_LE_Create_CIS command is used by the Central’s Host to create one or more CISes using the connections identified by the ACL_Connection_- Handle arrayed parameter.

The CIS_Count parameter is the total number of CISes created by this command.

The CIS_Connection_Handle[i] parameter specifies the connection handle corresponding to the configuration of the CIS to be created and whose configuration is already stored in a CIG.

The ACL_Connection_Handle[i] parameter specifies the connection handle of the ACL connection associated with each CIS to be created. The list of the ACL_Connection_Handles shall be in the same order as the list of the CIS_Connection_Handles e.g., CIS_Connection_Handle[1] will connect to the Peripheral associated with the ACL_Connection_Handle[1].

If this command is issued on the Central before the devices have performed the Feature Exchange procedure, then the Controller shall complete that pro- cedure before initiating the Connected Isochronous Stream Creation procedure (see [Vol 6] Part B, Section 5.1.15).

If any ACL_Connection_Handle[i] is not the handle of an existing ACL connection or any CIS_Connection_Handle[i] is not the handle of a CIS or CIS configuration, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host attempts to create a CIS that has already been created, the Controller shall return the error code Connection Already Exists (0x0B).

If two different elements of the CIS_Connection_Handle arrayed parameter identify the same CIS, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command before all the HCI_LE_CIS_Established events from the previous use of the command have been generated, the Controller shall return the error code Command Disallowed (0x0C). If the Host issues this command on an ACL_Connection_Handle where the Controller is the Peripheral, the Controller shall return the error code Command Disallowed (0x0C).

Note: The order of the CIS connection handles in this command does not relate to the order of connection handles in the return parameters of the HCI_LE_- Set_CIG_Parameters command or the HCI_LE_Set_CIG_Parameters_Test command.

If the Host issues this command when the Connected Isochronous Stream (Host Support) feature bit (see [Vol 6] Part B, Section 4.6.27) is not set, the Controller shall return the error code Command Disallowed (0x0C).

If the Host specified an invalid combination of parameters in the HCI_LE_Set_- CIG_Parameters or HCI_LE_Set_CIG_Parameters_Test command that cre- ated the CIS configuration, but the Controller could not detect the problem without knowing the properties of the ACL connection associated with the CIS, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

Note: If an error is reported in the HCI_Command_Status event, it means that no CIS is created and the Host cannot determine which CIS had the error. Therefore, in the case of an error that only affects one CIS of several, reporting the error in the HCI_LE_CIS_Established event for that CIS means that the remaining CISes are still created and the Host can determine which CIS had the error.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Create_CIS command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_CIS_Established event will be generated for each CIS when it is established or if it is disconnected or considered lost before being established; until all the events are generated, the command remains pending.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_remove_cig(const sdc_hci_cmd_le_remove_cig_t *p_params, sdc_hci_cmd_le_remove_cig_return_t *p_return)

LE Remove CIG.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.100

The HCI_LE_Remove_CIG command is used by the Central’s Host to remove the CIG identified by CIG_ID.

The CIG_ID parameter contains the identifier of the CIG.

This command shall delete the CIG_ID and also delete the Connection_Handles of the CIS configurations stored in the CIG.

This command shall also remove the isochronous data paths that are associated with the Connection_Handles of the CIS configurations, which is equivalent to issuing the HCI_LE_Remove_ISO_Data_Path command (see Section 7.8.110).

If the Host tries to remove a CIG which is in the active state, then the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command with a CIG_ID that does not exist, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Remove_CIG command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_accept_cis_request(const sdc_hci_cmd_le_accept_cis_request_t *p_params)

LE Accept CIS Request.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.101

The HCI_LE_Accept_CIS_Request command is used by the Peripheral’s Host to inform the Controller to accept the request for the CIS that is identified by the Connection_Handle.

The command shall only be issued after an HCI_LE_CIS_Request event has occurred. The event contains the Connection_Handle of the CIS.

If the Peripheral’s Host issues this command with a Connection_Handle that does not exist, or the Connection_Handle is not for a CIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Peripheral’s Host issues this command with a Connection_Handle for a CIS that has already been established or that already has an HCI_LE_- Accept_CIS_Request or HCI_LE_Reject_CIS_Request command in progress, the Controller shall return the error code Command Disallowed (0x0C).

If the Central’s Host issues this command, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Accept_CIS_Request command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_CIS_Established event will be generated when the CIS is established or is considered lost before being established.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_reject_cis_request(const sdc_hci_cmd_le_reject_cis_request_t *p_params, sdc_hci_cmd_le_reject_cis_request_return_t *p_return)

LE Reject CIS Request.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.102

The HCI_LE_Reject_CIS_Request command is used by the Peripheral’s Host to inform the Controller to reject the request for the CIS that is identified by the Connection_Handle.

The command shall only be issued after an HCI_LE_CIS_Request event has occurred. The event contains the Connection_Handle of the CIS.

When this command succeeds, the Controller shall delete the Connection_Handle of the requested CIS.

The Reason command parameter indicates the reason for rejecting the CIS request.

If the Peripheral’s Host issues this command with a Connection_Handle that is not for a CIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Peripheral’s Host issues this command with a Connection_Handle for a CIS that has already been established or that already has an HCI_LE_- Accept_CIS_Request or HCI_LE_Reject_CIS_Request command in progress, the Controller shall return the error code Command Disallowed (0x0C).

If the Central’s Host issues this command, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Reject_CIS_Request command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_create_big(const sdc_hci_cmd_le_create_big_t *p_params)

LE Create BIG.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.103

The HCI_LE_Create_BIG command is used to create a BIG with one or more BISes (see [Vol 6] Part B, Section 4.4.6). All BISes in a BIG have the same value for all parameters.

The BIG_Handle contains the identifier of the BIG. This parameter is allocated by the Host and used by the Controller and the Host to identify a BIG.

The Advertising_Handle identifies the associated periodic advertising train of the BIG (see [Vol 6] Part B, Section 4.4.5.1).

The Num_BIS parameter contains the total number of BISes in the BIG.

The SDU_Interval parameter contains the time interval of the periodic SDUs.

The Max_SDU parameter contains the maximum size of an SDU.

The Max_Transport_Latency parameter is the maximum transport latency (in milliseconds) as described in [Vol 6] Part G, Section 3.2.1 and [Vol 6] Part G, Section 3.2.2. This includes pre-transmissions.

The RTN (Retransmission Number) parameter contains the number of times every PDU should be retransmitted, irrespective of which BIG events the retransmissions occur in. This is a recommendation to the Controller which the Controller may ignore.

The PHY parameter is a bit field that indicates the PHY used for transmission of PDUs of BISes in the BIG. The Host shall set at least one bit in this parameter and the Controller shall pick a PHY from the bits set. If the Host sets, in the PHY parameter, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

The Packing parameter is used to indicate the preferred method of arranging subevents of multiple BISes. The subevents can be arranged in Sequential or Interleaved arrangement. This is a recommendation to the Controller which it may ignore. This parameter shall be ignored when there is only one BIS in the BIG.

The Framing parameter indicates the format for sending BIS Data PDUs. If the Framing parameter is set to 1 then BIS Data PDUs shall be Framed and when set to 0 they may be unframed (see [Vol 6] Part G, Section 1).

The Encryption parameter identifies the encryption mode of the BISes. If the Encryption parameter is set to 1 (encrypted), the Broadcast_Code is used in the encryption of payloads (see [Vol 6] Part B, Section 4.4.6.10).

The Broadcast_Code parameter is used to generate the encryption key for encrypting payloads of all BISes. When the Encryption parameter is set to 0 (unencrypted), the Broadcast_Code parameter shall be set to zero by the Host and ignored by the Controller.

If the Controller cannot create all BISes of the BIG or if Num_BIS exceeds the maximum value supported by the Controller, it shall return the error code Connection Rejected due to Limited Resources (0x0D).

If the Advertising_Handle does not identify a periodic advertising train or the periodic advertising train is associated with another BIG, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Host issues this command with a BIG_Handle for a BIG that is already created, the Controller shall return the error code Command Disallowed (0x0C).

If the Host specifies an invalid combination of BIG parameters, the Controller shall return an error which should use the error code Invalid HCI Command Parameters (0x12).

If the length of the associated periodic advertising, with the BIGInfo added to the ACAD, is greater than the maximum that the Controller can transmit within the periodic advertising interval, then the Controller shall return an error and should use the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, then the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Create_BIG command, the Control- ler sends the HCI_Command_Status event to the Host. When the HCI_LE_- Create_BIG command has completed, the HCI_LE_Create_BIG_Complete event is generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_create_big_test(const sdc_hci_cmd_le_create_big_test_t *p_params)

LE Create BIG Test.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.104

The HCI_LE_Create_BIG_Test command should only be used for testing purposes.

The command is used to create one or more BISes of a BIG (see [Vol 6] Part B, Section 4.4.6). All BISes in the BIG have the same values for all parameters.

The BIG_Handle contains the identifier of the BIG. This parameter is allocated by the Host and used by the Controller and the Host to identify a BIG.

The Advertising_Handle identifies the associated periodic advertising train of the BIG.

The Num_BIS parameter contains the total number of BISes in the BIG.

The SDU_Interval parameter specifies the time interval of the periodic SDUs.

The ISO_Interval parameter contains the time duration between two consecutive BIG anchor points.

The NSE (Number of SubEvents) parameter contains the total number of subevents that are used to transmit BIS Data PDUs for each BIS in a BIG event. The NSE parameter shall be greater than or equal to IRC * BN. The Max_SDU parameter contains the maximum size, in octets, of an SDU. The minimum value of the Max_SDU parameter in the ISO Transmit Test mode when the Payload_Type = 1 or 2 shall be 4.

The Max_PDU parameter contains the maximum size of every BIS Data PDU for every BIS in the BIG.

The PHY parameter is a bit field that indicates the PHY used for transmission of PDUs of BISes in the BIG. The Host shall set only one bit in this parameter and the Controller shall use the PHY set by the Host. If the Host sets, in the PHY parameter, a bit for a PHY that the Controller does not support, including a bit that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

The Packing parameter indicates the preferred method of arranging subevents of multiple BISes. The subevents can be arranged in Sequential or Interleaved arrangement. This is a recommendation to the Controller which it may ignore. This parameter shall be ignored when there is only one BIS in the BIG.

The Framing parameter indicates the format of BIS Data PDUs. If the Framing parameter is set to 1 then BIS Data PDUs shall be Framed and when set to 0 the BIS Data PDUs shall be unframed (see [Vol 6] Part G, Section 1).

The BN (Burst Number) parameter contains the number of new payloads for each BIS in a BIS event.

The IRC (Immediate Repetition Count) parameter contains the number of times the scheduled data packet is transmitted (see [Vol 6] Part B, Section 4.4.6). The IRC parameter shall be an integer in the range 1 to (NSE ÷ BN).

The PTO (Pre_Transmission_Offset) parameter contains the offset in number of ISO_Intervals for pre transmissions of data packets (see [Vol 6] Part B, Section 4.4.6).

The Encryption parameter identifies the encryption mode of the BISes in the BIG. If the Encryption parameter is set to 1 (encrypted), the Broadcast_Code is used in the encryption of payloads (see [Vol 6] Part B, Section 4.4.6).

The Broadcast_Code parameter is a 16-octet field that is used to generate the session key to encrypt payloads of all BISes in the BIG. When the Encryption parameter is set to 0 (unencrypted), all 16 octets of the Broadcast_Code parameter shall be set to zero by the Host and ignored by the Controller.

If the Controller cannot create all BISes of the BIG or if Num_BIS exceeds the maximum value supported by the Controller, it shall return the error code Connection Rejected due to Limited Resources (0x0D).

If the Advertising_Handle does not identify a periodic advertising train or the periodic advertising train is associated with another BIG, the Controller shall return the error code Unknown Advertising Identifier (0x42). If the Host issues this command with a BIG_Handle for a BIG that is already created, the Controller shall return the error code Command Disallowed (0x0C).

If the value of the Max_PDU, NSE, BN, IRC or PTO parameters exceeds the values supported by the Controller, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host specifies an invalid combination of BIG parameters, the Controller shall return an error. If the value of the NSE parameter is not an integer multiple of BN, or NSE is less than (IRC * BN), or the parameters are not in the specified range, these errors shall use the error code Unsupported Feature or Parameter Value (0x11). The errors in all other circumstances should use the error code Invalid HCI Command Parameters (0x12).

If the length of the associated periodic advertising, with the BIGInfo added to the ACAD, is greater than the maximum that the Controller can transmit within the periodic advertising interval, then the Controller shall return an error and should use the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, then the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Create_BIG_Test command, the Controller sends the HCI_Command_Status event to the Host. When the HCI_LE_Create_BIG_Test command has completed, the HCI_LE_Create_- BIG_Complete event is generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_terminate_big(const sdc_hci_cmd_le_terminate_big_t *p_params)

LE Terminate BIG.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.105

The HCI_LE_Terminate_BIG command is used to terminate a BIG identified by the BIG_Handle parameter. The command also terminates the transmission of all BISes of the BIG, destroys the associated connection handles of the BISes in the BIG and removes the data paths for all BISes in the BIG.

The Reason parameter is used to indicate the reason why the BIG is to be terminated.

If the BIG_Handle does not identify a BIG, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Controller is not the Isochronous Broadcaster for the BIG identified by BIG_Handle, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Terminate_BIG command, the Controller sends the HCI_Command_Status event to the Host.

When the HCI_LE_Terminate_BIG command has completed, the HCI_LE_- Terminate_BIG_Complete event will be generated. If the Host attempts to terminate a BIG while the process of establishment of the BIG is in progress (i.e. HCI_LE_Create_BIG_Complete event has not been generated) the process of establishment shall stop and the Controller shall generate the HCI_LE_Create_BIG_Complete event to the Host with the error code Operation Cancelled by Host (0x44).

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_big_create_sync(const sdc_hci_cmd_le_big_create_sync_t *p_params)

LE BIG Create Sync.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.106

The HCI_LE_BIG_Create_Sync command is used to synchronize to a BIG described in the periodic advertising train specified by the Sync_Handle parameter.

The BIG_Handle parameter is assigned by the Host to identify the synchronized BIG.

The Encryption parameter indicates whether the Broadcast_Code parameter is valid.

The Broadcast_Code parameter is a 16-octet field that is used to generate the session key to encrypt or decrypt payloads of an encrypted BIS. Broadcast_Code shall be ignored by the Controller if Encryption is set to 0x00.

If Encryption is set to 0x00 for an encrypted BIG or is set to 0x01 for an unencrypted BIG, then the Controller shall return the error Encryption Mode Not Acceptable (0x25).

The MSE (Maximum Subevents) parameter is the maximum number of subevents that a Controller should use to receive data payloads in each interval for a BIS.

The BIG_Sync_Timeout parameter specifies the maximum permitted time between successful receptions of BIS PDUs. If this time is exceeded, synchronization is lost. When the Controller establishes synchronization and if the BIG_Sync_Timeout set by the Host is less than 6 * ISO_Interval, the Controller shall set the timeout to 6 * ISO_Interval.

The Num_BIS parameter contains the number of BIS indices specified in the BIS arrayed parameter. The number of BISes requested may be a subset of the BISes available in the BIG. The BIS arrayed parameter is a list of indices corresponding to BIS(es) in the synchronized BIG. The list of BIS indices shall be in ascending order and shall not contain any duplicates. This list of specified BIS(es) may be all or a subset of BISes available in the BIG.

If the Sync_Handle does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Host sends this command with a BIG_Handle that is already allocated, the Controller shall return the error code Command Disallowed (0x0C).

If the information describing the BIG does not specify a PHY supported by the Controller or does not specify exactly one PHY, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Num_BIS parameter is greater than the total number of BISes in the BIG, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host sends this command when the Controller is in the process of synchronizing to any BIG, i.e. the HCI_LE_BIG_Sync_Established event has not been generated, the Controller shall return the error code Command Disallowed (0x0C).

If the Controller is unable to receive PDUs from the specified number of BISes in the synchronized BIG, it shall return the error code Connection Rejected Due To Limited Resources (0x0D).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_BIG_Create_Sync command, the Controller sends the HCI_Command_Status event to the Host. When the HCI_LE_BIG_Create_Sync command has completed, the HCI_LE_BIG_- Sync_Established event will be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_big_terminate_sync(const sdc_hci_cmd_le_big_terminate_sync_t *p_params, sdc_hci_cmd_le_big_terminate_sync_return_t *p_return)

LE BIG Terminate Sync.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.107

The HCI_LE_BIG_Terminate_Sync command is used to stop synchronizing or cancel the process of synchronizing to the BIG identified by the BIG_Handle parameter. The command also terminates the reception of BISes in the BIG specified in the HCI_LE_BIG_Create_Sync command, destroys the associated connection handles of the BISes in the BIG and removes the data paths for all BISes in the BIG.

If the Host issues this command with a BIG_Handle that does not exist, the Controller shall return the error code Unknown Advertising Identifier (0x42).

If the Host issues this command for a BIG which it is neither synchronized to nor in the process of synchronizing to, then the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_BIG_Terminate_Sync command has completed, an HCI_Command_Complete event shall be generated.

If the Host attempts to terminate synchronization with a BIG while the process of synchronization with that BIG is in progress (i.e. HCI_LE_BIG_Sync_- Established event has not been generated) the process of synchronization shall stop, and the Controller shall generate the HCI_LE_BIG_Sync_- Established event to the Host with the error code Operation Cancelled by Host (0x44).

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_request_peer_sca(const sdc_hci_cmd_le_request_peer_sca_t *p_params)

LE Request Peer SCA.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.108

This command is used to read the Sleep Clock Accuracy (SCA) of the peer device.

The Connection_Handle parameter is the connection handle of the ACL connection.

If the Host sends this command with a Connection_Handle that does not exist, or the Connection_Handle is not for an ACL the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host sends this command and the peer device does not support the Sleep Clock Accuracy Updates feature, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11) in the HCI_LE_- Request_Peer_SCA_Complete event.

If the Host issues this command when the Controller is aware (e.g., through a previous feature exchange) that the peer device’s Link Layer does not support the Sleep Clock Accuracy Updates feature, the Controller shall return the error code Unsupported Remote Feature (0x1A).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Request_Peer_SCA command, the Controller sends the HCI_Command_Status event to the Host. When the HCI_LE_Request_Peer_SCA command has completed, the HCI_LE_- Request_Peer_SCA_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_setup_iso_data_path(const sdc_hci_cmd_le_setup_iso_data_path_t *p_params, sdc_hci_cmd_le_setup_iso_data_path_return_t *p_return)

LE Setup ISO Data Path.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.109

The HCI_LE_Setup_ISO_Data_Path command is used to identify and create the isochronous data path between the Host and the Controller for a CIS, CIS configuration, or BIS identified by the Connection_Handle parameter. This command can also be used to configure a codec for each data path. When a connection is created no data paths are set up for that connection.

The input and output directions are defined from the perspective of the Controller, so “input” refers to data flowing from the Host to the Controller.

If the Host issues this command more than once for the same Connection_- Handle and direction before issuing the HCI_LE_Remove_ISO_Data_Path command for that Connection_Handle and direction, the Controller shall return the error code Command Disallowed (0x0C).

If the Host issues this command for a CIS on a Peripheral before it has issued the HCI_LE_Accept_CIS_Request command for that CIS, then the Controller shall return the error code Command Disallowed (0x0C).

The Data_Path_Direction parameter specifies the direction for which the data path is being configured.

The Data_Path_ID parameter specifies the data transport path used. When set to 0x00, the data path shall be over the HCI transport. When set to a value in the range 0x01 to 0xFE, the data path shall use a vendor-specific transport interface (e.g., a PCM interface) with logical transport numbers. The meanings of these logical transport numbers are vendor-specific.

If the Host issues this command for a vendor-specific data transport path that has not been configured, the Controller shall return the error code Command Disallowed (0x0C).

If the Host attempts to set a data path with a Connection Handle that does not exist or that is not for a CIS, CIS configuration, or BIS, the Controller shall return the error code Unknown Connection Identifier (0x02). If the Host attempts to set an output data path using a connection handle that is for an Isochronous Broadcaster, for an input data path on a Synchronized Receiver, or for a data path for the direction on a unidirectional CIS where BN is set to 0, the Controller shall return the error code Command Disallowed (0x0C).

The Codec_ID parameter specifies the coding format used over the air.

When Data_Path_Direction is set to 0x00 (input), the Controller_Delay param- eter specifies the delay at the data source from the reference time of an SDU to the CIG reference point (see [Vol 6] Part B, Section 4.5.14.1) or BIG anchor point (see [Vol 6] Part B, Section 4.4.6.4). When Data_Path_Direction is set to 0x01 (output), Controller_Delay specifies the delay from the SDU_Synchronization_Reference to the point in time at which the Controller begins to transfer the corresponding data to the data path interface. The Host should use the HCI_Read_Local_Supported_Controller_Delay command to obtain a suitable value for Controller_Delay.

Note: Controller vendors may provide additional guidance to the Host on how to select a suitable Controller_Delay value from the range of values provided by the HCI_Read_Local_Supported_Controller_Delay command for various configurations of the data path interface.

The Codec_Configuration parameter specifies codec-specific configuration information for the specified direction.

If the Host issues this command with Codec_Configuration_Length non-zero and Codec_ID set to transparent air mode, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command with codec-related parameters that exceed the bandwidth and latency allowed on the established CIS or BIS identified by the Connection_Handle parameter, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

Event(s) generated (unless masked away): When the HCI_LE_Setup_ISO_Data_Path command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_remove_iso_data_path(const sdc_hci_cmd_le_remove_iso_data_path_t *p_params, sdc_hci_cmd_le_remove_iso_data_path_return_t *p_return)

LE Remove ISO Data Path.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.110

The HCI_LE_Remove_ISO_Data_Path command is used to remove the input and/or output data path(s) associated with a CIS, CIS configuration, or BIS identified by the Connection_Handle parameter.

The Data_Path_Direction parameter specifies which directions are to have the data path removed.

If the Host issues this command with a Connection_Handle that does not exist or is not for a CIS, CIS configuration, or BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command for a data path that has not been set up (using the HCI_LE_Setup_ISO_Data_Path command), the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Remove_ISO_Data_Path command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_iso_transmit_test(const sdc_hci_cmd_le_iso_transmit_test_t *p_params, sdc_hci_cmd_le_iso_transmit_test_return_t *p_return)

LE ISO Transmit Test.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.111

The HCI_LE_ISO_Transmit_Test command should only be used in the ISO Test mode and only for testing purposes.

The command is used to configure an established CIS or BIS specified by the Connection_Handle parameter, and transmit test payloads which are generated by the Controller.

The Payload_Type parameter defines the configuration of SDUs in the payload.

If the Host issues this command with a connection handle that does not exist, or the Connection_Handle command parameter is not associated with a CIS or a BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command when the value of the transmit BN parameter of the CIS is set to zero, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host has set the input data path for the CIS or BIS identified by the connection handle, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_ISO_Transmit_Test command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_iso_receive_test(const sdc_hci_cmd_le_iso_receive_test_t *p_params, sdc_hci_cmd_le_iso_receive_test_return_t *p_return)

LE ISO Receive Test.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.112

The HCI_LE_ISO_Receive_Test command should only be used in the ISO Test mode and only for testing purposes.

The command is used to configure an established CIS or a synchronized BIG specified by the Connection_Handle parameter to receive payloads.

When using this command for a BIS, the Host shall synchronize with a BIG using the HCI_LE_BIG_Create_Sync command before invoking this command.

The Payload_Type parameter defines the configuration of SDUs in the payload.

If the Host issues this command with a connection handle that is not for an established CIS or a BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command when the value of the receive BN parameter of the CIS or BIS is set to zero, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host has set the output data path for the CIS or BIS identified by the Connection_Handle parameter, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_ISO_Receive_Test command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_iso_read_test_counters(const sdc_hci_cmd_le_iso_read_test_counters_t *p_params, sdc_hci_cmd_le_iso_read_test_counters_return_t *p_return)

LE ISO Read Test Counters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.113

The HCI_LE_ISO_Read_Test_Counters command should only be used in the ISO Test mode and only for testing purposes.

The command is used to read the test counters (see [Vol 6] Part B, Section 7) in the Controller which is configured in ISO Receive Test mode for a CIS or BIS specified by the Connection_Handle. Reading the test counters does not reset the test counters.

The Received_SDU_Count, Missed_SDU_Count and Failed_SDU_Count parameters are set in the ISO Receive Test mode (see [Vol 6] Part B, Section 7.2).

If the Host issues this command with a Connection_Handle parameter that is not for an established CIS or a BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command for a CIS or BIS that is not configured in the ISO Receive Test mode, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_ISO_Read_Test_Counters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_iso_test_end(const sdc_hci_cmd_le_iso_test_end_t *p_params, sdc_hci_cmd_le_iso_test_end_return_t *p_return)

LE ISO Test End.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.114

The HCI_LE_ISO_Test_End command should only be used in the ISO Test mode and only for testing purposes.

The command is used to terminate the ISO Transmit and/or Receive Test mode for a CIS or BIS specified by the Connection_Handle parameter but does not terminate the CIS or BIS.

When the Host terminates the ISO Test mode for a CIS or BIS that is set to ISO Transmit Test mode only, the test counters in the return parameters shall be set to zero.

When the Host terminates the ISO Test mode for a CIS or BIS that is set to the ISO Receive Test mode, the return parameters contain the values of the test counters as defined in [Vol 6] Part B, Section 7.

If the Host issues this command with a Connection_Handle that is not for an established CIS or a BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command for a CIS or BIS that is not configured in the ISO Transmit or Receive Test mode, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

Event(s) generated (unless masked away): When the HCI_LE_ISO_Test_End command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_host_feature(const sdc_hci_cmd_le_set_host_feature_t *p_params)

LE Set Host Feature.

The description below is extracted from Core_v5.3, Vol 4, Part E, Section 7.8.115

The HCI_LE_Set_Host_Feature command is used by the Host to set or clear a bit controlled by the Host in the Link Layer FeatureSet stored in the Controller (see [Vol 6] Part B, Section 4.6).

The Bit_Number parameter specifies the bit position in the FeatureSet.

The Bit_Value parameter specifies whether the feature is enabled or disabled.

If Bit_Number specifies a feature bit that is not controlled by the Host, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If Bit_Value is set to 0x01 and Bit_Number specifies a feature bit that requires support of a feature that the Controller does not support, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Host issues this command while the Controller has a connection to another device, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Set_Host_Feature command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

Returns value between 0x01-0xFF in case of error. See Vol 2, Part D, Error for a list of error codes and descriptions.

LE Read ISO Link Quality.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.116

This command returns the values of various counters related to link quality that are associated with the isochronous stream specified by the Connection_Handle parameter.

This command may be issued on both the Central and Peripheral if the connection handle identifies a CIS and on the Synchronized Receiver if the connection handle identifies a BIS.

Each of the remaining return parameters shall contain the current value of the corresponding counter; all the values shall be recorded at the same moment. Each counter shall be a 32-bit unsigned value, shall be initialized to zero when the isochronous stream is created, and shall be incremented as described below. If a counter is not associated with the type of isochronous stream specified, the value of the parameter shall be ignored.

                              Associated
Counter Streams When Incremented

TX_UnACKed_Packets CIS The Link Layer does not receive an acknowledgment for a CIS Data PDU that it transmitted at least once by its flush point (see [Vol 6] Part B, Section 4.5.13.5).

TX_Flushed_Packets CIS The Link Layer does not transmit a spe- cific payload by its flush point.

TX_Last_Subevent_- CIS in Peripheral The Link Layer transmits a CIS Data Packets role PDU in the last subevent of a CIS event.

Retransmitted_Packets CIS The Link Layer retransmits a CIS Data PDU.

Table 7.3: Isochronous streams link quality counters Associated Counter Streams When Incremented

CRC_Error_Packets CIS and BIS The Link Layer receives a packet with a CRC error.

RX_Unreceived_Packets CIS and BIS The Link Layer does not receive a spe- cific payload by its flush point (on a CIS) or the end of the event it is associ- ated with (on a BIS; see [Vol 6] Part B, Section 4.4.6.6).

Duplicate_Packets CIS The Link Layer receives a retransmis- sion of a CIS Data PDU.

Table 7.3: Isochronous streams link quality counters

If the Connection_Handle parameter does not identify a current CIS connection or a BIS that the Controller is synchronized to, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Read_ISO_Link_Quality command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_enhanced_read_transmit_power_level(const sdc_hci_cmd_le_enhanced_read_transmit_power_level_t *p_params, sdc_hci_cmd_le_enhanced_read_transmit_power_level_return_t *p_return)

LE Enhanced Read Transmit Power Level.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.117

The HCI_LE_Enhanced_Read_Transmit_Power_Level command is used to read the current and maximum transmit power levels of the local Controller on the ACL connection identified by the Connection_Handle parameter and the PHY indicated by the PHY parameter.

If the Host sets PHY to a value that the Controller does not support, including a value that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Connection_Handle parameter does not identify a current ACL connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Enhanced_Read_Transmit_Power_Level command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_read_remote_transmit_power_level(const sdc_hci_cmd_le_read_remote_transmit_power_level_t *p_params)

LE Read Remote Transmit Power Level.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.118

The HCI_LE_Read_Remote_Transmit_Power_Level command is used to read the transmit power level used by the remote Controller on the ACL connection that is identified by the Connection_Handle parameter and the PHY indicated by the PHY parameter.

The local Controller may use the remote transmit power level value obtained from a prior Power Change Indication or Power Control Request procedure (see [Vol 6] Part B, Section 5.1.17 and [Vol 6] Part B, Section 5.1.18). If the Controller chooses not to use these prior values, or if no prior value is available for one or more of the remote transmit power level, maximum transmit power level, or minimum transmit power level, the local Controller shall initiate a new Power Control Request procedure to obtain the remote transmit power level.

If the Host sets PHY to a value that the Controller does not support, including a value that is reserved for future use, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

If the Connection_Handle parameter does not identify a current ACL connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Read_Remote_Transmit_Power_- Level command, the Controller shall send the HCI_Command_Status event to the Host. When the Controller has determined the remote transmit power, it shall generate an HCI_LE_Transmit_Power_Reporting event with Reason 0x02.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_path_loss_reporting_params(const sdc_hci_cmd_le_set_path_loss_reporting_params_t *p_params, sdc_hci_cmd_le_set_path_loss_reporting_params_return_t *p_return)

LE Set Path Loss Reporting Parameters.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.119

The HCI_LE_Set_Path_Loss_Reporting_Parameters command is used to set the path loss threshold reporting parameters for the ACL connection identified by the Connection_Handle parameter.

The path loss threshold-based mechanism is described in [Vol 6] Part B, Section 4.5.16. For each zone boundary, the upwards boundary shall equal the threshold plus the hysteresis and the downwards boundary shall equal the threshold minus the hysteresis.

If the Host issues this command with High_Threshold+High_Hysteresis greater than 0xFF or with Low_Threshold less than Low_Hysteresis, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command with Low_Threshold greater than High_Threshold or with Low_Threshold+Low_Hysteresis greater than High_Threshold–High_Hysteresis, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

The Min_Time_Spent parameter indicates the minimum time that the Controller shall observe the path loss has crossed the threshold before the Controller generates an event for the threshold crossing. The Host should specify a suitable value based on the connection interval, subrate factor, and Peripheral latency.

If the Host issues this command when path loss monitoring is enabled, the Controller shall override the existing path loss threshold reporting parameters with the parameters provided in this command.

The High_Threshold and the Low_Threshold parameters are common to all PHYs supported by the Controller. However, the Host can reissue this command with suitable parameters whenever a PHY switch is detected.

If the Connection_Handle parameter does not identify a current ACL connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Set_Path_Loss_Reporting_Parameters command has completed, an HCI_Command_Complete event shall be generated.

If the Host issues this command when path loss monitoring is enabled, and if the new parameters mean that the path loss is now in a different zone, an HCI_LE_Path_Loss_Threshold event shall be generated as soon as possible irrespective of the Min_Time_Spent parameter and the timer shall be reset.

If the Host issues this command with High_Threshold parameter set to 0xFF, then the Controller shall not generate an HCI_LE_Path_Loss_Threshold event with Zone_Entered set to 0x02.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_path_loss_reporting_enable(const sdc_hci_cmd_le_set_path_loss_reporting_enable_t *p_params, sdc_hci_cmd_le_set_path_loss_reporting_enable_return_t *p_return)

LE Set Path Loss Reporting Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.120

The HCI_LE_Set_Path_Loss_Reporting_Enable command is used to enable or disable path loss reporting for the ACL connection identified by the Connection_Handle parameter.

If the Enable parameter is set to 0x01 and no prior LE Power Control Request procedure has been initiated on the ACL connection, then the Controller may need to initiate a new LE Power Control Request procedure on that ACL.

Path loss reporting is disabled when the connection is first created.

If the Host issues this command before it has issued the HCI_LE_Set_Path_- Loss_Reporting_Parameters command on this connection, the Controller shall return the error code Command Disallowed (0x0C).

If the Connection_Handle parameter does not identify a current ACL connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

Enabling path loss monitoring when it is already enabled or disabling path loss monitoring when it is already disabled has no effect.

Event(s) generated (unless masked away): When the HCI_LE_Set_Path_Loss_Reporting_Enable command has completed, an HCI_Command_Complete event shall be generated.

When reporting is enabled and was previously disabled, the Controller shall generate an HCI_LE_Path_Loss_Threshold event as soon as it has a reliable measurement of the path loss. If the Controller has to query the remote Controller for its transmit power level, then it shall generate this event within Tpath_loss_enable from the time it receives a response to its query. Otherwise, the Controller shall generate this event within Tpath_loss_enable from the time the command is issued. Tpath_loss_enable shall be Min_Time_Spent + 6 connection events or, if longer, 2 connection events where the Controller actually receives a packet from the peer, where Min_Time_Spent is specified by the HCI_LE_Set_Path_Loss_Reporting_Parameters command.

After the initial event on reporting being enabled, the Controller shall generate this event each time it determines that the path loss has moved to a different zone and stayed in that zone for Min_Time_Spent.As stated in [Vol 6] Part B, Section 4.5.16, two consecutive events must not indicate the same zone.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_transmit_power_reporting_enable(const sdc_hci_cmd_le_set_transmit_power_reporting_enable_t *p_params, sdc_hci_cmd_le_set_transmit_power_reporting_enable_return_t *p_return)

LE Set Transmit Power Reporting Enable.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.121

The HCI_LE_Set_Transmit_Power_Reporting_Enable command is used to enable or disable the reporting to the local Host of transmit power level changes in the local and remote Controllers for the ACL connection identified by the Connection_Handle parameter.

If the Remote_Enable parameter is set to 0x01 and no prior LE Power Control Request procedure has been initiated on the ACL connection, then the Control- ler shall initiate a new LE Power Control Request procedure on that ACL.

Reporting is disabled when the connection is first created.

If the Connection_Handle parameter does not identify a current ACL connection, the Controller shall return the error code Unknown Connection Identifier (0x02).

Event(s) generated (unless masked away): When the HCI_LE_Set_Transmit_Power_Reporting_Enable command has completed, an HCI_Command_Complete event shall be generated.

When local reporting is enabled, the Controller shall generate an HCI_LE_- Transmit_Power_Reporting event with Reason 0x00 each time the local transmit power level is changed.

When remote reporting is enabled, the Controller shall generate an HCI_LE_- Transmit_Power_Reporting event with Reason 0x01 each time it becomes aware that the remote transmit power level has changed.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

Returns value between 0x01-0xFF in case of error. See Vol 2, Part D, Error for a list of error codes and descriptions.

LE Set Data Related Address Changes.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.122

The HCI_LE_Set_Data_Related_Address_Changes command specifies circumstances when the Controller shall refresh any Resolvable Private Address used by the advertising set identified by the Advertising_Handle parameter, whether or not the address timeout period has been reached. This command may be used while advertising is enabled.

The Change_Reasons parameter specifies the reason(s) for refreshing addresses. The default when an advertising set is created, or if legacy advertising commands (see Section 3.1.1) are used, is for all bits to be clear.

If extended advertising commands (see Section 3.1.1) are being used and the advertising set corresponding to the Advertising_Handle parameter does not exist, or if no command specified in Table 3.2 has been used, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

If legacy advertising commands are being used, the Controller shall ignore the Advertising_Handle parameter.

Event(s) generated (unless masked away): When the HCI_LE_Set_Data_Related_Address_Changes command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_default_subrate(const sdc_hci_cmd_le_set_default_subrate_t *p_params)

LE Set Default Subrate.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.123

The HCI_LE_Set_Default_Subrate command is used by the Host to set the ini- tial values for the acceptable parameters for subrating requests, as defined by the HCI_LE Subrate_Request command (see Section 7.8.124), for all future ACL connections where the Controller is the Central. This command does not affect any existing connection.

The parameters have the same meanings and restrictions as those in the HCI_LE_Subrate_Request command.

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Set_Default_Subrate command, the Controller sends the HCI_Command_Complete event to the Host.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_subrate_request(const sdc_hci_cmd_le_subrate_request_t *p_params)

LE Subrate Request.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.124

The HCI_LE_Subrate_Request command is used by a Central or a Peripheral to request a change to the subrating factor and/or other parameters (see [Vol 6] Part B, Section 4.5.1) applied to an existing connection using the Connection Subrate Update procedure.

The Subrate_Min and Subrate_Max parameters specify the range of accept- able subrating factors being requested.

The Max_Latency parameter specifies the maximum Peripheral latency in units of subrated connection events. The same maximum shall apply irrespective of the subrating factor actually chosen.

The Continuation_Number parameter specifies the number of underlying con- nection intervals to remain active after a packet (other than an empty packet) is transmitted or received.

The Supervision_Timeout parameter specifies the link supervision timeout for the connection. The Supervision_Timeout, in milliseconds, shall be greater than 2 × current connection interval × Subrate_Max × (Max_Latency + 1).

If this command is issued on the Central, the following rules shall apply when the Controller initiates the Connection Subrate Update procedure (see [Vol 6] Part B, Section 5.1.19): • The Peripheral latency shall be less than or equal to Max_Latency. • The subrate factor shall be between Subrate_Min and Subrate_Max. • The continuation number shall be equal to the lesser of Continuation_- Number and (subrate factor - 1). • The connection supervision timeout shall be equal to Supervision_Timeout.

If this command is issued on the Central, it also sets the acceptable parame- ters for requests from the Peripheral (see [Vol 6] Part B, Section 5.1.20). The acceptable parameters set by this command override those provided via the HCI_LE_Set_Default_Subrate command or any values set by previous uses of this command on the same connection. If this command is issued on the Central before the devices have performed the Feature Exchange procedure, then the Controller shall complete that pro- cedure before initiating the Connection Subrate Update procedure.

If this command is issued on the Peripheral, the following rules shall apply when the Controller initiates the Connection Subrate Request procedure: • The Peripheral latency shall be less than or equal to Max_Latency. • The minimum and maximum subrate factors shall be between Subrate_Min and Subrate_Max. • The continuation number shall be equal to the lesser of Continuation_- Number and (maximum subrate factor - 1). • The connection supervision timeout shall be equal to Supervision_Timeout.

If the Connection_Handle parameter does not identify a current ACL connec- tion, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command with parameters such that Subrate_Max × (Max_Latency + 1) is greater than 500 or the current connection interval × Subrate_Max × (Max_Latency + 1) is greater than or equal to half the Supervision_Timeout parameter, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command with Subrate_Max less than Subrate_Min, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command with Continuation_Number greater than or equal to Subrate_Max, then the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Central’s Host issues this command when the Connection Subrating (Host Support) bit is not set in the Peripheral’s FeatureSet, the Controller shall return the error code Unsupported Remote Feature (0x1A).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Subrate_Request command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_- Subrate_Change event shall be generated when the Connection Subrate Update procedure has completed.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_subevent_data(const sdc_hci_cmd_le_set_periodic_adv_subevent_data_t *p_params, sdc_hci_cmd_le_set_periodic_adv_subevent_data_return_t *p_return)

LE Set Periodic Advertising Subevent Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.125

The HCI_LE_Set_Periodic_Advertising_Subevent_Data command is used by the Host to set the data for one or more subevents of PAwR in reply to an HCI_LE_Periodic_Advertising_Subevent_Data_Request event. The data for a subevent shall be transmitted only once.

The Advertising_Handle parameter identifies the advertising set whose peri- odic advertising subevent data is being set. If the corresponding advertising set does not already exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

The Num_Subevents parameter is the number of subevent data contained in the parameter arrays.

The Subevent arrayed parameter identifies the subevent of the PAwR that is being set. If the Host provides a subevent value that is outside of the range of subevents requested using the HCI_LE_Periodic_Advertising_Subevent_- Data_Request event, then the Controller shall return the error code Command Disallowed (0x0C).

The Response_Slot_Start and Response_Slot_Count arrayed parameters identify the starting response slot and the number of response slots that are expected to be used in this subevent.

The Subevent_Data_Length arrayed parameter determines the length of the Subevent_Data that is significant.

The Subevent_Data arrayed parameter contains the advertising data to be transmitted in the subevent of the advertising set. If the combined data length is greater than the maximum that the Controller can transmit within the current subevent interval, then all data shall be discarded and the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, then the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel. If the Subevent_Data cannot be transmitted because, for example, the subev- ent where this data would have been sent has already passed or is too early, then the Controller shall return the error code Too Late (0x46) or Too Early (0x47) and discard the data.

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Subevent_Data command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_response_data(const sdc_hci_cmd_le_set_periodic_adv_response_data_t *p_params, sdc_hci_cmd_le_set_periodic_adv_response_data_return_t *p_return)

LE Set Periodic Advertising Response Data.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.126

The HCI_LE_Set_Periodic_Advertising_Response_Data command is used by the Host to set the data for a response slot in a specific subevent of the PAwR identified by the Sync_Handle. The data for a response slot shall be transmit- ted only once.

The Request_Event parameter identifies the periodic advertising event in which the periodic advertising packet that the Host is responding to was received.

The Request_Subevent parameter identifies the subevent in which the periodic advertising packet that the Host is responding to was received.

The Response_Subevent parameter identifies the subevent that the response shall be sent in.

The Response_Slot parameter identifies the response slot in the subevent identified by the Response_Subevent parameter in which this response data is to be transmitted.

The Response_Data_Length specifies the length of the Response_Data that is significant.

The Response_Data contains the advertising data to be transmitted in the response slot. If the Response_Data_Length is greater than the maximum that the Controller can transmit within the response slot, then the Response_Data shall be discarded and the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, then the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

If the response slot identified by the Response_Slot parameter has passed by the time this command is received by the Controller, the Controller shall return the error code Too Late (0x46) and discard the Response_Data parameter.

Event(s) generated (unless masked away): When the HCI_LE_Periodic_Advertising_Response_Data command has com- pleted, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_sync_subevent(const sdc_hci_cmd_le_set_periodic_sync_subevent_t *p_params, sdc_hci_cmd_le_set_periodic_sync_subevent_return_t *p_return)

LE Set Periodic Sync Subevent.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.127

The HCI_LE_Set_Periodic_Sync_Subevent command is used to instruct the Controller to synchronize with a subset of the subevents within a PAwR train identified by the Sync_Handle parameter, listen for packets sent by the peer device and pass any received data up to the Host. If the Controller is synchro- nized with any subevents that are not in the subset of subevents in this command, then the Controller shall no longer synchronize with those subev- ents.

The Periodic_Advertising_Properties parameter indicates which fields should be included in the AUX_SYNC_SUBEVENT_RSP PDUs.

The Num_Subevents parameter identifies the number of values in the sub- events parameter.

The Subevents arrayed parameter identifies the subevents that the Controller shall synchronize with.

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Sync_Subevent command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_le_ext_create_conn_v2(const sdc_hci_cmd_le_ext_create_conn_v2_t *p_params)

LE Extended Create Connection [v2].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.66

The HCI_LE_Extended_Create_Connection command is used to create an ACL connection, with the local device in the Central role, to a connectable advertiser. The command is also used to create an ACL connection between a periodic advertiser and a synchronized device.

If a connection is created with the local device in the Peripheral role while this command is pending, then this command remains pending. The Advertising_Handle parameter is used to identify the periodic advertising train.

The Subevent parameter is used to identify the subevent where a connection request shall be initiated from a periodic advertising train.

The Advertising_Handle and Subevent parameters shall be set to 0xFF if these parameters are not used.

If the Advertising_Handle and Subevent parameters are set to valid values, then the Initiator_Filter_Policy, Initiating_PHYs, Scan_Interval[i], and Scan_Window[i] parameters shall be ignored.

The Initiator_Filter_Policy parameter is used to determine whether the Filter Accept List is used. If the Filter Accept List is not used, the Peer_Address_Type and the Peer_Address parameters specify the address type and address of the advertising device to connect to.

The Own_Address_Type parameter indicates the type of address being used in the connection request packets.

The Peer_Address_Type parameter indicates the type of address used in the connectable advertisement sent by the peer.

The Peer_Address parameter indicates the Peer’s Public Device Address, Random (static) Device Address, Non-Resolvable Private Address, or Resolvable Private Address depending on the Peer_Address_Type parameter.

The Initiating_PHYs parameter indicates the PHY(s) on which the advertising packets should be received on the primary advertising physical channel and the PHYs for which connection parameters have been specified. The Host may enable one or more initiating PHYs. If the Host specifies a PHY that is not supported by the Controller, including a bit that is reserved for future use, the latter should return the error code Unsupported Feature or Parameter Value (0x11). The array elements of the arrayed parameters are ordered in the same order as the set bits in the Initiating_PHYs parameter, starting from bit 0. The number of array elements is determined by the number of bits set in the Initiating_PHYs parameter. When a connectable advertisement is received and a connection request is sent on one PHY, scanning on any other PHYs is terminated.

The Scan_Interval[i] and Scan_Window[i] parameters are recommendations from the Host on how long (Scan_Window[i]) and how frequently (Scan_Interval[i]) the Controller should scan (see [Vol 6] Part B, Section 4.5.3); however the frequency and length of the scan is implementation specific. If the requested scan cannot be supported by the implementation, the Controller shall return the error code Invalid HCI Command Parameters (0x12). If bit 1 is set in Initiating_PHYs, the values for the LE 2M PHY shall be ignored. The Connection_Interval_Min[i] and Connection_Interval_Max[i] parameters define the minimum and maximum allowed connection interval. The Connection_Interval_Min[i] parameter shall not be greater than the Connection_Interval_Max[i] parameter.

The Max_Latency[i] parameter defines the maximum allowed Peripheral latency (see [Vol 6] Part B, Section 4.5.1).

The Supervision_Timeout[i] parameter defines the link supervision timeout for the connection. The Supervision_Timeout[i] in milliseconds shall be larger than (1 + Max_Latency[i]) × Connection_Interval_Max[i] × 2, where Connection_- Interval_Max[i] is given in milliseconds (see [Vol 6] Part B, Section 4.5.2).

The Min_CE_Length[i] and Max_CE_Length[i] parameters provide the Controller with the expected minimum and maximum length of the connection events. The Min_CE_Length[i] parameter shall be less than or equal to the Max_CE_Length[i] parameter. The Controller is not required to use these values.

Where the connection is made on a PHY whose bit is not set in the Initiating_- PHYs parameter, the Controller shall use the Connection_Interval_Min[i], Connection_Interval_Max[i], Max_Latency[i], Supervision_Timeout[i], Min_CE_Length[i], and Max_CE_Length[i] parameters for an implementation- chosen PHY whose bit is set in the Initiating_PHYs parameter.

If the Host issues this command when another HCI_LE_Extended_Create_- Connection command is pending in the Controller, the Controller shall return the error code Command Disallowed (0x0C).

If the Own_Address_Type parameter is set to 0x00 and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x01 and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x02, the Initiator_Filter_Policy parameter is set to 0x01, and the device does not have a public address, the Controller should return an error code which should be Invalid HCI Command Parameters (0x12). If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x00, the Controller’s resolving list did not contain a matching entry, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Own_Address_Type parameter is set to 0x03, the Initiator_Filter_Policy parameter is set to 0x01, and the random address for the device has not been initialized using the HCI_LE_Set_Random_Address command, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Initiating_PHYs parameter does not have at least one bit set for a PHY allowed for scanning on the primary advertising physical channel, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command and the Controller has insufficient resources to handle any more connections, the Controller shall return the error code Connection Rejected due to Limited Resources (0x0D).

Event(s) generated (unless masked away): When the Controller receives the HCI_LE_Extended_Create_Connection command, the Controller sends the HCI_Command_Status event to the Host. An HCI_LE_Enhanced_Connection_Complete event shall be generated when a connection is created because of this command or the connection creation procedure is cancelled; until the event is generated, the command is consid- ered pending. If a connection creation is discarded, then the error code Con- nection Failed to be Established / Synchronization Timeout (0x3E) shall be used. If a connection is created, this event shall be immediately followed by an HCI_LE_Channel_Selection_Algorithm event.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_le_set_periodic_adv_params_v2(const sdc_hci_cmd_le_set_periodic_adv_params_v2_t *p_params, sdc_hci_cmd_le_set_periodic_adv_params_v2_return_t *p_return)

LE Set Periodic Advertising Parameters [v2].

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.8.61

The HCI_LE_Set_Periodic_Advertising_Parameters command is used by the Host to set the parameters for periodic advertising.

The Advertising_Handle parameter identifies the advertising set whose periodic advertising parameters are being configured. If the corresponding advertising set does not already exist, then the Controller shall return the error code Unknown Advertising Identifier (0x42).

The Periodic_Advertising_Interval_Min parameter shall be less than or equal to the Periodic_Advertising_Interval_Max parameter. The Periodic_Advertising_- Interval_Min and Periodic_Advertising_Interval_Max parameters should not be the same value to enable the Controller to determine the best advertising interval given other activities.

If the periodic advertising interval range provided by the Host (Periodic_Advertising_Interval_Min, Periodic_Advertising_Interval_Max) does not overlap with the periodic advertising interval range supported by the Controller, then the Controller shall return an error which should use the error code Unsupported Feature or Parameter Value (0x11).

The Periodic_Advertising_Properties parameter indicates which fields should be included in the advertising packet.

The Num_Subevents parameter identifies the number of subevents that shall be transmitted for each periodic advertising event. If the Num_Subevents parameter value is 0x00, then the Subevent_Interval, Response_Slot_Delay, Response_Slot_Spacing, and Num_Response_Slots parameters shall be ignored.

The Subevent_Interval parameter identifies the time between the subevents of PAwR. The Subevent_Interval shall be less than or equal to the Periodic_Advertising_Interval_Min divided by the Num_Subevents of the advertising set.

The Response_Slot_Delay parameter identifies the time between the start of the advertising packet at the start of a subevent and the start of the first response slot. The Response_Slot_Delay shall be less than the Subevent_Interval.

The Response_Slot_Spacing parameter identifies the time between the start of two consecutive response slots. The Response_Slot_Spacing shall be less than or equal to 10 × (Subevent_Interval - Response_Slot_Delay) / Num_Response_Slots. If the Num_Response_Slots parameter is set to 1, then the Controller shall ignore the Response_Slot_Spacing parameter.

The Num_Response_Slots parameter identifies the number of response slots in a subevent. If the Num_Response_Slots parameter value is 0x00, then the Response_Slot_Delay and Response_Slot_Spacing parameters shall be ignored.

If the advertising set identified by the Advertising_Handle specified scannable, connectable, legacy, or anonymous advertising, the Controller shall return the error code Invalid HCI Command Parameters (0x12).

If the Host issues this command when periodic advertising is enabled for the specified advertising set, the Controller shall return the error code Command Disallowed (0x0C).

If the Advertising_Handle does not identify an advertising set that is already configured for periodic advertising and the Controller is unable to support more periodic advertising at present, the Controller shall return the error code Memory Capacity Exceeded (0x07).

If the advertising set already contains periodic advertising data and the length of the data is greater than the maximum that the Controller can transmit within a periodic advertising interval of Periodic_Advertising_Interval_Max, the Controller shall return the error code Packet Too Long (0x45). If advertising on the LE Coded PHY, the S=8 coding shall be assumed unless the current advertising parameters require the use of S=2 for an advertising physical channel, in which case the S=2 coding shall be assumed for that advertising physical channel.

Event(s) generated (unless masked away): When the HCI_LE_Set_Periodic_Advertising_Parameters command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_lc_disconnect(const sdc_hci_cmd_lc_disconnect_t *p_params)

Disconnect.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.1.6

The HCI_Disconnect command is used to terminate an existing connection. The Connection_Handle command parameter indicates which connection is to be disconnected. The Reason command parameter indicates the reason for ending the connection and is copied into the error code field of the LMP_DETACH PDU on a BR/EDR connection or the error code field of the LL_TERMINATE_IND or LL_CIS_TERMINATE_IND PDU on an LE connection. All SCO, eSCO, and CIS connections on a physical link should be disconnected before the ACL connection on the same physical connection is disconnected. If it does not, they will be implicitly disconnected as part of the ACL disconnection.

If, on the Central, the Host issues this command before issuing the HCI_LE_Create_CIS command for the same CIS (including if a previous CIS with the same CIS_ID in the same CIG has been terminated or considered lost), then the Controller shall return the error code Command Disallowed (0x0C).

If, on the Peripheral, the Host issues this command before the Controller has generated the HCI_LE_CIS_Established event for that CIS, then the Controller shall return the error code Command Disallowed (0x0C).

Note: As specified in Section 7.7.5, on the Central, the handle for a CIS remains valid even after disconnection and, therefore, the Host can recreate a disconnected CIS at a later point in time using the same connection handle.

Event(s) generated (unless masked away): When the Controller receives the HCI_Disconnect command, it shall send the HCI_Command_Status event to the Host. The HCI_Disconnection_Complete event will occur at each Host when the termination of the connection has completed, and on the local Host also indicates that this command has been completed. The Reason event parameter in the event on the local Host shall be set to the value Connection Terminated by Local Host (0x16), while that on the remote Host shall be set to the value of the Reason command parameter. However, if the termination procedure completes because a timer expires and, therefore, the local Controller cannot determine whether or not the Reason command parameter was received by the remote Controller, the Reason event parameter on the local Host should instead be set to the value LMP Response Timeout / LL Response Timeout (0x22).

If this command is issued for a CIS on the Central and the CIS is successfully terminated before being established, then an HCI_LE_CIS_Established event shall also be sent for this CIS with the Status Operation Cancelled by Host (0x44).

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_lc_read_remote_version_information(const sdc_hci_cmd_lc_read_remote_version_information_t *p_params)

Read Remote Version Information.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.1.23

This command will obtain the values for the version information for the remote device identified by the Connection_Handle parameter. The Connection_Handle shall be a Connection_Handle for an ACL-U or LE-U logical link.

Event(s) generated (unless masked away): When the Controller receives the HCI_Read_Remote_Version_Information command, the Controller shall send the HCI_Command_Status event to the Host. When the Link Manager or Link Layer has completed the sequence to determine the remote version information, the local Controller shall send an HCI_Read_Remote_Version_Information_Complete event to the Host. The HCI_Read_Remote_Version_Information_Complete event contains the status of this command, and parameters describing the version and subversion of the LMP or Link Layer used by the remote device.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_sp_read_rssi(const sdc_hci_cmd_sp_read_rssi_t *p_params, sdc_hci_cmd_sp_read_rssi_return_t *p_return)

Read RSSI.

The description below is extracted from Core_v5.4, Vol 4, Part E, Section 7.5.4

This command reads the Received Signal Strength Indication (RSSI) value from a Controller.

For a BR/EDR Controller, the RSSI parameter returns the difference between the measured Received Signal Strength Indication (RSSI) and the limits of a range selected by the Controller. The lower limit shall correspond to a received power not less than -56 dBm and not greater than 6 dB above the actual sensitivity of the receiver. The upper limit shall be 20±6 dB above the lower limit. A positive RSSI value shall indicate how many dB the RSSI is above the upper limit, a negative value shall indicate how many dB the RSSI is below the lower limit, and zero shall indicate that the RSSI is inside the range.

The returned RSSI value is not required to have any specific accuracy provided that it correctly indicates whether the received signal strength was above the upper limit, below the lower limit, or between the limits.

For an LE transport, the RSSI parameter returns the absolute received signal strength value in dBm to ±6 dB accuracy. If the RSSI cannot be read, the RSSI parameter shall be set to 127.

Event(s) generated (unless masked away): When the HCI_Read_RSSI command has completed, an HCI_Command_- Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_version_info(sdc_hci_cmd_vs_zephyr_read_version_info_return_t *p_return)

Zephyr Read Version Information.

Reads the values for the vendor version information for the local Controller.

The Hardware_Platform information defines the hardware manufacturer information. The Hardware_Variant is manufacturer specific and defines the hardware platform from that manufacturer.

The Firmware_Variant defines the type of firmware. It is possible to provide HCI firmware with limited functionality for example for bootloader operation. The Firmware_Version and Firmware_Revision define version information of the Firmware_Variant that is currently active. The Firmware_Build defines an additional counter for incremental builds.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_supported_commands(sdc_hci_cmd_vs_zephyr_read_supported_commands_return_t *p_return)

Zephyr Read Supported Commands.

This command reads the list of vendor commands supported for the local Controller.

This command shall return the Supported_Commands configuration parameter. It is implied that if a command is listed as supported, the feature underlying that command is also supported.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_write_bd_addr(const sdc_hci_cmd_vs_zephyr_write_bd_addr_t *p_params)

Zephyr Write BD ADDR.

This command writes the BD_ADDR (Bluetooth public device address) value to the volatile memory. The address does not change during an HCI Reset but is reset during a System Reset. The address can be read out using the Read_BD_ADDR command.

When the Write_BD_ADDR command has completed, a Command Complete event shall be generated.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_static_addresses(sdc_hci_cmd_vs_zephyr_read_static_addresses_return_t *p_return)

Zephyr Read Static Addresses.

This commands reads the controller specific static addresses.

This command shall return the static addresses programmed by the vendor at manufacturing time.

Each returned static address shall confirm to the Static Device Address definition. The two most significant bits of the address shall be equal to 1. At least one bit of the random part of the address shall be 0. At least one bit of the random part of the address shall be 1.

The Identity_Root parameter may be all zeros to indicate no identity root key being available for a given static address. The identity root key returned from Read_Key_Hierarchy_Roots command shall not be returned from this command.

Note: If no public address is provided and a static address is available, then it is recommended to return an identity root key (if available) from this command. In case a public address is provided, then it is recommended to use the Read_Key_Hierarchy_Roots command to return the identity root key (if only one is available).

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_key_hierarchy_roots(sdc_hci_cmd_vs_zephyr_read_key_hierarchy_roots_return_t *p_return)

Zephyr Read KEY Hierarchy Roots.

This commands reads the controller specific identify and encryption root keys.

This command shall return the identity root key and encryption root key programmed by the vendor at manufacturing time. If a key is set to all zeros, then the associated key is not available and it should not be used in the key hierarchy.

The identity root key and encryption root key may be used for the controllers public device address or a static random address generated by the host. It shall not be used for static addresses returned by Read_Static_Addresses command that have its dedicated identity root key assigned.

Note: For addresses returned by Read_Static_Addresses with an all zeros identity root key, the returned Identity_Root value may be used. It is however important that it only gets assigned to a single address (either public or static random).

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_chip_temp(sdc_hci_cmd_vs_zephyr_read_chip_temp_return_t *p_return)

Zephyr Read Chip Temperature.

This commands reads the controller chip temperature.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_write_tx_power(const sdc_hci_cmd_vs_zephyr_write_tx_power_t *p_params, sdc_hci_cmd_vs_zephyr_write_tx_power_return_t *p_return)

Zephyr Write Tx Power Level (per Role/Connection).

This command dynamically modifies Bluetooth LE Tx power level at the antenna given a handle and a handle type.

The Tx power of the Bluetooth LE radio interface is modified for any low-level link by the controller with a high degree of flexibility. The Bluetooth LE link whose power is set is identified based on a handle type and handle pair.

The role/state defining input parameter is the Handle_Type, whereas its corresponding handle is provided by the Handle input parameter. Note that for Advertisements, the Handle input parameter is ignored in the case that Advertising Extensions are not configured, whereas Advertising Sets are to be identified by their corresponding Handle in case Advertising Extensions are enabled.

The desired transmitter power level for the selected link instance is inputted as Tx_Power_Level. This value represents the actual power level fed to the antenna. When a Front-End Module is used, gain values for the SoC and FEM are calculated automatically to guarantee closest possible match to the value requested by the user at the RF output. The power setup and control can be performed dynamically without the need of restarting the advertiser and scanner role/states. In case of connections, the Tx power changes take effect only if the connections are in a connected state.

The inputs Handle_Type and Handle are passed through as outputs to aid the asynchronous service of the command as well. In addition, the command returns also with the Selected_Tx_Power by the controller which addresses and corrects the possible mismatches between the desired Tx_Power_Level and the achievable Tx powers given each individual controller capabilities.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_zephyr_read_tx_power(const sdc_hci_cmd_vs_zephyr_read_tx_power_t *p_params, sdc_hci_cmd_vs_zephyr_read_tx_power_return_t *p_return)

Zephyr Read Tx Power Level (per Role/Connection) Command.

This command reads the BLE Tx power level.

In contrast to the standardized HCI command, i.e. Read_Transmit_Power_Level, which returns the transmitted power level only for a specified connection handle, this command operates for both connected and unconnected states. It gets the BLE Tx power level for any given handle type and handle.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_read_supported_vs_commands(sdc_hci_cmd_vs_read_supported_vs_commands_return_t *p_return)

Read Supported Vendor Specific Commands.

This command reads the list of vendor specific HCI commands supported for the local Controller.

This command shall return a bitmap of the supported vendor specific commands.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_llpm_mode_set(const sdc_hci_cmd_vs_llpm_mode_set_t *p_params)

Set Low Latency Packet Mode.

This command enables or disables Low Latency Packet Mode support. When Low Latency Packet Mode is enabled, it is possible to switch to connection intervals in the range 1-7 ms. Switch to short connection intervals by calling sdc_hci_cmd_vs_conn_update().

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.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_conn_update(const sdc_hci_cmd_vs_conn_update_t *p_params)

Connection Update.

This vendor specific command is used instead of HCI_LE_Connection_Update when it is desirable to provide Connection Interval in microseconds instead of units. See sdc_hci_cmd_le_conn_update for description of behavior.

Event(s) generated (unless masked away): When the Controller receives the command, the Controller sends the HCI_Command_Status event to the Host. The HCI_VS_Connection_Update_Complete event shall be generated after the connection parameters have been applied by the Controller or if the command subsequently fails.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_conn_event_extend(const sdc_hci_cmd_vs_conn_event_extend_t *p_params)

Enable or Disable Extended Connection Events.

When Extended Connection Events are disabled, the maximum connection event length is set by sdc_hci_cmd_vs_event_length_set(). When Extended Connection Events are enabled, the controller will extend the connection event as much as possible, if:

  • Either of the peers has more data to send. See also: Core v5.1, Vol 6, Part B, Section 4.5.6

  • There are no conflicts with other concurrent links.

A connection event can not be extended beyond the connection interval.

By default, that is after an HCI Reset, Extended Connection Events are enabled.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_qos_conn_event_report_enable(const sdc_hci_cmd_vs_qos_conn_event_report_enable_t *p_params)

QoS Connection Event Reports enable.

This vendor specific command is used to enable or disable generation of QoS Connection event reports. See sdc_hci_subevent_vs_qos_conn_event_report_t. When enabled, one report will be generated every connection event.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Note

If the application does not pull a report in time, it will be overwritten.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_event_length_set(const sdc_hci_cmd_vs_event_length_set_t *p_params)

Set event length for ACL connections.

Set the event length for new ACL connections. The event length is the time available for transmission and reception in a single connection event.

The maximum data length capabilities will be set based upon this value.

This API must be called before issuing a command to create a connection, or before starting a connectable advertiser.

The default event length is 7500 us.

The event length may be set to a value that is shorter than the time needed for a single packet pair on a given PHY. In that case the controller will reserve time for receiving 27 bytes and transmitting the number of bytes configured with sdc_hci_cmd_vs_min_val_of_max_acl_tx_payload_set().

See also sdc_hci_cmd_vs_conn_event_extend(). See also sdc_hci_cmd_vs_central_acl_event_spacing_set().

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_periodic_adv_event_length_set(const sdc_hci_cmd_vs_periodic_adv_event_length_set_t *p_params)

Set event length for periodic advertisers.

Set the allocated event length for new periodic advertisers. The SoftDevice Controller will ensure that the anchor points of periodic advertising events are spaced event_length_us apart. If the advertiser requires less time to transmit all the data, the distance to the next scheduling activity will still be equal to the configured event length. If the advertiser requires more time to transmit all the data, scheduling conflicts may occur.

This API must be called before configuring a periodic advertiser for the event length to be applied.

The default event length is 7500 us.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_coex_scan_mode_config(const sdc_hci_cmd_vs_coex_scan_mode_config_t *p_params)

Configure Coexistence Scan Request Mode.

This vendor specific command is used to configure the way the scanner requests a coexistence session. Either the scanner requests a coex session as soon as it has received a valid access address, or it only requests before transmitting.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_coex_priority_config(const sdc_hci_cmd_vs_coex_priority_config_t *p_params)

Configure Coexistence Per-Role Priority.

This vendor specific command is used to configure the external radio coexistence priorities depending on the Bluetooth device role.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_peripheral_latency_mode_set(const sdc_hci_cmd_vs_peripheral_latency_mode_set_t *p_params)

Set peripheral latency mode.

This vendor specific command is used to disable/enable peripheral latency. Three modes of disable/enable are supported.

In enable mode, the peripheral will wake up every time it has data to send, and/or every peripheral latency number of connection events.

In disable mode, the peripheral will wake up on every connection event regardless of the requested peripheral latency. This option consumes the most power.

In wait_for_ack mode, the peripheral will wake up on every connection event if it has not received an ACK from the master for at least peripheral latency events. This configuration may increase the power consumption in environments with a lot of radio activity.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Note

Shall only be called on peripheral links.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_write_remote_tx_power(const sdc_hci_cmd_vs_write_remote_tx_power_t *p_params)

Write remote transmit power level.

This command requests adjustment of radio transmit power level for a connected peer device.

When this command is issued, the controller initiates Power Control Request procedure (Core_v5.3, Vol 6, Part B, Section 5.1.17) to request the change from the peer. The peer responds with the actual transmit power level change and the controller reports the change to the host with an event.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Status event shall be generated. When the controller has completed the power control request and if the request has resulted in a change in the peer’s transmit power level, an HCI_LE_Transmit_Power_Reporting event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_adv_randomness(const sdc_hci_cmd_vs_set_adv_randomness_t *p_params)

Set advertising randomness.

This vendor specific command is used to change the randomness of advertisers. The setting applies to all subsequent advertising events of a given set.

Event(s) generated (unless masked away): When the Controller receives the command, the Controller sends the HCI_Command_Complete event to the Host.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_compat_mode_window_offset_set(const sdc_hci_cmd_vs_compat_mode_window_offset_set_t *p_params)

Set Compatibility mode for window offset.

This compatibility mode enables interoperability with devices that do not support a value of 0 for the WinOffset parameter in the Link Layer CONNECT_IND packet. This applies to a limited set of legacy peripheral devices from a limited set of vendors. Enabling this compatibility mode will only have an effect if the local device will act as a central device and initiate a connection to a peripheral device. In that case it may lead to the connection creation taking up to one connection interval longer to complete for all connections.

By default this mode is disabled.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_qos_channel_survey_enable(const sdc_hci_cmd_vs_qos_channel_survey_enable_t *p_params)

Enable the Quality of Service (QoS) channel survey module.

This vendor specific command is used to enable or disable the QoS channel survey module.

The QoS channel survey module provides measurements of the energy levels on the Bluetooth Low Energy channels. When the module is enabled, sdc_hci_subevent_vs_qos_channel_survey_report_t events will periodically report the measured energy levels for each channel.

The measurements are scheduled with low priority.

The QoS channel survey module will attempt to do measurements so that the average interval between measurements will be interval_us. However due to low scheduling priority, this may not be possible. In that case fewer than expected reports may be given.

In order to use the QoS channel survey module, funcref:sdc_support_qos_channel_survey must be called.

Event(s) geneated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_power_control_request_params(const sdc_hci_cmd_vs_set_power_control_request_params_t *p_params)

Set LE Power Control Request procedure parameters.

This command sets the parameters used in LE Power Control Request procedure by the Link Layer.

beta parameter is used to determine the weight of the previous average of RSSI values. A higher value lowers how much the current RSSI weighs into the average, flattening peaks, which also means the controller reacts slower on RSSI changes. The average RSSI is calculated using an exponential weighted averaging in a 12-bit fixed point fraction. avg[n] = gamma * avg[n - 1] + (1 - gamma) * rssi[n] Here, gamma equals beta/4096, and rssi[n] equals the current RSSI. For example, for gamma to be 0.25, set the beta parameter in the command to 1024.

Average RSSI and lower_limit parameter are used to calculate APR value the controller sends in LL_POWER_CONTROL_RSP.

When auto_enable parameter is set, the controller will keep average RSSI within [lower_limit, upper_limit] bounds. When the average RSSI goes out of these bounds, the controller will autonomously send LL_POWER_CONTROL_REQ requesting to adjust the peer’s TX power so average RSSI becomes either lower_target_rssi or upper_target_rssi. The controller will not send such requests more often than specified by wait_period_ms parameter. The wait_period_ms parameter is needed to not repeat send requests for transmit power change without the remote having had the chance to react, as well as to avoid a busy controller. This value should be set depending on needs.

When apr_enable parameter is set, the controller will adjust local TX power according to APR value received from the peer in LL_POWER_CONTROL_RSP and the apr_margin parameter.

When this command is issued, the controller stores the parameters and uses them for the subsequent LE Power Control Request procedures across all the connections.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_read_average_rssi(const sdc_hci_cmd_vs_read_average_rssi_t *p_params, sdc_hci_cmd_vs_read_average_rssi_return_t *p_return)

Read average RSSI.

This command reads the average Received Signal Strength Indication (RSSI) value calculated by LE Power Control.

The average RSSI is calculated as an exponential weighted average according to the formula given in sdc_hci_cmd_vs_set_power_control_request_params().

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_central_acl_event_spacing_set(const sdc_hci_cmd_vs_central_acl_event_spacing_set_t *p_params)

Set Central ACL event spacing.

On the central, sets the time ACL connections are spaced apart, assuming they are using the same connection interval.

This API must be called before issuing a command to create a connection.

The default event spacing is 7500 us. The configured value is retained after issuing a HCI Reset command.

Note: The time available for transmission and reception is not configured using this API

See also sdc_hci_cmd_vs_event_length_set(). See also sdc_hci_cmd_vs_conn_event_extend().

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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)

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).

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_get_next_conn_event_counter(const sdc_hci_cmd_vs_get_next_conn_event_counter_t *p_params, sdc_hci_cmd_vs_get_next_conn_event_counter_return_t *p_return)

Get Next Connection Event Counter.

This command can be used to fetch the upcoming connection event counter value for Centrals or Peripherals.

If conn_handle doesn’t match an existing connection, the Unknown Connection Identifier (0x02) error code will be returned.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_allow_parallel_connection_establishments(const sdc_hci_cmd_vs_allow_parallel_connection_establishments_t *p_params)

Allow Parallel Connection Establishment.

This command enables the controller to accept establishing connections through the initiator and a periodic advertiser with responses simultaneously.

When enabled, HCI commands to create connections may then be used to connect to a synchronized peer while the initiator is running, or to start initiating before a connection establishment to a synchronized device has been completed.

By default this functionality is disabled.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_min_val_of_max_acl_tx_payload_set(const sdc_hci_cmd_vs_min_val_of_max_acl_tx_payload_set_t *p_params)

Set the minimum value that will be used as maximum Tx octets for ACL connections.

This command sets the minimum value of maximum ACL payload length that can be sent in each packet. If the configured event length is shorter than what is required to send a packet pair of 27 bytes in each direction, the controller will use this value to determine how much it can reduce the payload size to satisfy the event length requirements. LL Control PDUs are not affected by this API.

Together with sdc_hci_cmd_vs_event_length_set(), this API allows the controller to schedule ACLs events closer together with other activities.

This API must be called before issuing a command to create a connection, or before starting a connectable advertiser.

The default and maximum value of this parameter is 27. The minimum supported value of this parameter is 10.

Setting this parameter to a lower value will result in more link layer fragmentation, reducing the maximum throughput.

Setting this parameter to a value lower than 27 bytes may result in interoperability issues with older Bluetooth products. It is therefore not recommended to use this API for applications interacting with devices qualified for Bluetooth Specification 5.1 or older.

The value is preserved when issuing the HCI Reset command.

See also sdc_hci_cmd_vs_event_length_set().

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_iso_read_tx_timestamp(const sdc_hci_cmd_vs_iso_read_tx_timestamp_t *p_params, sdc_hci_cmd_vs_iso_read_tx_timestamp_return_t *p_return)

Iso Read Tx Timestamp.

The controller operates on a timeline that determines when an SDU provided by the host is scheduled for transmission. This command is used to return the tx_time_stamp and packet_sequence_number that determines where on this timeline the previously provided SDU was scheduled. The packet_sequence_number is a quantization of the tx_time_stamp. The SDU is provided for transmission on a CIS or BIS as identified by the conn_handle parameter on the Central or Peripheral.

This command is made to simplify sending SDUs on different ISO streams in the same ISO event.

The returned timestamp corresponds to the SDU synchronization reference as defined in Core_v5.4, Vol 6, Part G, Section 3.2. If the provided handle identifies a CIS, the returned timestamp corresponds to the SDU synchronization reference for the central to peripheral direction.

The returned timestamp can be used to make the application provide SDUs to the controller right before they are sent on air. The returned value can also be used to synchronize the transmitter and receiver.

If the Host issues this command with a connection handle that does not exist, or the connection handle is not associated with a CIS or BIS, the Controller shall return the error code Unknown Connection Identifier (0x02).

If the Host issues this command on an existing connection handle for a CIS or BIS where a ISO data path is not enabled, the Controller shall return the error code Command Disallowed (0x0C).

Event(s) generated (unless masked away): When the HCI_LE_Read_ISO_TX_Sync command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

  • p_return[out] Extra return parameters.

Return values:

0 – if success.

Returns:

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_big_reserved_time_set(const sdc_hci_cmd_vs_big_reserved_time_set_t *p_params)

Set the default BIG reserved time.

This vendor specific command changes the time reserved at the end of a BIG event for other roles. This applies to all BIGs created after calling this command.

The default value is 1600 us, but can be set to between 0 us and 4,000,000 us. Changes persist after an HCI_Reset command.

If the value is set such that it cannot be satisfied for a given set of BIG parameters, BIG creation will fail with error code UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE (0x11).

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cig_reserved_time_set(const sdc_hci_cmd_vs_cig_reserved_time_set_t *p_params)

Set the default CIG reserved time.

This vendor specific command changes the time reserved each ISO interval for other roles. This applies to all CIGs created after calling this command. For example, if the reserved time is set to 2.5 ms and the ISO interval is 10 ms, the controller may select CIG parameters such that 2.5 ms is reserved for an ACL connection and the remaining 7.5 ms is used for the CIG. Note, when multiple CIGs are used the user needs to ensure that the initial CIG reserves time for the remaining CIGs.

The default value is 1300 us, but can be set to between 0 us and 4,000,000 us. Changes persist after an HCI_Reset command.

If the value is set such that it cannot be satisfied for a given set of CIG parameters, the actual reserved time may be smaller than the requested value.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_cis_subevent_length_set(const sdc_hci_cmd_vs_cis_subevent_length_set_t *p_params)

Set the CIS subevent length in microseconds.

This command sets the subevent length to be used for CISes in microseconds. If the configured subevent length is too small, the HCI command used to configure the CIG will fail. If this parameter is set to zero, the subevent length is chosen by the controller.

The default value is 0. That is, the minimum required subevent length will be used.

This API must be called before creating a CIG.

The configured value is preserved when issuing the HCI Reset command.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_scan_channel_map_set(const sdc_hci_cmd_vs_scan_channel_map_set_t *p_params)

Set the channel map for scanning and initiating.

This command sets the RF channels that should be used for scanning and initiating on the primary advertising channels. The channel map will be used for subsequent commands to start scanning or to create connections. Scanning and initiating that was started before issuing this command is not affected.

The default behavior is to listan on all primary advertising channels. The default behavior is restored when issuing the HCI Reset command.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_scan_accept_ext_adv_packets_set(const sdc_hci_cmd_vs_scan_accept_ext_adv_packets_set_t *p_params)

Scan accept extended advertising packets set.

This command enables or disables reception of extended advertising packets when extended scanner or extended initiator HCI commands are used.

When reception of extended advertising packets is disabled, the scanner may be able to receive more legacy advertising packets. Reception of extended advertising packets should only be disabled when the application knows it is not interested in reports from extended advertisers.

After HCI Reset, reception of extended advertising packets is enabled.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

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_role_priority(const sdc_hci_cmd_vs_set_role_priority_t *p_params)

Set priority of a BT role.

This vendor specific command changes the scheduling priority of a role running in the controller.

Note that unless documented otherwise, any non-default priorities are not tested. This means that there is no guarantee that the controller works as intended when non-tested priorities are used. The default values for the priorities of the different roles are listed in https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfxlib/softdevice_controller/doc/sch eduling.html

Priority changes configured using this API are not persisted on resets.

If the handle is not associated with an instance of the role_id type, the error code Unknown Connection Identifier (0x02) is returned.

If the role_id is set to an invalid or unsupported role, the error code Invalid HCI Command Parameters (0x12) is returned.

If the priority is set to an invalid or unsupported value, the error code Invalid HCI Command Parameters (0x12) is returned.

Event(s) generated (unless masked away): When the command has completed, an HCI_Command_Complete event shall be generated.

Parameters:
  • p_params[in] Input parameters.

Return values:

0 – if success.

Returns:

Returns value between 0x01-0xFF in case of error. See Vol 2, Part D, Error for a list of error codes and descriptions.

SoftDevice Controller SoC

group sdc_soc

The SoftDevice Controller SoC interface provides APIs for block encryption and random numbers. While the SoftDevice Controller is enabled, the application should only use the provided APIs to access NRF_ECB. Not doing so will lead to undefined behavior.

Functions

int32_t sdc_rand_source_register(const sdc_rand_source_t *rand_source)

Pass a source of randomness to the SoftDevice Controller.

The SoftDevice Controller will use the function pointers provided in this function call to get random numbers.

Parameters:
  • rand_source[in] A table of function pointers to obtain random numbers

Return values:

0 – Success

struct sdc_rand_source_t
#include <sdc_soc.h>

Functions used by the SoftDevice Controller to obtain random numbers.

These functions are used for security-related purposes, so they must conform to: BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 2, Part H, Section 2.

Public Members

void (*rand_poll)(uint8_t *p_buff, uint8_t length)

Function used by the controller to obtain random numbers. This function must block until length bytes of random numbers were written to p_buff. The function will be executed in the same context as mpsl_low_priority_process.

Param p_buff:

[out] The destination buffer for the random numbers

Param length:

[in] The requested number of random bytes and the maximum length of the destination buffer