低功耗蓝牙学习笔记-GATT

声明:如果是ble初学者,看到这么多层协议可能感到头晕,已经记不清各层之间是如何衔接的。其实在主机端开发者能接触到的只有HCI层、L2CAP层、属性协议层(ATT)。GATT不属于协议,它是很据ATT层实现的访问规范。每次想到这就忍不住高歌一曲《洋葱》:你就这样一层一层的剥开我的心~,最后真正的数据就剩那么点!

在上一章节我们了解了属性的概念。在实际的应用中,有这么一个数据库,它是由很多条属性组成。这个数据库是一个独立的profile,一个profile可以由至少一个或多个Server 组成。而 一个Server 的由0 或多个引用服务《Include》和至少一个特性《Characteristic》 组成。如下图:

低功耗蓝牙学习笔记-GATT_第1张图片

一个特性包括

特性声明

特性值声明

特性描述符

知道你们又开始晕了!来来来~大家跟我一起动动手。

推荐一个BLE的APP工具,它简直就是学习BLE的利器。让我们来使用手机配置一个带电池服务的BLE服务器。

nRF Connect走起~

服务定义的开始为服务声明,结束于下一个服务声明或者句柄达到 0xFFFF。所有的包含定义将紧跟服务声明并在特性定义之前, 所有的特定定义将紧跟在最后一个包含定义,当没有包含定义时,特性定义紧跟在服务声明之后。

 

属性类型分组 

 

在 GATT Profile 中将属性类型分为 3 组:
首要服务Primary Service
次要服务 Secondary Service
特性Characteristic
一个组开始于一个声明, 服务分组结束于下一个服务声明  
特性分组结束于下一个特性的声明或者是下一个服务的声明 
 也就是服务声明对服务进行分组,特性声明对特性进行分组。服务是一种或多种特性的组合;特性则是由一种或多种属性组成。
 
 
特性Characteristic
特性包含 3 个基本的要素:
特性声明

声明的属性的值的声明
特性描述符 

 

表 3-9 是截取的表 3-5 中心率计的第一个特性分组 ,它刚好是一个最小的特性。
低功耗蓝牙学习笔记-GATT_第2张图片

 

GATT规程

对于 GATT 规程定义了如何用 ATT 协议发现和使用服务、特性与描述符的标准方法。

GATT 规程有 3 中基本规程:发现规程、客户端发起规程和服务器发起规程

 

发现服务和特性
有 3 种方法发现服务:发现所有首要服务、按服务 UUID 发现首要服务、查找包含服务。
在服务发现以后,便可以发现每个服务的特性。要取得完整的特性,需要发现特性和特性描述符
 

ATT 协议与 GATT 映射表
低功耗蓝牙学习笔记-GATT_第3张图片

 

你可能感兴趣的:(蓝牙ble学习笔记)