news 2026/7/1 15:58:18

GAP规范【2. Profile roles】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GAP规范【2. Profile roles】

这一节主要不是讲 BLE,而是讲经典蓝牙 BR/EDR 场景下,GAP 在描述两个设备之间的发现、连接、链路建立等流程时,如何称呼流程的发起方和接受方。

也就是:在 BR/EDR GAP 里,不直接一上来就说 Central / Peripheral,而是用更通用的说法:

A-party:发起方 B-party:接受方

我现在的重点是 蓝牙 LE,所以不详细展开。


在 LE 物理传输上,GAP 定义了 4 个角色:Broadcaster、Observer、Peripheral、Central。不同角色需要具备不同的物理层能力、Link Layer 状态能力、广播能力、扫描能力、连接控制能力。


一、这一节整体想表达什么?

在 LE,也就是 BLE 场景下,GAP 定义了 4 个角色:

Broadcaster:广播者 Observer:观察者 / 监听者 Peripheral:外设 Central:中心设备

这四个角色可以先这样粗略理解:

Broadcaster:只负责发广播,不建立连接 Observer:只负责扫描广播,不建立连接 Peripheral:发可连接广播,接受连接 Central:扫描设备,发起连接

更贴近 BLE App 开发的话:

蓝牙 Beacon:通常是 Broadcaster 只扫描附近设备的 App:Observer BLE 模块、手环、传感器:通常是 Peripheral 手机 App 主动连接 BLE 设备:通常是 Central

但要注意:一个设备不是永远只能有一个 GAP 角色。
同一个设备在不同时间、不同功能下,可以同时或切换扮演多个角色,前提是 Controller 支持。


二、最关键的一句话:GAP 角色和 Link Layer 角色相关,但不是完全一样

原文里有一句很重要:

GAP roles “Central” and “Peripheral” are related to, but not the same as, the Link Layer roles with the same names.

意思是:

GAP 里的 Central / Peripheral 和 Link Layer 里的 Central / Peripheral 有关系,但不是完全相同的概念。

这句话一定要理解。

1. GAP 角色更偏“Profile 层 / 行为模式”

GAP 的 Central / Peripheral 描述的是设备在 GAP 规范里的行为:

Central:支持发起 LE 连接建立流程;
Peripheral:支持接受 LE 连接建立流程。

它更关心:

谁扫描;
谁广播;
谁发起连接;
谁接受连接;
设备应该支持哪些 GAP 流程。


2. Link Layer 角色更偏“连接建立后的链路角色”

Link Layer 的 Central / Peripheral 是连接建立成功后的链路角色。

比如:

Central 负责连接事件调度;
Central 决定连接参数;
Peripheral 跟随 Central 的连接事件时序;
双方在连接态按照 Link Layer 规则收发数据。

所以:

GAP Central:表示设备具备发起连接的 GAP 能力 LL Central:表示连接建立后,在链路层处于 Central 角色
GAP Peripheral:表示设备具备接受连接的 GAP 能力 LL Peripheral:表示连接建立后,在链路层处于 Peripheral 角色

3. 建立连接成功后,两者会对应起来

原文说:

如果连接成功建立,那么具有这些 GAP 角色之一的设备,也会拥有对应的 Link Layer 角色。

也就是说:

GAP Central 发起连接成功后 → 在 Link Layer Connection State 中成为 LL Central GAP Peripheral 接受连接成功后 → 在 Link Layer Connection State 中成为 LL Peripheral

但在连接建立之前,一个设备可以处于 GAP Central 或 GAP Peripheral 角色,却还没有 Link Layer 连接角色。

这就是原文说的:

设备可以处于 GAP 角色中,即使连接还没有建立。

例如:

手机 App 正在扫描准备连接某个 BLE 模块:

手机此时可以说在执行 GAP Central 相关流程 但连接还没建立,所以还不是 LL Central Connection State

BLE 模块正在发可连接广播:

模块此时可以说是 GAP Peripheral 但还没被连接,所以还不是 LL Peripheral Connection State

三、四个 LE GAP 角色具体说明

1. Broadcaster role:广播者角色

原文意思是:

处于 Broadcaster 角色的设备,会发送 advertising events 或 periodic advertising events,也可能发送 BIS 事件。Broadcaster 必须有发送器,可能有接收器。

