S140 SoftDevice  v7.0.1
Choose documentation:
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages

Functions

uint32_t sd_ble_gap_addr_set (ble_gap_addr_t const *p_addr)
 Set the local Bluetooth identity address. More...
 
uint32_t sd_ble_gap_addr_get (ble_gap_addr_t *p_addr)
 Get local Bluetooth identity address. More...
 
uint32_t sd_ble_gap_adv_addr_get (uint8_t adv_handle, ble_gap_addr_t *p_addr)
 Get the Bluetooth device address used by the advertiser. More...
 
uint32_t sd_ble_gap_whitelist_set (ble_gap_addr_t const *const *pp_wl_addrs, uint8_t len)
 Set the active whitelist in the SoftDevice. More...
 
uint32_t sd_ble_gap_device_identities_set (ble_gap_id_key_t const *const *pp_id_keys, ble_gap_irk_t const *const *pp_local_irks, uint8_t len)
 Set device identity list. More...
 
uint32_t sd_ble_gap_privacy_set (ble_gap_privacy_params_t const *p_privacy_params)
 Set privacy settings. More...
 
uint32_t sd_ble_gap_privacy_get (ble_gap_privacy_params_t *p_privacy_params)
 Get privacy settings. More...
 
uint32_t sd_ble_gap_adv_set_configure (uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params)
 Configure an advertising set. Set, clear or update advertising and scan response data. More...
 
uint32_t sd_ble_gap_adv_start (uint8_t adv_handle, uint8_t conn_cfg_tag)
 Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). More...
 
uint32_t sd_ble_gap_adv_stop (uint8_t adv_handle)
 Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). More...
 
uint32_t sd_ble_gap_conn_param_update (uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)
 Update connection parameters. More...
 
uint32_t sd_ble_gap_disconnect (uint16_t conn_handle, uint8_t hci_status_code)
 Disconnect (GAP Link Termination). More...
 
uint32_t sd_ble_gap_tx_power_set (uint8_t role, uint16_t handle, int8_t tx_power)
 Set the radio's transmit power. More...
 
uint32_t sd_ble_gap_appearance_set (uint16_t appearance)
 Set GAP Appearance value. More...
 
uint32_t sd_ble_gap_appearance_get (uint16_t *p_appearance)
 Get GAP Appearance value. More...
 
uint32_t sd_ble_gap_ppcp_set (ble_gap_conn_params_t const *p_conn_params)
 Set GAP Peripheral Preferred Connection Parameters. More...
 
uint32_t sd_ble_gap_ppcp_get (ble_gap_conn_params_t *p_conn_params)
 Get GAP Peripheral Preferred Connection Parameters. More...
 
uint32_t sd_ble_gap_device_name_set (ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)
 Set GAP device name. More...
 
uint32_t sd_ble_gap_device_name_get (uint8_t *p_dev_name, uint16_t *p_len)
 Get GAP device name. More...
 
uint32_t sd_ble_gap_authenticate (uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)
 Initiate the GAP Authentication procedure. More...
 
uint32_t sd_ble_gap_sec_params_reply (uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)
 Reply with GAP security parameters. More...
 
uint32_t sd_ble_gap_auth_key_reply (uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)
 Reply with an authentication key. More...
 
uint32_t sd_ble_gap_lesc_dhkey_reply (uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)
 Reply with an LE Secure connections DHKey. More...
 
uint32_t sd_ble_gap_keypress_notify (uint16_t conn_handle, uint8_t kp_not)
 Notify the peer of a local keypress. More...
 
uint32_t sd_ble_gap_lesc_oob_data_get (uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)
 Generate a set of OOB data to send to a peer out of band. More...
 
uint32_t sd_ble_gap_lesc_oob_data_set (uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)
 Provide the OOB data sent/received out of band. More...
 
uint32_t sd_ble_gap_encrypt (uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)
 Initiate GAP Encryption procedure. More...
 
uint32_t sd_ble_gap_sec_info_reply (uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)
 Reply with GAP security information. More...
 
uint32_t sd_ble_gap_conn_sec_get (uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)
 Get the current connection security. More...
 
uint32_t sd_ble_gap_rssi_start (uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)
 Start reporting the received signal strength to the application. More...
 
uint32_t sd_ble_gap_rssi_stop (uint16_t conn_handle)
 Stop reporting the received signal strength. More...
 
uint32_t sd_ble_gap_rssi_get (uint16_t conn_handle, int8_t *p_rssi, uint8_t *p_ch_index)
 Get the received signal strength for the last connection event. More...
 
uint32_t sd_ble_gap_scan_start (ble_gap_scan_params_t const *p_scan_params, ble_data_t const *p_adv_report_buffer)
 Start or continue scanning (GAP Discovery procedure, Observer Procedure). More...
 
uint32_t sd_ble_gap_scan_stop (void)
 Stop scanning (GAP Discovery procedure, Observer Procedure). More...
 
uint32_t sd_ble_gap_connect (ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params, uint8_t conn_cfg_tag)
 Create a connection (GAP Link Establishment). More...
 
uint32_t sd_ble_gap_connect_cancel (void)
 Cancel a connection establishment. More...
 
uint32_t sd_ble_gap_phy_update (uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys)
 Initiate or respond to a PHY Update Procedure. More...
 
uint32_t sd_ble_gap_data_length_update (uint16_t conn_handle, ble_gap_data_length_params_t const *p_dl_params, ble_gap_data_length_limitation_t *p_dl_limitation)
 Initiate or respond to a Data Length Update Procedure. More...
 
uint32_t sd_ble_gap_qos_channel_survey_start (uint32_t interval_us)
 Start the Quality of Service (QoS) channel survey module. More...
 
uint32_t sd_ble_gap_qos_channel_survey_stop (void)
 Stop the Quality of Service (QoS) channel survey module. More...
 
uint32_t sd_ble_gap_next_conn_evt_counter_get (uint16_t conn_handle, uint16_t *p_counter)
 Obtain the next connection event counter value. More...
 
uint32_t sd_ble_gap_conn_evt_trigger_start (uint16_t conn_handle, ble_gap_conn_event_trigger_t const *p_params)
 Start triggering a given task on connection event start. More...
 
uint32_t sd_ble_gap_conn_evt_trigger_stop (uint16_t conn_handle)
 Stop triggering the task configured using sd_ble_gap_conn_evt_trigger_start. More...
 

Detailed Description

Function Documentation

uint32_t sd_ble_gap_addr_get ( ble_gap_addr_t p_addr)

