嗨支持
我使用示例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,
};
通过上面的配置,每个扫描仪成功扫描信标。
但现在我只希望它被我的特定扫描仪扫描(我不想向大家透露我的信标)。我不知道我将在扫描仪和广告商结束时进行的配置。请帮忙。
设备:
还在等待DA支持团队
嗨Abhikalitra,
在论坛上提问时,您必须耐心等待。您不会能够做到这样的事情,因为您充当灯架,我想在广告时要发送数据。根据BLE规范,您可以通过特定设备进行宣传并扫描(如果您知道扫描仪的BD地址),如果您使用定向广告,但您将无法在指示的广告PDU中拟合数据。在直接广告PCU中仅在设备的BD地址,它消耗了相当的力量。
谢谢,PM_DIALOG.
嗨pm_dialog,
感谢您的答复。我可以获得指示广告的任何代码示例。
嗨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.
亲爱的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);
}
请看并检查它是否会工作?
嗨Abhikalitra,
我无法在代码片段中找到错误。adv_allow_scan_wlst_con_wlst是仅在外设上应用的过滤策略以接受来自白色列表中设备的扫描或连接请求。
谢谢,PM_DIALOG.