BLE中GATT理解

这篇总结下BLE中GATT相关内容。

在学习了刘权的《BLE4.0 低功耗蓝牙协议总结》一书后,对GATT有了一定了解,这里也对作者提供这么好的讲解表示感谢,下面截图均从书中摘取,如有侵权,请联系我删除,这里写下我的读书笔记。

首先介绍下下面几个名称

  • 属性 Attribute
    规定数据按照一定规则存放,这个规则就是属性。

  • 配置文件Profile
    这就是文件,SIG定义了一些profile,按照我理解就是否个应用场景的描述,比如心率计要有哪些服务、哪些特性、哪些描述符等

  • GATT
    是一个数据库,里面存放着各种数据

  • ATT
    属性协议,规定属性该怎么访问、运输,也就是怎么访问GATT中的数据。

上面和在一起就是GATT数据库中杂乱无章的数据根据属性按照规则排列,ATT就是规定了怎么访问传输这些数据,这些数据就是共同来反映profile这个文件描述某个场景下所有需要的数据。

下面详细说:

  • 属性
    BLE中GATT理解_第1张图片
    上图就是规定了GATT中的数据要按照上图规则来存放数据。

    1.属性句柄(Attribute Handle)
    通过他可以找到对应属性,并用于区分不同服务中的相同属性。我理解类似是数组下标。

    2.属性类型(Attribute Type)
    是对某个东西取一个数字代号(用uuid来代号),比如心率计,SIG就是用0x180D这个uuid来表示这个这条属性是和心率计有关SIG将uuid进行了范围规定,下面这些uuid都来标识属性类型

    • 0x1800~0x26FF 用于服务类 UUID
    • 0x2700~0x27FF 用于标识计量单位
    • 0x2800~0x28FF 用于区分属性类型
    • 0x2900~0x29FF 用于特性描述
    • 0x2A00~0x7FFF 用于区分特性类型

    3.属性值(Attribute Value)
    属性值是一个 0~512 字节的数据,属性值是给上层应用层使用的,是用户“真正”要使用的数据,属性值可以有一下几类

    • 服务通用唯一识别码(UUID)
    • 单位
    • 属性类型
    • 特性描述符
    • 特性类型

    4.属性许可(Attribute Permissions)
    属性许可是仅仅是对属性值的一种保护,对句柄和类型没作用。

下面这个心率属性数据库是从作者书中截图出来的,我很好说明的其中的关系
BLE中GATT理解_第2张图片
2个椭圆是服务中的特性 characteristic,2个椭圆下面是服务中的描述符,这些描述符是对特性的补充说明。可以看出截图部分有3个服务(后面还有一个)0x2800就是标识这一个服务的开始。这么多服务就组成了profile
下面这张图也是在说明这种关系
BLE中GATT理解_第3张图片

而下面这张图是把上面图丰富下
BLE中GATT理解_第4张图片

你可能感兴趣的:(蓝牙)