【低功耗蓝牙BLE-2】Generic Access Profile(GAP)协议

发布时间 2023-11-12 22:40:30作者: FBshark

原文链接: https://zhuanlan.zhihu.com/p/527434096?utm_id=0

 

GAP简介

通用访问配置文件(GAP)规定了设备在较低级别如何执行控制程序,如设备发现、连接、安全建立等,以确保互操作性,并允许来自不同供应商设备之间的通信。主要的操作有:

  • 发现并与配对
  • 广播数据
  • 建立安全连接

GAP以一种标准、普遍理解的方式定义了这些和其他基本操作。了解GAP很重要,因为大多数BLE实现都为希望使用此功能的应用程序提供了GAP API。

GAP

GAP层定义了:

  • 角色- roles
  • 操作模式&流程
  • 安全模式&流程

角色 - Roles

BLE设备可以同时在一个或多个通用访问配置文件(GAP)角色中运行(前提是链路层支持此功能):

  • Broadcaster
  • Observer
  • Peripheral
  • Central

角色施加限制并强制行为,因此通常在设备的设计阶段固定。

GAP定义了两对角色,允许设备之间相互通信。

Broadcaster/Observer

这一对角色实现单向、无连接的通信。

Broadcaster

  • 定期发送包含数据的广播包
  • 使用链路层的Advertiser角色

Observer

  • 扫描广播者,监听广播数据
  • 使用链路层的Scanner角色

网络拓扑

网络拓扑

Peripheral/Central

这对角色实现双向、面向连接的通信。

Peripheral

  • 链路层的slave角色
  • 用可连接的广播数据包进行广播
  • 优化以消耗最少的功耗和内存
    • 使用低成本设计

Central

  • 链路层master角色
  • 能够建立和管理连接
  • 可同时连接到各种设备

网络拓扑

网络拓扑

对于BLE连接中的数据传输操作,不同的角色由通用属性配置文件层(GATT)定义。

Modes & Procedures

发现和连接阶段都定义了模式/过程对。

GAP Modes

GAP Modes指外围设备可以在一定时间内切换到的一种状态,以便达到一定目的或者允许一个对等设备(peer)执行一些操作。

例如 -

Disacovery Modes:

  • Non-Discoverable
  • Limited-Discoverable
  • General-Discoverable

Connection Modes:

  • Non-Connectable
  • Directed-Connectable
  • Undirected-Connectable
请参阅第3卷“蓝牙规范4.2版”。,C部分,第9节

GAP Procedure(s)

中央设备为达到某一目标而采取的一系列行动,如:

  • Discovery of peers
  • Establishing a connection to a specific peer

例如 -

Discovery Procedures

  • Limited-Discovery
  • General-Discovery

Connection Procedures

  • General-Connection
  • Direct-Connection
请参阅第3卷“蓝牙规范4.2版”。,C部分,第9节

Discovery Modes and Applicable Procedures

这些问题涉及外围设备如何广播其存在,以及中央设备可以/应该如何处理这些信息。下表将几种外围设备“发现”模式与适用的中央“发现”程序相匹配:

discovery modes and procedures

General-Discoverable Mode

此状态表示外设希望由对等方发现以建立连接。它通过定期传输ADV_IND广播包来识别,表示外围设备的初始出厂默认状态。

所需外围设备配置

进入此模式(状态)前,需要在外设中设置以下BLE参数:

  • Advertising Packet Type (ADV_IND)
  • Advertising Interval
  • Advertising Packet Payload
    • Local Name
    • Service UUID
  • (Optional) Scan Response Payload
    • TX Power
    • Battery Level
    • Custom Data

最后,必须在外围设备上启动广播,以向其对等方发出进入此模式的信号。

Limited-Discoverable Mode

BLE链接层部分协助了该过程。在扫描期间,如果链路层检测到具有匹配MAC地址的ADV_DIRECT_ND数据包,它将通知应用层。附近的其他BLE无线电将忽略未发送给它们的ADV_DIRECT_IND数据包。

Connection Establishment Modes and Applicable Procedures

这些主要涉及中央设备如何选择与哪个外围设备交互。下表将几种外围连接模式与适用的中央连接程序相匹配:

connection modes and procedures

Undirected-Connectable Mode

如上所述,当在一般可发现模式下操作时,外围设备自动处于该“连接模式”。它正在发送ADV_IND数据包(杂乱无章),并查找与任何对等方的连接(“无方向”)。

General Connection Establishment Procedure

这通常是一个两步程序:

  1. 接受所有ADV_IND数据包,并过滤数据包有效负载中的数据,例如:
  • Local Name
  • Service UUID
  • Custom Data
  • etc.

2. 停止扫描,并使用直接连接建立过程(Direct Connection Establishment)连接到该设备:

  • Initiate a connection to a single device using its MAC address
    • Uses CONNECT_REQ Initiating PDU advertising packet
在直接连接建立过程中,中央链路层不知道外围设备是否可用或可连接。因此,如上文所述,它只能在收到广播包时触发。

安全性

关于GAP的安全性,大家感兴趣可以去参考BLE的spec,这里就不详细介绍了。