工具/软件:
尊敬的 TI 论坛:
我已经开发了一个配置文件为"自行车速度和节奏". 作为一个标准配置文件、它有四个服务、每个服务都有一个特征。
最后一个特征的属性是"指明",我遇到了问题,点击"指示"按钮后,我在 NRF 连接应用程序的日志部分中收到了一个错误:GATT no resources"。
但偶尔,它是正常工作。
请让我来看看背后的原因以及解决方法。
此致
Vaibhav
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.
工具/软件:
尊敬的 TI 论坛:
我已经开发了一个配置文件为"自行车速度和节奏". 作为一个标准配置文件、它有四个服务、每个服务都有一个特征。
最后一个特征的属性是"指明",我遇到了问题,点击"指示"按钮后,我在 NRF 连接应用程序的日志部分中收到了一个错误:GATT no resources"。
但偶尔,它是正常工作。
请让我来看看背后的原因以及解决方法。
此致
Vaibhav
您好、Maxence、
该问题似乎来自 Set_Parameter 函数。 我正在尝试实现一个自定义配置文件、该配置文件具有多个具有 notify 属性的属性、现在、问题是、无论启用此函数的任何属性通知都接收到相同的参数。 理想情况下、它接收唯一的 to 属性参数。
您能告诉我、这里缺少了什么吗? 我想在"通知"按钮打开时为每个属性指定唯一的参数。
此致
Vaibhav
您好、
我注意到在 app_simple_gatt.c 文件的函数 SimpleGatt_notifyChar4中使用特性4调用 SimpleGattprofile_getParameter。
当写入特性3或启用特性4的通知时、SimpleGatt_changeCB 会调用此函数。
您的问题解决方案可能是修改 app_simple_gatt.c 中的代码、以执行您期望的 GATT 服务执行的操作。 如果您需要 有关如何执行此操作的资源、我邀请您阅读有关 GATT 服务的用户指南。
此致、
Maxence
您好、
阅读用户指南将帮助您了解 GATT 的工作原理:
https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_40_00_61/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gatt-cc23xx.html
如果已经创建了这3个具有其特性的服务、则每当您想要发送通知时、都可以调用 SimpleGattProfile_SetParameter (SIMPLEGATTPROFILE_CHAR4、sizeof (uint8_t)、&value);其中 value 是您要在通知中发送的值、而 SIMPLEGATTPROFILE_CHAR4是通知类型或指明通知的特性。
你到底是什么意思流?
此致、
Maxence
您好、
中央设备(nrf connect)打开通知时出现问题。 无论任何服务如何、set 参数都将以"param"作为4进行调用。 知道原因吗?
我希望每项服务都有独特的"参数"。 我不了解如何对其进行配置。
手动 调用 set_paramter 并传递相应的"param"中央设备会收到通知、我知道这一点、此部件工作正常。
仔细检查一下、我会再次查看 GATT 文档。
此致
Vaibhav
您好!
如前所述、set parameter 函数由 SimpleGatt_notifyChar4函数调用、 在写入特性3或启用特性4通知时、SimpleGatt_changeCB 会调用该函数。 您可以删除对 SimpleGatt_changeCB 中 SimpleGatt_notifyChar4的调用、也可以删除 SimpleGatt_notifyChar4中的 set_parameter 函数调用。
此致、
Maxence
您好、Maxence、
感谢您的支持。 我发现这是在 writeCB 我搞砸了。 基本上、当我们启用或禁用通知/指示我们正在 CCCD 上进行写入操作时、它会发出 writeCB 函数信号。 由于 CCCD 是 SIG 注册的 UUID、所有服务的 CCCD 都具有相同的 UUID 值、因此当我启用任何服务的通知时、它将转至相同的语句(使用 switch case)。
所以,我发现的解决方案是,对于每项服务,我们需要单独的读/写 CBS。 但如果服务包含超过1个带有 Notify 的属性、则这有限制、我们再次无法使用 writeCB 进行区分。
此致
Vaibhav。