捕获随机的BLE地址

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
dhirajp15.
离线
最后一次露面:2年3周前
加入:2016-06-08 15:26
捕获随机的BLE地址

嗨对话框,
目前我正在使用GAPM_GEN_STORATIC_RND_ADDR配置的BLE_BAREBONE示例,我想通过UART将随机生成的BD地址通过UART到共同处理器一旦广告开始,您可以建议阅读随机BD地址的任何方法吗??
我尝试过以下操作:
void user_app_adv_start(void)
{
struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_undirected_advertise_get_active();
memcpy(bd_address,cmd-> op.addr.addr,6);
app_easy_gap_undircated_advertise_start();
}
但我总是收到所有零。
谢谢 ,
问候,
Dhiraj.

设备:
PM_DIALOG.
离线
最后一次露面:14小时49分钟前
职员
加入:2018-02-08 11:03
嗨Dhirajp15,

嗨Dhirajp15,

由于您已将设备配置为Gapm_gen_static_rnd_addr,因此您应该生成静态随机BD地址。似乎你用正确的方式阅读了BD地址。我建议您调试代码并检查BD_Address变量是否包含通过UART打印之前的BD地址或零。您可以在代码的memcpy(bd_address,cmd-> op.addr.addr,6)中添加一个断点,并检查BD地址是否复制匹配广告期间使用的BD地址。

谢谢pm_dialog.

dhirajp15.
离线
最后一次露面:2年3周前
加入:2016-06-08 15:26
嗨pm_dialog,

嗨pm_dialog,
我在memcpy(bd_address,cmd-> op.addr.addr,6)中添加了一个断点,并检查了它显示零的值。同时在CMD-> OP.ADDR.ADD中保留Watch,该DDR包含随机生成的蓝牙地址,它显示ZERO,而user_app_adv_start()函数正在执行,并且它在执行后显示实际值。
谢谢,
问候,
Dhiraj.

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

嗨Dhirajp15,

我在SDK的BLE_APP_BAREBONE项目中测试了它。我将GAPM_GEN_STODIC_RND_ADDR定义为user_adv_conf结构的ADDR_SRC成员,我能够生成静态随机BD地址。您在哪个项目工作?您的代码执行生成_static_random_address()函数是否已分配到App_easy_gap_undircated_advertise_start_create_msg()函数中?一旦您将设备配置为Gapm_gen_static_rnd_addr,您的应用程序代码应该执行生成_static_random_address()函数。我建议您将断点添加到代码的那个地方,然后通过使用面板的“呼叫堆栈窗口”来检查BD地址。此外,我建议您检查代码的优化是否在ove-o0中,如果-o3可能会优化代码,它不会向您展示数组的实际值。单击“项目”选项卡,然后单击“目标选项”。在“打开”窗口中,转到“C / C ++”选项卡,将优化选项更改为level0(-o0)。

谢谢pm_dialog.

dhirajp15.
离线
最后一次露面:2年3周前
加入:2016-06-08 15:26
嗨pm_dialog,

嗨pm_dialog,
我在项目中查找函数生成_static_random_address()。我正在研究SDK 5.0.2.1。还要使用Call Stack窗口检查Op.Addr.Addr的值为零。还向您发送了keil窗口的屏幕截图,我已经将优化设置为O0进行调试目的。请尽快帮助解决此问题。
PFA。
谢谢 ,
问候,
Dhiraj.

附件:
PM_DIALOG.
离线
最后一次露面:14小时49分钟前
职员
加入:2018-02-08 11:03
嗨Dhirajp15,

嗨Dhirajp15,

您正在处理的SDK5.0.2.1是一个过时的版本。在此SDK中,当您将设备配置为GAPM_GEN_STORATIC_RND_ADDR时,BD地址是从BLE堆栈生成的,并且每次设备通告时都会更改。所以它是随机的BD地址,但不是静态。它有望在BD地址中收到零,您已发布的代码,因为如上所述,从堆栈中生成BD地址,您将无法使用所发布的方式读取它。它强烈建议使用最新版本的SDK(SDK5.0.4),其中SDK完成了静态随机BD地址生成。如果将设备配置为GapM_GEN_STORATIC_RND_ADDR,则此版本的SDK使用生成_static_random_address()函数来生成静态随机BD地址。如果有必要使用SDK5.0.2.1,我建议您将SDK5.0.4的实现执行并将其嵌入到您的应用程序代码中。

谢谢pm_dialog.