简单说:

Broadcaster 是只负责把信息广播出去的设备。

典型特点:

主要行为:发送广播 是否需要接收能力:不一定 是否建立连接:通常不建立连接 典型场景:Beacon、广播传感器、只广播数据的设备

表格里也能看到:

Transmitter characteristics:M Receiver characteristics:O

意思是:

Broadcaster 必须具备发送能力,因为它要发广播;
接收能力是可选的,因为它不一定需要接收别人发来的东西。

常见例子:

iBeacon Eddystone Beacon 只广播温度数据的传感器 只广播设备状态的 BLE 标签

这类设备只要把广播包发出去,不关心有没有中心设备连接它。


2. Observer role:观察者角色

原文意思是:

处于 Observer 角色的设备,会接收 advertising events 或 periodic advertising events,也可能接收 BIS 事件。Observer 必须有接收器,可能有发送器。

简单说:

Observer 是只负责扫描、监听广播的设备。

典型特点:

主要行为:扫描广播 是否需要接收能力:必须 是否需要发送能力:可选 是否建立连接:通常不建立连接 典型场景:只扫描设备列表、不连接设备的 App 或扫描器

表格里对应:

Transmitter characteristics:O Receiver characteristics:M

意思是:

Observer 必须能接收,因为它要扫描广播;
发送能力可选,因为如果只是 passive scanning,它可以只收不发。

这里要特别注意:

如果 Observer 做的是Passive Scanning 被动扫描,它只接收广播,不发送 Scan Request。

如果 Observer 做的是Active Scanning 主动扫描,它会在收到可扫描广播后发送 Scan Request,然后接收 Scan Response。

所以 Observer 如果支持 Active Scanning,就需要发送能力。


3. Peripheral role:外设角色

原文意思是:

任何接受建立 LE active physical link 的设备,都被称为处于 Peripheral 角色。处于 Peripheral 角色的设备,在 Link Layer Connection State 中也会处于 Peripheral role。Peripheral 必须同时有发送器和接收器。

简单说:

Peripheral 是等待别人来连接自己的设备。

典型特点:

主要行为:发可连接广播 连接方式:接受 Central 发起的连接 连接建立后:成为 LL Peripheral 是否需要收发能力:必须同时具备 典型场景:BLE 模块、手环、传感器、蓝牙外设

为什么 Peripheral 必须同时有发送器和接收器?

因为它不仅要发广播,还要接收 Central 发来的连接请求;连接建立后,还要和 Central 双向收发数据。

例如你的 BLE 透传模块:

模块先发广播 手机扫描到模块 手机发起连接 模块接受连接 连接成功后模块成为 Peripheral

这就是典型 Peripheral 场景。


4. Central role:中心角色

原文意思是:

支持 Central 角色的设备,会发起建立 LE active physical link。处于 Central 角色的设备,在 Link Layer Connection State 中也会处于 Central role。Central 必须同时有发送器和接收器。

简单说:

Central 是主动扫描并发起连接的设备。

典型特点:

主要行为:扫描、选择目标、发起连接 连接方式:主动建立 LE 连接 连接建立后:成为 LL Central 是否需要收发能力:必须同时具备 典型场景:手机 App、网关、电脑、主机设备

为什么 Central 也必须同时有发送器和接收器?

因为它要:

接收 Peripheral 的广播;
必要时发送 Scan Request;
发起连接请求;
连接后双向收发数据。

iOS/Android BLE App 大多数时候就是 GAP Central。


四、表 2.1 里的 M / O / E / C.1 / C.2 是什么意思?

表格里大量出现:

M O E C.1 C.2

可以这样理解

M = Mandatory,强制支持 O = Optional,可选支持 E = Excluded,不适用 / 排除 C.x = Conditional,有条件要求

这张表是在说:

不同 GAP 角色必须支持哪些物理层能力、Link Layer 状态、广播类型、扫描类型、链路控制流程。

不用一开始把整张表背下来,但要知道它的阅读方式。


五、表 2.1 里最重要的内容怎么理解?

1. Physical layer functionality:物理层功能

这里主要看两个能力:

Transmitter characteristics:发送能力 Receiver characteristics:接收能力

对应表格:

