BLE ATT和GATT小结

1、ATT(Attribute Protocol)协议

ATT协议允许服务器设备将一组属性及其相关值暴露给对等的客户端设备。服务器公开的属性可以被客户端发现,读取和写入,并且可以由服务器指示和通知。
ATT协议定义了两种角色:服务器角色和客户端角色。

1.1 属性

属性(Attribute) 类似于C语言中的数据结构,其定义了一组属性的信息,并将这些属性信息暴露给对等的客户端,供客户端对服务器端暴露的属性进行访问。
属性由四个部分组成:属性句柄(Attribute Handle)、属性类型(Attribute Type)、属性值(Attribute Value) 和 属性权限(Attribute Permissions) 。其逻辑结构如下所示:
BLE ATT和GATT小结_第1张图片

1.1.1 属性句柄

属性句柄是对某一特定属性的索引;是一个16 bits的值,取值范围是:0x0001~0xFFFF;
通过增加属性句柄值来排序属性;

1.1.2 属性类型

属性类型由UUID定义,每一个UUID标识属性代表的内容分;是描述属性值的UUID;

1.1.3 属性值

属性值是由属性类型描述并由属性句柄索引的数据;其长度是可变的;当长度过大时,可以使用多个PDUs来发送;

1.1.4 属性权限:

属性权限是访问权限,加密权限,认证权限和授权权限的组合。
由GATT profile、更高层profile确定;
由服务器用来确定是否允许对给定属性进行读或写访问;
访问权限:
Readable/Writeable/Readable and writable(可读/可写/可读写)
加密权限:
Encryption required/No encryption required(需加密/不需加密)
认证权限:
Authentication Required/No Authentication Required(需验证/无需验证)
授权权限:
Authorization Required/No Authorization Required(需授权/无需授权)

1.2 ATT PDU

Attribute PDU的格式如下所示:
BLE ATT和GATT小结_第2张图片

参数说明:

Opcode:
bit 0-5:操作属性的方法
bit 6:Command 标识位
bit 7:Authentication Signature标识位
Attribute Parameters:
如果Attribute Opcode中身份验证签名标记位为0,则X = 1;
如果Attribute Opcode中身份验证签名标记位为1,则X = 13;
Authentication Signature:
属性操作码和属性参数的可选身份验证签名

2 GATT

GATT(通用属性配置)使用ATT协议定义了服务框架。该框架定义服务的程序和格式以及其特征(characteristics),定义的程序包括发现,读取,写入,通知和指示特性,以及配置特性的广播。
GATT配置文件旨在供应用程序或其他配置文件使用,以便客户端可以与服务器进行通信。服务器包含许多属性,GATT配置文件定义了如何使用属性协议来发现,读取,写入和获取这些属性的指示,以及配置属性的广播。
Client:向服务器发起initiates commands and requests,可以接收来自服务器的响应、indications and notifications。
Server:接收来自客户端的commands and requests并发送responses, indications and notifications给客户端。
GATT Profile使用ATT在设备之间以命令,请求,响应,指示,通知和确认的形式传输数据。这些数据包含在ATT 的PDU中。

小结

ATT协议定义了一组属性,并将这些属性暴露出来给客户端,而GATT更像是基于这些属性,构建一种服务端与客户端之间通信的协定,让双方基于这种协定能够正常的通信。

你可能感兴趣的:(BLE)