This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640R2F:多角色项目绑定到 iphone

Guru**** 2609955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1236889/cc2640r2f-multi_role-project-bonding-to-iphone

器件型号:CC2640R2F

我正在根据 simplelink_cc2640r2_sdk_5-30_00_03示例项目 blestack "multi_role"设计一个项目。

作为测试、我将在 cc2640r2 Launchpad XL 上原封不动地运行示例项目。

我这个项目的目标是使 cc2640r2充当中央设备并与外围 BLE 设备配对以收集数据、然后、作为外设并与智能手机(Android 或 IOS)与自定义应用配对以共享收集的数据。 由于环境和数据的安全性、我希望使用绑定配对。

当我将多角色设备设置为广播时、我能够在蓝牙设置下成功与 Android 手机配对、并收到以下消息:

当尝试使用 iphone 执行同样的操作时,运行 IOS 15失败,并收到以下消息:

我无法发现"21"相当于错误。

multi_role 项目是否会在绑定对中与 IOS 一起工作?

是否需要进行任何更改才能使其正常工作?

谢谢、David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    您能否说明您如何尝试启动配对? 根据 Apple 设备附件设计指南、在中央设备因 ATT 请求被拒绝而收到不足的身份验证错误代码之前、该附件(在本例中为 iOS 设备与之配对的外设)不应请求配对。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jan

    要在 iphone 上启动配对、我将 multi_role 项目设置为广播:

    然后在 iphone 上、我使用 BLE 扫描仪应用、并点击"Connect on Multi Role"

    然后、在 multi_role 屏幕中输入密码

    并在 iphone 应用程序上显示"connected"

    但 multi_role 屏幕显示:

    我未经修改地测试了来自 cc2640r2 SDK 的 multi_role 示例工程、因此看不出如何遵循 Apple 程序。

    谢谢

    大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    是否可以尝试更改项目上的 BLE 设置、以便在连接时不启动配对、而是等到加密特性尝试作为测试来访问? 在这种情况下、我想查看返回代码。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jan

    抱歉、我看不到如何操作。

    此致

    大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    这可以在 multi_role.c 文件中通过修改如下所示的配对模式参数来完成:

    您需要将 pairMode 变量更改为等于 GAPBOND_Pairing_MODE_WAIT_FOR_REQ。

    您是否可以进行此更改并重新测试?

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Jan

    好的、感谢指针。

    因此在多角色示例项目中、我按照建议更改了此行711。

    现在、如果我使用 BLE 应用尝试读取特征5、我可以成功地与 iphone 配对。 在对之后、我获得了"Cn0绑定保存成功"、如果我读取 CC2640R2器件存储器、我可以看到 iphone BLE MAC 存储在闪存中、并且 iphone 已将多角色存储为配对器件、很好。

    然而,当我尝试相同的事情与 Android 手机我回到问题,它不会保存债券:

    这可以通过返回 GAPBOND_PAMASGE_MODE_INITIAL 来固化

    那么,我该怎么做才能有一个项目能够成功地与 Android 和 IOS 结合,这是至关重要的?

    谢谢

    大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    明白了、我很高兴我们能够解决 iOS 配对行为。 奇怪的是、错误代码(十进制= 21 -> hex = 0x15)会解析为 bleNoResources 、这通常在栈忙于处理其他事务时发生。 作为快速测试、您是否可以尝试通过 Flash Programmer 2批量擦除 cc2640r2、然后擦除智能手机上的所有键合、清除缓存、重新启动电话、最后使用  GAPBOND_PAXING_MODE_WAIT_FOR_REQ 映像刷写 CC2640R2以重新测试?

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jan

    我发现、当参数'replaceBonds'为 False 时出现错误代码21、并且我尝试绑定另一个器件。

    当我把'replaceBonds'更改为 True 时,我可以配对 Android 然后 IOS 然后 Android 再次.

    这是否意味着当'replacebonds'为 False 时、只允许生成一个键?

    看看保存绑定的 NVS 闪存(0x01d000之后),我看到,当我第二次绑定一部手机时,它创建了一个新条目。 因此、在分配给债券的 NVS 区域已满之前、我可以执行此操作的次数是否有限、达到该时间后会发生什么情况?

    因此、读取简单的配置文件特征5会触发绑定、这是因为在"imple_GATT_PROFILE_c"中、特征值5的配置文件属性设置为"GATT_PERIP_AUTHEN_READ"?

    谢谢

    大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    似乎由于某种原因、最大键合数设置为1。  是否可以检查 项目中 GAP_Bondings_MAX 定义设置了什么(应在 gapbondmgr.h 中找到)启用 REPLATE Bonds 后、如果没有更多空间、最近最少使用的债券将被擦除。

    如果项目没有启动配对请求、那么在与需要进行配对的特征(具有 GATT_LABLE_AUTHEN_READ/WRITE)进行交互时将启动配对请求

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jan

    谢谢、我已经跟踪了堆栈库中的 GAP_Bondings_MAX。

    现在、使用此过程、multi_role 项目将创建一个静态密码 multi_role.c 行1895。

    堆栈库或工程中是否有可创建随机密码的 API?

    此致

    大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    没有预制的 API 来生成随机密钥、但您可以自由地添加自己的逻辑来为程序实现所需的任何密钥(设置或随机生成)。 我们有一些示例代码可能对您有所帮助、其中展示了如何在 BLE 安全基础知识实验 中、特别是在任务3中设置基于 TRNG 的密钥生成。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Jan

    好的、在"任务3"中生成 TRNG 密码很好。

    所有功能现在都在进行配对/绑定、并基于配对成功地从 multi_role 示例项目传输到我的自定义项目。

    感谢你的帮助。

    大卫