广告客户只能被特定的扫描仪扫描

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
abhikalitra
离线
最后看到:2年11个月前
加入:2014-10-30 07:43
广告客户只能被特定的扫描仪扫描

嗨,支持

我使用Ble_barebone创建了一个BLE信标。使用以下配置-

Static const struct advertise_configuration user_adv_conf = {

/ / GAPM_PUBLIC_ADDR .addr_src = GAPM_PUBLIC_ADDR,
.renew_dur = 0,
.intv_min = 800, //值*0.625毫秒=毫秒
.intv_max = 800, //值*0.625毫秒=毫秒
.channel_map = 0 x7,
.mode = GAP_GEN_DISCOVERABLE,
.adv_filt_policy = ADV_ALLOW_SCAN_ANY_CON_ANY,
.peer_addr = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6},
.peer_addr_type = 0,
};

通过上述配置,信标被每个扫描仪成功扫描。

但现在我希望它只被我的特定扫描仪扫描(我不想向每个人透露我的信标)。我不知道我将在扫描仪和广告商端做什么配置。请帮助。

设备:
abhikalitra
离线
最后看到:2年11个月前
加入:2014-10-30 07:43
仍然在等待DA支持

还在等地检支援小组

PM_Dialog
离线
最后看到:2天15小时前
工作人员
加入:2018-02-08 11:03
嗨abhikalitra,

嗨abhikalitra,

在论坛上提问时,你必须要有耐心。你不可能做这样的事情,因为你是一个信标,我猜你希望发送数据时,广告。根据BLE规范,如果您使用定向广告,您可以发布并被特定设备扫描(如果您知道扫描仪的bd地址),但您将无法将数据放入定向广告PDU中。在直接发布中,PCU只包含设备的bd地址,并且它消耗相当多的功率。

谢谢,PM_Dialog

abhikalitra
离线
最后看到:2年11个月前
加入:2014-10-30 07:43
嗨PM_Dialog,

嗨PM_Dialog,

谢谢您的回复。我能得到任何定向广告的代码示例吗?

PM_Dialog
离线
最后看到:2天15小时前
工作人员
加入:2018-02-08 11:03
嗨abhikalitra,

嗨abhikalitra,

您应该在user_config.h文件中user_adv_config结构的.peer_addr_type中添加中心地址。然后,在user_app_adv_start()中使用app_easy_gap_directed_advertise_start()而不是app_easy_gap_undirected_advertise_get_active(),并使用上面提到的适当的bd地址字段。如前一篇文章所述,请注意在直接广告中PCU只包含设备的bd地址。

谢谢,PM_Dialog

abhikalitra
离线
最后看到:2年11个月前
加入:2014-10-30 07:43
亲爱的PM_Dialog,

亲爱的PM_Dialog,

我得到了它。但我认为这解决不了我的问题。请问如何在广告客户端设置白名单?这样它将只接受来自白名单地址的连接请求。

我这样做-

在文件user_config.h
Static const struct advertise_configuration user_adv_conf = {

/ / GAPM_PUBLIC_ADDR .addr_src = GAPM_PUBLIC_ADDR,

///可解析地址在重新生成之前的持续时间。
.renew_dur = 0,

///最小的广告时间间隔
.intv_min = 800 / / (8000 + (800) (MAC_ID_B0 % 10) *), / / ADV_MAX / /值* 0.625 =女士女士

///广告的最大间隔
.intv_max = 800 / / (8000 + (800) (MAC_ID_B0 % 10) *), / / ADV_MIN / /值* 0.625 =女士女士

///广告渠道图
.channel_map = 0 x7,

/ / GAP_GEN_DISCOVERABLE .mode = GAP_GEN_DISCOVERABLE,

.adv_filt_policy = ADV_ALLOW_SCAN_WLST_CON_WLST,

//直接地址信息(GAPM_ADV_DIRECT)

.peer_addr ={0x1, 0x2, 0x3, 0x4, 0x5, 0x6}

///设备的地址类型0=public/1=private random
.peer_addr_type = 0,
};

空白user_app_adv_start(空白)

manage_white_list ();
//安排下一个广告数据更新
app_adv_data_update_timer_used = app_easy_timer(APP_ADV_DATA_UPDATE_TO, adv_data_update_timer_cb);

// struct gapm_start_advertise_cmd* cmd;
cmd = app_easy_gap_undirected_advertise_get_active ();
App_add_ad_struct (cmd, &mnf_data, sizeof(struct mnf_specific_data_ad_structure));
app_easy_gap_undirected_advertise_start ();


在文件user_barebone.c
静态孔隙manage_white_list(空白)

uint8_t wht_lst1[6]={0x20, 0x33, 0x32, 0xCA, 0xEA, 0x80}
struct gapm_white_list_mgt_cmd *cmd = KE_MSG_ALLOC_DYN(gapm_white_list_mgt_cmd,
TASK_GAPM,
TASK_APP,
gapm_white_list_mgt_cmd,
sizeof (struct gap_bdaddr));
cmd - >操作= GAPM_ADD_DEV_IN_WLIST;
cmd - > nb = 1;
memcpy ((void *) cmd - >设备[0]。addr, (void *)wht_lst1, BD_ADDR_LEN);
cmd - >设备[0].addr_type = 0;

ke_msg_send (cmd);

请看一下是否可以工作?

PM_Dialog
离线
最后看到:2天15小时前
工作人员
加入:2018-02-08 11:03
嗨abhikalitra,

嗨abhikalitra,

我无法在您的代码片段中找到错误的东西。ADV_ALLOW_SCAN_WLST_CON_WLST是只应用于外设的过滤策略,以接受来自白名单中的设备的扫描或连接请求。

谢谢,PM_Dialog