GATT协议
GATT generic Attributes的缩写,中文是通用属性,是低功耗蓝牙设备之间进行通信的协议。
GATT定义了一种多层的数据结构,已连接的低功耗蓝牙设备用它来进行通信。
GATT基于ATT。see Bluetooth Core System Architecture for block diagram and explanations)
GATT定义的多层数据结构简要概括起来就是服务(service)可以包含多个特征(characteristic),每个特征包含属性(properties)和值(value),还可以包含多个描述(descriptor)。它形象的结构如下图:
服务,是由有关该服务的多个特质,以及该服务和其他服务的关系组成。特征,由特征的名字(这是通俗说法,实际上使用UUID来唯一标识每个特征的),特征的值,特征的属性(用来表明该特征可接受的操作,和用来声明与安全相关的权限),以及可选的一个或多个的描述器(与特征相关的metadata或configuration flags)组成。
而图中的profile是什么呢。profile不属于实际用于通信的数据结构的组成部分,在这里它是一组服务的集合,这些服务被人为地组合起来并定义成一个特定的使用场景,用来声明一个低功耗蓝牙设备可以做的事情。两个设备要达到兼容要求两者支持同一种使用场景(profile)。
ps:很多地方都会出现GATT Profile这个词,或者Bluetooth profiles,有人翻译成通用属性描述文件(后者是蓝牙描述文件),不管怎么样指的就是蓝牙设备的使用场景,它除了包含多个服务以外,也许还会给出一些针对该场景下的用户交互设计的建议等等。对于其他协议和设备,看到profile这个词,通常表明接下来要讲的是关于该设备的用途和数据格式。
GATT除了定义了这种服务-特征型的数据