实现白名单快速广播3s,转白名单慢广播无限 1. 白名单机制
- 白名单(white list)是BLE协议中最简单、直白的一种安全机制。
- 所谓的白名单,就是一组蓝牙地址。
- 通过白名单,可以只允许特定的蓝牙设备(白名单中列出的)扫描(Scan)、连接(connect)我们。
- 也可以只扫描、连接特定的蓝牙设备(白名单中列出的)。
#define APP_ADV_FAST_INTERVAL 0x0028
#define APP_ADV_SLOW_INTERVAL 0x0C80
#define APP_ADV_FAST_TIMEOUT 3
#define APP_ADV_SLOW_TIMEOUT 0
static void advertising_init(void)
{
uint32_t err_code;
uint8_t adv_flags;
ble_advdata_t advdata;
ble_adv_modes_config_t options;
memset(&advdata, 0, sizeof(advdata));
adv_flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
advdata.name_type = BLE_ADVDATA_FULL_NAME;
advdata.include_appearance = true;
advdata.flags = adv_flags;
advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
advdata.uuids_complete.p_uuids = m_adv_uuids;
memset(&options, 0, sizeof(options));
options.ble_adv_whitelist_enabled = true;
options.ble_adv_directed_enabled = true;
options.ble_adv_directed_slow_enabled = false;
options.ble_adv_directed_slow_interval = 0;
options.ble_adv_directed_slow_timeout = 0;
options.ble_adv_fast_enabled = true;
options.ble_adv_fast_interval = APP_ADV_FAST_INTERVAL;
options.ble_adv_fast_timeout = APP_ADV_FAST_TIMEOUT;
options.ble_adv_slow_enabled = true;
options.ble_adv_slow_interval = APP_ADV_SLOW_INTERVAL;
options.ble_adv_slow_timeout = APP_ADV_SLOW_TIMEOUT;
err_code = ble_advertising_init(&advdata,
NULL,
&options,
on_adv_evt,
ble_advertising_error_handler);
APP_ERROR_CHECK(err_code);
}
注:不允许使用[ble_advertising_restart_without_whitelist],不然会终止白名单广播,转为普通广播
|