在此之前,我们需要了解一些专业词汇:
1、简介
Profile可以理解为一种规范,一种标准的通信协议,存在于从机中。蓝牙组织已经指定了一些标准配置文件,如HID OVER GATT、防丢失设备、心率仪等。每个概要文件包含多个服务,每个服务代表从站的一个能力。
2、服务
服务可以理解为一种服务。在ble slave中,有多个服务,如电力信息服务和系统信息服务,每个服务都包含多个特征。每一个具体的特征值都是ble传播的主题。例如,当前功率为80%,因此功率的特征特征值存在于从机的配置文件中,这样主机可以通过该特征读取80%的数据
3、特性
特征特征值,通过特征实现主从之间的通信,特征可以理解为一个标签,通过标签可以获取或写入想要的内容。
4、UUID
UUID,我们刚才提到的统一识别码,服务和特性,都需要一个唯一的uuid来识别和分类。每个从机都有一个叫profile的东西,不管是上面的自定义simpleprofile还是标准防丢失设备profile,它们都是由一些服务列组成的。然后每个服务包含多个特征,通过特征实现主从之间的通信。
一.导言
目前,低功耗蓝牙(BLE)连接基于GATT(通用属性配置文件)协议。关贸总协定是通过蓝牙连接发送和接收短数据段的通用规范。这些短数据段称为属性。
二、差距
在详细介绍关贸总协定之前,我们需要了解GAP(通用访问配置文件),它用于控制设备连接和广播。GAP使您的设备对其他设备可见,并确定您的设备是否可以或如何与合同设备交互。比如信标设备只对外广播,不支持连接,所以mi频段可以等待设备与中心设备连接。
1.设备角色
GAP为设备定义了几个角色,其中两个主要角色是外围设备和中央设备。
外围设备:这通常是一个非常小或简单的低功耗设备,用于提供数据和连接到更强大的中央设备。比如mi乐队。
中心设备:中心设备比较强大,用来连接其他外围设备。比如手机。
2.广播数据
在GAP中,外围设备以两种方式广播数据:广告数据负载和扫描响应数据负载,每种负载最多可包含31字节。这里需要广播数据,因为外围设备必须保持广播才能让中心设备知道它的存在。扫描回复是可选的,中央设备可以向外围设备请求扫描回复,扫描回复包含设备的一些附加信息,如设备名称。(我会写一篇关于广播的数据格式的博客。)
3.广播过程
GAP的播出工作流程如下图所示。
从图中我们可以清楚地看到广播数据和扫描回复数据是如何工作的。外围设备将设置广播间隔,并且在每个广播间隔中,它将重新发送其自己的广播数据。广播间隔越长,省电越多,不容易扫描。
4.广播网络拓扑
在大多数情况下,外围设备广播自己,让中心设备发现自己,建立关贸总协定连接,从而交换更多的数据。在某些情况下,不需要连接,只要外设广播自己的数据。这种方法的主要目的是让外围设备向多个中央设备发送自己的信息。因为基于GATT连接的模式,一个中心设备只能连接一个外围设备。广播最典型的应用是苹果的iBeacon。广播模式下的网络拓扑图如下:
三.关贸总协定
关贸总协定的全称是通用属性配置文件,它定义了两个BLE设备通过所谓的服务和特性进行通信。关贸总协定使用ATT(属性协议)协议,该协议将对应于服务、特征遗迹的数据保存在查找表中,二级查找表使用16位id作为每个项目的索引。
两个设备的连接一旦建立,GATT就开始工作,这意味着你必须完成之前的GAP协议。这里需要注意的是,关贸总协定的连接必须首先通过GAP协议。其实在Android开发中,我们可以直接使用设备的MAC地址发起连接,不需要扫描。这并不意味着你不需要通过GAP。其实已经在芯片层面为你做了。蓝牙芯片发起连接时,总是先扫描设备,扫描后再发起连接。
关贸总协定的联系需要特别注意:关贸总协定的联系是排他性的。也就是说,一个BLE外围设备只能同时由一个中央设备连接。外围设备一旦连接,就会立即停止广播,这样其他设备就看不到了。当设备断开连接时,它会再次开始广播。
如果中央设备和外围设备需要双向通信,唯一的办法是建立关贸总协定连接。
1.关贸总协定连接网络拓扑
下图显示了GTT连接网络拓扑。这里清楚地显示了一个外围设备只能连接到一个中央设备,一个中央设备可以连接到多个外围设备。一旦连接拓扑建立了连接,通信就是双向的。与以往GAP广播的网络拓扑相比,GAP通信是单向的。如果你想让两台设备互相通信,只能通过中心设备进行传输。
2.关贸总协定通信服务
关贸总协定交流的双方是碳硫关系。作为关贸总协定的一个服务器,外围设备维护着ATT的查询表以及服务和特性的定义。中央设备是总协定客户端,它向服务器发起请求。需要注意的是,所有的通信事件都是由客户端(也称为主机)发起,并接收来自服务器(也称为从机)的响应。
一旦建立连接,外围设备将向中央设备建议连接间隔,以便中央设备将尝试在每个连接间隔重新连接,以检查是否有新数据。但是这个连接间隔只是一个建议,你的中心设备可能并没有严格遵循这个间隔。例如,您的中央设备正忙于连接其他外围设备,或者其资源太忙。
下图显示了外围设备(关贸总协定服务器)和中央设备(关贸总协定客户端)之间的数据交换流程。可以看出,主设备每次都发起一个请求:
3.关贸总协定结构
关贸总协定交易基于嵌套的概况、服务和特征,如下图所示:
ProfileProfile实际上并不存在于BLE外围设备上,它只是由蓝牙SIG或外围设备设计者预定义的一组服务。配置文件(例如,心率配置文件是心率服务和设备信息服务的组合。所有官方关贸总协定简介的清单可以在这里找到。
服务服务是一个独立的逻辑项目,它将数据一个接一个地划分,它包含一个或多个特征项目。每个军种都由一个UUID唯一标识。UUID有16位或128位。16位UUID已获得官方认证,需要付费购买。128位UUID是自定义的,所以你可以随意设置。
官员们采用了一些标准的服务,完整的名单在这里。以心率服务为例,可以看到其官方16位UUID为0x180D,包含心率测量、身体传感器定位、心率控制点三个特征,定义为只需要第一个,可选。
关贸总协定交易中特性的最低部分是特性,它是最小的逻辑数据单元。当然,它可能包含与一个组相关联的数据,例如加速度计的X/Y/Z三轴值。
与服务类似,每个特征都由一个16位或128位的UUID唯一标识。可以免费使用蓝牙SIG定义的官方标准特性,使用官方定义保证BLE的软硬件可以互相理解。当然,您可以自定义特性,这样只有您自己的软件和外围设备才能相互理解。
例如,心率测量特性,这是上述心率服务必须实现的特性,其UUID是0x2A37。它的数据结构是前8位定义心率数据格式(是UINT8还是UINT16?),后面是相应格式的实际心率数据。
实际上,处理BLE外围设备主要是通过特性。您可以从特性中读取数据或将数据写入特性。这样就实现了双向通信。因此,你可以自己实现一个类似串口(UART)的服务。此服务包含两个特征,一个配置为只读通道(接收),另一个配置为只写通道(发送)。
文章转载自:第_ _届CSDN
1.《gatt 蓝牙【GATT】协议介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《gatt 蓝牙【GATT】协议介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1595750.html