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.

[参考译文] CC2540:尝试查找服务时、IOS 应用程序断开连接

Guru**** 2551300 points
Other Parts Discussed in Thread: CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/650827/cc2540-ios-app-disconnects-when-attempting-to-discover-services

器件型号:CC2540

我的 CC2540器件可与 Android 应用正常配合使用、但出于某些原因、iPhone 应用不想与之配合使用。 应用程序可以连接到它、但在尝试发现服务时会断开连接。 通过监听蓝牙传输、CC2540器件似乎会终止与 LL_TERMINATE_IND 错误代码0x13的连接。 有人对此有任何想法吗? 谢谢。

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

    终止可能来自您的应用程序、因为代码0x13是用户请求的终止原因代码。

    尝试在 GAP_TerminateLinkReq 上放置一个断点并检查调用栈。

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

    JXS、

    我希望您有一个美好的假期!

    感谢您的推荐。 CC2540终止连接的原因是0x16 (本地主机终止连接)。 ATT_READ_BY_Group_Type_Req 的起始句柄似乎不正确。 如果您更喜欢我之前发布的屏幕截图、则在它断开连接之前、iOS 应用程序会请求 一个以句柄0x0015开始的 ATT_READ_BY_GROK_Type_Req。 这是之前 RSP 的第一个句柄、BLE 规范对此进行了错误处理。 它应该是最后一个句柄0xFFC0。  

    我尝试使用 LightBlue 应用进行连接、但问题相同。 iOS 应用似乎希望 CC2540响应一次只需1个句柄。 这是我们可以在固件中更改的吗? 谢谢。

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

    对于这个 ATT 操作码、堆栈不会以错误代码0x13终止。 为了显示此行为、需要对 SimpleBLEPeripheral 示例应用进行哪些更改? 它在 BLE 规范 w.r.t 中的什么地方说"这是之前 RSP 的第一个句柄、BLE 规范对此是错误的"?
    屏幕截图显示请求/响应的最后一个句柄为0x0014。

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

    我从 Robin Heydon 的《低功耗蓝牙:开发人员指南》第10.7.2.1节中得到了这一点、"除非最后一个服务的最后一个句柄是0xFFFF 或 收到错误响应、 客户端发送另一个"按组类型读取"请求、并 将起始句柄更新为比 上一个响应中最后一个服务的最后一个句柄大一个。 这样、客户端就可以枚举设备上的所有服务。 "

    我基于 BLE 照明开发套件(www.digikey.com/.../5332485)构建了我的项目。 BLE 光开发套件也存在此问题。 我还没有尝试过 SimpleBLEPeripheral、但我会尝试一下。 谢谢。

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

    我将我的代码移植到简单外设项目中、它正常工作! 非常感谢您的帮助。