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:GATT_WriteCharValue -未知 HCI 命令

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

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/606041/cc2541-gatt_writecharvalue---unknown-hci-command

器件型号:CC2541

您好!

我当前正在从通过 UART 连接 CC2541的外部 MCU 写入命令。 我正在发送 HCI 命令'GATT_WriteCharValue'、但我在外部 MCU 上接收到未知 HCI 命令(0x01)错误代码。

我的 CC2541正在运行 simplePeripheral 项目以及 BLE_Brdg 项目中的定制 GATT 配置文件。 我将专门写入第一个自定义特征0xFFF1。

我尝试使用 BTool 对此进行仿真、当我发送完全相同的十六进制数据时、它会告诉我相同的错误代码0x01和"给定的属性句柄在此服务器上无效"。

我是否发送了正确的十六进制值? 我怀疑自己不正确地编写了手柄和属性句柄。 以下是我为 GATT_WriteCharValue 函数发送的十六进制值:

0x01 // 命令
0x92 //操作码
0xFD //操作码
0x05 //数据长度
0xFE //连接句柄
0xFF //连接句柄
0xF1 //属性句柄
0xFF //属性句柄
0xB1 //要写入的值

我假定 connhandle 为0xFFFE、就像 BTool 中的默认值一样。

谢谢、

阿尔  

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

    ConnHandle 0xFFFE 是环回句柄、而不是活动连接。 1)从 BTool 转储 GATT 表、2)作为附件提供 BTool 日志吗?

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

    您好、JXS、

    感谢您的回复! 实际上、我继续使用 BTool 中的"Discover UUID"命令来获取属性界面。 我意识到 connHandle 应该为0、并且属性句柄也显示在 BTool 中。

    然后、我从我的 MCU (服务器)向 Simple Profile Char 1写入了一个值、但该值不起作用、因为在 Simple Profile Char 1上单击"Read"命令没有为我提供所需的值。 (我仔细检查了我在中写入 hexcode 命令的顺序、它与 BTool 日志中的命令相同)。

    在我的 MCU 调试器中、我记录了发送写入命令(即发送0xA1)后您将接收到的 RX 十六进制数据、似乎我没有获得与 BTool 中相同的输出。 我看到'GAP_HCI_ExtentionCommandStatus'正确、但我没有看到'ATT_WriteRsp'。 相反、我会得到以下代码:

    04 ff 0A 01 05 00 04 12 00 01

    我尝试查找 ATT 错误代码、但其中没有一个与我在 BLE HCI 文档中看到的代码匹配。 我得到的最接近的是 ATT_ErrorRsp。

    您对此问题有什么见解或解决方案吗?  

    谢谢、

    阿尔

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

    我在上一个帖子中看到的问题似乎是由于我尝试从 MCU 访问 GATT 服务器时出现错误代码"The Attribute handle was not valid on this server (给定的属性句柄在此服务器上无效)"。
    我在 BTool 中发送的代码与从 MCU 中发送的代码完全相同。 由于我的 BTool 是客户端、而我的 MCU 是服务器、因此每个套件是否都具有特定的权限? 是否有阻止我的 MCU 从我的 MCU 读取和写入特性的东西?

    谢谢、
    阿尔