当前位置:网站首页>蓝牙5.2新特性 - Enhance ATT
蓝牙5.2新特性 - Enhance ATT
2022-08-08 06:29:00 【物联网布道者】
蓝牙5.2新特性 Enhance ATT
什么是Enhance ATT
Enhance ATT是蓝牙5.2引入的一种新特性,是对ATT和L2CAP上做了改进,一方面使得多个应用的ATT可以并发进行处理,而不用各个应用分时处理,另一方面Enhance ATT可以使用一个数据包来传输多个服务特征数据的一个机制。
Enhance ATT简介
了解Enhance ATT之前先回顾一下BLE的ATT,BLE两个设备连接之后,GATT的client端如何知道server端支持了哪些profile、服务,这个就需要ATT, ATT层提供了标准机制、协议、帧格式,用来发现读、读取、写入对端设备的属性,ATT有client 和serve两个角色。
在ATT的下层是L2CAP,位于hci的上层,L2CAP提供了多路通道的复用,ATT层、SM层的数据都需要经过L2CAP层,L2CAP层通过标志位来区分不同的协议层的数据包。L2CAP负责对数据进行分包和重组,同时还有重传、流控、错误检查等。
Enhance ATT的使用
Enhance ATT主要是对ATT和L2CAP上做了改进,在L2CAP上加入了新的流控模式,在该模式上建立ATT就称之为 Enhance ATT,也称为EATT。EATT 不仅可以用在BLE上,而且还可以使用在经典蓝牙BR/EDR上。
- L2CAP上的改进
使用L2CAP_CREDIT_BASED_CONNECTION_REQ 命令,在两个设备之间创建并配置L2CAP Channel,Enhance ATT模式可以使两个设备之间建立最多5个L2CAP通道,并且是动态的,这样可以为上层ATT带来更多的灵活性,可以同时支持5个上层通道,一些并发执行的应用就可以使用EATT来进行传输。
例如,这在可能有多个应用程序与低功耗蓝牙设备接口的智能手机上非常有用。通过利用EATT,在进行另一个应用程序的ATT事务时,一个应用程序的属性事务不会被阻止,从而实质上允许不同的应用程序与Bluetooth Low Energy设备并行交互,并有可能减少延迟。
Enhance ATT承载的ATT_MTU应设置为两个设备的最低MTU字段值;这些值来自L2CAP_CREDIT_BASED_CONNECTION_REQ和L2CAP_CREDIT_BASED_CONNECTION_RSP信令数据包或最新的L2CAP_CREDIT_BASED_RECONFIGURE_REQ数据包。
ATT上的改进
ATT上主要是支持元组的ATT数据的读取和通知
master端可以通过ATT_READ_MULTIPLE_VARIABLE_REQ命令来读取多个handle的特征值,设备端可以使用一包数据将所有handle的数据全部返回给master。
slaver端同样也可以通过ATT_MULTIPLE_HANDLE_VALUE_NTF命令来通知master端,将多个handle的数据一次性发送给master端。例如一个温湿度传感器可以一次性将温度、湿度、电量、设备信息等多个handle的特征值发送给手机端,而不是每个特征逐个发送。 手机端也可以一次性读取多个温度、湿度、电量、设备信息多个特征值,而不用逐条读取。
Enhance ATT的优势
EATT 的主要优势是可以支持并发的事件操作,允许来自不同应用程序与ATT 相关的数据封包进行逻辑链路控制和适配协议(L2CAP) 数据封包交错放置,并允许在连接过程中改变ATT 最大传输单元(MTU) 的大小。若一个装置上同时有多个应用程序使用低功耗蓝牙堆栈,它们或会暂时互相阻挡,而EATT 这些改进可以减少这些情况,从而减少一个或多个应用程序的点对点延迟,并且改善响应性能,提供更好的用户体验。与原始ATT 相比,增强版的EATT 具有安全性的优势,因为它只能用于加密连接。
减少重复的帧开销,减少频带的占用,在需要多个特征值读取和发送的时候,对功耗有一定的优化。
边栏推荐
猜你喜欢
The addition, deletion and modification of the leading doubly circular linked list
Task 06 其它优秀的小工具
HCIA---OSPF实验
动手学高等数学
论文解读:iDRNA-ITF:基于诱导和转移框架识别蛋白质中的DNA和RNA结合残基
论文翻译:《6mAPred-MSFF:基于多尺度特征融合机制预测跨物种DNA N6-甲基腺嘌呤位点的深度学习模型》
minikube addons enable ingress 启动错误
Math工具类的ceil()、floor()、round()方法源码阅读
易语言设置多个热键
JVM类加载的过程
随机推荐
Math工具类的ceil()、floor()、round()方法源码阅读
【Android安全】ActivityManager.isUserAMonkey API
golang 服务诡异499、504网络故障排查
NVIDIA CUDA Highly Parallel Processor Programming (6): Parallel Mode: Convolution
Properties文件的读取与保存
tcpdump进行ARP抓包
易语言设置多个热键
HCIA --- VLAN实验报告
使用websocket实现服务端主动发送消息到客户端
自定义类加载器
Zip文件的解析与生成
Unity_滑动面板(滚动面板) + UI动画
kubeadm init cannot find network namespace 错误
用栈模拟队列
Day38------网络相关
模块及模块导入
论文翻译:《DeepTorrent:一种基于深度学习的方法,用于预测DNA N4-甲基环肽位点》
Deep-4mCGP:一种使用基于相关性的特征选择技术预测pickeringii地杆菌中4mC位点的深度学习方法
seata内部是使用redisson的分布式锁来实现的吗?
[Unity] C#使用委托事件与字典实现unity消息中心(观察者模式)