ATT(Attribute) protocol为所有基于LE link的应用提供了一个底层的框架。它定义了server与client,定义了属性以及client如何获取server端的一系列属性。Generic Attribute Profile作为一个通用的基于ATT的profile,为上层应用提供了一个基本的服务框架(service framework),使得所有基于LE的应用都可以将自身的功能映射到这个框架中来。
相比ATT protocol,GATT Profile定义了以下更为具体的概念:
- 一组通用的Attribute Type,如Primary Service、Characteristic;
- 以上通用Attribute Type的Attribute Value的格式,不是所有的Attribute Value都只有一个UUID;
- 如何使用ATT PDU对这组通用的Attribute进行读写、查询、配置;
- 上层应用要如何基于GATT定义自己的Service
Attribute Type
GATT定义了以下通用的Attribute Type:
Attribute Type | UUID | Description |
---|---|---|
《Primary Service》 | 0x2800 | 基础服务,通常包含《Include》以及《Characteristic》 来描述它的具体特性 |
《Secondary Service》 | 0x2801 | 二级服务 |
《Include》 | 0x2802 | 通常被包含在另一个Primary Service中,表示当前Service 用到了这个《Include》service。它的Attribute Value包含了 《Include》service的Attribute Handle、End Group Handle。 如果这个《Include》Service的UUID是BT SIG定义的 16bit UUID,则还包含这个UUID值 |
《Characteristic》 | 0x2803 | 服务的特性,包含Property和Value,以及零或多个Descriptor (下面都是Descriptor)。所有的Descriptor都是用来 描述《Characteristic》的。 |
《Characteristic Extended Properties》 | 0x2900 |