BLE GATT Queue

nRF5 SDK v17.1.0

Queue for the BLE GATT requests. More...

Data Structures

struct nrf_ble_gq_gattc_read_t
Structure used to describe NRF_BLE_GQ_REQ_GATTC_READ request type. More...
struct nrf_ble_gq_gattc_srv_discovery_t
Structure used to describe NRF_BLE_GQ_REQ_SRV_DISCOVERY request type. More...
struct nrf_ble_gq_req_error_handler_t
Structure used to handle SoftDevice error. More...
struct nrf_ble_gq_req_t
Structure used to describe BLE GATT request. More...
struct nrf_ble_gq_t
Descriptor for the BLE GATT Queue instance. More...

Macros

#define NRF_BLE_GQ_DEF (_name, _max_connections, _queue_size)
Macro for defining a nrf_ble_gq_t instance with default parameters. More...
#define NRF_BLE_GQ_CUSTOM_DEF (_name, _max_connections, _queue_size, _pool_elem_size, _pool_elem_count)
Macro for defining a nrf_ble_gq_t instance. More...
#define NRF_BLE_GQ_CONN_HANDLE_INIT (_arg) BLE_CONN_HANDLE_INVALID ,
Helping macro used to properly initialize connection handle array for nrf_ble_gq_t instance. Used in NRF_BLE_GQ_CUSTOM_DEF .

Typedefs

typedef void(* nrf_ble_gq_req_error_cb_t )(uint32_t nrf_error, void *p_context, uint16_t conn_handle)
Pointer used to describe error handler for GATTC request.
typedef ble_gattc_write_params_t nrf_ble_gq_gattc_write_t
Structure used to describe NRF_BLE_GQ_REQ_GATTC_WRITE request type.
typedef ble_gattc_handle_range_t nrf_ble_gq_gattc_char_disc_t
Structure used to describe NRF_BLE_GQ_REQ_CHAR_DISCOVERY request type.
typedef ble_gattc_handle_range_t nrf_ble_gq_gattc_desc_disc_t
Structure used to describe NRF_BLE_GQ_REQ_DESC_DISCOVERY request type.
typedef ble_gatts_hvx_params_t nrf_ble_gq_gatts_hvx_t
Structure used to describe NRF_BLE_GQ_REQ_GATTS_HVX request type.

Functions

ret_code_t nrf_ble_gq_item_add ( nrf_ble_gq_t const *const p_gatt_queue, nrf_ble_gq_req_t *const p_req, uint16_t conn_handle)
Function for adding a GATT request to the BGQ instance. More...
ret_code_t nrf_ble_gq_conn_handle_register ( nrf_ble_gq_t *const p_gatt_queue, uint16_t conn_handle)
Function for registering connection handle in the BGQ instance. More...
void nrf_ble_gq_on_ble_evt ( ble_evt_t const *p_ble_evt, void *p_context)
Function for handling BLE events from the SoftDevice. More...

Detailed Description

Queue for the BLE GATT requests.

The BLE GATT Queue (BGQ) module can be used to queue BLE GATT requests if the SoftDevice is not able to handle them at the moment. In this case, processing of queued request is postponed. Later on, when corresponding BLE event indicates that the SoftDevice may be free, the request is retried. For conceptual documentation of this module, see BLE GATT Queue .

Macro Definition Documentation

#define NRF_BLE_GQ_CUSTOM_DEF ( _name,
_max_connections,
_queue_size,
_pool_elem_size,
_pool_elem_count
)

Macro for defining a nrf_ble_gq_t instance.

Parameters
_name Name of the instance.
_max_connections The maximal number of connection handles that can be registered.
_queue_size The maximal number of nrf_ble_gq_req_t instances that queue can hold.
_pool_elem_size Size of a single element in the pool of memory objects.
_pool_elem_count Number of elements in the pool of memory objects.
#define NRF_BLE_GQ_DEF ( _name,
_max_connections,
_queue_size
)

Macro for defining a nrf_ble_gq_t instance with default parameters.

Parameters
_name Name of the instance.
_max_connections The maximal number of connection handles that can be registered.
_queue_size The maximal number of nrf_ble_gq_req_t instances that queue can hold.

Enumeration Type Documentation

BLE GATT request types.

Enumerator
NRF_BLE_GQ_REQ_GATTC_READ

GATTC Read Request. See nrf_ble_gq_gattc_read_t and sd_ble_gattc_read

NRF_BLE_GQ_REQ_GATTC_WRITE

GATTC Write Request. See nrf_ble_gq_gattc_write_t and sd_ble_gattc_write

NRF_BLE_GQ_REQ_SRV_DISCOVERY

GATTC Service Discovery Request. See nrf_ble_gq_gattc_write_t and sd_ble_gattc_primary_services_discover .

NRF_BLE_GQ_REQ_CHAR_DISCOVERY

GATTC Characteristic Discovery Request. See nrf_ble_gq_gattc_char_disc_t and sd_ble_gattc_characteristics_discover .

NRF_BLE_GQ_REQ_DESC_DISCOVERY

GATTC Characteristic Descriptor Discovery Request. See nrf_ble_gq_gattc_desc_disc_t and sd_ble_gattc_descriptors_discover

NRF_BLE_GQ_REQ_GATTS_HVX

GATTS Handle Value Notification or Indication. See nrf_ble_gq_gatts_hvx_t and ble_gatts_hvx_params_t

NRF_BLE_GQ_REQ_NUM

Total number of different GATT Request types

Function Documentation

ret_code_t nrf_ble_gq_conn_handle_register ( nrf_ble_gq_t *const p_gatt_queue ,
uint16_t conn_handle
)

Function for registering connection handle in the BGQ instance.

This function is used for registering connection handle in the BGQ instance. From this point, the BGQ instance can handle GATT requests associated with the handle until connection is no longer valid (disconnect event occurs).

Parameters
[in] p_gatt_queue Pointer to the BGQ instance.
[in] conn_handle Connection handle.
Return values
NRF_SUCCESS If the registration was successful.
NRF_ERROR_NULL If p_gatt_queue was NULL.
NRF_ERROR_NO_MEM If there was no space for another connection handle.
ret_code_t nrf_ble_gq_item_add ( nrf_ble_gq_t const *const p_gatt_queue ,
nrf_ble_gq_req_t *const p_req ,
uint16_t conn_handle
)

Function for adding a GATT request to the BGQ instance.

This function adds a request to the BGQ instance and allocates necessary memory for data that can be held within the request descriptor. If the SoftDevice is free, this request will be processed immediately. Otherwise, the request remains in in the queue and is processed later.

Parameters
[in] p_gatt_queue Pointer to the BGQ instance.
[in] p_req Pointer to the request.
[in] conn_handle Connection handle associated with the request.
Return values
NRF_SUCCESS If the request was added successfully.
NRF_ERROR_NULL Any parameter was NULL.
NRF_ERROR_NO_MEM There was no room in the queue or in the data pool.
NRF_ERROR_INVALID_PARAM If conn_handle is not registered or type of request - p_req is not valid.
err_code Other request specific error codes may be returned.
void nrf_ble_gq_on_ble_evt ( ble_evt_t const * p_ble_evt ,
void * p_context
)

Function for handling BLE events from the SoftDevice.

This function handles the BLE events received from the SoftDevice. If a BLE event is relevant to the BGQ module, it is used to update internal variables, process queued GATT requests and, if necessary, send errors to the application.

Parameters
[in] p_ble_evt Pointer to the BLE event.
[in] p_context Pointer to the BGQ instance.