广告客户应只使用特定的扫描仪进行扫描

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.wsdof.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
7个帖子/ 0个新
最后发表
abhikalitra
离线
最后看到:2年11个月前
加入:2014-10-30 07:43
广告客户应只使用特定的扫描仪进行扫描

嗨,支持

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

Static const struct advertise_configuration user_adv_conf = {

.addr_src = GAPM_PUBLIC_ADDR,//GAPM_PUBLIC_ADDR,
.renew_dur = 0,
.intv_min = 800, // value*0.625ms=ms
.intv_max = 800, // value*0.625ms=ms
.channel_map = 0x7,
.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
还在等地区检察官的支援

还在等地区检察官支援队

PM_Dialog
离线
最后看到:3天18小时前
工作人员
加入: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
离线
最后看到:3天18小时前
工作人员
加入: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 = {

.addr_src = GAPM_PUBLIC_ADDR,//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 = 0x7,

.mode = GAP_GEN_DISCOVERABLE,//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文件中
静态void

uint8_t wht_lst1[6]={0x20, 0x33, 0x32, 0xCA, 0xEA, 0x80};// bd_我的中心设备地址
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->operation = GAPM_ADD_DEV_IN_WLIST;
Cmd ->nb = 1;
Memcpy ((void *) &cmd->设备[0]。地址,(void *)wht_lst1, BD_ADDR_LEN);
cmd - >设备[0].addr_type = 0;

ke_msg_send (cmd);

请查看是否可以使用?

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

嗨abhikalitra,

我不能在你的代码片段中找到错误的地方。ADV_ALLOW_SCAN_WLST_CON_WLST是只应用于外设的过滤策略,用于接受来自白名单中的设备的扫描或连接请求。

谢谢,PM_Dialog