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.

[参考译文] CC2541:从外部 MCU 写入 GATT 服务器

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/606671/cc2541-writing-to-gatt-server-from-external-mcu

器件型号:CC2541

您好!

是否可以从通过 UART 连接的外部 MCU 更新 GATT 服务器上的(即读取、写入)属性值? CC2541位于 HostTestRelease 上、其中添加了自定义配置文件。

我可以从客户端(Android 手机)更新属性值。 我已经仔细检查了我正在发送的 HCI 命令、如 GATT_WriteCharValue 或甚至 GATT_DiscAllCharDescs、是否正确发送、但我始终使用"给定的属性句柄在此服务器上无效"获取"ATT_ErrorRsp"。 我使用 BTool 作为我的中央设备来检查正确的句柄。

外部 MCU 是否无法通过 UART 更新 GATT 服务器?

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

    您使用了什么连接句柄? 0xFFFE 的连接句柄被视为环回连接。 发送到此连接的所有消息都将循环备份到本地主机。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直使用0x0000作为连接句柄、因为我只有一个客户端到一个服务器。 那么、您说我应该使用还是不应该使用0xFFFE?

    我注意到的另一点是:当我使用内置自定义配置文件通过 Host Test Release 进行调试时、从客户端更新属性会使用 GATTServApp_WriteAttr 函数、并使用来自 MCU 的 HCI 命令更新属性会使用 GATT_WriteCharValue、后者无法正确执行其任务。 GATT_WriteCharValue 对我的应用程序是否正常工作? 是否值得修改代码并使其调用 GATTServApp_WriteAttr 而不是 GATT_WriteCharValue?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定您的设置、但您可以模拟来自外部 MCU 的 BTool 串行通信、用于读取 GATT 特征。 GATT_DiscAllChrDesc 是否发现任何特征。 我想、当它完成所有查找时、最后一次回调将是 ATT_ErrorRsp、因为没有找到更多特征...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣。 我的设置是:将 BLE Scanner 设置为中央/客户端的 Android 手机和将外部 MCU+CC2541设置为外设/服务器的 Android 手机。 我只想从 MCU 中修改 GATT 属性表。

    是的、我已经尝试了 GATT_DiscAllChrDesc、但我得到的只是 GAP_HCI_ExtentionCommandStatus 事件和 ATT_ErrorRsp 事件、两者之间没有接收到任何特征。 因此、当您说我应该仿真来自外部 MCU 的 BTool 串行通信时、我基本上是通过从我的外部 MCU 发送完全相同的 HCI 代码来实现、正如我的 BTool 数据包日志中所示。

    参考我之前的帖子、我想知道是否应该根据您是从服务器还是客户端进行呼叫来使用不同的 HCI 命令?