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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
7个帖子/ 0新
最后一篇
阿比卡阿塔拉
离线
最后一次露面:2 years 11 months ago
加入:2014-10-30 07:43
应该仅由特定扫描仪扫描广告商

嗨支持

我使用示例ble_barebone创建了一个ble beacon。使用以下配置 -

static const struct _configuration user_adv_conf = {

.addr_src = gapm_public_addr,// gapm_public_addr,
.grenew_dur = 0,
。intv_min = 800, // value*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,
};

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

但现在我只希望它被我的特定扫描仪扫描(我不想向大家透露我的信标)。我不知道我将在扫描仪和广告商结束时进行的配置。请帮忙。

设备:
阿比卡阿塔拉
离线
最后一次露面:2 years 11 months ago
加入:2014-10-30 07:43
还在等待DA支持

还在等待DA支持团队

PM_DIALOG.
离线
最后一次露面:12小时36分钟前
职员
加入:2018-02-08 11:03
嗨Abhikalitra,

嗨Abhikalitra,

在论坛上提问时,您必须耐心等待。您不会能够做到这样的事情,因为您充当灯架,我想在广告时要发送数据。根据BLE规范,您可以通过特定设备进行宣传并扫描(如果您知道扫描仪的BD地址),如果您使用定向广告,但您将无法在指示的广告PDU中拟合数据。在直接广告PCU中仅在设备的BD地址,它消耗了相当的力量。

谢谢,PM_DIALOG.

阿比卡阿塔拉
离线
最后一次露面:2 years 11 months ago
加入:2014-10-30 07:43
嗨pm_dialog,

嗨pm_dialog,

感谢您的答复。我可以获得指示广告的任何代码示例。

PM_DIALOG.
离线
最后一次露面:12小时36分钟前
职员
加入:2018-02-08 11:03
嗨Abhikalitra,

嗨Abhikalitra,

您应该在user_config.h文件中的user_adv_config结构的.peer_addr_type中添加中央地址。然后,在User_App_Adv_Start()中使用app_easy_gap_dircated_advertise_gap_undircated_advertise_get_active()在user_app_add_start()中,使用适当的BD地址到上述字段。如上一篇文章所述,请注意,在直接广告PCU中仅在设备的BD地址。

谢谢,PM_DIALOG.

阿比卡阿塔拉
离线
最后一次露面:2 years 11 months ago
加入:2014-10-30 07:43
亲爱的pm_dialog,

亲爱的pm_dialog,

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

我正在这样做 -

在file user_config.h.中
static const struct _configuration user_adv_conf = {

.addr_src = gapm_public_addr,// gapm_public_addr,

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

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

/// Maximum interval for advertising
.intv_max = 800,//(8000 +((mac_id_b0%10)* 800)),// adm_min,//值* 0.625ms = ms

///广告频道地图
.channel_map = 0x7,

.mode = gap_gen_discoverable,// gap_gen_disoverable,

。adv_filt_policy = adv_allow_scan_wlst_con_wlst,

/// Direct address information (GAPM_ADV_DIRECT)

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

///设备的地址类型0 = public / 1 =私有随机
.peer_addr_type = 0,
};

void user_app_adv_start(void)
{
manage_white_list();
//安排下一个广告数据更新
app_add_data_update_timer_used = app_easy_timer(app_add_data_update_to,avd_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_undircated_advertise_start();

}
在file user_barebone.c.中
静态Void Manage_White_List(void)
{
UINT8_T WHT_LST1 [6] = {0x20,0x33,0x32,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.
离线
最后一次露面:12小时36分钟前
职员
加入:2018-02-08 11:03
嗨Abhikalitra,

嗨Abhikalitra,

我无法在代码片段中找到错误。adv_allow_scan_wlst_con_wlst是仅在外设上应用的过滤策略以接受来自白色列表中设备的扫描或连接请求。

谢谢,PM_DIALOG.