欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

七 蓝牙低功耗(BLE)协议栈 之 GAP层

程序员文章站 2022-03-02 17:25:43
一 介绍GAP(Generic Access Profile, 通用访问规范)定义了设备如何彼此发现、建立连接以及如何实现绑定,同时描述了设备如何成为广播者和观察者,并且实现无需连接的数据传输。还定义了不同类型的地址来实现隐私性和可解析性。GAP内部有两个基本概念用来描述设备的行为,即模式(mode)和规程(procedure)。当一个设备被配置为按照某种方式操作一段较长的时间时,称为模式。当一个设备被配置为在某一段有限的时间内执行某种特定的操作时,称为规程。举个例子,当一个设备正在进行广播时,称...

一 介绍

GAP(Generic Access Profile, 通用访问规范)定义了设备如何彼此发现、建立连接以及如何实现绑定,同时描述了设备如何成为广播者和观察者,并且实现无需连接的数据传输。还定义了不同类型的地址来实现隐私性和可解析性。
七 蓝牙低功耗(BLE)协议栈 之 GAP层
GAP内部有两个基本概念用来描述设备的行为,即模式(mode)和规程(procedure)。

当一个设备被配置为按照某种方式操作一段较长的时间时,称为模式。当一个设备被配置为在某一段有限的时间内执行某种特定的操作时,称为规程。

举个例子,当一个设备正在进行广播时,称其为"广播模式"。广播往往会持续较长时间,也许是该设备唯一用途。而当一个设备正在寻找广播者时,称其为"观察规程"。观察往往持续一段较短时间,用以构建用户界面或者寻找需要的指定信息。

  1. LL层可以发出各种不同的PDU type的广播包,比如:可连接的、不可连接的等。
  2. 某种PDU Type的广播包中,还可以进一步定义它的AD Type;在GAP中可以设置广播类型(AD Type),比如Discoverable Mode。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

二 GAP定义的4种Role

GATT从数据的提供使用角度提出了client和server两个概念。

GAP从数据的发起、接收角度提出了4个角色:

  1. Boardcast(广播者),发出广播信号可以没有无线接收器
  2. Observer(观察者),接收广播信号,可以没有无线发送器
  3. peripheral(外围设备),可以跟其他设备建立连接,建立连接时它是被动的一方。既含有无线发送器,又含有无线接收器。
  4. Central(*设备),可以跟其他设备建立连接,建立连接时它是主动的一方。既含有无线发送器,又含有无线接收器。

具体的角色可以做什么,需要什么配置看下图,详细信息在 《core_v5.1》 -> vol 2 -> Part C Generic Access Profile -> 2 Profile Overview

七 蓝牙低功耗(BLE)协议栈 之 GAP层

三 GAP的模式和规程

GAP定义了下列模式:

  • 广播模式
  • 不可发现模式
  • 有限可发现模式
  • 一般可发现模式
  • 不可连接模式
  • 定向可连接模式
  • 不可绑定模式
  • 可绑定模式

GAP 定义了下列规程:

  • 观察规程
  • 有限发现规程
  • 一般发现规程
  • 名称发现规程
  • 自动连接建立规程
  • 一般连接建立规程
  • 选择性连接建立规程
  • 直接连接建立规程
  • 连接参数更新规程
  • 终止连接规程
  • 绑定规程

规程和模式相互相成的,比如说设备A处于模式X,设备B使用规程Y来访问它。

BLE有一下几种模式和规程:

  • Broadcast mode and Observation procedure, 广播模式和观察规程
  • Discovery modes and procedures,发现模式和规程
  • Connection modes and procedures,连接模式和规程
  • Bonding modes and procedures, 绑定模式和规程
  • Periodic advertising modes and procedure,周期性的广播模式和规程

1 发现模式和规程

七 蓝牙低功耗(BLE)协议栈 之 GAP层

外围设备可以处于三种模式之一,*设备要使用三种规程之一和对方交互。广播的模式类型在广播数据的AD Type字节体现出来。

  1. Non-Discoverable Mode

