32#include <bm/softdevice_handler/nrf_sdh_ble.h>
43#define BLE_SCAN_DEF(_name) \
44 static struct ble_scan _name; \
45 NRF_SDH_BLE_OBSERVER(_name##_obs, ble_scan_on_ble_evt, &_name, HIGH)
100 #define BLE_SCAN_NAME_FILTER (0x01)
102#define BLE_SCAN_ADDR_FILTER (0x02)
104#define BLE_SCAN_UUID_FILTER (0x04)
106#define BLE_SCAN_APPEARANCE_FILTER (0x08)
108#define BLE_SCAN_SHORT_NAME_FILTER (0x10)
110#define BLE_SCAN_MANUFACTURER_DATA_FILTER (0x20)
194 const ble_gap_evt_adv_report_t *adv_report;
246 char target_name[CONFIG_BLE_SCAN_NAME_COUNT][CONFIG_BLE_SCAN_NAME_MAX_LEN];
286 ble_uuid_t
uuid[CONFIG_BLE_SCAN_UUID_COUNT];
311 uint8_t
data[CONFIG_BLE_SCAN_MANUFACTURER_DATA_MAX_LEN];
331#if CONFIG_BLE_SCAN_NAME_COUNT > 0
335#if CONFIG_BLE_SCAN_SHORT_NAME_COUNT > 0
339#if CONFIG_BLE_SCAN_ADDRESS_COUNT > 0
343#if CONFIG_BLE_SCAN_UUID_COUNT > 0
347#if CONFIG_BLE_SCAN_APPEARANCE_COUNT > 0
351#if CONFIG_BLE_SCAN_MANUFACTURER_DATA_COUNT > 0
369#define BLE_SCAN_SCAN_PARAMS_DEFAULT \
372 .interval = CONFIG_BLE_SCAN_INTERVAL, \
373 .window = CONFIG_BLE_SCAN_WINDOW, \
374 .timeout = CONFIG_BLE_SCAN_DURATION, \
375 .filter_policy = BLE_GAP_SCAN_FP_ACCEPT_ALL, \
376 .scan_phys = BLE_GAP_PHY_1MBPS, \
380#define BLE_SCAN_CONN_PARAMS_DEFAULT \
382 .conn_sup_timeout = BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN, \
383 .min_conn_interval = CONFIG_BLE_SCAN_MIN_CONNECTION_INTERVAL, \
384 .max_conn_interval = CONFIG_BLE_SCAN_MAX_CONNECTION_INTERVAL, \
385 .slave_latency = (uint16_t)CONFIG_BLE_SCAN_PERIPHERAL_LATENCY, \
420#if defined(CONFIG_BLE_SCAN_FILTER)
629 const uint8_t addr[BLE_GAP_ADDR_LEN]);
uint32_t ble_scan_init(struct ble_scan *scan, struct ble_scan_config *config)
Initialize the library.
uint32_t ble_scan_filters_enable(struct ble_scan *scan, uint8_t mode, bool match_all)
Enable filtering.
uint32_t ble_scan_filters_disable(struct ble_scan *scan)
Disable filtering.
uint32_t ble_scan_copy_addr_to_sd_gap_addr(ble_gap_addr_t *gap_addr, const uint8_t addr[BLE_GAP_ADDR_LEN])
Convert the raw address to the SoftDevice GAP address.
void ble_scan_on_ble_evt(const ble_evt_t *ble_evt, void *ble_scan)
Bluetooth LE event handler for the Scanning library.
uint32_t ble_scan_start(const struct ble_scan *scan)
Start scanning.
uint32_t ble_scan_filter_get(const struct ble_scan *scan, struct ble_scan_filters *status)
Get filter status.
uint32_t ble_scan_all_filter_remove(struct ble_scan *scan)
Remove all filters.
uint32_t ble_scan_params_set(struct ble_scan *scan, const ble_gap_scan_params_t *scan_params)
Set the scanning parameters.
ble_scan_evt_type
Scan events.
Definition ble_scan.h:55
@ BLE_SCAN_EVT_CONNECTING_ERROR
An error occurred when establishing the connection.
Definition ble_scan.h:83
@ BLE_SCAN_EVT_FILTER_MATCH
A filter is matched, or all filters are matched in the multifilter mode.
Definition ble_scan.h:59
@ BLE_SCAN_EVT_ALLOW_LIST_REQUEST
An allow list must be provided to the SoftDevice.
Definition ble_scan.h:65
@ BLE_SCAN_EVT_CONNECTED
Connected to device.
Definition ble_scan.h:87
@ BLE_SCAN_EVT_ALLOW_LIST_ADV_REPORT
A device from the allow list is found.
Definition ble_scan.h:69
@ BLE_SCAN_EVT_NOT_FOUND
The filter was not matched for the scan data.
Definition ble_scan.h:73
@ BLE_SCAN_EVT_SCAN_TIMEOUT
Scan timeout.
Definition ble_scan.h:77
@ BLE_SCAN_EVT_ERROR
Error.
Definition ble_scan.h:91
bool ble_scan_is_allow_list_used(const struct ble_scan *scan)
Check if the allow list is used.
void(* ble_scan_evt_handler_t)(const struct ble_scan_evt *scan_evt)
Bluetooth LE Scan event handler type.
Definition ble_scan.h:230
void ble_scan_stop(const struct ble_scan *scan)
Stop scanning.
uint32_t ble_scan_filter_add(struct ble_scan *scan, uint8_t type, const struct ble_scan_filter_data *data)
Add scan filter.
ble_gap_addr_t target_addr[1]
Definition ble_scan.h:274
uint8_t addr_cnt
Definition ble_scan.h:276
bool addr_filter_enabled
Definition ble_scan.h:278
Definition ble_scan.h:270
uint8_t appearance_cnt
Definition ble_scan.h:300
bool appearance_filter_enabled
Definition ble_scan.h:302
uint16_t appearance[1]
Definition ble_scan.h:298
Definition ble_scan.h:294
ble_gap_conn_params_t conn_params
Definition ble_scan.h:403
ble_gap_scan_params_t scan_params
Definition ble_scan.h:395
ble_scan_evt_handler_t evt_handler
Definition ble_scan.h:409
bool connect_if_match
Definition ble_scan.h:399
uint8_t conn_cfg_tag
Definition ble_scan.h:407
Scan instance configuration.
Definition ble_scan.h:391
struct ble_scan_evt::@31::@34 allow_list_adv_report
const ble_gap_evt_connected_t * connected
Definition ble_scan.h:204
enum ble_scan_evt_type evt_type
Definition ble_scan.h:176
struct ble_scan_evt::@31::@38 error
int reason
Definition ble_scan.h:217
ble_gap_evt_timeout_t timeout
Definition ble_scan.h:190
uint16_t conn_handle
Definition ble_scan.h:206
struct ble_scan_evt::@31::@35 not_found
struct ble_scan_evt::@31::@37 connecting_err
uint32_t reason
Definition ble_scan.h:222
struct ble_scan_filter_match filter_match
Definition ble_scan.h:187
const ble_gap_evt_adv_report_t * adv_report
Definition ble_scan.h:185
const ble_gap_scan_params_t * scan_params
Definition ble_scan.h:178
Scan library event.
Definition ble_scan.h:174
const char * name
Definition ble_scan.h:120
const char * short_name
Definition ble_scan.h:137
struct ble_scan_filter_data::@23::@25 name_filter
uint8_t short_name_min_len
Definition ble_scan.h:139
struct ble_scan_filter_data::@23::@30 manufacturer_data_filter
uint16_t appearance
Definition ble_scan.h:132
uint8_t data_len
Definition ble_scan.h:146
struct ble_scan_filter_data::@23::@26 addr_filter
struct ble_scan_filter_data::@23::@28 appearance_filter
struct ble_scan_filter_data::@23::@27 uuid_filter
const uint8_t * data
Definition ble_scan.h:144
struct ble_scan_filter_data::@23::@29 short_name_filter
const uint8_t * addr
Definition ble_scan.h:124
ble_uuid_t uuid
Definition ble_scan.h:128
Scan filter data.
Definition ble_scan.h:116
uint8_t manufacturer_data_filter_match
Definition ble_scan.h:166
uint8_t short_name_filter_match
Definition ble_scan.h:164
uint8_t name_filter_match
Definition ble_scan.h:156
uint8_t address_filter_match
Definition ble_scan.h:158
uint8_t appearance_filter_match
Definition ble_scan.h:162
uint8_t uuid_filter_match
Definition ble_scan.h:160
Filter status.
Definition ble_scan.h:154
struct ble_scan_addr_filter addr_filter
Definition ble_scan.h:341
struct ble_scan_appearance_filter appearance_filter
Definition ble_scan.h:349
struct ble_scan_short_name_filter short_name_filter
Definition ble_scan.h:337
struct ble_scan_name_filter name_filter
Definition ble_scan.h:333
struct ble_scan_uuid_filter uuid_filter
Definition ble_scan.h:345
bool all_filters_mode
Definition ble_scan.h:356
Filter data.
Definition ble_scan.h:330
uint8_t data[CONFIG_BLE_SCAN_MANUFACTURER_DATA_MAX_LEN]
Definition ble_scan.h:311
uint8_t data_len
Definition ble_scan.h:313
bool manufacturer_data_filter_enabled
Definition ble_scan.h:318
uint8_t manufacturer_data_cnt
Definition ble_scan.h:316
struct ble_scan_manufacturer_data_filter::@40 manufacturer_data[CONFIG_BLE_SCAN_MANUFACTURER_DATA_COUNT]
Definition ble_scan.h:306
bool name_filter_enabled
Definition ble_scan.h:250
char target_name[1][CONFIG_BLE_SCAN_NAME_MAX_LEN]
Definition ble_scan.h:246
uint8_t name_cnt
Definition ble_scan.h:248
Definition ble_scan.h:242
bool short_name_filter_enabled
Definition ble_scan.h:266
struct ble_scan_short_name_filter::@39 short_name[1]
char short_target_name[CONFIG_BLE_SCAN_SHORT_NAME_MAX_LEN]
Definition ble_scan.h:259
uint8_t short_name_min_len
Definition ble_scan.h:261
uint8_t name_cnt
Definition ble_scan.h:264
Definition ble_scan.h:254
ble_uuid_t uuid[1]
Definition ble_scan.h:286
bool uuid_filter_enabled
Definition ble_scan.h:290
uint8_t uuid_cnt
Definition ble_scan.h:288
Definition ble_scan.h:282
ble_scan_evt_handler_t evt_handler
Definition ble_scan.h:437
ble_data_t scan_buffer
Definition ble_scan.h:443
ble_gap_scan_params_t scan_params
Definition ble_scan.h:435
uint8_t conn_cfg_tag
Definition ble_scan.h:433
ble_gap_conn_params_t conn_params
Definition ble_scan.h:429
struct ble_scan_filters scan_filters
Definition ble_scan.h:422
bool connect_if_match
Definition ble_scan.h:427
uint8_t scan_buffer_data[2][CONFIG_BLE_SCAN_BUFFER_SIZE]
Definition ble_scan.h:439
Scan library instance.
Definition ble_scan.h:419