在BLE_APP_SECURY项目中定义user_cfg_priv_gen_rslv_rnd,无法在绑定后连接。

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们将在未来几天修复错误/优化搜索和标记。
28篇帖子/ 0新
最后发表
丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
在BLE_APP_SECURY项目中定义user_cfg_priv_gen_rslv_rnd,无法在绑定后连接。

你好,先生,

我们希望我们的设备有随机地址,发现ble_app_security引入了这个函数。

但我发现:

如果我定义user_cfg_priv_gen_static_rnd,那么地址只保留在这个生命周期中,甚至我绑定设备,设备关闭后,地址已更改。
如果我定义USER_CFG_PRIV_GEN_RSLV_RND,在绑定设备后,地址被保留,但我不能连接到它。

为什么会发生?有什么不对吗?

丹尼尔

设备:
PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

如果我从线程中提到的内容正确地理解,当您定义了user_cfg_priv_gen_static_rnd时,可以连接设备,BD更改。你的问题是当你拒绝user_cfg_priv_gen_rslv_rnd时,这是正确的吗?此定义是生成已解析的私有随机BD地址。已解析的私有地址(RPA)是用IRK和PRAND生成的,即随机生成。请阅读BLE规范,以获取有关RPA的更多信息。请注意,如果定义user_cfg_priv_gen_rslv_rnd,则应离开user_cfg_priv_gen_static_rnd未定义。我试图复制您的问题,我定义了user_cfg_priv_gen_static_rnd,但我能够用移动ble应用程序连接da14580 pro-dk。当设备与移动应用程序断开连接时,我从应用程序中刷新BLE设备的列表,我可以用不同的BD地址再次连接。如果您正在使用SKD的BLE_APP_SECURY,请您澄清一下SKD的BLE_APP_SECURY吗?此外,如果您想使用RPA配置旅游设备,请您告诉我吗? Please, try to refresh the list of the BLE devices from the application and make sure that the BD is changed.

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
我只想要我的设备

我只是希望我的设备有随机地址,并且可以保留绑定地址。

我尝试了2个方法在BLE_APP_SECURY项目中生成随机地址。

一个是define user_cfg_priv_gen_static_rnd和undefine user_cfg_pen_gen_rslv_rnd,
它可以生成随机地址并保存地址,但在设备重新启动之后,地址已更改。
甚至我绑定设备,设备重新启动也会更改地址。
所以我认为这种方法不是我想要的。

另一个是define user_cfg_priv_gen_rslv_rnd和undefine user_cfg_priv_gen_static_rnd,
它可以生成随机地址,地址的变化在150秒内定义在user_config。
绑定设备后,地址停止更改,重新启动也不会更改地址。
但是在我绑定之后,它无法连接。
还有什么需要配置的吗?

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

对不起,但我有点混淆你想要完成的事情?你想拥有随机的BD地址,但重新启动后不会更改地址?如果定义user_cfg_priv_gen_static_rnd,则user_config.h标题文件中的user_adv_conf结构的addr_src项将被配置为gapm_gen_static_rnd_addr。因此,如果检查app_easy_gap_undircated_advertise_start_create_msg()函数,每次启动广告时都会触发生成_static_random_address(),并且将更改BD地址。你可以请求澄清你想要实现的东西,如果你想要你的设备有私有静态随机BD地址或可解析的BD地址吗?

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

是的,我想拥有随机的BD地址,但重新启动后不会更改地址。

静态随机BD地址和可解析BD地址都可以。

但我试过柱子4,
静态随机BD地址将在重新启动后更改,即使我绑定它,
已解析的BD地址将在150秒后改变,并且在债券后不会改变。

所以我认为可解决的BD地址满足我的要求,但为什么它不能在债券之后连接?

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

正如我在之前的文章中提到的,随机的BD地址将在重启后改变。对于您的实现,一个可能的解决方案是将随机的BD地址存储到SPI Flash或OTP中,因此在重新启动或断电后,您应该从那里读取它。如果你想只在重启后而不是断电后保留它,你可以将它存储在保留RAM中。另外,要注意BD地址遵循标准格式,它是根据BLE规范的。有关其格式的更多信息,请阅读BLE规范。关于可解析的BD地址,您的意思是连接后,您断开了与对端设备的连接,无法再次连接?我这边测试过了,我可以连接到可解析的BD地址配置。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

好的,我会尝试将随机的BD地址存储到SPI闪光灯中。

关于可解析的BD地址,我的意思是绑定之后,我连接然后从对等设备断开连接,我无法再次连接。

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

请尝试从应用程序面板刷新可用BLE设备的列表。如果您发现上述任何答案有用请标记其中一个接受。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

关于可解析的BD地址,我还是不知道。

粘接后,连接,然后断开。可以找到设备但无法连接。
连接后,键合,然后断开连接。可以找到设备但也无法连接。

就好像它只能连接一次。

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

您无法重新连接的最可能的原因是,您正在使用的BLE应用程序可能已经兑现了您的绑定设备。请您尝试从BLE应用程序中刷新可用设备列表,并确保该设备没有缓存,刷新后BD地址发生了更改。我试着从我的侧面和我能够重新连接后的连接程序。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

我使用“nrf connect”,但仍然不能连接。

Android上还有其他BLE应用推荐吗?

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

适用于Android的推荐移动BLE应用程序将是“ble扫描仪”.我从我的侧面测试,我能够重新连接。如果您使用SDK(版本5.0.4)的默认ble_app_security示例,并且如果您在user_config.h头文件中定义了USER_CFG_PRIV_GEN_RSLV_RND宏,您应该能够重新连接,因为BD地址被更改了。另外,我建议您从应用程序的“Near By”面板中刷新可用的BLE设备,并确保更改了BD地址。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