Broadcaster:发送 M,接收 O Observer:发送 O,接收 M Peripheral:发送 M,接收 M Central:发送 M,接收 M

这非常符合直觉:

Broadcaster 主要发广播,所以必须能发 Observer 主要扫描广播,所以必须能收 Peripheral 既要广播又要连接,所以必须能发也能收 Central 既要扫描又要连接,所以必须能发也能收

这是一张很值得记住的小表:

角色 发送能力 接收能力 Broadcaster 必须 可选 Observer 可选 必须 Peripheral 必须 必须 Central 必须 必须

2. Link Layer States:链路层状态

表格列出了多个 Link Layer 状态:

Standby state Advertising state Scanning state Initiating state Synchronization State Isochronous Broadcasting State Connection state - Peripheral role Connection state - Central role

对于现在理解 BLE 基础,最关键的是前五个:

Standby:待机状态 Advertising:广播状态 Scanning:扫描状态 Initiating:发起连接状态 Connection:连接状态

Broadcaster 需要什么状态?

Broadcaster:

Standby:M Advertising:M Scanning:E Initiating:E Connection:E

意思是:

Broadcaster 必须支持待机和广播;
不要求扫描;
不发起连接;
不进入连接态。

所以 Broadcaster 就是“广播型设备”。


Observer 需要什么状态?

Observer:

Standby:M Scanning:M Advertising:E Initiating:E Connection:E

意思是:

Observer 必须支持待机和扫描;
不要求广播;
不发起连接;
不进入连接态。

所以 Observer 就是“扫描型设备”。


Peripheral 需要什么状态?

Peripheral:

Standby:M Advertising:M Connection state - Peripheral role:M Scanning:E Initiating:E

意思是:

Peripheral 必须支持待机、广播、以 Peripheral 角色进入连接态;
不要求扫描;
不主动发起连接。

这就是:

Peripheral = 广播 + 接受连接 + 连接后作为 Peripheral

Central 需要什么状态?

Central:

Standby:M Scanning:M Initiating:M Connection state - Central role:M Advertising:E

意思是:

Central 必须支持待机、扫描、发起连接、以 Central 角色进入连接态;
不要求广播。

这就是:

Central = 扫描 + 发起连接 + 连接后作为 Central

六、广播事件类型怎么理解?

表格里列了很多 advertising event types:

Connectable and scannable undirected event Connectable undirected event Connectable directed event Non-connectable and non-scannable undirected event Non-connectable and non-scannable directed event Scannable undirected event Scannable directed event

这些是不同的广播事件类型。

这里先抓主线,不要一开始陷入每一种细节。

对 Broadcaster 来说

Broadcaster 最典型、最强制的是:

Non-connectable and non-scannable undirected event:M

也就是:

不可连接、不可扫描、非定向广播事件是 Broadcaster 必须支持的。

这符合 Broadcaster 的定位:

它只是把数据广播出去,不让别人连接,也不一定响应扫描请求。

其他一些广播类型在 Broadcaster 下是 O 或 E,说明可以支持,但不是 Broadcaster 的核心必选项。


对 Peripheral 来说

Peripheral 最核心的是:

Connectable and scannable undirected event:M

也就是:

可连接、可扫描、非定向广播事件是 Peripheral 必须支持的。

这也符合 Peripheral 的定位:

它要能发广播,让 Central 发现它;
它要能被连接;
它也可以提供 Scan Response。

注意:

Peripheral 还可以支持其他广播类型,例如 directed advertising、non-connectable advertising、scannable advertising,但很多是 Optional。


对 Central / Observer 来说

Central 和 Observer 通常不是广播发送方,所以这些 advertising event types 多数是 E。

它们的重点不是“发什么广播”,而是“怎么扫描、怎么连接”。


七、扫描类型怎么理解?

表格里有两种扫描:

Passive scanning:被动扫描 Active scanning:主动扫描

Passive scanning:被动扫描

被动扫描就是:

只接收广播包,不发送 Scan Request

表格里:

Observer:M Central:O

意思是:

Observer 必须支持被动扫描;
Central 可选支持被动扫描。

为什么 Central 的 Passive scanning 是 O?

因为 Central 的核心任务是建立连接,不是单纯观察广播。它必须支持扫描状态,但具体扫描类型的强制要求要看表里的条件和实现能力。


