Bluetooth技术学习笔记 ——GATT

GATT:GENERIC ATTRIBUTE PROFILE,通用属性协议
Service:服务
Characteristic:特征值
参考:Core_v5.0 vol 3 Part G
1. GATT概述

GATT基于属性协议,定义了一个以服务、特征为主要元素的服务框架,并定义了一套运行在服务框架上的服务过程,包括服务、特征以及特征描述的发现、读取、写入、通知、指示等。

(1)GATT依赖
Bluetooth技术学习笔记 ——GATT_第1张图片
(2)协议栈
Bluetooth技术学习笔记 ——GATT_第2张图片
(3)角色

  • Server:服务器,接受来自客户端的命令请求,向客户端发送响应指示通知
  • Client:客户端,向服务器发起命令请求,接收来自服务器的响应指示通知
  • 简而言之,提供数据的设备为GATT服务器,访问GATT服务器获得数据的设备为GATT客户端。一个设备,既可以是GATT服务器,也可以是GATT客户端。

(4)GATT协议层次

  • 层次图
    Bluetooth技术学习笔记 ——GATT_第3张图片
    ◇◇ 顶层是一个基于GATT的profile,由满足某个使用场景的一个或多个服务构成。
    ◇◇ 服务由零个或多个特征或对其它服务的引用(include)构成。
    ◇◇ 特征包含一个value,还可能包含其它关于这个值的可选信息。

  • 特征:是一种或多种属性的集合。特性是服务中使用的属性值属性配置信息描述符信息的封装。

(5)ATT协议

  • GATT服务器通过属性表的表格组织数据,这些数据表示真正传输的数据。GATT利用ATT协议来传输协议。

  • ATT PDU:
    Bluetooth技术学习笔记 ——GATT_第4张图片
    ◇◇ Opcode:表示命令、请求、响应、指示、通知、确认、鉴权flag的opcode.
    ◇◇ Attribute Parameters :表示命令、请求、响应、指示、通知的值。
    ◇◇ Authentication Signature :可选

  • ATT由4部分组成:
    Bluetooth技术学习笔记 ——GATT_第5张图片
    ◇◇ Attribute Handle: 属性句柄,表示属性在GATT表里的索引,在一个设备中每一个属性的句柄都是唯一的。
    ◇◇ Attribute Type:UUID,表示属性表中数据类型的信息,它是理解属性表中的值的每一个字节的意义的关键信息。在一个GATT表中可能有许多属性,这些属性能可能有相同的UUID。
    ◇◇ Attribute Value:数据。
    ◇◇ Attribute Permissions:表示可读、可写权限,由服务器决定。

  • Attribute Caching:用于缓存服务器属性信息,如属性句柄。
    ◇◇ 若服务器不支持服务属性句柄的变更(Service Changed characteristic ),如删除,增加、修改,可客户端只需要在第一次连接的时候执行discover 属性信息过程。
    ◇◇ 若服务器支持服务属性句柄的变更(Service Changed characteristic ),如删除,增加、修改,则一旦发生变更,当客户端重新连接时,服务器需要给客户端发送指示,告诉客户端属性信息发生了变更。

  • Attribute Grouping:GATT协议定义了3中属性类型的属性分组:Primary ServiceSecondary ServiceCharacteristic

 

2. 服务定义

服务定义:服务由服务定义来表征。一个服务定义包括:服务声明、引用定义和特征定义。引用定义和特征定义是可选的。

(1)服务声明

  • 服务声明是服务定义的一部分,通过服务声明可以对服务进行分类。服务声明以属性为容器,包含属性句柄属性类型属性值属性权限
  • 格式
    Bluetooth技术学习笔记 ——GATT_第6张图片
    ◇◇ 服务类型为主要服务次要服务。主要服务表示设备基本功能,次要服务表示设备额外提供的功能。

(2)引用定义:当引用其它服务时,需要用到引用定义。其格式:
Bluetooth技术学习笔记 ——GATT_第7张图片

(3)特征定义:特征定义含特征声明特征值声明和特征描述符声明。每个声明都是以属性格式存在的。

  • 特征声明:
    Bluetooth技术学习笔记 ——GATT_第8张图片
  • 特征值声明:
    Bluetooth技术学习笔记 ——GATT_第9张图片
  • 特征描述符声明:
     
3. GATT功能

GATT定义了一系列服务操作程序,用来发现服务、特征以及服务之间的关系,用来读取和写入特征值。这些服务操作被抽象为11种功能。

(1)GATT功能及其子过程:
Bluetooth技术学习笔记 ——GATT_第10张图片
(2)配置服务器:交换MTU
Bluetooth技术学习笔记 ——GATT_第11张图片
(3)发现主服务:该过程用于发现服务器的主服务。一旦发现主服务,可以通过特征发现、关系发现等过程,获取主服务的辅助信息。

  • 发现所有主服务
    Bluetooth技术学习笔记 ——GATT_第12张图片
  • 通过UUID发现主服务
    Bluetooth技术学习笔记 ——GATT_第13张图片

(4)发现引用服务

Bluetooth技术学习笔记 ——GATT_第14张图片
(5)发现特征:该过程用于发现服务器的服务特征。一旦发现特征,可以通过其它过程获得辅助信息。

  • 发现所有特征 & 通过UUID发现特征
    Bluetooth技术学习笔记 ——GATT_第15张图片

(6)发现特征描述符
Bluetooth技术学习笔记 ——GATT_第16张图片

(7)读特征值
Bluetooth技术学习笔记 ——GATT_第17张图片

(8)写特征值

  • Write Without Response
    Bluetooth技术学习笔记 ——GATT_第18张图片
  • Signed Write Without Response
    Bluetooth技术学习笔记 ——GATT_第19张图片
  • Write Characteristic Value
    Bluetooth技术学习笔记 ——GATT_第20张图片
  • Write Long Characteristic Values
    Bluetooth技术学习笔记 ——GATT_第21张图片

(9)特征值通知
Bluetooth技术学习笔记 ——GATT_第22张图片

(10)特征值指示
Bluetooth技术学习笔记 ——GATT_第23张图片

(11)读特征描述符
Bluetooth技术学习笔记 ——GATT_第24张图片

(12)写特征描述符
Bluetooth技术学习笔记 ——GATT_第25张图片

你可能感兴趣的:(Bluetooth)