关于蓝牙技术GATT属性介绍。

来源:互联网 发布:谁与知同梅飘雪 编辑:程序博客网 时间:2024/05/07 07:24

     关于蓝牙技术蓝牙是面向开发者的无线通信技术,它让设备之间无需路由器或接入点等中央设备也能相互通信。

     

      蓝牙有一项独特的“低功耗”特性,这意味着采用低功耗蓝牙的设备使用很小的电池也可以很长时间。

在低功耗蓝牙的世界,每个设备都有自己的“配置文件”,它定义了蓝牙设备间建立通信的方式。在某种程度上,蓝牙

配置文件从特性和功能的层面上定义了设备之间相互通讯的方式。


换而言之,蓝牙配置文件其实是一种接口规格。它定义了设备所拥有的数据;其他设备通过蓝牙连接能如何获取这些

数据;以及当与之相连的设备基于这一接口进行操作时,带有这一配置文件的设备应如何作出回应等。现在就让我们

从技术的角度再详细了解一下吧!


基本概念

       蓝牙设备包含一个属性表(Attribute Table,简称ATT),其他与之相连的设备可以以多种方式访问表中

的数据。表中的数据及其利用方式就涉及到蓝牙的“通用属性配置文件(Generic Attribute profile,简称GATT)”这一 

技术领域。在诸如安卓平台提供的API相关文档中常能看到GATT这一用语。

 属性表中包含一系列不同类型的相关记录。主要类型包括服务(Service)、特性(Characteristics)和描述符

(Descriptors)。现在就让我们来一一了解下。属性(ATTRIBUTES)服务(Services)、特性(Characteristics)

和描述符(Descriptors)都是属性类别,因此也就有了通用属性配置文件(Generic Attribute Profile)、属性表

(Attribute Table)和属性协议(Attribute Protocol)等。具体是哪一个类别的属性,由“通用唯一标识符(Universally Unique Identifier,简称UUID)”来定义。


有些属性是由制定蓝牙技术标准的蓝牙技术联盟定义的, UUID长度为16位。有些属性是产品设计团队自行定义的,

是客制化的,这样的UUID为128位。

架构(STRUCTURE)

     服务(Service)、特性(Characteristics)和描述符(Descriptors)也有层级之分。服务位于顶层,描述符位于底层。服务包括一项或多项特性。一项特性可能没有、拥有一个或拥有多个描述符,因为描述符是可选的,而服务必须

包括至少一项特性。

                                                          

服务(SERVICES)

      服务是包含了逻辑相关的蓝牙数据项的容器。这些数据项实际上就是特性。我们可以认为服务内部的属性就归服

务所有。服务通常代表一项特定的设备特性(例如硬件特性),如按钮或特定的传感器。设备信息服务(Device 

Information Service)就是蓝牙技术联盟所定义的服务之一,顾名思义,它是包含了如制造商和序列号等多项设备信

息的容器

特性(CHARACTERISTICS)

      特性是与某种设备内部特殊状态、或设备用传感器能够测量的环境状态相关的数据项。例如,当前的电池状态就

是内部状态数据,而环境温度可通过传感器来测量。有时特性代表配置数据,例如针对某个对象的测量频率等。在任

何一种情况下,设备都可以将数据以特性的形式通过蓝牙链路发送给其他设备,供其所用。设备信息服务中的序列号

字符串(Serial Number String)就是蓝牙技术联盟所定义的特性之一。


特性包括多个部分,如类型、值、一些属性和权限等。

类型(Type) 在上面已经解释过了,就是表明属性具体特性类别的UUID值


值(Value) 就是相关状态数据项的值。


属性(Properties) 属性定义了其他设备如何通过蓝牙运用特性,这些特性主要关于各项操作,如读取(READ)、  

写入(WRITE)或通知(NOTIFY)。读取特性就是通过蓝牙链路将当前的值从属性表传输至相连的设备。写入是允

许互连设备改变状态表中的值。通知是当相关特性值改变或由定时器进行周期性控制时,设备可以发送至相连设备的

一种特定的信息类型。有些特性并不支持所有操作。通过特性的属性可以了解其支持的操作。


        有时设备的编程允许其在处理操作时(如在属性表中读写值)能够以特定的方式作出回应,这样就能实现更多功

能,而不是简单的通过连接来传输数据。例如,改变特性的值也可能改变设备从加速器上读取样本数据的频率。


权限(Permissions)  权限与安全相关,并进一步描述了在对特性进行读写访问之前必须确保的安全条件。


描述符(DESCRIPTORS)  描述符含有元数据,这些元数据可以放大描述符所属特性的相关细节,或实现涉及这一 

属性的运行配置。例如,可通过名为“客户端特性配置描述符(Client Characteristic Configuration Descriptor,

CCCD)”的特定描述符来开启或关闭通知(NOTIFY)信息。

配置文件(PROFILE)    蓝牙配置文件是包括所有必需信息的规格,包括设备功能,服务、属性及描述符的访问方式,以及安全准则、并行限制等。


客户端架构(Client Server Architecture)

      当智能手机应用通过蓝牙连接与设备互动时,就形成了客户端(Client)/服务器(Server)架构。手机应用通常是

GATT客户端,设备通常是GATT服务器。它们采用属性协议(Attribute Protocol,简称ATT)进行通信。智能手机开

发者可利用API,无须担心如何制定ATT协议数据单元等问题。

设备发现(Device Discovery)

      以上所描述的都是关于作为GATT客户端和服务器进行连接并通信的设备。但是在此之前的环节中,两台设备尚未

建立连接,它们是如何找到彼此并连接的呢?答案就在于“设备发现(Device Discovery)”,这是由另一项称为通用

访问属性(Generic Access Profile,简称GAP)的蓝牙架构来负责的。

        在GAP中,一台设备发出广播,周期性地发射广播数据包,其中包含设备自身的相关信息。其他执行扫描操作的

设备执行扫描、接收并处理广播数据包,然后滤过类型不相关的设备。通常用户会获得被发现设备的相关信息,然后

就能选择一个进行连接。能够发出广播的设备叫做蓝牙周边设备,而执行扫描的设备称为蓝牙中央设备。

0 0