Get local Bluetooth identity address.

Note
This will always return the identity address irrespective of the privacy settings, i.e. the address type will always be either BLE_GAP_ADDR_TYPE_PUBLIC or BLE_GAP_ADDR_TYPE_RANDOM_STATIC.
Parameters
[out]p_addrPointer to address structure to be filled in.
Return values
NRF_SUCCESSAddress successfully retrieved.
NRF_ERROR_INVALID_ADDRInvalid or NULL pointer supplied.
uint32_t sd_ble_gap_addr_set ( ble_gap_addr_t const *  p_addr)

Set the local Bluetooth identity address.

   The local Bluetooth identity address is the address that identifies this device to other peers.
   The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC.
Note
The identity address cannot be changed while advertising, scanning or creating a connection.
This address will be distributed to the peer during bonding. If the address changes, the address stored in the peer device will not be valid and the ability to reconnect using the old address will be lost.
By default the SoftDevice will set an address of type BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being enabled. The address is a random number populated during the IC manufacturing process and remains unchanged for the lifetime of each IC.
Relevant Message Sequence Charts
Advertising
Parameters
[in]p_addrPointer to address structure.
Return values
NRF_SUCCESSAddress successfully set.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_GAP_INVALID_BLE_ADDRInvalid address.
NRF_ERROR_BUSYThe stack is busy, process pending events and retry.
NRF_ERROR_INVALID_STATEThe identity address cannot be changed while advertising, scanning or creating a connection.
uint32_t sd_ble_gap_adv_addr_get ( uint8_t  adv_handle,
ble_gap_addr_t p_addr 
)

Get the Bluetooth device address used by the advertiser.

Note
This function will return the local Bluetooth address used in advertising PDUs. When using privacy, the SoftDevice will generate a new private address every ble_gap_privacy_params_t::private_addr_cycle_s configured using sd_ble_gap_privacy_set. Hence depending on when the application calls this API, the address returned may not be the latest address that is used in the advertising PDUs.
Parameters
[in]adv_handleThe advertising handle to get the address from.
[out]p_addrPointer to address structure to be filled in.
Return values
NRF_SUCCESSAddress successfully retrieved.
NRF_ERROR_INVALID_ADDRInvalid or NULL pointer supplied.
BLE_ERROR_INVALID_ADV_HANDLEThe provided advertising handle was not found.
NRF_ERROR_INVALID_STATEThe advertising set is currently not advertising.
uint32_t sd_ble_gap_adv_set_configure ( uint8_t *  p_adv_handle,
ble_gap_adv_data_t const *  p_adv_data,
ble_gap_adv_params_t const *  p_adv_params 
)

Configure an advertising set. Set, clear or update advertising and scan response data.

Note
The format of the advertising data will be checked by this call to ensure interoperability. Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and duplicating the local name in the advertising data and scan response data.
In order to update advertising data while advertising, new advertising buffers must be provided.
Relevant Message Sequence Charts
Advertising
Whitelist Sharing
Parameters
[in,out]p_adv_handleProvide a pointer to a handle containing BLE_GAP_ADV_SET_HANDLE_NOT_SET to configure a new advertising set. On success, a new handle is then returned through the pointer. Provide a pointer to an existing advertising handle to configure an existing advertising set.
[in]p_adv_dataAdvertising data. If set to NULL, no advertising data will be used. See ble_gap_adv_data_t.
[in]p_adv_paramsAdvertising parameters. When this function is used to update advertising data while advertising, this parameter must be NULL. See ble_gap_adv_params_t.
Return values
NRF_SUCCESSAdvertising set successfully configured.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied:
BLE_ERROR_GAP_INVALID_BLE_ADDRble_gap_adv_params_t::p_peer_addr is invalid.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
  • It is invalid to provide non-NULL advertising set parameters while advertising.
  • It is invalid to provide the same data buffers while advertising. To update advertising data, provide new advertising buffers.
BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELISTDiscoverable mode and whitelist incompatible.
BLE_ERROR_INVALID_ADV_HANDLEThe provided advertising handle was not found. Use BLE_GAP_ADV_SET_HANDLE_NOT_SET to configure a new advertising handle.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_FLAGSInvalid combination of advertising flags supplied.
NRF_ERROR_INVALID_DATAInvalid data type(s) supplied. Check the advertising data format specification given in Bluetooth Specification Version 5.0, Volume 3, Part C, Chapter 11.
NRF_ERROR_INVALID_LENGTHInvalid data length(s) supplied.
NRF_ERROR_NOT_SUPPORTEDUnsupported data length or advertising parameter configuration.
NRF_ERROR_NO_MEMNot enough memory to configure a new advertising handle. Update an existing advertising handle instead.
BLE_ERROR_GAP_UUID_LIST_MISMATCHInvalid UUID list supplied.
uint32_t sd_ble_gap_adv_start ( uint8_t  adv_handle,
uint8_t  conn_cfg_tag 
)

Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).

Note
Only one advertiser may be active at any time.
Events generated
BLE_GAP_EVT_CONNECTEDGenerated after connection has been established through connectable advertising.
BLE_GAP_EVT_ADV_SET_TERMINATEDAdvertising set has terminated.
BLE_GAP_EVT_SCAN_REQ_REPORTA scan request was received.
Relevant Message Sequence Charts
Advertising
Peripheral Connection Establishment with Private Peer
Directed Advertising
Whitelist Sharing
Parameters
[in]adv_handleAdvertising handle to advertise on, received from sd_ble_gap_adv_set_configure.
[in]conn_cfg_tagTag identifying a configuration set by sd_ble_cfg_set or BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. For non-connectable advertising, this is ignored.
Return values
NRF_SUCCESSThe BLE stack has started advertising.
NRF_ERROR_INVALID_STATEadv_handle is not configured or already advertising.
NRF_ERROR_CONN_COUNTThe limit of available connections for this connection configuration tag has been reached; connectable advertiser cannot be started. To increase the number of available connections, use sd_ble_cfg_set with BLE_GAP_CFG_ROLE_COUNT or BLE_CONN_CFG_GAP.
BLE_ERROR_INVALID_ADV_HANDLEAdvertising handle not found. Configure a new adveriting handle with sd_ble_gap_adv_set_configure.
NRF_ERROR_NOT_FOUNDconn_cfg_tag not found.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied:
NRF_ERROR_RESOURCESEither:
  • adv_handle is configured with connectable advertising, but the event_length parameter associated with conn_cfg_tag is too small to be able to establish a connection on the selected advertising phys. Use sd_ble_cfg_set to increase the event length.
  • Not enough BLE role slots available. Stop one or more currently active roles (Central, Peripheral, Broadcaster or Observer) and try again.
  • p_adv_params is configured with connectable advertising, but the event_length parameter associated with conn_cfg_tag is too small to be able to establish a connection on the selected advertising phys. Use sd_ble_cfg_set to increase the event length.
