第14节_BLE协议ATT层

下面这个图是BLE协议各层跟医院的各个科室的类比图:

 

跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性。这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由上层来负责。

通过ATT层可以读写对端设备的属性,但是属性之间有什么联系、各个属性怎么组合起来提供服务,由上层GATT负责。

读写对端设备的属性,就是ATT的关键词。

一、属性(Attribute)

属性结构如下:

 

属性就是一个值,

有那么多属性,这是哪一个属性?用Handle来表示;

这个属性是什么类型?是心跳、还是电量?用UUID来表示。

 UUID可以用16位、32位、128位来表示(在BLE中只使用16位或128位),有一个转换公式:

即把32位UUID的低96位去掉,就得到32位的UUID;如果32位UUID的高16位全是0,那么它的低16位就是“16位的UUID”:

UUID可以取蓝牙组织规定的值,也可以自己定义。这些规定的值可参考以下链接:

https://www.jianshu.com/p/08f76e4fd811  // 整理了所有的UUID,存为GATT_UUID.pdf

https://www.bluetooth.com/specifications/assigned-numbers/

https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/

https://www.bluetooth.com/specifications/gatt/declarations/

 

二、属性的读写

ATT层负责去获得对端设备的属性,去读写对端设备的属性,如何读取对端设备的属性呢?有下面6中操作

 

 ATT层涉及两个角色:client、server。server这边提供属性,client可以从server这边读写属性

三、ATT层的数据格式

ATT层构造好数据后,由下层的L2CAP发给对端设备。L2CAP层是收发室,它怎么知道这些数据是发给对端设备的ATT层?

对于ATT层的数据,L2CAP层会设置chinnel ID为4:

 

 

 

 

posted @ 2019-10-02 16:30  一代枭雄  阅读(1335)  评论(0编辑  收藏  举报