| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Macros | Enumerations | Functions
Advertising and Scan Response Data Encoder for NFC OOB pairing
BLE pairing messages

Function for encoding data in the Advertising and Scan Response Data format, which can be used to create payload of NFC message intended for initiating the Out-of-Band pairing. More...

## Macros
#define | AD_TYPE_LE_ROLE_DATA_SIZE 1UL
#define | AD_TYPE_LE_ROLE_SIZE
#define | AD_TYPE_TK_VALUE_DATA_SIZE (sizeof(ble_advdata_tk_value_t))
#define | AD_TYPE_TK_VALUE_SIZE
#define | AD_TYPE_OOB_FLAGS_DATA_SIZE 1UL
#define | AD_TYPE_OOB_FLAGS_SIZE
#define | AD_TYPE_SEC_MGR_OOB_FLAG_SET 1U
#define | AD_TYPE_SEC_MGR_OOB_FLAG_CLEAR 0U
#define | AD_TYPE_SEC_MGR_OOB_FLAG_OOB_DATA_PRESENT_POS 0UL
#define | AD_TYPE_SEC_MGR_OOB_FLAG_OOB_LE_SUPPORTED_POS 1UL
#define | AD_TYPE_SEC_MGR_OOB_FLAG_SIM_LE_AND_EP_POS 2UL
#define | AD_TYPE_SEC_MGR_OOB_ADDRESS_TYPE_PUBLIC 0UL
#define | AD_TYPE_SEC_MGR_OOB_ADDRESS_TYPE_RANDOM 1UL
#define | AD_TYPE_SEC_MGR_OOB_FLAG_ADDRESS_TYPE_POS 3UL

## Enumerations
enum | nfc_ble_advdata_le_role_encoded_t { NFC_BLE_ADVDATA_ROLE_ENCODED_ONLY_PERIPH = 0, NFC_BLE_ADVDATA_ROLE_ENCODED_ONLY_CENTRAL, NFC_BLE_ADVDATA_ROLE_ENCODED_BOTH_PERIPH_PREFERRED, NFC_BLE_ADVDATA_ROLE_ENCODED_BOTH_CENTRAL_PREFERRED }
| Payload field values of LE Role BLE GAP AD Type. Corresponds with ble_advdata_le_role_t enum. More...

## Functions
ret_code_t | nfc_ble_oob_adv_data_encode (ble_advdata_t const *const p_advdata, uint8_t *const p_encoded_data, uint16_t *const p_len)
| Function for encoding data in the Advertising and Scan Response data format, which is used for NFC OOB pairing. More...

## Detailed Description

Function for encoding data in the Advertising and Scan Response Data format, which can be used to create payload of NFC message intended for initiating the Out-of-Band pairing.

## Macro Definition Documentation

#define AD_TYPE_LE_ROLE_DATA_SIZE 1UL

Data size (in octets) of the LE Bluetooth Device Address AD type.

#define AD_TYPE_LE_ROLE_SIZE

Value:
(ADV_AD_DATA_OFFSET + \
AD_TYPE_LE_ROLE_DATA_SIZE)

Size (in octets) of the LE Bluetooth Device Address AD type.

#define AD_TYPE_OOB_FLAGS_DATA_SIZE 1UL

Data size (in octets) of the Security Manager OOB Flags AD type.

#define AD_TYPE_OOB_FLAGS_SIZE

Value:
(ADV_AD_DATA_OFFSET + \
AD_TYPE_OOB_FLAGS_DATA_SIZE)

Size (in octets) of the Security Manager OOB Flags AD type.

#define AD_TYPE_SEC_MGR_OOB_ADDRESS_TYPE_PUBLIC 0UL

Security Manager OOB Public Address type.

#define AD_TYPE_SEC_MGR_OOB_ADDRESS_TYPE_RANDOM 1UL

Security Manager OOB Random Address type.

#define AD_TYPE_SEC_MGR_OOB_FLAG_ADDRESS_TYPE_POS 3UL

Security Manager OOB Address type Flag (0 = Public Address, 1 = Random Address) position.

#define AD_TYPE_SEC_MGR_OOB_FLAG_CLEAR 0U

Security Manager OOB Flag clear. Flag selection is done using _POS defines

#define AD_TYPE_SEC_MGR_OOB_FLAG_OOB_DATA_PRESENT_POS 0UL

Security Manager OOB Data Present Flag position.

#define AD_TYPE_SEC_MGR_OOB_FLAG_OOB_LE_SUPPORTED_POS 1UL

Security Manager OOB Low Energy Supported Flag position.

#define AD_TYPE_SEC_MGR_OOB_FLAG_SET 1U

Security Manager OOB Flag set. Flag selection is done using _POS defines

#define AD_TYPE_SEC_MGR_OOB_FLAG_SIM_LE_AND_EP_POS 2UL

Security Manager OOB Simultaneous LE and BR/EDR to Same Device Capable Flag position.

#define AD_TYPE_TK_VALUE_DATA_SIZE (sizeof(ble_advdata_tk_value_t))

Data size (in octets) of the Security Manager TK value AD type.

#define AD_TYPE_TK_VALUE_SIZE

Value:
(ADV_AD_DATA_OFFSET + \
AD_TYPE_TK_VALUE_DATA_SIZE)

Size (in octets) of the Security Manager TK value AD type.

## Enumeration Type Documentation

enum nfc_ble_advdata_le_role_encoded_t

Payload field values of LE Role BLE GAP AD Type. Corresponds with ble_advdata_le_role_t enum.

Enumerator
NFC_BLE_ADVDATA_ROLE_ENCODED_ONLY_PERIPH | Only Peripheral Role supported.
NFC_BLE_ADVDATA_ROLE_ENCODED_ONLY_CENTRAL | Only Central Role supported.
NFC_BLE_ADVDATA_ROLE_ENCODED_BOTH_PERIPH_PREFERRED | Peripheral and Central Role supported. Peripheral Role preferred for connection establishment.
NFC_BLE_ADVDATA_ROLE_ENCODED_BOTH_CENTRAL_PREFERRED | Peripheral and Central Role supported. Central Role preferred for connection establishment

## Function Documentation

ret_code_t nfc_ble_oob_adv_data_encode | ( | ble_advdata_t const *const | p_advdata,
|  | uint8_t *const | p_encoded_data,
|  | uint16_t *const | p_len
| ) |  |

Function for encoding data in the Advertising and Scan Response data format, which is used for NFC OOB pairing.

This function encodes data into the Advertising and Scan Response data format (AD structures). Encoding is based on the selections in the supplied structures. This function uses adv_data_encode to encode regular data and adds addtional AD Structures which are specific for NFC OOB pairing: Security Manager TK Value, OOB Flags and LE Role.

Parameters

  [in] | p_advdata | Pointer to the structure for specifying the content of encoded data.
  [out] | p_encoded_data | Pointer to the buffer where encoded data will be returned.
  [in,out] | p_len | `in:` Size of `p_encoded_data` buffer. `out:` Length of encoded data.

Return values

  NRF_SUCCESS | If the operation was successful.
  NRF_ERROR_INVALID_PARAM | If the operation failed because a wrong parameter was provided in `p_advdata`.
  NRF_ERROR_DATA_SIZE | If the operation failed because not all the requested data could fit into the provided buffer or some encoded AD structure is too long and its length cannot be encoded with one octet.