概述: 本芯片BLE的发送缓存分2级,第1级缓存是Host层,这个会很大,可能达1-2K,视实际内存使用情况而定。第2级缓存是Controller层,这个缓存可以在一个Interval中支持一次性全部发送出去。 发送GATTC_NOTIFY首先会抵达Host层队列,Host的调度机制会从队列取出数据发往Controller层, 数据遵循FIFO机制的先进先出原则。 Controller完成一笔Notify数据的RF发送会以GATTC_CMP_EVT通知应用层。 Controller收到Indicate的confirm后会以GATTC_CMP_EVT通知应用层。 Host层的队列缓存大小视内存使用和通讯信号情况而变化,建议只允许缓存10笔左右在协议栈。 Controller的缓存,6621C为4笔,6621P为12笔。 Write Conmmand与Notify是一样的流控机制, Read和Write与Indicate是一样的机制。 seq_num是用于管理不同的characteristic的notify/indicate与GATTC_CMP_EVT一一对应起来,各自分别进行流控管理。所有的notify/indicate都是通过同一个GATTC_CMP_EVT事件上报,所以需要用seq_num来区别不同地方notify/indicate报的。 流控过程: 补充: 以上流控只适合6621C、6621P,但不适合6621E。 |