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.

[参考译文] CC2745R10-Q1:需要支持动态 BLE 特性通知长度

Guru**** 2773115 points

Other Parts Discussed in Thread: CC2745R10-Q1

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1590140/cc2745r10-q1-need-support-for-dynamic-ble-characteristic-notification-length

器件型号: CC2745R10-Q1

您好团队:

我正在使用处理一个 BLE 应用 [CC2745R10-Q1]
我有一个最大长度定义为的特性 400 字节 变量的值。

但是、在我的应用中需要发送 可变长度通知数据 、例如:

  • 有时为 20 字节

  • 有时 40 字节

  • 有时 160 字节

  • (不超过定义的最大值的任何长度)

目前、通知始终会发送分配的完整长度、并包含不需要的长度 0x00 填充 标记为剩余字节。 我想发送 仅计算实际数据长度 无填充。

您能指导我如何配置特性或 GATT 服务器、以便发送通知 动态长度 数据大小推导出来的吗?

谢谢您、

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

    你好 Parish、

    我正在调查您的问题。 由于我们在感恩节假期、预计会延迟回复。 谢谢你。

    此致、

    Eshaan

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

    你好 Parish、

    GATT 表在启动时初始化、因此您在设置长度后无法动态修改长度。 应用程序有责任忽略填充的位。  

    SOL 虽然您不能动态修改长度,但您可以将 发送的填充位数最小化。 如果您查看该变量  ATT_MTU、  这会告诉您在单条通知中发送了多少字节。 因此、如果您的特性长于 ATT_MTU、它将在中发送  多个数据包、其中仅填充最后一个数据包(数据包中有一些额外的标头,因此您永远不会一次发送完整的 AT_MTU 字节)。  

    因此、如果减少该变量、就可以减少最后一个数据包中填充的位数、但最终会发送更多的数据包。 请问您为什么不需要填充的位? 通常、您可以忽略应用程序中的、只需处理所需的数据。

    Eshaan

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

    谢谢、Eshaan Tibrewala  

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

    你好 Parish、

    由于问题似乎已解决、因此我会将该问题设置为已解决。 谢谢。

    Eshaan

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

    您好、Eshaan、

    感谢您的解释—尽管经过一些挖掘后、事实证明这种情况并不 像最初听起来那样被锁定。  

    虽然 GATT 表长度确实无法动态更改、但堆栈 确实允许 使用任何运行时长度发送通知、只要我们绕过静态属性缓冲区并使用分配自己的属性缓冲区即可 GATT_bm_alloc()

    因此、我们不会被填充的属性大小卡住、只需执行以下操作:

    • 使用固定属性值缓冲区跳过

    • 使用分配准确的通知大小 GATT_bm_alloc()

    • 仅填充实字节

    • 发送方式 GATT_Notification()

    • 零填充问题已解决 Heavy check mark

    是的、它可以在 CC2745R10-Q1 上可靠运行。

    因此、从技术上讲、栈确实允许动态通知长度;您只需根据静态特性缓冲区来避免这种情况。 不强制进行填充—这只是默认 GATT 表使用的副作用。

    只是想分享工作解决方案、以防其他人遇到相同的限制。  

    谢谢、
    教区