系统初始化时可以设置白名单,可以在广播和
主动 链接时过滤掉白名单以外的设备。开
启白名单管理功能的具体步骤如下:
1. 主设备与从设备进行连接并绑定,绑定过程中需要交换 IRK 以及身份地址信息,绑
定之后主设备与从设备断开连接。绑定的具体流程请参考
从机端的配置
// 白名单
static void sp_start_adv(void)
{
// Set advertising parameters
gap_adv_param_t adv_param;
gap_bond_info_t info;
gap_bond_manager_get_info(0,&info);
co_printf("info.bond_flag %x\r\n",info.bond_flag);
if(info.bond_flag)
{
show_reg(info.peer_addr.addr.addr,6,1);
gap_mac_addr_t mac_set[1];
memcpy(&mac_set[0],&info.peer_addr,sizeof(gap_mac_addr_t));
gap_set_wl(&mac_set[0],1);
gap_ral_t ral_set[1];
memcpy(&ral_set[0].addr,&info.peer_addr,sizeof(gap_mac_addr_t));
memcpy(ral_set[0].peer_irk,info.peer_irk,16);
gap_set_ral(&ral_set[0],1);
adv_param.adv_filt_policy = GAP_ADV_ALLOW_SCAN_WLST_CON_WLST;
}
else
{
show_reg(info.peer_addr.addr.addr,6,1);
adv_param.adv_filt_policy = GAP_ADV_ALLOW_SCAN_ANY_CON_ANY;
}
adv_param.adv_mode = GAP_ADV_MODE_UNDIRECT;
adv_param.disc_mode = GAP_ADV_DISC_MODE_GEN_DISC;
adv_param.adv_addr_type = GAP_ADDR_TYPE_PUBLIC;
adv_param.adv_chnl_map = GAP_ADV_CHAN_ALL;
adv_param.adv_intv_min = 0x40;
adv_param.adv_intv_max = 0x40;
gap_set_advertising_param(&adv_param);
// Set advertising data & scan response data
gap_set_advertising_data(adv_data, sizeof(adv_data));
gap_set_advertising_rsp_data(scan_rsp_data, sizeof(scan_rsp_data));
// Start advertising
LOG_INFO(app_tag, "Start advertising...\r\n");
gap_start_advertising(0);
}