uint32_t sd_ble_gap_adv_stop ( uint8_t  adv_handle)

Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).

Relevant Message Sequence Charts
Advertising
Whitelist Sharing
Parameters
[in]adv_handleThe advertising handle that should stop advertising.
Return values
NRF_SUCCESSThe BLE stack has stopped advertising.
BLE_ERROR_INVALID_ADV_HANDLEInvalid advertising handle.
NRF_ERROR_INVALID_STATEThe advertising handle is not advertising.
uint32_t sd_ble_gap_appearance_get ( uint16_t *  p_appearance)

Get GAP Appearance value.

Parameters
[out]p_appearancePointer to appearance (16-bit) to be filled in, see Bluetooth Appearance values.
Return values
NRF_SUCCESSAppearance value retrieved successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
uint32_t sd_ble_gap_appearance_set ( uint16_t  appearance)

Set GAP Appearance value.

Parameters
[in]appearanceAppearance (16-bit), see Bluetooth Appearance values.
Return values
NRF_SUCCESSAppearance value set successfully.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
uint32_t sd_ble_gap_auth_key_reply ( uint16_t  conn_handle,
uint8_t  key_type,
uint8_t const *  p_key 
)

Reply with an authentication key.

This function is only used to reply to a BLE_GAP_EVT_AUTH_KEY_REQUEST or a BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an NRF_ERROR_INVALID_STATE.

Note
If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
Events generated
This function is used during authentication procedures, see the list of events in the documentation of sd_ble_gap_authenticate.
Relevant Message Sequence Charts
Bonding: Passkey Entry, User Inputs on Peripheral or OOB
Bonding: Numeric Comparison
Bonding: Passkey Entry, User Inputs on Peripheral
Bonding: Passkey Entry, User Inputs on Central or OOB
Bonding: Numeric Comparison
Bonding: Passkey Entry: User Inputs on Central
Parameters
[in]conn_handleConnection handle.
[in]key_typeSee GAP Authentication Key Types.
[in]p_keyIf key type is BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. If key type is BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) or NULL when confirming LE Secure Connections Numeric Comparison. If key type is BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in little-endian format.
Return values
NRF_SUCCESSAuthentication key successfully set.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATEAuthentication key has not been requested.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_authenticate ( uint16_t  conn_handle,
ble_gap_sec_params_t const *  p_sec_params 
)

Initiate the GAP Authentication procedure.

In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), otherwise in the peripheral role, an SMP Security Request will be sent.

Events generated
Depending on the security parameters set and the packet exchanges with the peer, the following events may be generated:
BLE_GAP_EVT_SEC_PARAMS_REQUEST
BLE_GAP_EVT_SEC_INFO_REQUEST
BLE_GAP_EVT_PASSKEY_DISPLAY
BLE_GAP_EVT_KEY_PRESSED
BLE_GAP_EVT_AUTH_KEY_REQUEST
BLE_GAP_EVT_LESC_DHKEY_REQUEST
BLE_GAP_EVT_CONN_SEC_UPDATE
BLE_GAP_EVT_AUTH_STATUS
BLE_GAP_EVT_TIMEOUT
Relevant Message Sequence Charts
Peripheral Security Request
Security Request Reception
Central Encryption and Authentication mutual exclusion
Pairing: Just Works
Bonding: Just Works
Bonding: Passkey Entry, Central displays
Bonding: Passkey Entry, User Inputs on Central or OOB
Pairing: Just Works
Bonding: Numeric Comparison
Bonding: Passkey Entry: Central Displays
Bonding: Passkey Entry: User Inputs on Central
Bonding: Out of Band
Parameters
[in]conn_handleConnection handle.
[in]p_sec_paramsPointer to the ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. In the central role, this pointer may be NULL to reject a Security Request.
Return values
NRF_SUCCESSSuccessfully initiated authentication procedure.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
  • No link has been established.
  • An encryption is already executing or queued.
NRF_ERROR_NO_MEMThe maximum number of authentication procedures that can run in parallel for the given role is reached.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_NOT_SUPPORTEDSetting of sign or link fields in ble_gap_sec_kdist_t not supported. Distribution of own Identity Information is only supported if the Central Address Resolution characteristic is configured to be included or the Softdevice is configured to support peripheral roles only. See ble_gap_cfg_car_incl_cfg_t and ble_gap_cfg_role_count_t.
NRF_ERROR_TIMEOUTA SMP timeout has occurred, and further SMP operations on this link is prohibited.
uint32_t sd_ble_gap_conn_evt_trigger_start ( uint16_t  conn_handle,
ble_gap_conn_event_trigger_t const *  p_params 
)

Start triggering a given task on connection event start.

When enabled, this feature will trigger a PPI task at the start of connection events. The application can configure the SoftDevice to trigger every N connection events starting from a given connection event counter. See also ble_gap_conn_event_trigger_t.

Parameters
[in]conn_handleConnection handle.
[in]p_paramsConnection event trigger parameters.
Return values
NRF_SUCCESSSuccess.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter supplied. See ble_gap_conn_event_trigger_t.
NRF_ERROR_INVALID_STATEEither:
uint32_t sd_ble_gap_conn_evt_trigger_stop ( uint16_t  conn_handle)

Stop triggering the task configured using sd_ble_gap_conn_evt_trigger_start.

Parameters
[in]conn_handleConnection handle.
Return values
NRF_SUCCESSSuccess.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_INVALID_STATETrying to stop connection event triggering when it is not enabled.
uint32_t sd_ble_gap_conn_param_update ( uint16_t  conn_handle,
ble_gap_conn_params_t const *  p_conn_params 
)

Update connection parameters.

In the central role this will initiate a Link Layer connection parameter update procedure, otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for the central to perform the procedure. In both cases, and regardless of success or failure, the application will be informed of the result with a BLE_GAP_EVT_CONN_PARAM_UPDATE event.

This function can be used as a central both to reply to a BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested.

