TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2642R: 蓝牙申请ATT内存API GATT_bm_alloc

Part Number:CC2642R

我们作为服务器端 在Send an ATT Notification/Indication前调用申请内存接口 void *GATT_bm_alloc(uint16 connHandle, uint8 opcode, uint16 size, uint16 *pSizeAlloc)时

1).当申请的 size 设成GATT_MAX_MTU(0xFFFF)时,申请到的内存都是20字节? 不管我们syscfg中设置的MAX_PDU_SIZE是多少,且客户端发起MTU请求也是超过23字节,但最终申请到的内存都是20字节。
2).此接口分配到的内存不受MAX_PDU_SIZE限制吗? 当size设成100/200/500时,syscfg中设置的MAX_PDU_SIZE 设成69,最终可以申请到对应的内存100/200/500。

Katherine Wang:

感谢您对TI产品的关注!已为您咨询TI资深工程师,一旦得到回复会立即回复给您。

,

Katherine Wang:

1- 对GATT_bm_alloc进行配置,为分配由参数大小指定的字节数,加上一个标头(其实际大小取决于操作码)。通过传递一个不连贯的值(0xFFFF 字节对应于 63 kBytes!),计算会溢出并且您会得到一个错误的值。需要明确的是,即使没有这个计算溢出,系统也无法从堆中分配 63 kB,并且总是会返回错误。分配的大小应根据需要选择,而不是默认为最大值。

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

希望对您有所帮助。

赞(0)
未经允许不得转载:TI中文支持网 » CC2642R: 蓝牙申请ATT内存API GATT_bm_alloc
分享到: 更多 (0)