广告商应仅由特定的扫描仪扫描

⚠️
嗨,那里..感谢您参加论坛。激动人心的消息!现在,我们正在转到我们的新论坛平台,该平台将提供更好的功能,并包含在主话网站中。所有帖子和帐户都已迁移。我们现在仅在新论坛上接受流量 - 请在https://www.dialog-spoomendonductor.com/support。我们将在未来几天修复错误 /优化搜索和标记。
7帖子 / 0新
最后一篇文章
Abhikalitra
离线
最后一次露面:2年11个月前
加入:2014-10-30 07:43
广告商应仅由特定的扫描仪扫描

嗨,支持

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

静态const struct advertise_configuration user_adv_conf = {

.addr_src = gapm_public_addr,// gapm_public_addr,
.renew_dur = 0,
.intv_min = 800,//值*0.625ms = MS
.intv_max = 800,//值*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,
};

使用上述配置,Beacon成功地扫描了每个扫描仪。

但是现在,我希望仅由我的特定扫描仪扫描它(我不想向所有人展示我的信标)。我不知道我必须在Scanner和Advertiser End上制作什么配置。请帮忙。

设备:
Abhikalitra
离线
最后一次露面:2年11个月前
加入:2014-10-30 07:43
仍在等待DA支持

仍在等待DA支持团队

pm_dialog
离线
最后一次露面:2天20小时前
职员
加入:2018-02-08 11:03
嗨,Abhikalitra,

嗨,Abhikalitra,

在论坛上提问时,您将必须耐心等待。您将无法做到这样的事情,因为您充当信标,我想您希望在广告时发送数据。根据BLE规范,您可以通过特定设备(如果您知道扫描仪的BD地址)进行宣传并扫描,如果您使用有指示的广告,但您将无法在有导的广告PDU中拟合数据。在直接宣传PCU时,PCU仅允许设备的BD地址,并且它消耗了很多功能。

谢谢,pm_dialog

Abhikalitra
离线
最后一次露面:2年11个月前
加入:2014-10-30 07:43
嗨,pm_dialog,

嗨,pm_dialog,

感谢您的答复。我可以获取任何定向广告的代码示例吗?

pm_dialog
离线
最后一次露面:2天20小时前
职员
加入:2018-02-08 11:03
嗨,Abhikalitra,

嗨,Abhikalitra,

您应该在USER_ADV_CONFIG结构的.peer_addr_type中添加中心地址。然后,在user_app_adv_start()中使用app_easy_gap_directed_directed_advertise_start()而不是app_easy_gap_undertection_advertise_get_get_active(),并在上述字段中提供适当的BD地址。如上一篇文章所述,请注意,在直接宣传PCU时,PCU仅允许设备的BD地址。

谢谢,pm_dialog

Abhikalitra
离线
最后一次露面:2年11个月前
加入:2014-10-30 07:43
亲爱的pm_dialog,

亲爱的pm_dialog,

我知道了。但是我认为这不会解决我的问题。您能告诉我如何在广告商方面设置白名单。这样它将仅接受白名单地址的连接请求。

我在做这个 -

在文件user_config.h中
静态const struct advertise_configuration user_adv_conf = {

.addr_src = gapm_public_addr,// gapm_public_addr,

///可再生地址的持续时间。
.renew_dur = 0,

///广告的最小间隔
.intv_min = 800,//(8000+((Mac_id_b0%10)*800)),// adv_max,//值*0.625ms = ms

///广告的最大间隔
.intv_max = 800,//(8000+((Mac_id_b0%10)*800)),// adv_min,//值*0.625ms = ms

///广告频道地图
.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 =公共/1 =私有随机
.peer_addr_type = 0,
};

void user_app_adv_start(void)
{
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 manage_white_list(void)
{
uint8_t wht_lst1 [6] = {0x20,0x33,0x32,0xca,0xCa,0xea,0x80}; //我的中央设备的bd_address
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天20小时前
职员
加入:2018-02-08 11:03
嗨,Abhikalitra,

嗨,Abhikalitra,

我无法在您的代码段中找到错误。Adv_allow_scan_wlst_con_wlst是仅应用于外围的过滤策略,以接受白色列表中设备的扫描或连接请求。

谢谢,pm_dialog