Events generated
BLE_GAP_EVT_CONN_PARAM_UPDATEResult of the connection parameter update procedure.
Relevant Message Sequence Charts
Peripheral Connection Parameter Update
Central Encryption and Authentication mutual exclusion
Central Connection Parameter Update on multiple links
Central Control Procedure Serialization on multiple links
Central Connection Parameter Update
Parameters
[in]conn_handleConnection handle.
[in]p_conn_paramsPointer to desired connection parameters. If NULL is provided on a peripheral role, the parameters in the PPCP characteristic of the GAP service will be used instead. If NULL is provided on a central role and in response to a BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected
Return values
NRF_SUCCESSThe Connection Update procedure has been started successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied, check parameter limits and constraints.
NRF_ERROR_INVALID_STATEDisconnection in progress or link has not been established.
NRF_ERROR_BUSYProcedure already in progress, wait for pending procedures to complete and retry.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_NO_MEMNot enough memory to complete operation.
uint32_t sd_ble_gap_conn_sec_get ( uint16_t  conn_handle,
ble_gap_conn_sec_t p_conn_sec 
)

Get the current connection security.

Parameters
[in]conn_handleConnection handle.
[out]p_conn_secPointer to a ble_gap_conn_sec_t structure to be filled in.
Return values
NRF_SUCCESSCurrent connection security successfully retrieved.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_connect ( ble_gap_addr_t const *  p_peer_addr,
ble_gap_scan_params_t const *  p_scan_params,
ble_gap_conn_params_t const *  p_conn_params,
uint8_t  conn_cfg_tag 
)

Create a connection (GAP Link Establishment).

Note
If a scanning procedure is currently in progress it will be automatically stopped when calling this function. The scanning procedure will be stopped even if the function returns an error.
Events generated
BLE_GAP_EVT_CONNECTEDA connection was established.
BLE_GAP_EVT_TIMEOUTFailed to establish a connection.
Relevant Message Sequence Charts
Whitelist Sharing
Central Connection Establishment with Private Peer
Central Connection Establishment and Termination
Parameters
[in]p_peer_addrPointer to peer identity address. If ble_gap_scan_params_t::filter_policy is set to use whitelist, then p_peer_addr is ignored.
[in]p_scan_paramsPointer to scan parameters structure.
[in]p_conn_paramsPointer to desired connection parameters.
[in]conn_cfg_tagTag identifying a configuration set by sd_ble_cfg_set or BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration.
Return values
NRF_SUCCESSSuccessfully initiated connection procedure.
NRF_ERROR_INVALID_ADDRInvalid parameter(s) pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_NOT_FOUNDconn_cfg_tag not found.
NRF_ERROR_INVALID_STATEThe SoftDevice is in an invalid state to perform this operation. This may be due to an existing locally initiated connect procedure, which must complete before initiating again.
BLE_ERROR_GAP_INVALID_BLE_ADDRInvalid Peer address.
NRF_ERROR_CONN_COUNTThe limit of available connections for this connection configuration tag has been reached. To increase the number of available connections, use sd_ble_cfg_set with BLE_GAP_CFG_ROLE_COUNT or BLE_CONN_CFG_GAP.
NRF_ERROR_RESOURCESEither:
  • Not enough BLE role slots available. Stop one or more currently active roles (Central, Peripheral or Observer) and try again.
  • The event_length parameter associated with conn_cfg_tag is too small to be able to establish a connection on the selected ble_gap_scan_params_t::scan_phys. Use sd_ble_cfg_set to increase the event length.
uint32_t sd_ble_gap_connect_cancel ( void  )

Cancel a connection establishment.

Relevant Message Sequence Charts
Central Connection Establishment and Termination
Return values
NRF_SUCCESSSuccessfully canceled an ongoing connection procedure.
NRF_ERROR_INVALID_STATENo locally initiated connect procedure started or connection completed occurred.
uint32_t sd_ble_gap_data_length_update ( uint16_t  conn_handle,
ble_gap_data_length_params_t const *  p_dl_params,
ble_gap_data_length_limitation_t p_dl_limitation 
)

Initiate or respond to a Data Length Update Procedure.

Note
If the application uses BLE_GAP_DATA_LENGTH_AUTO for one or more members of p_dl_params, the SoftDevice will choose the highest value supported in current configuration and connection parameters.
If the link PHY is Coded, the SoftDevice will ensure that the MaxTxTime and/or MaxRxTime used in the Data Length Update procedure is at least 2704 us. Otherwise, MaxTxTime and MaxRxTime will be limited to maximum 2120 us.
Parameters
[in]conn_handleConnection handle.
[in]p_dl_paramsPointer to local parameters to be used in Data Length Update Procedure. Set any member to BLE_GAP_DATA_LENGTH_AUTO to let the SoftDevice automatically decide the value for that member. Set to NULL to use automatic values for all members.
[out]p_dl_limitationPointer to limitation to be written when local device does not have enough resources or does not support the requested Data Length Update parameters. Ignored if NULL.
Relevant Message Sequence Charts
Data Length Update Procedure
Return values
NRF_SUCCESSSuccessfully set Data Length Extension initiation/response parameters.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle parameter supplied.
NRF_ERROR_INVALID_STATENo link has been established.
NRF_ERROR_INVALID_PARAMInvalid parameters supplied.
NRF_ERROR_NOT_SUPPORTEDThe requested parameters are not supported by the SoftDevice. Inspect p_dl_limitation to see which parameter is not supported.
NRF_ERROR_RESOURCESThe connection event length configured for this link is not sufficient for the requested parameters. Use sd_ble_cfg_set with BLE_CONN_CFG_GAP to increase the connection event length. Inspect p_dl_limitation to see where the limitation is.
NRF_ERROR_BUSYPeer has already initiated a Data Length Update Procedure. Process the pending BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST event to respond.
uint32_t sd_ble_gap_device_identities_set ( ble_gap_id_key_t const *const *  pp_id_keys,
ble_gap_irk_t const *const *  pp_local_irks,
uint8_t  len 
)

Set device identity list.