不可发现模式,这很少用到。在这种模式下,其发出的广播包中的AD Type需要设置这2个位为0:

  • LE General Discoverable Mode
  • LE Limited Discoverable Mode

问题是,既然不想被别人发现,为何还要发出广播包?
这完全是各个蓝牙设备都遵守这样的君子约定:

  • 设备A发出广播操作,但是其中的AD Type中表示自己是不可被发现的
  • 设备B的Controller,肯定可以接受到这个广播包,上传到Host,解析出来其中的AD Type
  • 设备B的Host是个君子,不在UI界面显示设备A;但是也许设备B可以自动连接设备A。
  1. Limited Discoverable Mode

有限可发现模式,为了省电,某些设备可能要先按一下按键,它才会发出广播报文;并且在过一段时间后,它就继续休眠。

我们使用手机查找蓝牙设备时,可能会列出来很多个设备,处于有限可发现模式的设备应该显示在列表的最上面,因为它最紧迫。

在这种模式下其发出的广播包中的AD Type要设置这个位为1: LE Limited Discoverable Mode

  1. General Discoverable Mode

一般可发现模式,跟有限可发现模式相比,它可以一直发出广播报文。在这种模式下,其发出的广播包中的AD Type要设置这个位为1: LE General Discoverable Mode

  1. Limited Discoverable Procedure

七 蓝牙低功耗(BLE)协议栈 之 GAP层

有限可发现规程。*设备既可以发现处于有限发现模式的设备,也可以发现处于一般发现模式的设备,但是处理有限可发现规程的*设备只列出来处于有限可发现模式的设备。

  1. General Discoverable Procedure

七 蓝牙低功耗(BLE)协议栈 之 GAP层

一般可发现规程。*设备既可以发现处于有限发现模式的设备,也可以发现处于一般发现模式的设备,*设备会列出来所有的设备。

2 连接模式和规程

  1. Non-Connectable Mode
    不可连接模式

  2. Directed Connectable Mode
    定向连接模式。

如果希望快速连接*设备,外围设备可以使用该模式。在该模式下他发出ADV_DIRECT_ADV广播报文,直接发给指定的*设备。所以该外围设备应该曾经与该*设备建立过连接。ADV_DIRECT_ADV广播报文的发送频率很快,该模式最多持续1.28s,之后控制器自动停止广播。

  1. Undirected Connectable Mode
    无向连接模式。

如果一个外围设备无需很快建立连接,或者打算尽可能的省电,则可以使用该模式。他发出ADV_IND广播报文。

  1. Auto Connection Establishment Procedure

自动连接建立规程。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

*设备使用该规程来设置控制器,从而向一个或多个外围设备自动建立连接。Host需要实现把想要连接的设备写入白名单中。

它有个缺点:对所有的设备,都只能使用同一套基本连接参数。

  1. General Connection Establishment Procedure

一般连接建立规程。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

这是我们常用的规程,先扫描出设备,选中某一个,然后使用直接连接建立规程去连接它

  1. Selective Connection Establishment Procedure

选择性连接建立规程。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

Host先把想要连接的设备放入Controller的白名单。正在广播的设备只要在白名单上才会被提交给Host。

Host决定是否连接该设备,并使用不同的参数去连接它。相比于自动连接建立规程,选择性连接建立规程可以使用不同的参数连接每一个设备。

  1. Direct Connection Establishment Procedure

定向连接建立规程,直接去连接指定的设备。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

  1. Connection Parameter Update Procedure

连接参数更新规程: 参考 《core V5.1》-> VOL6 -> Part B -> 5.1 Link Layer control procedures

  1. Terminate Connection Procedure

终止连接规程。

*设备或外围设备都可以执行该规程,LL层发出LL_TERMINATE_IND_PDU就可以。

四 GAP服务

每一个*设备或外围设备中,都有一个GAP Service。在GAP Service中至少有这2项characteristic:

  • Device Name,设备名字
  • Appearance,*设备根据它来显示一个图标、字符串等,用来形象地描述设备的功能。

七 蓝牙低功耗(BLE)协议栈 之 GAP层

本文地址:https://blog.csdn.net/chengbaojin/article/details/108147945

相关标签: BLE 蓝牙