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.

[参考译文] CC2340R5:GATT_ExchangeMTU ()始终在初始连接时返回 INVALIDPARAMETER

Guru**** 2589265 points
Other Parts Discussed in Thread: CC2340R5, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1378055/cc2340r5-gatt_exchangemtu-always-returns-invalidparameter-on-initial-connection

器件型号:CC2340R5
主题中讨论的其他器件: SysConfig

工具与软件:

我已经将 simplelink F3 SDK 8.10.01.02中的 basic_ble_LP_EM_CC2340R5_freertos_ticlang 工程修改为中央外设。  

我扫描设备、找到设备后便连接到设备。 然后2秒后,我调用 GATT_ExchangeMTU (),它总是返回0x02 (INVALIDPARAMETER )。 然后我打电话给断开并再次扫描。  

第二次找到设备并在2秒后连接后,我调用 GATT_ExchangeMTU (),这一次成功。  

我已尝试更改连接后的延时时间量。 我曾尝试更改 MTU、但它从未允许我在首次连接时启动 MTU 更改过程。

有什么想法吗?

我已附上我正在使用的工程的 zip 文件。  

e2e.ti.com/.../7462.basic_5F00_ble_5F00_LP_5F00_EM_5F00_CC2340R5_5F00_freertos_5F00_ticlang.zip

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

    尊敬的 Levi:  

    感谢您发送编修!

    请检查您是否修改了 SysConfig > BLE > General Configuration > Max Size of PDU (bytes)上的 PDU Size (PDU 大小)。  堆栈可以配置为支持 MAX_PDU_SIZE 最多255字节、每个低功耗蓝牙连接最初使用默认的27字节(ATT_MTU = 23字节)值、直到交换 MTU 过程导致更大的 MTU 大小。 我建议查看用户指南:  配置较大的 MTU 值.  

    如果您还需要进一步的帮助、请告诉我。  

    此致

    Ivan

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

    感谢您发送编修。 我已验证"max PDU (最大 PDU)"设置为255。 我已经阅读了用户指南、现在正在遵循它的方向。 但问题是、同样的代码适用、只是不适用于启动后的第一次连接。 有什么想法吗?

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

    尊敬的 Levi:

    我只想确认以下几点:  

    -您正在连接到应用程序吗?

    -你在哪里连接? 您采用了何种设置? 您的系统如何工作?  

    -当它仅用作中央时,它是否仍具有相同的行为?  

    此致

    Ivan

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

    我正在连接另一个运行 CC2642的器件、这是一个外设。  

    我的设置是在 CC2340上启动基本的 BLE 代码、并在 BLE 堆栈初始化后开始扫描。 当我看到来自在 CC2642上运行的外围设备的广播包时、我会初始化连接。 由 PC 传输。 我等待1秒钟、然后调用  GATT_ExchangeMTU () 、该调用将始终失败、并在启动后第一次连接时返回0x02。 当调用失败时,我调用 BLEAppUtil_disconnect()。 然后我再次开始扫描。 当我看到来自外设的另一条广播时、我又连接了一条。 这一次在我调用 GATT_ExchangeMTU ()时等待一秒钟后 ,它返回0x00 ,我得到 MTU 响应。  

    是的、当我只是一个中央器件时、仍然会发生这种情况。

    谢谢

    Levi

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

    尊敬的 Levi:  

    感谢您发送编修。 我将尝试在最后重现此问题、并将使用更新与您联系。

    此致

    Ivan

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

    您好、Levi:

    一直在为您提供帮助的专家很快就会回来。 同时、能否确认您正在从 GATT 服务器执行 GATT_ExchangeMTU ()(如果已将外设配置为 GATT 服务器的主机)。

    如果您可以共享正在调用此函数的段的代码片段、这可能也会有所帮助。

    BR、

    David。

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

    嗨、David、

    我将从我的 Central (即 GATT Client)启动 GATT_ExchangeMTU ()。 这是我启动 GATT 发现过程的方式。 这不正确吗?

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

    尊敬的 Levi:  

     对于延迟、我们深表歉意。 我尝试使用您附加的文件重现您的问题。 您能否确认您在使用哪个 SysConfig? 在调用  GATT_ExchangeMTU ()之前、您是否在客户端和服务器设备之间建立了连接? 或者您的终端是否解决了此问题?

    此致

    Ivan

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

    我使用 SysConfig 1.20.0

    是连接已建立、我等待 3秒钟后再发送 MTU 请求。

    遗憾的是、我还没有解决这个问题。   

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

    尊敬的 Levi:

    对于延迟、我们深表歉意。  

    只是为了确认您只是使用开箱即用的外设、在这方面没有任何修改? 或者也可以定制它?

    我曾尝试为中央设备和外设使用 CC2340运行该文件。 闪烁后、我可以看到中央设备一直在扫描、但当我尝试连接到设备时、扫描列表中始终没有设备。 如何连接外围设备?  

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

    嗨、伊凡、

    我目前根据我从 Adv 数据包中的制造商数据解析出的信息来过滤器件。 为了连接至另外一个通用器件、您将需要移除这个滤波。

    谢谢  

    Levi

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

    谢谢 Levi。

    您是否有可以使用的蓝牙监听器,并查看 第一次调用 GATT_ExchangeMTU ()后第二次获得成功时会发生什么情况?  

    此致

    Ivan