Note
Only one device identity list can be used at a time and the list is shared between the BLE roles. The device identity list cannot be set if a BLE role is using the list.
Parameters
[in]pp_id_keysPointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared.
[in]pp_local_irksPointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. To fill in the list with the currently set device IRK for all peers, set to NULL.
[in]lenLength of the device identity list, maximum BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT.
Relevant Message Sequence Charts
Private Advertising
Private Scanning
Scan Private Devices
Directed Advertising
Peripheral Connection Establishment with Private Peer
Central Connection Establishment with Private Peer
Return values
NRF_SUCCESSThe device identity list successfully set/cleared.
NRF_ERROR_INVALID_ADDRThe device identity list (or one of its entries) provided is invalid. This code may be returned if the local IRK list also has an invalid entry.
BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USEThe device identity list is in use and cannot be set or cleared.
BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATEThe device identity list contains multiple entries with the same identity address.
BLE_ERROR_GAP_INVALID_BLE_ADDRInvalid address type is supplied.
NRF_ERROR_DATA_SIZEThe given device identity list size invalid (zero or too large); this can only return when pp_id_keys is not NULL.
uint32_t sd_ble_gap_device_name_get ( uint8_t *  p_dev_name,
uint16_t *  p_len 
)

Get GAP device name.

Note
If the device name is longer than the size of the supplied buffer, p_len will return the complete device name length, and not the number of bytes actually returned in p_dev_name. The application may use this information to allocate a suitable buffer size.
Parameters
[out]p_dev_namePointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length.
[in,out]p_lenLength of the buffer pointed by p_dev_name, complete device name length on output.
Return values
NRF_SUCCESSGAP device name retrieved successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_DATA_SIZEInvalid data size(s) supplied.
uint32_t sd_ble_gap_device_name_set ( ble_gap_conn_sec_mode_t const *  p_write_perm,
uint8_t const *  p_dev_name,
uint16_t  len 
)

Set GAP device name.

Note
If the device name is located in application flash memory (see ble_gap_cfg_device_name_t), it cannot be changed. Then NRF_ERROR_FORBIDDEN will be returned.
Parameters
[in]p_write_permWrite permissions for the Device Name characteristic, see ble_gap_conn_sec_mode_t.
[in]p_dev_namePointer to a UTF-8 encoded, non NULL-terminated string.
[in]lenLength of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than BLE_GAP_DEVNAME_MAX_LEN).
Return values
NRF_SUCCESSGAP device name and permissions set successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_DATA_SIZEInvalid data size(s) supplied.
NRF_ERROR_FORBIDDENDevice name is not writable.
uint32_t sd_ble_gap_disconnect ( uint16_t  conn_handle,
uint8_t  hci_status_code 
)

Disconnect (GAP Link Termination).

This call initiates the disconnection procedure, and its completion will be communicated to the application with a BLE_GAP_EVT_DISCONNECTED event.

Events generated
BLE_GAP_EVT_DISCONNECTEDGenerated when disconnection procedure is complete.
Relevant Message Sequence Charts
Peripheral Connection Establishment and Termination
Parameters
[in]conn_handleConnection handle.
[in]hci_status_codeHCI status code, see Bluetooth status codes (accepted values are BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and BLE_HCI_CONN_INTERVAL_UNACCEPTABLE).
Return values
NRF_SUCCESSThe disconnection procedure has been started successfully.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_INVALID_STATEDisconnection in progress or link has not been established.
uint32_t sd_ble_gap_encrypt ( uint16_t  conn_handle,
ble_gap_master_id_t const *  p_master_id,
ble_gap_enc_info_t const *  p_enc_info 
)

Initiate GAP Encryption procedure.

In the central role, this function will initiate the encryption procedure using the encryption information provided.

Events generated
BLE_GAP_EVT_CONN_SEC_UPDATEThe connection security has been updated.
Relevant Message Sequence Charts
Central Encryption and Authentication mutual exclusion
Encryption Establishment using stored keys
Central Control Procedure Serialization on multiple links
Security Request Reception
Parameters
[in]conn_handleConnection handle.
[in]p_master_idPointer to a ble_gap_master_id_t master identification structure.
[in]p_enc_infoPointer to a ble_gap_enc_info_t encryption information structure.
Return values
NRF_SUCCESSSuccessfully initiated authentication procedure.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_STATENo link has been established.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
BLE_ERROR_INVALID_ROLEOperation is not supported in the Peripheral role.
NRF_ERROR_BUSYProcedure already in progress or not allowed at this time, wait for pending procedures to complete and retry.
uint32_t sd_ble_gap_keypress_notify ( uint16_t  conn_handle,
uint8_t  kp_not 
)

Notify the peer of a local keypress.

Relevant Message Sequence Charts
Bonding: Passkey Entry, User Inputs on Peripheral
Bonding: Passkey Entry: User Inputs on Central
Parameters
[in]conn_handleConnection handle.
[in]kp_notSee GAP Keypress Notification Types.
Return values
NRF_SUCCESSKeypress notification successfully queued for transmission.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
  • Authentication key not requested.
  • Passkey has not been entered.
  • Keypresses have not been enabled by both peers.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_BUSYThe BLE stack is busy. Retry at later time.
uint32_t sd_ble_gap_lesc_dhkey_reply ( uint16_t  conn_handle,
ble_gap_lesc_dhkey_t const *  p_dhkey 
)

Reply with an LE Secure connections DHKey.

This function is only used to reply to a BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.

Note
If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
Events generated
This function is used during authentication procedures, see the list of events in the documentation of sd_ble_gap_authenticate.
Relevant Message Sequence Charts
Pairing: Just Works
Bonding: Numeric Comparison
Bonding: Passkey Entry, Peripheral Displays
Bonding: Passkey Entry, User Inputs on Peripheral
Bonding: Out of Band
Pairing: Just Works
Bonding: Numeric Comparison
Bonding: Passkey Entry: Central Displays
Bonding: Passkey Entry: User Inputs on Central
Bonding: Out of Band
Parameters
[in]conn_handleConnection handle.
[in]p_dhkeyLE Secure Connections DHKey.
Return values
NRF_SUCCESSDHKey successfully set.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_lesc_oob_data_get ( uint16_t  conn_handle,
ble_gap_lesc_p256_pk_t const *  p_pk_own,
ble_gap_lesc_oob_data_t p_oobd_own 
)

Generate a set of OOB data to send to a peer out of band.

Note
The ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, the one used during connection setup). The application may manually overwrite it with an updated value.
Relevant Message Sequence Charts
Bonding: Out of Band
Bonding: Out of Band
Parameters
[in]conn_handleConnection handle. Can be BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet.
[in]p_pk_ownLE Secure Connections local P-256 Public Key.
[out]p_oobd_ownThe OOB data to be sent out of band to a peer.
Return values
NRF_SUCCESSOOB data successfully generated.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_lesc_oob_data_set ( uint16_t  conn_handle,
ble_gap_lesc_oob_data_t const *  p_oobd_own,
ble_gap_lesc_oob_data_t const *  p_oobd_peer 
)