Active scanning:主动扫描

主动扫描就是:

接收到可扫描广播后,可以发送 Scan Request 然后接收对方的 Scan Response

表格里:

Observer:O Central:C.1

C.1 的脚注是:

Optional if passive scanning is supported, otherwise mandatory.

意思是:

如果 Central 支持被动扫描,那么主动扫描是可选的;如果 Central 不支持被动扫描,那么主动扫描就是必须的。

换句话说:

Central 至少要有一种扫描能力,否则它没办法发现目标设备并发起连接。


八、Link Layer control procedures 怎么理解?

表格下半部分列了很多 Link Layer 控制流程,比如:

Connection Update procedure Channel Map Update procedure Encryption procedure Feature Exchange procedure Version Exchange procedure ACL Termination procedure Data Length Update procedure PHY Update procedure

这些流程是连接建立之后,Link Layer 用来管理连接的控制过程。

对你当前最重要的是理解:

Peripheral 和 Central 在连接态中,需要支持一些连接管理流程。

比如:

1. Connection Update procedure

连接参数更新流程。

用于更新:

连接间隔 connection interval 从设备延迟 slave latency / peripheral latency 监督超时 supervision timeout

表格里 Peripheral 和 Central 都是 M,说明连接参数更新是连接管理中的基础能力。


2. Channel Map Update procedure

信道映射更新流程。

BLE 连接会在多个数据信道之间跳频。如果某些信道质量不好,可以更新 channel map。

Peripheral 和 Central 都是 M。


3. Feature Exchange procedure

特性交换流程。

用于双方确认彼此支持哪些 Link Layer 功能。

例如是否支持:

Data Length Extension LE 2M PHY LE Coded PHY Extended Advertising Periodic Advertising Isochronous 相关能力

表格中 Central-initiated Feature Exchange 对 Peripheral 和 Central 都是 M。

Peripheral-initiated Feature Exchange 是 C.2。

C.2 的脚注是:

如果支持 Connection Parameters Request procedure,则 mandatory,否则 optional。

4. Version Exchange procedure

版本交换流程。

用于交换 Controller 支持的蓝牙版本等信息。

Peripheral 和 Central 都是 M。


5. ACL Termination procedure

ACL 连接终止流程。

也就是断开连接相关能力。

Peripheral 和 Central 都是 M。

这很好理解:既然能连接,就必须能断开。


6. Encryption / Data Length / PHY Update 等

这些在表里很多是 O,表示可选。

比如:

Encryption procedure:O Data Length Update procedure:O PHY Update procedure:O LE Ping procedure:O

这说明不是所有最小化 BLE 设备都必须支持这些高级能力。

但是在实际手机和主流 BLE 芯片中,很多都会支持。

后面可以按需要深入。


九、2.2.2.5 多 GAP 角色并发运行

原文说:

一个设备可以同时运行多个 GAP 角色,只要 Controller 支持。Host 在使用任何流程或模式之前,应该先从 Controller 读取支持的 Link Layer states 和 state combinations。

这句话非常重要。

意思是:

设备不是只能固定为一个角色。

比如一个手机可以同时:

作为 Central 扫描并连接 BLE 外设 作为 Peripheral 被另一个设备连接 作为 Broadcaster 发 BLE 广播 作为 Observer 扫描周围广播

但能不能同时做,取决于 Controller 是否支持对应的状态组合。

例如:

一边扫描一边广播 一边连接一边扫描 一边连接多个外设 一边作为 Peripheral 被连接,一边作为 Central 连接别人

这些并发能力不是 GAP 凭空保证的,而是要看 Controller 支持情况。

对应到 HCI 层,Host 应该读取 Controller 支持的 Link Layer states 和 state combinations。

这和你做 App 开发也有关:

iOS / Android 暴露给 App 的能力,是系统蓝牙栈和硬件 Controller 能力共同决定的。
不是规范允许就代表你的手机、系统 API、模块固件一定支持。


十、当前 BLE 学习,最应该掌握哪些内容?

现在最应该把这四个角色理解成一张图:

只发广播,不连接: Broadcaster 只扫描,不连接: Observer 发可连接广播,等待别人连接: Peripheral 扫描目标设备,主动发起连接: Central

再进一步对应到 BLE 空口行为:

