Advertisement

【Bluetooth蓝牙开发】八、BLE协议之ATT

阅读量:
img

个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得!
img

所有文章汇总

文章目录

    • 1、简介

    • 2、为什么要有ATT协议

    • 3、ATT数据结构

    • 4、ATT PDU

      • 4.1 包格式
      • 4.2 Attribute Protocol PDUS
        • 4.2.1 MTU Exchange
    • 4.2.2 Reading Attributes

    • 4.2.3 ATT Protocol PDUs 汇总

    • 5、ATT PDU 包的封装流程

    • 6、参考文章
      ble_stack

1、简介

由上面章节的描述可知,在BLE协议栈中:

  1. Physical Layer负责提供一系列的Physical Channel
  2. 基于这些Physical ChannelLink Layer可在两个设备之间建立用于点对点通信的Logical Channel
  3. L2CAP则将这个Logical Channel换分为一个个的L2CAP Channel,以便提供应用程序级别的通道复用。到此之后,基本协议栈已经构建完毕,应用程序已经可以基于L2CAP欢快的run起来了。

L2CAP之上,就是ATT协议了,那么ATT又是什么呢?

ATT(Attribute Protocol),This specification defines the Attribute Protocol; a protocol for discovering, reading, and writing attributes on a peer device

ATT (Attribute Protocol),BLE属性协议,它是处于L2CAP协议层与GATT之间的一层属性操作协议,用于在一对蓝牙设备之间发现、读取、写入属性。

2、为什么要有ATT协议

谈起应用程序,就不得不说BLE的初衷----物联网。物联网中传输的数据和传统的互联网有什么区别呢?

抛开其它不谈,物联网中最重要、最广泛的一类应用是:信息的采集

这些信息往往都很简单,如温度、湿度、速度、位置信息、电量、等等。采集的过程也很简单,节点设备定时的向中心设备汇报信息数据,或者,中心设备在需要的时候主动查询。基于信息采集的需求,BLE抽象出一个协议:Attribute protocol,该协议将这些“信息”以“Attribute(属性)”的形式抽象出来,并提供一些方法,供远端设备(remote device)读取、修改这些属性的值(Attribute value)

3、ATT数据结构

ATT协议定义了两个角色:serverclient。它允许serverclient提供一些可操作的属性信息。

一个属性其包含了如下几个信息
在这里插入图片描述

attribute handleserver端的属性的唯一标识,通常用16bit的值表示,用作唯一识别Attribute server上的所有AttributeAttribute Handle的存在有如下意义:

复制代码
* 一个`server`上可能存在多个相同`type`的`Attribute`,显然,`client`有区分这些`Attribute`的需要。
* 同一类型的多个`Attribute`,可以组成一个`Group`,`client`可以通过这个`Group`中的起、始`handle`访问所有的`Attributes`。

attribute type :使用通用唯一标识符(UUID:universally unique identifier)来表示,类似于我们常说的“温度”、“湿度”等人类可识别的术语。

attribute Valueattribute type所对应的值,可以是一个数组,或者一个单一的值

permission :属性访问权限

复制代码
* 访问有关的权限(access permissions),Readable、Writeable以及Readable and writable;
* 加密有关的权限(encryption permissions),Encryption required和No encryption required;
* 认证有关的权限(authentication permissions),Authentication Required和No Authentication Required;
* 授权有关的权限(authorization permissions),Authorization Required和No Authorization Required。

注意:这里说的数据结构不是在空中传播的数据结构,而是一条属性在存储器中定义的数据结构。

4、ATT PDU

Attribute PDU用于空中传播,其有几种类型:

  • 客户端发送到服务端的PDU有:CommandsRequestsConfirmations
  • 服务端发送到客户端的PDU有:ResponsesNotificationsIndications

4.1 包格式

img

Attribute OpcodeBit5-0用于标识每一条ATTPDU类型,bit6用于标识该PDU是否为Command(当该标志设置为1,表示这是一个命令),bit7用于标识是否含有Authentication Signature字段。

Attribute Parameters :属性参数,包括各种参数等。

Attribute Signature :认证许可信息,该字段的存在,取决于Opcodebit7

其中,ATTPDU的Opcode字段取值有
在这里插入图片描述

每一个类型对应不同的命令,不同的命令又对应不同的参数!

4.2 Attribute Protocol PDUS

下面介绍一些ATT协议所涉及的PDU

4.2.1 MTU Exchange
image-20220830085909896

这里涉及两个命令:

  • Exchange MTU Request :客户端通知服务端,最大接收的MTU大小
    image-20220830090108831

  • Exchange MTU Response :服务端回复客户端,支持的最大MTU大小
    image-20220830090116646

4.2.2 Reading Attributes

该分类下又有好多获取信息的方法,下面仅列举一部分:

  • Read by Group Type Request :在指定的handle范围内,获取已知属性类型的属性值
    image-20220830090637116

  • Read by Group Type Response :回复request命令,包含要获取的属性值信息
    image-20220830090738431

通过抓包,可以看到该数据结构如下:
image-20220830090818041

4.2.3 ATT Protocol PDUs 汇总

下面主要介绍ATT所涉及的一些协议PDU类型

image-20220830110442510
image-20220830110452846

5、ATT PDU 包的封装流程

下图是ATT层将构建好的数据下发的流程,可以直观的理解数据包的封装流程!
在这里插入图片描述
在这里插入图片描述

6、参考文章

[1]:

[2]:
img
img

全部评论 (0)

还没有任何评论哟~