Provide the OOB data sent/received out of band.

Note
An authentication procedure with OOB selected as an algorithm must be in progress when calling this function.
A BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function.
Events generated
This function is used during authentication procedures, see the list of events in the documentation of sd_ble_gap_authenticate.
Relevant Message Sequence Charts
Bonding: Out of Band
Bonding: Out of Band
Parameters
[in]conn_handleConnection handle.
[in]p_oobd_ownThe OOB data sent out of band to a peer or NULL if the peer has not received OOB data. Must correspond to ble_gap_sec_params_t::oob flag in BLE_GAP_EVT_SEC_PARAMS_REQUEST.
[in]p_oobd_peerThe OOB data received out of band from a peer or NULL if none received. Must correspond to ble_gap_sec_params_t::oob flag in sd_ble_gap_authenticate in the central role or in sd_ble_gap_sec_params_reply in the peripheral role.
Return values
NRF_SUCCESSOOB data accepted.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
  • Authentication key not requested
  • Not expecting LESC OOB data
  • Have not actually exchanged passkeys.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_next_conn_evt_counter_get ( uint16_t  conn_handle,
uint16_t *  p_counter 
)

Obtain the next connection event counter value.

The connection event counter is initialized to zero on the first connection event. The value is incremented by one for each connection event. For more information see Bluetooth Core Specification v5.0, Vol 6, Part B, Section 4.5.1.

Note
The connection event counter obtained through this API will be outdated if this API is called at the same time as the connection event counter is incremented.
This API will always return the last connection event counter + 1. The actual connection event may be multiple connection events later if:
  • Slave latency is enabled and there is no data to transmit or receive.
  • Another role is scheduled with a higher priority at the same time as the next connection event.
Parameters
[in]conn_handleConnection handle.
[out]p_counterPointer to the variable where the next connection event counter will be written.
Return values
NRF_SUCCESSThe connection event counter was successfully retrieved.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle parameter supplied.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
uint32_t sd_ble_gap_phy_update ( uint16_t  conn_handle,
ble_gap_phys_t const *  p_gap_phys 
)

Initiate or respond to a PHY Update Procedure.

This function is used to initiate or respond to a PHY Update Procedure. It will always generate a BLE_GAP_EVT_PHY_UPDATE event if successfully executed. If this function is used to initiate a PHY Update procedure and the only option provided in ble_gap_phys_t::tx_phys and ble_gap_phys_t::rx_phys is the currently active PHYs in the respective directions, the SoftDevice will generate a BLE_GAP_EVT_PHY_UPDATE with the current PHYs set and will not initiate the procedure in the Link Layer.

If ble_gap_phys_t::tx_phys or ble_gap_phys_t::rx_phys is BLE_GAP_PHY_AUTO, then the stack will select PHYs based on the peer's PHY preferences and the local link configuration. The PHY Update procedure will for this case result in a PHY combination that respects the time constraints configured with sd_ble_cfg_set and the current link layer data length.

When acting as a central, the SoftDevice will select the fastest common PHY in each direction.

If the peer does not support the PHY Update Procedure, then the resulting BLE_GAP_EVT_PHY_UPDATE event will have a status set to BLE_HCI_UNSUPPORTED_REMOTE_FEATURE.

If the PHY Update procedure was rejected by the peer due to a procedure collision, the status will be BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION or BLE_HCI_DIFFERENT_TRANSACTION_COLLISION. If the peer responds to the PHY Update procedure with invalid parameters, the status will be BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS. If the PHY Update procedure was rejected by the peer for a different reason, the status will contain the reason as specified by the peer.

Events generated
BLE_GAP_EVT_PHY_UPDATEResult of the PHY Update Procedure.
Relevant Message Sequence Charts
Central PHY Update
Peripheral PHY Update
Parameters
[in]conn_handleConnection handle to indicate the connection for which the PHY Update is requested.
[in]p_gap_physPointer to PHY structure.
Return values
NRF_SUCCESSSuccessfully requested a PHY Update.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATENo link has been established.
NRF_ERROR_RESOURCESThe connection event length configured for this link is not sufficient for the combination of ble_gap_phys_t::tx_phys, ble_gap_phys_t::rx_phys, and ble_gap_data_length_params_t. The connection event length is configured with BLE_CONN_CFG_GAP using sd_ble_cfg_set.
NRF_ERROR_BUSYProcedure is already in progress or not allowed at this time. Process pending events and wait for the pending procedure to complete and retry.
uint32_t sd_ble_gap_ppcp_get ( ble_gap_conn_params_t p_conn_params)

Get GAP Peripheral Preferred Connection Parameters.

Parameters
[out]p_conn_paramsPointer to a ble_gap_conn_params_t structure where the parameters will be stored.
Return values
NRF_SUCCESSPeripheral Preferred Connection Parameters retrieved successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_NOT_SUPPORTEDThe characteristic is not included in the Attribute Table, see ble_gap_cfg_ppcp_incl_cfg_t.
uint32_t sd_ble_gap_ppcp_set ( ble_gap_conn_params_t const *  p_conn_params)

Set GAP Peripheral Preferred Connection Parameters.

Parameters
[in]p_conn_paramsPointer to a ble_gap_conn_params_t structure with the desired parameters.
Return values
NRF_SUCCESSPeripheral Preferred Connection Parameters set successfully.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_NOT_SUPPORTEDThe characteristic is not included in the Attribute Table, see ble_gap_cfg_ppcp_incl_cfg_t.
uint32_t sd_ble_gap_privacy_get ( ble_gap_privacy_params_t p_privacy_params)

Get privacy settings.

Note
ble_gap_privacy_params_t::p_device_irk must be initialized to NULL or a valid address before this function is called. If it is initialized to a valid address, the address pointed to will contain the current device IRK on return.
Parameters
[in,out]p_privacy_paramsPrivacy settings.
Return values
NRF_SUCCESSPrivacy settings read.
NRF_ERROR_INVALID_ADDRThe pointer given for returning the privacy settings may be NULL or invalid. Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer.
uint32_t sd_ble_gap_privacy_set ( ble_gap_privacy_params_t const *  p_privacy_params)

Set privacy settings.