Broadcaster → Advertising Observer → Scanning Peripheral → Connectable Advertising + 被连接 Central → Scanning + Initiating + 建立连接

再对应到 HCI Command:

Broadcaster / Peripheral: LE Set Advertising Parameters LE Set Advertising Data LE Set Scan Response Data LE Set Advertising Enable Observer / Central: LE Set Scan Parameters LE Set Scan Enable Central: LE Create Connection / Extended Create Connection 连接后 Central / Peripheral: Connection Update Feature Exchange Version Exchange Channel Map Update Data Length Update PHY Update Disconnect

十一、最容易误解的地方

误解 1:Peripheral 就是一直发广播

不完全对。

Peripheral 在未连接前通常通过可连接广播等待连接。

连接成功后,它进入 Link Layer Connection State 的 Peripheral role,此时它不再是普通意义上的“正在广播设备”,而是在连接事件中和 Central 通信。

当然,有些设备支持连接后继续广播,但那属于并发状态组合支持问题。


误解 2:Central 只是扫描设备

不完全对。

Observer 也扫描。

Central 的关键不是“扫描”,而是:

扫描 + 发起连接

只扫描不连接,更像 Observer。


误解 3:Broadcaster 和 Peripheral 都会广播,所以一样

不一样。

Broadcaster 的核心是:

广播,但不建立连接

Peripheral 的核心是:

广播,并接受连接建立

所以二者的广播类型不同。

Broadcaster 必须支持的是不可连接、不可扫描广播;
Peripheral 必须支持的是可连接、可扫描非定向广播。


误解 4:Observer 和 Central 都扫描,所以一样

不一样。

Observer 的核心是:

只观察广播,不建立连接

Central 的核心是:

扫描后可以发起连接

所以 Central 必须支持 Initiating state,而 Observer 不需要。


误解 5:GAP Central 等于 LL Central

不完全对。

连接前:

GAP Central 可以存在 但还没有 LL Central connection state

连接成功后:

GAP Central → LL Central GAP Peripheral → LL Peripheral

所以它们有关联,但不是同一个层级的概念。


十二、一句话总结

这部分的核心意思是:

LE GAP 定义了 Broadcaster、Observer、Peripheral、Central 四个角色。Broadcaster 负责广播但不连接,Observer 负责扫描但不连接,Peripheral 通过可连接广播接受连接,Central 通过扫描并发起连接建立链路。GAP 角色描述的是设备在 Profile 层的行为要求,而 Link Layer 角色描述的是连接建立后的链路层角色;连接成功后,GAP Central/Peripheral 会对应成为 Link Layer Central/Peripheral。一个设备也可以并发运行多个 GAP 角色,但前提是 Controller 支持对应的 Link Layer 状态组合。


这部分是GAP 第 2 章后半部分的总纲性说明,它不是在讲某个具体 HCI Command,也不是在讲某个具体广播包格式,而是在说明:

GAP 为什么要存在,以及 GAP 这份 Profile 要解决哪些通用问题。

可以把这几节理解为:

2.3:从用户角度说明,蓝牙设备应该具备怎样的基本互通体验 2.4:从规范角度说明,GAP 定义了哪些通用基础能力 2.5:已废弃,不用看

一、2.3 User requirements and scenarios 想表达什么?

这一节标题是:

User requirements and scenarios 用户需求和使用场景

它主要想表达的是:

用户在合理预期下,应该能够把一个 Bluetooth 设备连接到另一个 Bluetooth 设备;即使两个设备没有共同应用,也应该能通过基本蓝牙能力让用户知道这一点。

换成人话就是:

蓝牙设备不能让用户“糊里糊涂地失败”。

比如两个设备能不能连接、能不能配对、有没有共同服务、是否支持同一个应用场景,用户至少应该能通过基本蓝牙能力发现一些信息,而不是完全没有反馈。


二、2.3 的关键信息

关键点 1:蓝牙设备应该尽量具备基本互操作性

原文说:

The Bluetooth user should, where expected, be able to connect a Bluetooth device to any other Bluetooth device.

意思是:

在合理预期下,用户应该能够把一个蓝牙设备连接到另一个蓝牙设备。

这里的重点不是说“任何蓝牙设备都一定能完成业务通信”,而是说:

只要场景合理,设备之间至少应该能按照蓝牙的通用流程进行发现、连接、识别能力。

例如:

手机应该能发现附近的 BLE 外设;
BLE 外设应该能按照规范广播自己;
如果设备支持可连接模式,中心设备应该可以尝试建立连接;
如果不支持某个应用功能,也应该有办法让用户知道,而不是表现得像设备坏了。


关键点 2:没有共同应用,也应该能让用户知道

原文说:

Even if the two connected devices don’t share any common application, it should be possible for the user to find this out using basic Bluetooth capabilities.

意思是:

即使两个已经连接的设备没有共同应用,也应该能通过基本蓝牙能力让用户知道这一点。

这个点很重要。

比如:

一个手机连接到一个 BLE 设备,但这个 BLE 设备没有你 App 需要的 Service;
一个设备支持某种 Profile,另一个设备不支持;
两个设备都叫“Bluetooth device”,但业务层能力不匹配。

这种情况下,不应该让用户完全不知道原因。

在 BLE 中,这通常可以通过以下方式体现:

广播数据中暴露部分基本能力 连接后通过 GATT Service Discovery 发现服务 通过 Device Information Service 获取设备信息 通过 GAP Device Name / Appearance 显示基本信息 通过配对/安全流程提示用户

也就是说,GAP 关心的不只是“能不能连”,还关心用户能不能识别设备、理解设备、知道设备是否匹配当前用途。


关键点 3:不同厂商不能因为名字不同、流程顺序不同就阻碍连接

原文说:

When the two devices do share the same application but are from different manufacturers, the ability to connect them should not be blocked just because manufacturers choose to call basic Bluetooth capabilities by different names on the user interface level or implement basic procedures to be executed in different orders.

意思是:

如果两个设备支持同一个应用场景,但来自不同厂商,那么它们不应该因为厂商在用户界面上给基础蓝牙能力起了不同名字,或者基础流程执行顺序不同,就导致无法连接。

这是 GAP 非常核心的价值:

统一基本概念、基本名称、基本流程,减少厂商差异导致的互通问题。

例如:

A 厂商 App 里叫“配对”;
B 厂商 App 里叫“绑定”;
C 厂商 App 里叫“连接设备”;
D 厂商 App 里叫“添加设备”。

如果底层都是蓝牙通用流程,那么不应该因为 UI 名称不同就影响互通。

再比如:

某个厂商先扫描再过滤;
另一个厂商先按地址过滤再连接;
某个厂商先读设备名;
另一个厂商先发现服务。

只要它们遵循蓝牙规范的通用流程,就不应该因为这些实现差异导致基本连接能力不可用。


三、2.4 Profile fundamentals 想表达什么?

这一节标题是:

Profile fundamentals Profile 基础原则 / 基础内容

它是在总结:

GAP 这个 Profile 到底定义了哪些基础能力。

它主要说了 5 类内容。


四、2.4 的关键信息

关键点 1:GAP 定义用户界面层面的名称、值和编码方案

原文说:

This profile states the requirements on names, values and coding schemes used for names of parameters and procedures experienced on the user interface level.

意思是:

GAP 会规定用户界面层面能感知到的参数名、流程名、取值和编码方式。

简单说:

GAP 规范会影响用户看到的一些蓝牙信息应该怎么表达。

比如:

Device Name:设备名称 Appearance:设备外观类型 Class of Device:设备类别,经典蓝牙中更常见 Discoverable:是否可发现 Connectable:是否可连接 Bonding:绑定 Pairing:配对

对于你做 App 来说,这点很现实。

比如 App 扫描到一个 BLE 设备后,显示:

设备名称 设备地址 设备类型 广播数据 是否可连接 RSSI Appearance Service UUID Manufacturer Data

其中有些信息就和 GAP/GATT 的通用定义有关。


关键点 2:GAP 定义非具体业务 Profile 的通用操作模式

原文说:

This profile defines modes of operation that are not service- or profile-specific, but that are generic and can be used by profiles referring to this profile, and by devices implementing multiple profiles.

意思是:

GAP 定义的是一些不属于某个具体 Service 或具体 Profile 的通用操作模式。

也就是说:

GAP 是通用基础层,不是某个业务 Profile。

比如:

