背景:
蓝牙5.2引入了EATT(enhanced Attribute Protocol),也就是ATT的增强版,具体有哪些增强,结合手机和蓝牙耳机的进行BLE AUDIO的例子来详解:
1:并发
首先看看ATT的SDU交互方式:
注意右边的红色框标识的Destination CID,全部是4,这样就会造成一个后果是,不同的服务如果要交互,一定是串行的,如果并行就会混乱。
再看看EATT的建立方式:
还是以手机和蓝牙耳机建立BLE Audio连接为例:
红色框框表示建立L2CAP CB连接,总共建立有6个EATT L2CAP连接,对应了6个LE Audio的服务,绿色框框表示在CID 5上进行。
而且每个服务连接对应的端口不一样,如上图红色框框所示,这样就可以并行操作不会造成混乱。
2:流控
EATT引入了流控机制,类似于TCP/IP的窗口滑动机制,就是接收方会给发送方一个最初的credit,比如3,意思就是接收方有3个buffer,允许发送方在接收方没有处理完之前,最多发送3个数据包,一旦接收方处理完了会通过L2CAP LE flow control更新credit,然后发送方又可以继续发送数据了。
如上图所示,红色框表示手机的credit为255(手机内存大),绿色框框表示耳机的credit为3,耳机内存小,所以credit很小。
上图绿色框表示耳机处理完数据后会通过L2CAP LE Flow control credit更新credit,红色框表示耳机现在有多少个credit,我们看到是3,就是表示手机可以继续最多发送3个数据包。
总结:
通过上述EATT的增强改进可以看到,能有效的缓解BLE AUDIO的时延,更加快速的完成服务发现和连接的建立。