Note
Privacy settings cannot be changed while advertising, scanning or creating a connection.
Parameters
[in]p_privacy_paramsPrivacy settings.
Relevant Message Sequence Charts
Private Advertising
Private Scanning
Directed Advertising
Return values
NRF_SUCCESSSet successfully.
NRF_ERROR_BUSYThe stack is busy, process pending events and retry.
BLE_ERROR_GAP_INVALID_BLE_ADDRInvalid address type is supplied.
NRF_ERROR_INVALID_ADDRThe pointer to privacy settings is NULL or invalid. Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer.
NRF_ERROR_INVALID_PARAMOut of range parameters are provided.
NRF_ERROR_NOT_SUPPORTEDThe SoftDevice does not support privacy if the Central Address Resolution characteristic is not configured to be included and the SoftDevice is configured to support central roles. See ble_gap_cfg_car_incl_cfg_t and ble_gap_cfg_role_count_t.
NRF_ERROR_INVALID_STATEPrivacy settings cannot be changed while advertising, scanning or creating a connection.
uint32_t sd_ble_gap_qos_channel_survey_start ( uint32_t  interval_us)

Start the Quality of Service (QoS) channel survey module.

The channel survey module provides measurements of the energy levels on the Bluetooth Low Energy channels. When the module is enabled, BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT events will periodically report the measured energy levels for each channel.

Note
The measurements are scheduled with lower priority than other Bluetooth Low Energy roles, Radio Timeslot API events and Flash API events.
The channel survey module will attempt to do measurements so that the average interval between measurements will be interval_us. However due to the channel survey module having the lowest priority of all roles and modules, this may not be possible. In that case fewer than expected channel survey reports may be given.
In order to use the channel survey module, ble_gap_cfg_role_count_t::qos_channel_survey_role_available must be set. This is done using sd_ble_cfg_set.
Parameters
[in]interval_usRequested average interval for the measurements and reports. See Quality of Service (QoS) Channel survey interval defines for valid ranges. If set to BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_CONTINUOUS, the channel survey role will be scheduled at every available opportunity.
Return values
NRF_SUCCESSThe module is successfully started.
NRF_ERROR_INVALID_PARAMInvalid parameter supplied. interval_us is out of the allowed range.
NRF_ERROR_INVALID_STATETrying to start the module when already running.
NRF_ERROR_RESOURCESThe channel survey module is not available to the application. Set ble_gap_cfg_role_count_t::qos_channel_survey_role_available using sd_ble_cfg_set.
uint32_t sd_ble_gap_qos_channel_survey_stop ( void  )

Stop the Quality of Service (QoS) channel survey module.

Note
The SoftDevice may generate one BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT event after this function is called.
Return values
NRF_SUCCESSThe module is successfully stopped.
NRF_ERROR_INVALID_STATETrying to stop the module when it is not running.
uint32_t sd_ble_gap_rssi_get ( uint16_t  conn_handle,
int8_t *  p_rssi,
uint8_t *  p_ch_index 
)

Get the received signal strength for the last connection event.

   @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND
   will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start.
Note
ERRATA-153 requires the rssi sample to be compensated based on a temperature measurement.
Relevant Message Sequence Charts
RSSI get sample
Parameters
[in]conn_handleConnection handle.
[out]p_rssiPointer to the location where the RSSI measurement shall be stored.
[out]p_ch_indexPointer to the location where Channel Index for the RSSI measurement shall be stored.
Return values
NRF_SUCCESSSuccessfully read the RSSI.
NRF_ERROR_NOT_FOUNDNo sample is available.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_INVALID_STATERSSI reporting is not ongoing.
uint32_t sd_ble_gap_rssi_start ( uint16_t  conn_handle,
uint8_t  threshold_dbm,
uint8_t  skip_count 
)

Start reporting the received signal strength to the application.

   A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called.
Events generated
BLE_GAP_EVT_RSSI_CHANGEDNew RSSI data available. How often the event is generated is dependent on the settings of the threshold_dbm and skip_count input parameters.
Relevant Message Sequence Charts
RSSI get sample
RSSI for connections with event filter
Parameters
[in]conn_handleConnection handle.
[in]threshold_dbmMinimum change in dBm before triggering the BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals BLE_GAP_RSSI_THRESHOLD_INVALID.
[in]skip_countNumber of RSSI samples with a change of threshold_dbm or more before sending a new BLE_GAP_EVT_RSSI_CHANGED event.
Return values
NRF_SUCCESSSuccessfully activated RSSI reporting.
NRF_ERROR_INVALID_STATERSSI reporting is already ongoing.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_rssi_stop ( uint16_t  conn_handle)

Stop reporting the received signal strength.

Note
An RSSI change detected before the call but not yet received by the application may be reported after sd_ble_gap_rssi_stop has been called.
Relevant Message Sequence Charts
RSSI get sample
RSSI for connections with event filter
Parameters
[in]conn_handleConnection handle.
Return values
NRF_SUCCESSSuccessfully deactivated RSSI reporting.
NRF_ERROR_INVALID_STATERSSI reporting is not ongoing.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_scan_start ( ble_gap_scan_params_t const *  p_scan_params,
ble_data_t const *  p_adv_report_buffer 
)

Start or continue scanning (GAP Discovery procedure, Observer Procedure).

Note
A call to this function will require the application to keep the memory pointed by p_adv_report_buffer alive until the buffer is released. The buffer is released when the scanner is stopped or when this function is called with another buffer.
The scanner will automatically stop in the following cases:
If a BLE_GAP_EVT_ADV_REPORT event is received with ble_gap_adv_report_type_t::status set to BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, the scanner will continue scanning, and the application will receive more reports from this advertising event. The following reports will include the old and new received data.
Events generated
BLE_GAP_EVT_ADV_REPORTAn advertising or scan response packet has been received.
BLE_GAP_EVT_TIMEOUTScanner has timed out.
Relevant Message Sequence Charts
Scanning
Whitelist Sharing
Parameters
[in]p_scan_paramsPointer to scan parameters structure. When this function is used to continue scanning, this parameter must be NULL.
[in]p_adv_report_bufferPointer to buffer used to store incoming advertising data. The memory pointed to should be kept alive until the scanning is stopped. See GAP Minimum scanner buffer size for minimum and maximum buffer size. If the scanner receives advertising data larger than can be stored in the buffer, a BLE_GAP_EVT_ADV_REPORT will be raised with ble_gap_adv_report_type_t::status set to BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_TRUNCATED.
Return values
NRF_SUCCESSSuccessfully initiated scanning procedure.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
  • Scanning is already ongoing and p_scan_params was not NULL
  • Scanning is not running and p_scan_params was NULL.
  • The scanner has timed out when this function is called to continue scanning.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied. See ble_gap_scan_params_t.
