nRF Connect SDK Bare Metal API 2.0.99
Loading...
Searching...
No Matches
ble_adv.h
1
16#ifndef BLE_ADV_H__
17#define BLE_ADV_H__
18
19#include <stdint.h>
20#include <stdbool.h>
21#include <bm/bluetooth/ble_adv_data.h>
22#include <ble.h>
23#include <ble_gap.h>
24#include <ble_gattc.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
33#define BLE_ADV_DEF(instance) \
34 static struct ble_adv instance; \
35 NRF_SDH_BLE_OBSERVER(ble_adv_##instance, ble_adv_on_ble_evt, &instance, HIGH)
36
71
125
130 union {
132 struct {
134 uint32_t reason;
136 };
137};
138
140struct ble_adv;
141
145typedef void (*ble_adv_evt_handler_t)(struct ble_adv *adv, const struct ble_adv_evt *adv_evt);
146
150struct ble_adv {
166 uint8_t adv_handle;
170 uint16_t conn_handle;
178 ble_gap_adv_params_t adv_params;
179
180#ifdef BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED
182 uint8_t enc_adv_data[2][BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED];
184 uint8_t enc_scan_rsp_data[2][BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED];
185#else
187 uint8_t enc_adv_data[2][BLE_GAP_ADV_SET_DATA_SIZE_MAX];
189 uint8_t enc_scan_rsp_data[2][BLE_GAP_ADV_SET_DATA_SIZE_MAX];
190#endif /* BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED */
194 ble_gap_adv_data_t adv_data;
195
199 ble_gap_addr_t peer_address;
216};
217
239
253void ble_adv_on_ble_evt(const ble_evt_t *ble_evt, void *ble_adv);
254
266
276uint32_t ble_adv_conn_cfg_tag_set(struct ble_adv *ble_adv, uint8_t ble_cfg_tag);
277
292uint32_t ble_adv_start(struct ble_adv *ble_adv, enum ble_adv_mode mode);
293
304uint32_t ble_adv_stop(struct ble_adv *ble_adv);
305
321uint32_t ble_adv_peer_addr_reply(struct ble_adv *ble_adv, const ble_gap_addr_t *peer_addr);
322
340 const ble_gap_addr_t *gap_addrs, uint32_t addr_cnt,
341 const ble_gap_irk_t *gap_irks, uint32_t irk_cnt);
342
357
378uint32_t ble_adv_data_update(struct ble_adv *ble_adv, const struct ble_adv_data *adv,
379 const struct ble_adv_data *sr);
380
381#ifdef __cplusplus
382}
383#endif
384
385#endif /* BLE_ADV_H__ */
386
ble_adv_evt_type
Advertising event types.
Definition ble_adv.h:75
@ BLE_ADV_EVT_DIRECTED_HIGH_DUTY
Directed advertising mode (high duty cycle) has started.
Definition ble_adv.h:83
@ BLE_ADV_EVT_ALLOW_LIST_REQUEST
Allow list request.
Definition ble_adv.h:111
@ BLE_ADV_EVT_SLOW_ALLOW_LIST
Slow advertising mode using the allow list has started.
Definition ble_adv.h:103
@ BLE_ADV_EVT_DIRECTED
Directed advertising has started.
Definition ble_adv.h:87
@ BLE_ADV_EVT_ERROR
Error.
Definition ble_adv.h:123
@ BLE_ADV_EVT_SLOW
Slow advertising mode has started.
Definition ble_adv.h:95
@ BLE_ADV_EVT_PEER_ADDR_REQUEST
Peer address request (for directed advertising).
Definition ble_adv.h:119
@ BLE_ADV_EVT_IDLE
Idle; no connectable advertising is ongoing.
Definition ble_adv.h:79
@ BLE_ADV_EVT_FAST
Fast advertising mode has started.
Definition ble_adv.h:91
@ BLE_ADV_EVT_FAST_ALLOW_LIST
Fast advertising mode using the allow list has started.
Definition ble_adv.h:99
uint32_t ble_adv_data_update(struct ble_adv *ble_adv, const struct ble_adv_data *adv, const struct ble_adv_data *sr)
Update advertising data.
uint32_t ble_adv_allow_list_reply(struct ble_adv *ble_adv, const ble_gap_addr_t *gap_addrs, uint32_t addr_cnt, const ble_gap_irk_t *gap_irks, uint32_t irk_cnt)
Set an allow list for fast and slow advertising.
ble_adv_mode
Advertising modes.
Definition ble_adv.h:40
@ BLE_ADV_MODE_FAST
Fast advertising.
Definition ble_adv.h:62
@ BLE_ADV_MODE_SLOW
Slow advertising.
Definition ble_adv.h:69
@ BLE_ADV_MODE_DIRECTED_HIGH_DUTY
Directed advertising (high duty cycle).
Definition ble_adv.h:50
@ BLE_ADV_MODE_DIRECTED
Directed advertising (low duty cycle).
Definition ble_adv.h:56
@ BLE_ADV_MODE_IDLE
Idle; non-connectable advertising is ongoing.
Definition ble_adv.h:44
void(* ble_adv_evt_handler_t)(struct ble_adv *adv, const struct ble_adv_evt *adv_evt)
Bluetooth LE advertising event handler.
Definition ble_adv.h:145
uint32_t ble_adv_peer_addr_reply(struct ble_adv *ble_adv, const ble_gap_addr_t *peer_addr)
Set the peer address for directed advertising.
uint32_t ble_adv_start(struct ble_adv *ble_adv, enum ble_adv_mode mode)
Start advertising in given mode.
uint32_t ble_adv_restart_without_allow_list(struct ble_adv *ble_adv)
Restart advertising without allow list.
void ble_adv_on_ble_evt(const ble_evt_t *ble_evt, void *ble_adv)
Bluetooth LE event handler for the advertising library.
uint32_t ble_adv_stop(struct ble_adv *ble_adv)
Stop advertising.
uint32_t ble_adv_init(struct ble_adv *ble_adv, const struct ble_adv_config *ble_adv_config)
Initialize the Bluetooth LE advertising library.
uint32_t ble_adv_conn_cfg_tag_set(struct ble_adv *ble_adv, uint8_t ble_cfg_tag)
Set the connection configuration tag used for connections.
ble_adv_evt_handler_t evt_handler
Event handler.
Definition ble_adv.h:233
struct ble_adv_data adv_data
Advertising data: name, appearance, discovery flags, and more.
Definition ble_adv.h:225
uint8_t conn_cfg_tag
Connection configuration tag.
Definition ble_adv.h:237
struct ble_adv_data sr_data
Scan response data: Supplement to advertising data.
Definition ble_adv.h:229
Advertising library initialization parameters.
Definition ble_adv.h:221
Advertising data options.
Definition ble_adv_data.h:143
struct ble_adv_evt::@0::@2 error
enum ble_adv_evt_type evt_type
Advertising event type.
Definition ble_adv.h:129
uint32_t reason
Definition ble_adv.h:134
Advertising event.
Definition ble_adv.h:127
bool allow_list_reply_expected
Whether an allow list has been requested.
Definition ble_adv.h:207
bool allow_list_temporarily_disabled
Whether the allow list is disabled.
Definition ble_adv.h:211
uint16_t conn_handle
Bluetooth LE connection handle.
Definition ble_adv.h:170
ble_gap_adv_data_t adv_data
Advertising data.
Definition ble_adv.h:194
bool allow_list_in_use
Whether the allow list is in use.
Definition ble_adv.h:215
ble_gap_addr_t peer_address
GAP address to use for directed advertising.
Definition ble_adv.h:199
ble_adv_evt_handler_t evt_handler
Instance event handler.
Definition ble_adv.h:174
bool is_initialized
Initialization flag.
Definition ble_adv.h:154
enum ble_adv_mode mode_current
Current advertising mode.
Definition ble_adv.h:158
uint8_t adv_handle
Advertising handle.
Definition ble_adv.h:166
uint8_t enc_adv_data[2][BLE_GAP_ADV_SET_DATA_SIZE_MAX]
Definition ble_adv.h:187
bool peer_addr_reply_expected
Whether a peer address has been requested.
Definition ble_adv.h:203
uint8_t conn_cfg_tag
The connection settings used if the advertising result in a connection.
Definition ble_adv.h:162
ble_gap_adv_params_t adv_params
GAP advertising parameters.
Definition ble_adv.h:178
uint8_t enc_scan_rsp_data[2][BLE_GAP_ADV_SET_DATA_SIZE_MAX]
Definition ble_adv.h:189
Bluetooth LE advertising instance.
Definition ble_adv.h:150