使用BLE扫描仪,bond后我找不到我的设备。

是的,我只会将#undef user_cfg_priv_gen_rslv_rnd更改为#define user_cfg_priv_gen_rslv_rnd。

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

我使用Pro-DK和SDK5.0.4从我的身边测试,但我无法复制您的问题。你在努力的哪个SKD?您是否尝试刷新“接近”面板?我非常建议您将固件运行到调试模式中,以检查代码是否已卡在看门狗或硬盘处理程序中。此外,尝试使用SmartSnippets Toolbox,以确保在断开连接后仍然仍然是宣传的。如果您使用具有DA14580或我们的任何开发板的任何开发板,请澄清您是否可以澄清

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

我使用了一个定制板与1M winbond闪光。

是的,我使用调试模式,但Keil没有显示任何错误。

如果我使用自定义板,我可以使用SmartSnippets工具箱,以确保我的设备仍然广告后bond?

债券后,所有问题都会出现。我使用Android默认系统功能并输入'123456'绑定我的设备,它会做任何错误吗?

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

请确保您使用的SPI Flash是由位于DA1458x_SDK\5.0.4\utilities\flash_programmer文件夹路径的Flash程序员支持的。否则,您应该将这个SPI Flash由您自己添加到Flash程序员。你能让我知道你是否想用SmartSnippets工具箱刻录SPI Flash吗?我建议你看看faq,在开发工具包和参考设计部分,有一个问题“如何使用开发工具包(基本或专业)编写自定义板”。

https://support.dialog-seminile.com/guide/faq-dev-kits-ref-designs.

此外,您可以检查SDK的BLE_APP_SECURY示例的USER_APP_DISCONNECT()回调函数。断开连接后将触发此回调,因此您将通过执行user_app_adv_start()函数,查看断开连接后的设备重新启动。您能否将断点添加到user_app_adisconnect中的user_app_add_start()中,并在开发模式下运行代码?

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨,pm_dialog,

嗨,pm_dialog,

是的我在我的设备上使用w25x10cl。附件是存储在SPI Flash中的键DB。

我看到代码进入user_app_adv_start(),因此我在手机上重新启动蓝牙功能,然后设备可以是fonud。

但仍然无法连接到它。

这可能是在我断开它之后,虽然我绑定它,但这意味着地址被保存到SPI闪存中,地址仍然在断开连接后更改?然后由于地址错误,它无法连接。

附件:
PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

你能否在没有SPI闪光的情况下运行它,让我知道结果?我试图复制您的问题,但仍然可以在没有SPI Flash的情况下使用矿石重新连接。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

我将user_config中的代码更改为#undef USER_CFG_APP_BOND_DB_USE_SPI_FLASH。

设备采用相同的作用。粘接后,它无法连接。并且在我删除绑定后,它可以连接。

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

由于BD地址更改,因此您应该能够重新连接。可能,绑定的BD地址从智能手机缓存,如果删除绑定设备,可以重新连接为什么。此外,您问题的可能原因是您的智能手机不支持已解析的BD地址。您能否请用另一个手机(有和没有SPI Flash)检查它吗?如果您发现上述任何答案有用请标记其中一个接受。

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

是的,我在发现这个问题的时候尝试了其他手机,但它们都行为相同。

我尝试了另一种方式:

我设置了2个断点,一个在user_app_connection中,调用它一个,另一个在user_app_disconnect中,调用它,然后我开始我的操作。

首先用我的手机绑定芯片,A触发,然后我输入123456,按OK,现在就可以绑定了。然后我关掉手机的蓝牙功能,B会触发。
然后我打开BLE扫描仪尝试连接到它,芯片可以是FONUD并在接近标签中显示。我按连接按钮,
一个没有触发。

所以也许这就是我无法连接的原因?为什么会发生?

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

可能,这是智能手机一侧的问题,因为我仍然无法复制你的问题。您能否分享在SDK的默认BLE_APP_SLEEPMODE示例中所做的配置/定义,以便重试,以使用您使用的相同配置复制您的问题?只有使用可分辨的BD地址,您无法重新连接?

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

是的,只有可解析的BD地址,我无法连接后绑定和断开。也许我应该用苹果手机试试?

附件是我使用的项目。请尝试一下。

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

我测试了你的项目,在Pro-DK上工作,并附上一个连接的SPI闪光灯,但我仍然无法复制您的问题。您可以在断开连接后从“历史”面板中删除设备,然后尝试重新连接?您能否将项目测试到Pro-DK中?

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

在删除历史记录后,我仍然无法在绑定后连接到它。

我没有pro-dk .....

我想我只能将随机的静态地址省给SPI Flash来实现我的目标。

谢谢你!

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

是的,请尝试将静态随机BD地址存储到SPI Flash。您希望实现哪种功能?

谢谢,PM_DIALOG.

丹尼尔59.
离线
最后一次露面:1年8个月前
加入:2016-01-08 04:34
嗨pm_dialog,

嗨pm_dialog,

我只想要我们的设备有随机地址。

在知道将静态随机BD地址存储到SPI Flash之后可以实现我的目标,我想弄清楚为什么可以解析一个人。

感谢您对我的问题的评论。

PM_DIALOG.
离线
最后一次露面:3天5小时前
工作人员
加入:2018-02-08 11:03
嗨daniel59,

嗨daniel59,

在您案例中,我建议您使用user_cfg_priv_gen_static_rnd定义并将BD地址存储到SPI闪存中。我不必使用可解决的BD地址,

谢谢,PM_DIALOG.