NRF_ERROR_NOT_SUPPORTEDUnsupported parameters supplied. See ble_gap_scan_params_t.
NRF_ERROR_INVALID_LENGTHThe provided buffer length is invalid. See BLE_GAP_SCAN_BUFFER_MIN.
NRF_ERROR_RESOURCESNot enough BLE role slots available. Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again
uint32_t sd_ble_gap_scan_stop ( void  )

Stop scanning (GAP Discovery procedure, Observer Procedure).

Note
The buffer provided in sd_ble_gap_scan_start is released.
Relevant Message Sequence Charts
Scanning
Whitelist Sharing
Return values
NRF_SUCCESSSuccessfully stopped scanning procedure.
NRF_ERROR_INVALID_STATENot in the scanning state.
uint32_t sd_ble_gap_sec_info_reply ( uint16_t  conn_handle,
ble_gap_enc_info_t const *  p_enc_info,
ble_gap_irk_t const *  p_id_info,
ble_gap_sign_info_t const *  p_sign_info 
)

Reply with GAP security information.

This function is only used to reply to a BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in NRF_ERROR_INVALID_STATE.

Note
If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
Data signing is not yet supported, and p_sign_info must therefore be NULL.
Relevant Message Sequence Charts
Peripheral Encryption Establishment using stored keys
Parameters
[in]conn_handleConnection handle.
[in]p_enc_infoPointer to a ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available.
[in]p_id_infoPointer to a ble_gap_irk_t identity information structure. May be NULL to signal none is available.
[in]p_sign_infoPointer to a ble_gap_sign_info_t signing information structure. May be NULL to signal none is available.
Return values
NRF_SUCCESSSuccessfully accepted security information.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATEInvalid state to perform operation. Either:
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_sec_params_reply ( uint16_t  conn_handle,
uint8_t  sec_status,
ble_gap_sec_params_t const *  p_sec_params,
ble_gap_sec_keyset_t const *  p_sec_keyset 
)

Reply with GAP security parameters.

This function is only used to reply to a BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.

Note
If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
Events generated
This function is used during authentication proceduressee the list of events in the documentation of sd_ble_gap_authenticate.
Relevant Message Sequence Charts
Pairing: Just Works
Bonding: Just Works
Bonding: Passkey Entry, Peripheral displays
Bonding: Passkey Entry, User Inputs on Peripheral or OOB
Bonding: Passkey Entry with static passkey
Pairing failure: Confirm failed
Pairing: Just Works
Bonding: Numeric Comparison
Bonding: Passkey Entry, Peripheral Displays
Bonding: Passkey Entry, User Inputs on Peripheral
Bonding: Out of Band
GAP Failed Pairing: Keysize too small
Pairing failure: Pairing aborted by the application
Pairing failure: Pairing failed from central
Pairing failure: Timeout
Pairing: Just Works
Bonding: Just Works
Bonding: Passkey Entry, Central displays
Bonding: Passkey Entry, User Inputs on Central or OOB
Pairing: Just Works
Bonding: Numeric Comparison
Bonding: Passkey Entry: Central Displays
Bonding: Passkey Entry: User Inputs on Central
Bonding: Out of Band
Parameters
[in]conn_handleConnection handle.
[in]sec_statusSecurity status, see GAP Security status.
[in]p_sec_paramsPointer to a ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have already been provided during a previous call to sd_ble_gap_authenticate.
[in,out]p_sec_keysetPointer to a ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application upon reception of a BLE_GAP_EVT_AUTH_STATUS event. Note that the SoftDevice expects the application to provide memory for storing the peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the BLE_GAP_EVT_AUTH_STATUS event.
Return values
NRF_SUCCESSSuccessfully accepted security parameter from the application.
NRF_ERROR_INVALID_ADDRInvalid pointer supplied.
NRF_ERROR_BUSYThe stack is busy, process pending events and retry.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
NRF_ERROR_INVALID_STATESecurity parameters has not been requested.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
NRF_ERROR_NOT_SUPPORTEDSetting of sign or link fields in ble_gap_sec_kdist_t not supported. Distribution of own Identity Information is only supported if the Central Address Resolution characteristic is configured to be included or the Softdevice is configured to support peripheral roles only. See ble_gap_cfg_car_incl_cfg_t and ble_gap_cfg_role_count_t.
uint32_t sd_ble_gap_tx_power_set ( uint8_t  role,
uint16_t  handle,
int8_t  tx_power 
)

Set the radio's transmit power.

Parameters
[in]roleThe role to set the transmit power for, see BLE_GAP_TX_POWER_ROLES for possible roles.
[in]handleThe handle parameter is interpreted depending on role:
[in]tx_powerRadio transmit power in dBm (see note for accepted values).
Note
Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +2dBm, +3dBm, +4dBm, +5dBm, +6dBm, +7dBm and +8dBm.
The initiator will have the same transmit power as the scanner.
When a connection is created it will inherit the transmit power from the initiator or advertiser leading to the connection.
Return values
NRF_SUCCESSSuccessfully changed the transmit power.
NRF_ERROR_INVALID_PARAMInvalid parameter(s) supplied.
BLE_ERROR_INVALID_ADV_HANDLEAdvertising handle not found.
BLE_ERROR_INVALID_CONN_HANDLEInvalid connection handle supplied.
uint32_t sd_ble_gap_whitelist_set ( ble_gap_addr_t const *const *  pp_wl_addrs,
uint8_t  len 
)

Set the active whitelist in the SoftDevice.

Note
Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. The whitelist cannot be set if a BLE role is using the whitelist.
If an address is resolved using the information in the device identity list, then the whitelist filter policy applies to the peer identity address and not the resolvable address sent on air.
Relevant Message Sequence Charts
Whitelist Sharing
Scan Private Devices
Parameters
[in]pp_wl_addrsPointer to a whitelist of peer addresses, if NULL the whitelist will be cleared.
[in]lenLength of the whitelist, maximum BLE_GAP_WHITELIST_ADDR_MAX_COUNT.
Return values
NRF_SUCCESSThe whitelist is successfully set/cleared.
NRF_ERROR_INVALID_ADDRThe whitelist (or one of its entries) provided is invalid.
BLE_ERROR_GAP_WHITELIST_IN_USEThe whitelist is in use by a BLE role and cannot be set or cleared.
BLE_ERROR_GAP_INVALID_BLE_ADDRInvalid address type is supplied.
NRF_ERROR_DATA_SIZEThe given whitelist size is invalid (zero or too large); this can only return when pp_wl_addrs is not NULL.