GAP 不是专门服务于心率设备;
GAP 不是专门服务于 HID 键盘;
GAP 不是专门服务于蓝牙音频;
GAP 不是专门服务于你公司的 BLE 透传模块。

它定义的是所有这些场景都可能用到的通用行为:

发现 广播 扫描 连接 安全 绑定 设备名称 设备身份 基本能力暴露

所以很多其他 Profile 会引用 GAP。


关键点 3:GAP 定义发现其他设备身份、名称和基础能力的通用流程

原文说:

This profile defines the general procedures that can be used for discovering identities, names and basic capabilities of other Bluetooth devices that are in a mode where they can be discovered.

意思是:

GAP 定义了通用流程,用于发现处于可发现模式下的其他蓝牙设备的:

身份 identities 名称 names 基础能力 basic capabilities

这句话和 BLE 广播、扫描关系很大。

在 BLE 中可以对应理解为:

Peripheral / Broadcaster 通过广播暴露自己;
Observer / Central 通过扫描发现设备;
广播包或扫描响应包中可能携带设备名称、Service UUID、Manufacturer Data 等信息;
连接后还可以进一步读取 GAP Service、GATT Service 获取更多信息。

但原文后面还补了一句:

Only procedures where no channel or connection establishment is used are specified.

意思是:

这里说的发现流程,只规定那些不需要建立 channel 或 connection的流程。

对 BLE 来说,你可以理解为:

GAP 的发现流程重点是连接前的发现,也就是广播和扫描这一类流程。

例如:

扫描广播包 获取设备名称 获取设备地址 识别是否可连接 识别部分服务 UUID 获取广播中的基本能力

这些都可以在未连接的情况下完成。


关键点 4:GAP 定义创建 Bond 的通用流程

原文说:

This profile defines the general procedure for how to create bonds (i.e., dedicated exchange of link keys) between Bluetooth devices.

意思是:

GAP 定义了蓝牙设备之间如何创建 Bond 的通用流程,也就是专门交换链路密钥。

这里要区分几个词:

Pairing:配对 Bonding:绑定 Link Key / Long Term Key:后续重连或加密使用的密钥材料

在 BLE 中,更常见的是:

Pairing:双方完成配对,协商安全参数,生成密钥 Bonding:把密钥保存下来,以后重连可以复用

你可以先这样理解:

Pairing 更像是一次安全协商过程,Bonding 更强调把配对结果保存下来,形成长期关系。

比如:

手机第一次连接 BLE 设备时弹出配对;
配对成功后保存密钥;
下次连接时不再弹窗,直接加密通信;
这就是 bonding 的实际价值。

不过 GAP 这里只是说它会定义 general procedure。具体加密、密钥分发、配对方法,还要结合 SMP 去看。


关键点 5:GAP 定义建立连接的通用流程

原文说:

This profile describes the general procedures that can be used for establishing connections to other Bluetooth devices that are in a mode that allows them to accept connections and service requests.

意思是:

GAP 描述了通用流程,用于和那些处于“允许接受连接和服务请求”模式下的设备建立连接。

在 BLE 中,就是:

Peripheral 进入可连接广播模式 Central 扫描到目标设备 Central 发起连接建立 Peripheral 接受连接 连接成功后双方进入连接态

这里对应之前看的很多 HCI Command:

Peripheral 侧: LE Set Advertising Parameters LE Set Advertising Data LE Set Scan Response Data LE Set Advertising Enable Central 侧: LE Set Scan Parameters LE Set Scan Enable LE Create Connection / LE Extended Create Connection

也对应 Link Layer 空口上的过程:

ADV_IND / 可连接广播 SCAN_REQ / SCAN_RSP,如果是可扫描广播 CONNECT_IND / AUX_CONNECT_REQ,取决于 legacy / extended advertising 连接建立后进入 connection events

所以 GAP 的连接流程是“规则层”,HCI 和 Link Layer 是“实现层”。


五、2.5 This section is no longer used

这一节写的是:

This section is no longer used

意思是:

这一节已经不再使用。

可以直接跳过。

它通常是规范版本历史演进留下来的空章节,不需要学习。


六、这一部分最关键的信息总结

你可以重点记住下面 5 点。

1. GAP 的目标之一是保证用户层面的基本互通体验

