嗨,对话框中,
目前我正在使用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_address cmd - > op.addr.addr, 6);
app_easy_gap_undirected_advertise_start ();
}
但我收到的都是0。
谢谢,
问候,
Dhiraj
设备:
嗨dhirajp15,
既然您已经将设备配置为GAPM_GEN_STATIC_RND_ADDR,那么您应该生成静态的随机BD地址。看来你读BD的方式是正确的。我建议您调试您的代码,并检查bd_address变量是否包含BD地址或零之前,通过uart打印它。您可以在您的代码的memcpy(bd_address,cmd->op.addr.addr,6)中添加一个断点,并检查复制的bd地址是否与您在发布期间使用的bd地址匹配。
由于PM_dialog
嗨PM_Dialog,
我已经在memcpy中添加了一个断点(bd_address,cmd->op.addr.addr,6),并检查了其显示为零的值。同时保持一个cmd->op.addr的监视。Addr保存随机生成的蓝牙地址,当user_app_adv_start()函数正在执行时,它显示0,并在执行后显示实际值。
谢谢,
问候,
Dhiraj
嗨dhirajp15,
我已经在SDK的ble_app_barebone项目中测试了它。我将GAPM_GEN_STATIC_RND_ADDR定义到user_adv_conf结构的addr_src成员中,并且能够生成静态随机BD地址。你在做哪个项目?你的代码执行generate_static_random_address()函数分配到app_easy_gap_undirected_advertise_start_create_msg()函数吗?一旦将设备配置为GAPM_GEN_STATIC_RND_ADDR,应用程序代码就应该执行generate_static_random_address()函数。我建议您在代码的那个位置添加一个断点,然后检查BD地址是否使用面板的“调用堆栈窗口”生成。此外,我建议你检查你的代码优化是否在Level-O0,如果-O3也许Keil优化了代码,它不会显示你的数组的实际值。点击“项目”标签,点击“目标选项”。在打开的窗口中,转到“C/ c++”标签,将优化选项更改为Level0(-O0)。
由于PM_dialog
嗨PM_Dialog,
我在项目中没有找到generate_static_random_address()函数。我正在开发sdk 5.0.2.1。同样使用调用堆栈窗口检查op.addr.addr的值是零。我也给你发了我keil窗口的截图,我已经将优化设置为O0,以便调试。请帮忙尽快解决这个问题。
PFA。
谢谢,
问候,
Dhiraj
嗨dhirajp15,
您正在开发的SDK5.0.2.1是一个过时的版本。在这个SDK中,当您将设备配置为GAPM_GEN_STATIC_RND_ADDR时,bd地址从ble堆栈中生成,并且每次设备发布时都会更改。所以它是随机的bd地址,而不是静态的。它期望接收零在bd地址与代码,你已经发布,因为正如提到的bd地址是从堆栈生成的,你将不能读取它使用的方式,你已经发布。强烈建议使用SDK的最新版本(SDK5.0.4),其中静态随机bd地址的生成是由SDK完成的。这个版本的SDK使用generate_static_random_address()函数来生成静态随机的bd地址,如果你将你的设备配置为GAPM_GEN_STATIC_RND_ADDR。如果有必要使用SDK5.0.2.1,我建议您将SDK5.0.4的实现嵌入到您的应用程序代码中。
由于PM_dialog