BLE GATT 介绍
做 BLE 快两年了,想想刚开始自己查各种资料学习的时候也是有很多感慨,记得最清楚的就是 GATT 这个东东,当时完全搞不懂,什么是服务?什么是特征值?什么是 UUID?最近感觉对这些概念又有点混乱了,所以就在整理一下,理清一下思路。有些知识点不是很准确,也有一些是自己的理解,欢迎大家帮我指出错误和不足。
GAP 和 GATT 简介
GAP(通用访问配置文件),定义了设备的四中角色,可以理解为用来建立连接
- 广播者(Broadcaster):不可连接的广告设备
- 观察者(Observer):扫描广播,但不发起建立连接
- 外设(Peripheral):可连接的设备
- 主机(Central):扫描广告设备并发起连接
ATT(属性协议)
GATT(通用属性协议配置文件),是 ATT 的配置层,就是配置 ATT 的层,定义了设备连接后的角色,可以理解为用来发送数据
- GATT 服务器:是为 GATT 客户端提供数据的设备
- GATT 客户端:是从 GATT 服务器读写、应用数据的设备
GATT Profile 结构
下面这张图就是一个典型的 Profile 结构。
配置文件是一个用例或应用程序的最终体现。配置文件描述一个或多个设备,在每个设备上有一个或多个服务的规格。
可以看到他可以包含多个 Service,大部分 Service 其实都是 BLE 本身自带的,一般都是 SDK 定义好了的,我们不需要修改和操作的,我们要用的 Service 可能一个工程里面只有一个。
举个例子:一个血压计设备,他可能只有一个我们需要操作、修改的 Service,就是读取血压数值然后发送给 APP。
再举个例子:一个带心率功能的计步器,有两个功能,一个是计步,还有一个是测量心率,那么这个设备可能就有两个 Service 需要我们操作、修改。在图中还能看到一个 Service 可能包含多个 Characteristic,这就是一个服务所包含的特征值。怎么理解特征值呢,还举那个血压计的例子吧:
上面说过血压计只有一个 Service,就是读取血压数值然后发送给 APP,但是这一个 Service 可能包含多个 Characteristic,第一个 Characteristic 是 Indicate 功能,就是 BLE 设备可以通过 Indicate 的方式发数据给 APP;第二个 Characteristic 是 Notify 功能,BLE 设备可以通过 Notify 的方式发数据给 APP;第三个 Characteristic 是读功能,是 APP 可以读到这个 Service 的一些配置参数;
也就是说一个血压计的设备有一个服务,一个服务就是一个功能,但是这个功能可能包含了好几个变量,这个 Characteristic 可以暂时理解为变量。所以说 BLE 之间的数据交换是通过 Characteristic 做到的。大家还可以看到每个 Characteristic 中都有几个 Properties、Value、Descriptor,这几个参数就是 Characteristic 的属性了,分别是特征值的声明、特征值的数值、特征值的描述,Descriptor 描述可以有多个。
服务属性表
上面的最后讲过一个 Profile 最终会有很多属性,下面的图就是属性汇总的一部分,包含了很多属性,拿这些属性是怎么区分并判断呢?下图中的每一行都是一个 Attribute(属性)。
这张图由三个部分组成,分别是 Handle、UUID(属性类型)、Value(属性值)。我们先来说 UUID,UUID 是通用唯一识别码。这里表示的是属性类型。举个例子,在 BLE 协议中定义了 0x2800 这个 UUID,它代表了一个这个属性的类型是 Service;0x2803 这个 UUID,表示这个属性的类型是一个 Characteristic。
那我们看到 UUID 有很多都重复出现了,那怎么区别他们呢?那就要靠前面的 Handle 了,这个 Handle 是不能重复的,就是一个属性在属性列表中的位置,所以可以当做地址来理解。两个属性的 UUID 可能是相同的,但是 Handle 永远不可能相同。
BLE GATT 介绍的更多相关文章
- TI低功耗蓝牙(BLE)介绍
TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用 ...
- TI低功耗蓝牙(BLE)介绍【转】
转自:http://blog.csdn.net/ooakk/article/details/7302425 TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth L ...
- 蓝牙BLE: GATT Profile 简介(GATT 与 GAP)
一. 引言 现在低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上.GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很 ...
- Bluetooth GATT介绍
目录 1. 介绍 2 内容 2.1 Configured Broadcast 2.2 GATT Profile Hierarchy 3 Service Interoperability Require ...
- BLE GATT规范中关于UUID与属性的详细解析
1. 角色 除了GAP定义了角色之外,BLE还定义了另外2种角色:GATT服务器和GATT客户端,它们完全独立于GAP的角色.提供数据的设备称为GATT服务器,访问GATT服务器而获得数据的设备称为G ...
- 蓝牙 BLE GATT 剖析(一)
一.概述 The Generic Attribute Profile (GATT) defines a service framework using the Attribute Protocol. ...
- 蓝牙 BLE GATT 剖析(二)-- GATT UUID and 举例
generic attribute profile (GATT)The Generic Attributes (GATT) define a hierarchical data structure t ...
- 蓝牙协议分析(4)_IPv6 Over BLE介绍
1. 前言 蓝牙是个奇葩的家伙:它总是以后来者的身份出现,很喜欢打仗,而且还不落下风(有点像某讯的风格).90年代末期和Wi-Fi的无线标准之争如此,当前和802.15.4系(ZigBee.RF4CE ...
- 蓝牙BLE实用教程
蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...
随机推荐
- 【HTML5】SVG内联
什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺 ...
- Spring的循环依赖问题
spring容器循环依赖包括构造器循环依赖和setter循环依赖,那Spring容器如何解决循环依赖呢?首先让我们来定义循环引用类: 在Spring中将循环依赖的处理分成了3种情况: 构造器循环依赖 ...
- 小明A+B[HDU2096]
小明A+B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- BZOJ3012 : [Usaco2012 Dec]First!
建立Trie,那么成为答案的串必须满足其终止节点到根路径上没有其它点. 对于Trie上每个节点维护一个bitset,表示哪些字符必须在哪些字符之前. 每到达一个可能成为答案的终止节点,对图进行拓扑排序 ...
- CSS:权重和层叠规则决定了其优先级
首先,给大家看一篇关于CSS优先级的示例:http://www.ido321.com/76.html 一.基本的优先级规则 比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数,至于各级 ...
- TYVJ P1026 犁田机器人 Label:水
背景 USACO OCT 09 2ND 描述 Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田.这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田 ...
- 【BZOJ】1606: [Usaco2008 Dec]Hay For Sale(背包)
http://www.lydsy.com/JudgeOnline/problem.php?id=1606 越来越水了T_T 这题两种做法,一个正规01背包,价值就是体积 还有一种是非正规背包,即 if ...
- [BZOJ 3145][Feyat cup 1.5]Str 解题报告
[Feyat cup 1.5]Str DescriptionArcueid,白姬,真祖的公主.在和推倒贵看电影时突然对一个问题产生了兴趣:我们都知道真祖和死徒是有类似的地方.那么从现代科学的角度如何解 ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- Scrum会议1(Beta版本)
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...