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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.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天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

如果我从您在线程中提到的理解正确的话,那么当您定义USER_CFG_PRIV_GEN_STATIC_RND时,您可以连接您的设备,然后BD就会更改。您的问题是当您拒绝USER_CFG_PRIV_GEN_RSLV_RND时,对吗?这个定义是生成可解析的私有随机BD地址。可解析私有地址(Resolvable Private Address, RPA)是与IRK和prand一起生成的,是随机生成的。请阅读BLE规范以获得关于RPA的更多信息。请注意,如果定义了USER_CFG_PRIV_GEN_RSLV_RND,则应该不定义USER_CFG_PRIV_GEN_STATIC_RND。我试图复制您的问题,并且定义了USER_CFG_PRIV_GEN_STATIC_RND,但是我能够将DA14580 Pro-DK与移动BLE应用程序连接起来。当设备与移动应用断开连接时,我刷新应用中的BLE设备列表,我可以用不同的BD地址重新连接。请问您是否使用了SKD的ble_app_security,或者您做了任何配置?另外,请问您是否需要配置带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。
它可以生成随机地址,并且在User_config中定义的150s中的地址更改。
我绑定设备后,地址停止改变,重启不改变地址。
但我把它连接起来后,它就不能连接了。
我还需要什么需要配置吗?

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入: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地址在150s后会改变,bond后不会改变。

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

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

正如我在我之前的帖子中已提及的那样,重新启动后将更改随机BD地址。实现您的实现的可能解决方案是将随机的BD地址存储到SPI闪存或进入OTP中,因此在重启或关闭电源后,您应该从那里读取它。如果您想在重新启动之后才能保持它而不是关闭电源后,您可以将其存储为保留RAM。此外,请注意,标准格式的BD地址,它根据BLE规格。有关其格式的更多信息,请阅读BLE规格。关于所解析的BD地址,您的意思是在连接之后,您断开与对等设备的连接,您无法再次连接?我从我身边进行了测试,我能够连接可解变的BD地址配置。

谢谢,PM_DIALOG.

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

嗨pm_dialog,

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

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

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入: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天1小时前
职员
加入: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天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

适用于Android的推荐移动BLE应用程序将是“ble扫描仪”。我从我身边测试,我能够重新连接。如果使用SDK(版本5.0.4)的默认BLE_APP_SECURY示例,并且如果在USER_CONFIG.H标题文件中定义user_cfg_priv_gen_rslv_rnd宏,则应该能够重新连接,因为BD地址已更改。此外,我建议您刷新可用的BLE设备在应用程序的应用程序中形成“接近”,并确保更改了BD地址。

谢谢,PM_DIALOG.

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

嗨pm_dialog,

使用“BLE扫描仪”,我无法在粘合后找到我的设备。

是的,我只修改了#undef USER_CFG_PRIV_GEN_RSLV_RND为#define USER_CFG_PRIV_GEN_RSLV_RND。

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

我使用Pro-Dk和SDK5.0.4进行了测试,但我无法复制你的问题。你在哪个SKD工作?你有没有刷新"附近"面板?我强烈建议您运行固件进入调试模式,以检查代码是否卡在Watchdog或Hardfault处理程序。此外,尝试使用SmartSnippets工具箱,以确保您的设备在断开连接后仍在广告。请您澄清一下,您使用的是DA14580定制板还是我们的任何开发板?

谢谢,PM_DIALOG.

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

嗨pm_dialog,

我正在使用带1M的Winbond Flash的自定义板。

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

如果我正在使用自定义板,我可以使用SmartSnippets Toolbox,确保我的设备在债券后仍在广告?

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

丹尼尔

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

请确保您正在使用的SPI闪存从SDK的DA1458x_sdk \ 5.0.4 \ Utilities \ flash_prickmer文件夹路径中的闪存程序员支持。否则,您应该将此SPI闪光灯添加到Flash程序员中。如果您想使用SmartSnippets Toolbox刻录SPI Flash,请您告诉我吗?我建议您看看常见问题解答,在开发套件和参考设计部分中,有一个问题“如何使用开发套件(基本或Pro)”编程自定义板。

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

此外,您还可以检查SDK的ble_app_security示例中的user_app_disconnect()回调函数。这个回调将在断开连接时触发,因此您将看到断开连接后的设备通过执行user_app_adv_start()函数重新启动广告。您是否可以添加一个断点到user_app_adv_start()放置在user_app_disconnect和运行您的代码在开发模式?

谢谢,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天1小时前
职员
加入: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天1小时前
职员
加入: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中,叫它A,另一个在user_app_disconnect中,叫它B,然后我开始我的操作。

第一个粘贴芯片带我的手机,触发,然后我输入123456,然后按OK,现在Thay键合。然后我关闭手机上的蓝牙功能,b触发。
然后我打开BLE扫描仪尝试连接到它,芯片可以是FONUD并在接近标签中显示。我按连接按钮,
一个没有触发。

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

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入: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天1小时前
职员
加入: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,

在删除了历史之后,我还是无法连接它。

我没有亲dk.....

我想我只能把随机静态地址保存到SPI flash来实现我的目标。

谢谢你。

PM_DIALOG.
离线
最后一次露面:3天1小时前
职员
加入: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天1小时前
职员
加入:2018-02-08 11:03
嗨Daniel59,

嗨Daniel59,

在您的情况下,我建议您使用USER_CFG_PRIV_GEN_STATIC_RND定义并将BD地址存储到SPI Flash中。我不需要使用可分解的BD地址,

谢谢,PM_DIALOG.