⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
dhirajp15
离线
最后看到:2年6个月前
加入:2016-06-08 15:26
捕获随机BLE地址

嗨,对话,
目前我正在使用GAPM_GEN_STATIC_RND_ADDR配置ble_barebone示例上工作,我想在广告开始时通过uart发送随机生成的Bd地址到协处理器,你能建议任何方法来读取随机Bd地址吗?
我试着这样做:
空白user_app_adv_start(空白)
{
struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_undirected_advertise_get_active ();
memcpy(bd_地址,cmd->op.addr.addr,6);
app_easy_gap_undirected_advertise_start ();
}
但我总是得到全零。
谢谢,
当做,
Dhiraj

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

嗨dhirajp15,

因为您已经将设备配置为GAPM_GEN_STATIC_RND_ADDR,所以应该生成静态随机BD地址。看起来你读BD地址的方式是正确的。我建议您调试您的代码,并检查bd_address变量是否包含BD地址或零,然后通过uart打印它。你可以在你的代码的memcpy(bd_address,cmd->op.addr.addr,6)中添加一个断点,并检查复制的bd地址是否与你在广告期间使用的bd地址匹配。

由于PM_dialog

dhirajp15
离线
最后看到:2年6个月前
加入:2016-06-08 15:26
嗨PM_Dialog,

嗨PM_Dialog,
我已经在memcpy(bd_address,cmd->op.addr.addr,6)中添加了一个断点,并检查了它的值是否显示为零。也保持在cmd->op.addr。Addr,它持有随机生成的蓝牙地址,当user_app_adv_start()函数执行时,它显示0,并在执行后显示实际值。
谢谢,
当做,
Dhiraj

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

嗨dhirajp15,

我已经在SDK的ble_app_barebone项目中测试了它。我在user_adv_conf结构的addr_src成员中定义了GAPM_GEN_STATIC_RND_ADDR,并且能够生成静态随机BD地址。你现在在做哪个项目?你的代码是否执行分配给app_easy_gap_undirected_advertise_start_create_msg()函数的generate_static_random_address()函数?一旦将设备配置为GAPM_GEN_STATIC_RND_ADDR,应用程序代码就应该执行generate_static_random_address()函数。我建议你在你的代码的那个地方添加一个断点,然后检查BD地址是否是使用面板的“调用堆栈窗口”生成的。另外,我建议你检查你的代码的优化是否在Level-O0,如果-O3,可能Keil优化了代码,它不会显示你的数组的实际值。点击“项目”选项卡,然后点击“目标选项”。在打开的窗口中,转到“C/ c++”选项卡,将优化选项改为Level0(-O0)。

由于PM_dialog

dhirajp15
离线
最后看到:2年6个月前
加入:2016-06-08 15:26
嗨PM_Dialog,

嗨PM_Dialog,
我没有在项目中找到函数generate_static_random_address()。我正在开发sdk 5.0.2.1。还使用调用堆栈窗口检查了op.addr.addr的值为零。我也给你发了我的keil窗口的截图,为了调试,我把优化设置为O0。请尽快帮助解决这个问题
PFA。
谢谢,
当做,
Dhiraj

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

嗨dhirajp15,

您正在开发的SDK5.0.2.1是一个过时的版本。在这个SDK中,当您将设备配置为GAPM_GEN_STATIC_RND_ADDR时,bd地址从ble堆栈生成,并且每次设备发布时都会更改。所以它是随机的bd地址,而不是静态的。它预计接收零在bd地址的代码,你已经发布,因为正如所提到的,bd地址是从堆栈中生成的,你将不能使用你已经发布的方式读取它。强烈建议使用最新版本的SDK (SDK5.0.4),其中静态随机bd地址生成是由SDK完成的。如果您将设备配置为GAPM_GEN_STATIC_RND_ADDR,这个版本的SDK使用generate_static_random_address()函数来生成静态随机bd地址。如果有必要使用SDK5.0.2.1,我建议您采用SDK5.0.4的实现并将其嵌入到您的应用程序代码中。

由于PM_dialog