不同厂商设备不能因为名称不同、流程顺序略有差异,就导致原本应该能互通的蓝牙功能无法使用。


2. GAP 不是业务 Profile,而是通用基础 Profile

它不专属于某个业务场景,而是给其他 Profile 提供基础能力。

例如:

发现设备 识别设备 建立连接 创建绑定 处理安全 统一用户可见参数

3. GAP 发现流程重点是连接前发现

尤其对 BLE 来说,重点就是:

广播 Advertising 扫描 Scanning 扫描响应 Scan Response 可发现模式 Discoverable Mode 观察流程 Observation Procedure 发现流程 Discovery Procedure

这部分一般不依赖连接建立。


4. GAP 也关心 Bonding

也就是设备之间建立长期信任关系。

但你刚开始学时,不需要马上深入安全算法和密钥细节。先知道:

GAP 会定义绑定流程的通用规则 SMP 负责更底层的配对、密钥分发、安全机制

5. GAP 也定义连接建立的通用流程

这对 BLE 很关键:

Peripheral:进入可连接模式,等待连接 Central:发现目标设备,发起连接

这就是后面学习 LE connection establishment procedures 的基础。


七、结合 BLE 学习路线,这里应该怎么学?

现在读到这里,可以把 GAP 的学习主线整理成下面这样:

第一层:用户体验目标 不同厂商设备应该能被发现、识别、连接,不能因为名称和流程差异造成互通障碍。 第二层:GAP 通用能力 发现设备、识别设备、建立连接、创建绑定、安全流程、用户可见参数。 第三层:LE 角色 Broadcaster、Observer、Peripheral、Central。 第四层:LE 行为流程 广播、扫描、发现、连接建立、连接后的安全和服务请求。 第五层:落地到 HCI / Link Layer HCI Command 控制 Controller; Link Layer PDU 在空口上传输; GAP 定义上层规则和流程。

八、你现在最应该关注的内容

当前目标是理解 LE,所以这部分中最有价值的是:

发现 identities / names / basic capabilities 创建 bonds 建立 connections

对应到 BLE 学习就是:

广播包里能暴露什么信息? 扫描响应有什么作用? 设备名称从哪里来? 什么时候算可发现? 什么时候算可连接? Central 如何发现并连接 Peripheral? Pairing 和 Bonding 有什么区别? 连接后服务请求和安全要求有什么关系?

这些问题会贯穿后面的 LE GAP 章节。


九、一句话总结

这部分的核心意思是:

GAP 的目标是保证不同厂商蓝牙设备在用户层面具备基本互通体验;它定义的不是某个具体业务功能,而是蓝牙设备发现、身份/名称/基础能力识别、绑定、安全和连接建立等通用流程。对 BLE 来说,这部分是在为后面的广播、扫描、发现流程、连接建立流程和绑定流程打基础。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 15:52:15

DOPE-PEG-COOH 详解:用于抑制纳米粒子非特异吸附的功能化磷脂

一、三段式分子协同结构,从根源降低载体无差别富集1. DOPE 不饱和疏水双链(核心膜融合单元) ① 分子含 C18:1 油酸不饱和双键,相变温度极低,脂质体进入tumor酸性内体后可快速形成六角相结构,打通膜屏障&…

作者头像 李华
网站建设 2026/7/1 15:52:01

终极AMD Ryzen调试工具:SMUDebugTool完全指南

终极AMD Ryzen调试工具:SMUDebugTool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/7/1 15:51:40

AIGC浪潮已至,西安打工人如何搭上这趟“技能快车”?

2026年,如果你还觉得AIGC只是科技圈的热词,那你可能已经站在了被时代抛下的边缘。 从短视频的AI特效,到爆款微短剧的智能生成,再到商业海报的瞬间出图——AIGC(人工智能生成内容)已不再是锦上添花的“炫技”…

作者头像 李华
网站建设 2026/7/1 15:47:03

科技查新报告在哪里查?官方验真渠道

现在在做科研、报项目、评职称的小伙伴们, 大概率都被科技查新报告难住过叭! 尤其是零基础的科研小白,经常会纠结科技查新报告去哪查才合规? 以及拿到的查新报告怎么进行官方验真才能避免无效作废的问题! 今天我就彻…

作者头像 李华