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.

[参考译文] CC2642R:蓝牙请求 ATT 存储器、API GATT_BM_alloc

Guru**** 2538930 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1178857/cc2642r-bluetooth-requests-att-memory-api-gatt_bm_alloc

器件型号:CC2642R

大家好、

当我们作为服务器,在‘S结束 ATT 通知/指示’之前调用应用程序内存接口‘void *GATT_BM_alloc (uint16 connHandle, uint8操作码, uint16 size,uint16 *pSizeAlloc)’:

1)。 当请求的大小设置为 GATT_MAX_MTU (0xFFFF)时、请求的存储器为20字节。  为什么会发生这种情况? 无论在我们的 syscf 中设置了 MAX_PDU_SIZE、并且客户端发起的 MTU 请求超过23字节、最终请求的存储器为20字节。
2)。 此接口分配的内存是否不受 MAX_PDU_SIZE 的限制? 当大小设置为100/200/500时、syscfg 中设置的 MAX_PDU_SIZE 为69、最后可以获得相应的存储器100/200/500。

此致、

凯瑟琳

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

    您好 Katherine、

    1- GATT_BM_alloc 配置为分配参数 size 指定的字节数以及一个标头(其实际大小取决于操作码)。 通过传递一个不相干的值(0xFFFF 字节对应于63 KB!)、计算溢出、您会得到一个错误的值。
    很明显、即使没有这个计算溢出、系统也不能从堆中分配63 KB、并且总是返回一个错误。
    应根据需要选择分配的大小、而不是默认为其最大值。

    2- PDU 大小和 ATT 数据包大小无关。 实际上、有一些机制可以拆分和重新组装不符合 MTU 的 ATT 数据包。

    我希望这将有所帮助、

    此致、