1、背景
接触了,就必须留下点痕迹。
1.1 参考资料
Bluetooth ATT介绍 https://www.cnblogs.com/hzl6255/p/4141505.html
ble v4.2
2、啥是ATT
ATT Protocol,是用于发现、读、写peer对端设备的协议(针对BLE设备)。
ATT允许设备作为服务端提供拥有关联值的属性集,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端.即属性值可被客户端来发现、读、写,或由服务端主动通知客户端这些属性集。
2.1 ATT中的角色
属性协议中包括服务端(Server)和客户端(Client)两个角色。
2.2 一个Attribute所拥有的Properties特性
Attribute是拥有以下三个特性的分立值
-Attribute Handle :用来访问Attribute Value /句柄
-Attribute Type :由UUID(Universally Unique IDentifier)来定义
-A set of Permissions :控制是否该Attribute可读、可写、属性值能否通过加密链路发送
客户端可以向服务器端发送属性协议(ATT Protocol)请求,服务器应响应它收到的所有请求。设备可以同时实现客户端和服务器角色,并且这两个角色可以在同一设备和相同设备之间。
对于每个蓝牙设备只有一个服务器Server实例。这就意味着对于所支持的设备来首属性句柄都是相同的。对于给定的客户端,服务端都有一组属性。 服务端可支持多个客户端。
3、具体内容
3.1 基本概念
3.1.1 Attribute Type 属性类型
用UUID来标识每个Attribute Type。UUID在所有空间和时间上都是唯一的。UUID是一个128bits值,在使用过程中,为了提高效率,使用的是16bits Attribute UUID.
16bitsUUID和128bitsUUID之间的关系
128-bit UUID = 16-bit Attribute UUID*2^96 + Bluetooth_Base_UUID
Bluetooth_Base_UUID = 00000000-0000-1000-8000-00805F9B34FB
====>0000xxxx-0000-1000-8000-00805F9B34FB(xxxx代表十六进制的16-bit UUID)。
3.1.2 Attribute handle 属性句柄
Attribute handle是由Server分配的一个唯一且非零16bit值
0x0000 :保留
0xFFFF :最大Attribute Handle
3.1.3 Attribute Value 属性值
Attribute Value是一个8位数组,可以使固定长度的,也可以使可变长度的。因此,它可以使一个1字节位的值,或者是一个4字节位的整数,或者一个变长度字节的字符串。属性值数组太大而无法再单个PDU中传输,可使用多个PUD发送。
3.1.4 Attribute Permissions 属性权限
属性都有一组与之相关联的Permission Values。属性权限由高层协议定义,并对ATT不可见。
Attribute Permissions由下列三个权限组合而成
1、Access permission :访问权限
-Readbale/Writeable/Readbale and Writeable
2、Authentication permisssions :认证许可
Authentication Required / No Authentication Required
3、Authorization Permisssons :授权许可
Authorization Required / No Authorization Required
3.1.5 Control-Point Attribute
对于那些不可读,但可写、可通知或指示的属性,都可称之为控制点属性(control-point attribute)。高层协议可使用该属性来使能设备特定过程,比如设备上一个给定过程的命令或指示已经完成。