前言

上一篇《BLE基础知识(一)》聊到GAP,接下来继续来聊聊ATT, GATT等内容,这些在BLE中应用还是比较多的。

ATT

**ATT(Attribute protocol)**协议是为了允许设备读写保存在Server上的数据值。每个存储值就是一个属性。

ATT定义了属性的内容,规定了访问属性的方法和权限。平时我们的BLE设备就是通过属性进行数据收发的。

ATT定义了两种角色:ClientServer


  • Server:存储属性,接收Client的ATT请求,命令和确认。
  • Client:接收Server的应答,指示和通知。

GATT

GATT(Generic Attribute Profile) 是建立在ATT之上的。为传输数据建立通用操作和框架。

GATT也定义了两种角色: ServerClient。GATT Client也是一个ATT Client,GATT Server也是一个ATT Server,所以GATT角色不需要去专门绑定ATT角色。


  • Server:一般就是进行广播,被连接的设备。
  • Client:一般就是进行扫描,然后主动去连接的设备。

GATT还指定了GATT Server上包含的数据格式。由属性协议传输的属性被格式化为服务和特征。来看看下图:

BLE基础知识(二)_数据格式

上图定义了一些概念及它们之间的包含关系,这些概念还是很重要的,接下来我们来一一解释。

1. Service — 服务

简单理解就是提供某项服务或功能。比如心率,电池监测等都可以定义为一个服务。

系统可以有两种service:主要(primary)和次要(secondary)

primary: 提供设备的主要功能

secondary:提供设备的附加功能

2. Included services — 包含服务

类似于包含头文件,就是将其他共用的服务包含进来。

3. Characteristic — 特征

可以理解为服务中的某个特性,比如心率服务,就会有个心率值,心率值就可以定义为一个Characteristic 。

4. Properties — 属性

这里的属性和上面的Attribute不一样。这里的属性定义的是Read / Write / Notify / Indicate等,用于声明Characteristic是否可读可写等属性。

5. Value — 值

用来保存数值的。

6. Descriptor — 描述符

用于描述Characteristic,让用户更能理解该Characteristic的作用和如何使用。

通过上图,我们可以看出Service的数据结构定义。

BLE基础知识(二)_微信公众号_02