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.

[参考译文] RTOS/CC2640R2F:支持 L2CAP CoC 面向连接的通道

Guru**** 2540720 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/735760/rtos-cc2640r2f-l2cap-coc-connection-oriented-channels-support

器件型号:CC2640R2F

工具/软件:TI-RTOS

您好!

在本论坛中、我们有关于 L2CAP CoC 示例的问题。 您的答案是、由于智能手机支持缺失、您看不到这种需求。

我认为可以肯定的是、这已经发生了变化。 iOS 自 iOS 11.0起支持 CoC。 Android 包括自8.0以来的第一个(非常基本)支持。

和:AFICT L2CAP CoC 显然为表提供了一些缺失的功能、使其更适合使用基于 GATT 的通信方案、即必须在 GATT/ATT 之上实现的数据分段和流控制。

所以有2个问题:

1. 使用 CoC 的 L2CAP 应用程序是否完全可以用于 cc2640r2? 在_sdk_2_20_00_49中、缺少几个部分(标记为目前不可用、显然未实现)

/*以下 API 目前不可用*/
#define L2CAP_CmdReject (...) (iCall_directAPI (ICA……
#define L2CAP_ConnParamUpdateRsp (...) (iCall_directAPI (ICA……
#define L2CAP_SetUserConfig (...) (iCall_directAPI (ICA……
#define L2CAP_SetBufSize (...) (iCall_directAPI (ICA……
#define L2CAP_GetMTU (...) (iCall_directAPI (ICA……
#define L2CAP_RegisterApp (...) (AssertHandler (0、0))
#define L2CAP_SendData (...) (AssertHandler (0、0))
#define L2CAP_SetControllerToHostFlowCtrl (...) (AssertHandler (0、0))
#define L2CAP_HostNumCompletPkts(...) (AssertHandler (0、0))

2.对于如何使用 l2cap API 建立 L2CAP CoC 和传输数据、有什么建议?

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

    您好、Oliver、

    使用2.20 SDK 的 CC2640R2支持使用 CoC 的 L2CAP 应用。

    2.您可以查看  我们的 BLE 4.2用户指南的 L2CAP CoC 部分。 但是、如  主题和其他主题帖中所述、CoC 相对于 GATT 提供的优势微不足道、因此我们仍然没有任何 L2CAP CoC 示例。  我们建议改用数据长度扩展和更大的 MTU 大小。

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

    感谢您的回复 Jessica、

    很高兴听到支持 CoC 的声音...想知道为什么不启用 iCall 接口中的宏(例如`L2CAP_RegisterApp`解析为`(AssertHandler (0、0))`)。

    我不太明白您对使用数据长度扩展的看法...我实施这种扩展的理由不是首先增加带宽、而是为用于连接的移动设备(主要是 iOS)提供 L2CAP CoC。

    如果 L2CAP 通道提供了我所需的全部功能、为什么我应该将开发完整传输堆栈的任务放到应用开发人员身上? 我真的不明白你的推理。

    至于缺失的示例:如果您在堆栈中支持此功能、您肯定会对其进行一些测试。 这些已经足够了。

    您是否无法为您的文档提供至少几个代码片段?

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

    我不确定用于开发/测试 L2CAP 代码的是什么。 感谢您的反馈、您提出了很多很好的观点。 迄今为止、我们尚未将重点放在使用 L2CAP CoC 上、因为大多数移动设备都不支持它、但这显然已发生变化。 我们将在我们的创作积压工作中添加一个 L2CAP CoC 示例、以便我们重新考虑我们对该主题的立场。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 同样、如果您有 L2CAP CoC 工作、则必须有一些测试代码、并且从其中复制/粘贴一些代码行根本不应该是什么大问题。 如果能在这里得到任何帮助、我将不胜感激。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Oliver、

    我们的 host_test 项目使用了一个脚本来测试此代码。 如果您对此感兴趣、我可以尝试从我们的测试团队跟踪它;但是、我们没有使用 L2CAP CoC 代码的项目。

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

    如需了解社区信息:Oliver 和我已将此讨论脱机。

    目前、无法从嵌入式应用程序调用 L2CAP 连接导向通道(CoC) API

    我们已将这一点提请研发团队注意、并且正在互操作性事件中对其进行调查和测试。

    此问题可能会在不久的将来得到解决、请注意版本说明以查看此问题的状态

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

    您好、Oliver、

    我有 L2CAP CoC 的更新。 它最近在由 SIG 推出的最新蓝牙拔出盛会上进行了测试、我们实际上发现了相当好的功能性能。 因此、要明确的是、该功能在当前 SDK (2.30 CC2640R2)上确实有效、并且可以立即使用。

    但是、我们同意、我们没有一个展示该功能的完整示例。  

    这是我们正在研究并计划集成到下一个 SDK (2.40)中的内容。

    目前、我有一个使用 simple_peripheral/simple_central 的基本概念验证示例。

    我已将此线程中已更改的文件作为 tar 文件附加。 您应该能够将它们放在现有 CC2640R2 SDK 的基础上。

    /cfs-file/__key/communityserver-discussions-components-files/538/l2cap_5F00_coc.tgz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要进行设置、请将中央设备连接到外设、然后选择 GATT Read 选项。 这将从简单 GATT 配置文件中读取 PSM、并使用该 PSM 打开 L2CAP CoC。
    从此处开始、外设将使用周期事件时钟(5s)向中央发送计数器。 在接收到该数据时、中央设备发回一个计数器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的调查! 我能够使用 SDK 2.30 CC2640R2成功测试您的 L2CAP CoC 示例!