news 2026/7/1 17:59:55

GAP规范【1. Foreword】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GAP规范【1. Foreword】

第 C 部分:通用访问规范 / 通用访问配置文件 / GAP

这个 Profile 定义了与发现 Bluetooth 设备相关的通用流程,也就是空闲模式流程(idle mode procedures;同时也定义了与连接 Bluetooth 设备时的链路管理相关的流程,也就是连接模式流程(connecting mode procedures

它还定义了在不同安全等级下使用 Bluetooth 设备时的相关流程。

另外,这个 Profile 还包含了一些通用的格式要求,这些要求主要用于用户界面层面可访问的参数。

不得不说,GAP层面开始上概念了。定义了很多的概念,后面将围绕这些概念进行理论。


先把蓝牙 LE 协议栈的架构图看一遍:

用更容易理解的话说:

GAP 主要不是讲“数据怎么收发”,而是讲一个蓝牙设备如何被发现、如何去发现别人、如何建立连接、连接过程中如何管理角色和安全,以及设备名称、外观、地址、广播行为等这些用户能感知到的通用规则。


建议重点注意这几件事:

1. GAP 不是 GATT,不要混在一起

很多刚开始学 BLE 的人会把 GAP 和 GATT 混在一起。

可以先这样区分:

GAP:解决“设备怎么被发现、怎么连接、谁连接谁、安全等级怎么处理”等问题。

GATT:解决“连接之后,数据怎么组织、怎么读写、怎么通知”等问题。

比如:

设备广播出来叫什么名字、是否可连接、是否可扫描、使用什么地址、中心设备怎么扫描、怎么发起连接,这些更偏 GAP。

连接成功后,App 去发现 Service、Characteristic,然后 Read、Write、Notify,这些更偏 GATT。


2. 重点理解两个模式:Idle Mode 和 Connecting Mode

截图里提到了两个关键词:

idle mode procedures:空闲模式流程

可以理解为:设备还没有建立连接时的一系列行为。

例如:

设备如何广播、如何被发现、中心设备如何扫描、如何发现周围设备。

connecting mode procedures:连接模式流程

可以理解为:设备准备建立连接,或者已经进入连接相关管理阶段时的行为。

例如:

谁作为 Central,谁作为 Peripheral,如何发起连接,连接参数怎么管理,断开连接后状态如何变化。

所以学习 GAP 时,不要只盯着“广播”一个点,而是要把它放进完整流程里看:

广播 → 扫描 → 发现设备 → 发起连接 → 建立连接 → 连接管理 → 安全处理


这段话是 GAP 规范开头的 Foreword / 前言,它主要想表达的是:

蓝牙 Profile 的目的,是让不同厂商做出来的蓝牙设备,在同一个使用场景下能够互相兼容、正常协作。

逐段翻译如下:

1. Foreword

1. 前言

如果来自不同制造商的设备都遵循 Bluetooth SIG 定义的某个 Profile 规范,那么这些设备就可以在某个特定服务和使用场景下实现互操作。

一个 Profile 会从 Bluetooth SIG 的规范中选择一组消息和流程,这些通常被称为capabilities,能力集合。然后 Profile 会描述:在指定的服务和使用场景下,蓝牙空中接口应该如何工作。

某个功能到底是必须支持,还是可选支持,会分别针对蓝牙空中接口两端的设备单独说明。


换成更容易理解的话:

Profile 不是从零定义一套蓝牙协议,而是从蓝牙核心规范里挑选出某些功能、消息、流程,然后规定在某个具体场景下应该怎么用。

比如两个不同厂商的蓝牙设备:

一个是 A 厂商的蓝牙模块,
一个是 B 厂商的手机 App,
只要它们都按照同一个 Profile 的要求实现,那么它们就应该能够互相发现、连接、通信,达到兼容的目的。


这里有几个重点:

1. Interoperability:互操作性 / 兼容性

这句话的核心是:

Profile 的价值就是保证不同厂商设备之间可以配合工作。

否则每个厂商都按自己的理解实现蓝牙功能,就会出现:

A 手机能连,B 手机不能连;
A 模块能被扫描到,B 模块扫描不到;
某个功能在一个平台可用,另一个平台不可用。

Profile 就是为了减少这种混乱。


2. Profile 是面向“具体场景”的

文中说:

for a specific service and use case

意思是:

Profile 通常不是泛泛地描述所有蓝牙行为,而是面向某个具体服务或使用场景。

比如:

GAP:设备发现、连接、访问、安全等通用流程。
GATT:基于 Attribute 的数据组织和访问。
HID over GATT:蓝牙键盘、鼠标这类 HID 设备。
Heart Rate Profile:心率设备。
Battery Service:电池电量服务。

所以 Profile 更像是:

为了某个应用场景,把蓝牙核心规范里的能力组合起来,并规定怎么使用。


3. capabilities:能力集合

这里的 capabilities 可以理解为:

Profile 规定设备需要具备哪些蓝牙能力。

这些能力可能包括:

广播能力;
扫描能力;
连接能力;
发现服务的能力;
读写特征值的能力;
加密、认证、绑定能力;
某些固定格式的数据结构。

不是所有蓝牙设备都要支持所有能力,而是看它属于哪个 Profile、扮演什么角色、用于什么场景。


4. mandatory 和 optional 要分两端看

最后一句很重要:

某个功能是强制的还是可选的,会分别针对蓝牙空中接口的两端来说明。

也就是说,同一个功能,对于不同角色可能要求不一样。

比如在一个 Profile 里:

Peripheral 端必须支持某个服务;
Central 端必须能够发现这个服务;
Peripheral 端必须支持 Notify;
Central 端可能只是可选支持某个配置流程。

所以学习 Profile 时,不能只看“这个功能是不是 mandatory”,还要看:

是对哪一端 mandatory?是 Central 端?Peripheral 端?Client 端?Server 端?

这点非常关键。


这部分是1.1 Scope / 范围,它在说明:

GAP 这份规范到底管什么、不管什么,以及它适用于哪些蓝牙实现类型。

可以把它理解为 GAP 规范的“学习边界说明”。


一、这部分整体想表达什么?

这一节主要表达 4 件事:

1. GAP 要定义一些通用概念、建议和要求

原文意思是:

GAP 的目的之一,是引入一些定义、建议和通用要求,这些内容和蓝牙设备的模式 mode访问流程 access procedure有关,并且这些内容会被传输层 Profile 和应用层 Profile 使用。

换句话说:

GAP 是很多其他 Profile 的基础。

比如后面你学 GATT、HID over GATT、Heart Rate Profile、Battery Service 等,它们都会依赖 GAP 里定义的一些通用概念。

例如:

设备什么时候可以被发现;
设备什么时候可以被连接;
Central 和 Peripheral 如何建立连接;
设备名称怎么暴露;
安全等级怎么要求;
用户界面上显示的参数如何命名。

这些不是某一个具体业务 Profile 独有的,而是通用规则。


2. GAP 要描述设备在 standby 和 connecting 状态下应该怎么表现

原文说:

GAP 会描述设备在standbyconnecting状态下应该如何行为,以避免蓝牙设备之间无法建立 link/channel,或者影响多 Profile 同时工作的情况。

这句话很关键。

可以理解为:

GAP 不是只讲广播,也不是只讲连接,而是讲设备在“还没连接”和“正在建立连接/连接相关过程”中应该怎么做。

这里提到两个状态:

standby state:待机状态 / 空闲状态

设备还没有建立连接,可能正在等待被发现,或者什么都没做。

在 BLE 里,你可以近似理解为:

Peripheral 可能准备广播;
Central 可能准备扫描;
设备可能还没有进入连接流程;
设备处于未连接的基础状态。

connecting state:连接相关状态

设备正在参与连接建立,或者执行连接相关过程。

例如:

Central 发起连接;
Peripheral 处于可连接广播状态;
链路正在建立;
连接参数、安全流程等开始介入。

所以 GAP 关注的是:

设备在未连接状态下如何被发现,以及在连接建立过程中应该遵守什么规则。


3. GAP 特别关注 discovery、link establishment、security

原文明确说:

Special focus is put on discovery, link establishment and security procedures.

也就是 GAP 特别关注三类流程:

discovery:发现流程

也就是设备怎么被发现、怎么去发现别人。

在 BLE 中对应你熟悉的内容就是:

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

比如:

一个 Peripheral 广播出来,Central 扫描到它,这就属于 discovery 相关内容。


link establishment:链路建立

也就是设备之间如何建立连接。

在 BLE 中大致对应:

Peripheral 进入可连接广播;
Central 扫描到目标设备;
Central 发起连接;
Controller 在 Link Layer 建立连接;
连接成功后进入连接态。

之前文章中的 HCI Command,比如:

LE Set Advertising Parameters
LE Set Advertising Enable
LE Set Scan Parameters
LE Set Scan Enable
LE Create Connection

这些命令在具体实现上和 GAP 的 discovery、link establishment 是能对应起来的。

可以这样理解:

GAP 讲“什么时候该被发现、什么时候可以连接、连接流程应该怎么定义”;HCI Command 是 Controller 层具体执行这些行为的接口。


security procedures:安全流程

也就是安全等级、认证、加密、配对、绑定等相关流程。

不过刚开始学习 GAP 时,不建议马上深挖安全部分。可以先知道:

GAP 会规定在不同场景下,对安全等级有什么要求。

后面再结合 SMP、Pairing、Bonding、Privacy、Resolving List、IRK 去深入理解。


4. GAP 还规定用户界面层面的参数命名和编码方式

原文说:

GAP 会说明一些用户界面方面的要求,主要是 procedure 和 parameter 的编码方案、名称等,以提供满意的用户体验。

这句话容易被忽略,但其实很重要。

它说明 GAP 不只是底层链路规则,也包含一些用户能感知到的信息格式。

比如:

设备名称 Device Name;
设备外观 Appearance;
可发现状态;
连接状态;
配对/绑定相关提示;
用户可看到的参数名称。

所以 GAP 某些内容和 App 层也有关。

例如你的 App 扫描设备时看到的:

设备名称;
设备地址;
广播数据;
是否可连接;
设备类型;
外观类型;

这些都可能和 GAP 的用户可见参数有关。


二、表格想表达什么?

表格标题是:

Implementation transport types

意思是:

实现传输类型。

这一节说 GAP 规范根据 Core Configuration 支持情况,把蓝牙实现分成三类:

1. BR/EDR-only

意思是:

只支持传统蓝牙 BR/EDR 的实现。

BR/EDR 是经典蓝牙,也就是常说的 Classic Bluetooth。

典型场景包括:

蓝牙音频;
蓝牙耳机传统音频链路;
SPP 串口;
传统 HID;
文件传输等经典蓝牙场景。

这里不重点涉及 BLE。


2. LE only

意思是:

只支持低功耗蓝牙 LE 的实现。

也就是 BLE-only 设备。

现在主要理解 BLE 广播、扫描、连接、GATT 通信,大部分都属于这个方向。

典型设备包括:

BLE 模块;
传感器;
智能手环;
蓝牙温湿度计;
BLE Beacon;
BLE 透传模块;
低功耗 IoT 设备。


3. BR/EDR/LE

意思是:

同时支持经典蓝牙和低功耗蓝牙的双模设备。

比如手机通常就是这种类型:

既支持经典蓝牙音频;
也支持 BLE 扫描、连接、GATT 通信。

很多蓝牙芯片也可能是双模芯片。

这类设备既能处理 Classic Bluetooth,也能处理 BLE。


三、这一节的关键信息

你学习 GAP 时,最需要抓住这些重点:

关键点 1:GAP 是基础 Profile

GAP 不是一个具体业务功能,而是蓝牙设备访问、发现、连接、安全等通用行为的基础规范。

它会被其他 Profile 使用。

所以学习 BLE 时,GAP 是很值得优先理解的。


关键点 2:GAP 重点不是“怎么传业务数据”

GAP 重点不是告诉你怎么 Read、Write、Notify。

那些更偏 GATT。

GAP 重点是:

设备如何被发现;
设备如何发起发现;
设备如何进入可连接状态;
设备如何建立连接;
设备如何处理安全等级;
设备名称、外观等用户可见信息如何表达。


关键点 3:GAP 特别关注三个流程

这三个词可以作你学习 GAP 的主线:

Discovery:发现

对应 BLE 广播和扫描。

Link Establishment:链路建立

对应 BLE 连接建立过程。

Security:安全

对应配对、绑定、加密、安全等级等。

可以先按这个顺序学:

发现流程 → 连接建立流程 → 安全流程


关键点 4:要区分 BR/EDR 和 LE

这份 GAP 规范不是只服务 BLE,它同时覆盖三类实现:

BR/EDR-only;
LE only;
BR/EDR/LE。

现在如果主要研究 BLE,那么阅读时要特别关注和LE相关的部分。

看到 BR/EDR-only 的内容,可以先不用深挖。

否则很容易被经典蓝牙的概念带偏。


关键点 5:GAP 会和 HCI Command 对应,但不是一回事

GAP 是规则和流程。

HCI Command 是具体控制命令。

比如 GAP 里讲:

设备进入可发现模式;
设备进入可连接模式;
Central 执行发现流程;
Central 执行连接建立流程。

落到 HCI 层,可能就会对应:

LE Set Advertising Parameters;
LE Set Advertising Data;
LE Set Scan Response Data;
LE Set Advertising Enable;
LE Set Scan Parameters;
LE Set Scan Enable;
LE Create Connection。

所以后面学习时,可以不断问:

GAP 这里讲的是哪种行为?这个行为在 HCI 层可能对应哪些 Command?在 Link Layer 空口上又会表现成什么包?

这样学习会非常清晰。


这部分内容其实不是在讲 GAP 的核心业务流程,而是在讲阅读 GAP 规范时要遵守的“符号说明、图示约定、命名规则,以及哪些章节适用于哪些蓝牙配置”

可以把它理解为:

这几节是在告诉你:后面看到流程图、定时器、UUID、章节适用范围时,应该怎么读。


一、1.2 Symbols and conventions 想表达什么?

1.2 Symbols and conventions

1.2 符号和约定

这一节是规范的“阅读说明”。

它主要说明:

后面 GAP 规范中会出现一些流程图、箭头、定时器、UUID 表示法。为了避免误解,规范先统一说明这些符号分别是什么意思。

这部分不是 GAP 的技术重点,但它会影响你后面读流程图时是否读得懂。


二、1.2.1 This section is no longer used

这一节写的是:

This section is no longer used

意思是:

这一节已经不再使用。

你学习时可以直接跳过,不需要纠结。

这通常是规范版本演进过程中保留下来的占位说明。也就是说,旧版本可能这里有内容,新版本里已经废弃了,但章节编号为了兼容历史结构仍然保留。


三、1.2.2 Signaling diagram conventions 想表达什么?

这一节最重要。

它是在说明:

后面 GAP 规范中的流程图,箭头应该怎么理解。

图中有两个实体:

A B | | | |

A 和 B 可以理解为蓝牙空中接口的两端设备。

在不同场景下,A/B 可能代表:

Central 和 Peripheral;
Observer 和 Broadcaster;
Initiator 和 Advertiser;
Client 和 Server;
或者其他参与流程的两端。

关键不是 A/B 的名字,而是看箭头方向和线型。


四、流程图中的 PROC 和 MSG 有什么区别?

图中出现了两类标识:

PROC1 / PROC2 / PROC3 / PROC4 / PROC5 MSG1 / MSG2 / MSG3

它们不是一回事。

1. PROC 表示 procedure,流程 / 子流程

PROC 不是单个数据包,也不一定是单条消息。

它表示一个procedure,也就是一个流程或子流程。

一个 procedure 里面可能包含多个动作,比如:

开始广播;
开始扫描;
发起连接;
执行发现流程;
执行配对流程;
建立安全连接;
更新参数。

所以你看到 PROC 时,不要把它简单理解成“发了一包数据”。

它更像是:

某一方启动了一个流程。


2. MSG 表示 message,消息

MSG 更偏向“单条消息”。

比如:

A 向 B 发送一条消息;
B 向 A 发送一条消息;
某条消息是可选的。

在协议流程图中,MSG 通常比 PROC 更具体。

可以这样理解:

PROC = 一个流程 MSG = 流程中的一条消息

五、图中的各种箭头具体是什么意思?

1. PROC1:B 发起的子流程

图中 PROC1 的箭头是从 B 指向 A。

意思是:

PROC1 是由 B 发起的一个子流程。

也就是说,流程的发起方是 B,影响对象是 A。

例如在 BLE 中,某些场景下可以类比为:

Central 发起扫描请求;
Central 发起连接请求;
Client 发起某个访问流程。

当然具体要看后文上下文,不能固定认为 B 一定是 Central。


2. PROC2:A 发起的子流程

PROC2 的箭头是从 A 指向 B。

意思是:

PROC2 是由 A 发起的一个子流程。

比如可以类比为:

Peripheral 进入广播流程;
某一端发起安全请求;
某一端发起连接参数更新相关流程。

重点是看箭头方向:

A ----PROC2----> B

表示 A 是主动发起方。


3. PROC3:发起方未定义的子流程

PROC3 是双向实线箭头。

原文说:

PROC3 is a sub-procedure where the initiating side is undefined, may be both A or B.

意思是:

PROC3 是一个发起方未定义的子流程,可能由 A 发起,也可能由 B 发起。

这类流程表示规范不限定一定由哪一端开始。

比如有些流程可能双方都可以触发:

安全流程;
某些连接管理流程;
某些状态变化流程。

你看到这种双向箭头时,要理解为:

这个流程不是固定由某一边发起,A 和 B 都有可能是发起方。


4. 虚线箭头表示 optional,可选步骤

原文说:

Dashed arrows denote optional steps.

也就是:

虚线箭头表示可选步骤。

这点非常重要。

在规范里,实线和虚线的含义不同:

实线:通常表示必需流程或标准流程 虚线:表示可选流程或可选消息

如果你后面看 GAP 流程图时看到虚线,不要以为它一定会发生。

它只是说:

在某些条件下可以发生,但不是所有实现都必须执行。


5. PROC4:A 发起的可选子流程

PROC4 是从 A 指向 B 的虚线箭头。

意思是:

PROC4 表示由 A 发起的可选子流程。

也就是:

A - - - PROC4 - - -> B

含义是:

A 可以发起这个流程,但不是强制必须发起。


6. PROC5:B 发起的可选子流程

PROC5 是从 B 指向 A 的虚线箭头。

意思是:

PROC5 表示由 B 发起的可选子流程。

也就是:

A <- - - PROC5 - - - B

含义是:

B 可以发起这个流程,但这个流程是可选的。


7. MSG1:B 发给 A 的消息

MSG1 的箭头方向是从 B 到 A。

意思是:

MSG1 是 B 发送给 A 的消息。

注意,这里是 message,不是 procedure。

所以它更强调一次具体的消息传递。


8. MSG2:A 发给 B 的消息

MSG2 的箭头方向是从 A 到 B。

意思是:

MSG2 是 A 发送给 B 的消息。


9. MSG3:A 发给 B 的可选消息

MSG3 是从 A 到 B 的虚线消息箭头。

意思是:

MSG3 表示 A 发给 B 的可选消息。

也就是说,这条消息不一定出现。


这一节最重要的学习点是:

不要把流程图里的箭头都理解成“空口包”

这是你学习 BLE 时特别要注意的一点。

因为你之前一直在看 HCI Command、Advertising PDU、Scan Request、Connect Indication 这些内容,很容易看到箭头就下意识理解为“发了一个包”。

但在 GAP 规范里:

PROC 箭头不一定是一个具体空口包。

它可能只是表示:

某一方启动了某个流程;
某个过程由谁发起;
某个过程是否可选;
某个过程涉及两端交互。

只有 MSG 才更接近“消息”的概念,但也不一定等价于你在 Link Layer 里看到的某一个 PDU。具体还要结合上下文。

你可以这样记:

GAP 流程图中的箭头 = 规范层面的流程/消息方向 Link Layer PDU = 空口上的具体包 HCI Command = Host 控制 Controller 的具体命令

这三者不能直接画等号。


七、1.2.3 Notation for timers and counters 想表达什么?

这一节是在说 GAP 里定时器的命名规则。

原文意思是:

GAP 这个 Profile 会引入一些专属于 GAP 的定时器。为了把这些定时器和 Bluetooth 协议规范、其他 Profile 中的定时器区分开,GAP 中的定时器会使用下面这种命名格式:

T_GAP(nnn)

其中nnn表示具体编号或名称。

你可以理解为:

凡是看到 T_GAP(...),就知道这是 GAP 规范里定义的定时器。

例如后面如果看到类似:

T_GAP(100) T_GAP(conn) T_GAP(...)

你就知道它不是 Link Layer 定时器,也不是 HCI 的超时参数,而是 GAP 这个 Profile 层定义的一个计时要求。

学习时注意:

GAP 定时器更多是 Profile 层面的行为约束,不要直接等同于 Controller 内部的硬件定时器。


八、1.2.4 Notation for UUIDs 想表达什么?

这一节是在说 UUID 的表示规则。

原文说:

The use of « »,例如 «Device Name»,表示 Bluetooth SIG 定义的 UUID。

也就是说:

当你在规范中看到这种格式:

«Device Name» «Appearance» «Peripheral Preferred Connection Parameters»

它表示的是:

这是 Bluetooth SIG 已经定义好的 UUID 对应的名称。

例如:

«Device Name»

不是普通文字,而是指 GAP Service 里面的 Device Name Characteristic。

在 BLE GATT 里,很多标准服务和特征都是 Bluetooth SIG 定义的 UUID。

比如:

Generic Access Service Device Name Appearance Peripheral Preferred Connection Parameters Central Address Resolution

这些都有 SIG 分配的 UUID。

所以你看到«Device Name»,应该理解为:

这是一个标准蓝牙 UUID 对应的规范名称,不是厂商自定义字段。


九、1.3 GAP requirements 想表达什么?

这一节是在说明:

不同 Core Configuration,需要阅读和遵守 GAP 的不同章节。

表格是关键。

它把蓝牙核心配置分成三类:

BR/EDR LE BR/EDR/LE

然后说明每类配置适用哪些 GAP 章节。


十、表 1.2 的核心含义

1. BR/EDR 设备适用哪些章节?

表格中写的是:

BR/EDR:1 to 8, 12, 15 to 17, Appendices A and B

意思是:

如果设备只实现经典蓝牙 BR/EDR,那么 GAP 中适用于它的章节是:

第 1 到第 8 章;
第 12 章;
第 15 到第 17 章;
附录 A 和 B。

如果现在主要学 BLE,这一行不是重点。


2. LE 设备适用哪些章节?

表格中写的是:

LE:1 to 3, 9 to 12, 15 to 17, Appendices A and B

这最重要。

意思是:

如果设备是 LE-only,也就是只支持 BLE,那么 GAP 中适用于它的章节是:

第 1 到第 3 章;
第 9 到第 12 章;
第 15 到第 17 章;
附录 A 和 B。

后面读 GAP 时,如果主要研究 BLE,可以重点看这些章节。

尤其是:

1 到 3:基础说明、术语、通用要求 9 到 12:LE 相关的 GAP 内容 15 到 17:后续通用要求 Appendix A/B:附录

也就是说,对于 BLE 学习来说,第 9 到第 12 章通常会比第 4 到第 8 章更重要。

因为第 4 到第 8 章更偏 BR/EDR。


3. BR/EDR/LE 双模设备适用哪些章节?

表格中写的是:

BR/EDR/LE:All

意思是:

如果设备同时支持经典蓝牙和低功耗蓝牙,那么 GAP 的所有章节都适用。

例如手机通常就是双模设备。

手机既支持:

经典蓝牙音频、SPP、传统 HID;

也支持:

BLE 广播、扫描、连接、GATT 通信。

所以双模设备需要同时考虑 BR/EDR 和 LE 的 GAP 要求。


十一、这里最关键的信息总结

这部分最关键的信息有 4 个。

关键点 1:流程图箭头不是随便画的

后面看到 GAP 的流程图时,要看清楚:

箭头方向:谁发起、谁发送给谁 实线/虚线:必选还是可选 PROC/MSG:流程还是消息 单向/双向:是否限定发起方

这是读懂 GAP 流程图的基础。


关键点 2:虚线表示 optional

虚线表示可选步骤或可选消息。

这意味着:

看到虚线,不要认为所有设备都会实现;
看到虚线,不要认为每次流程都会出现;
要结合角色、功能支持情况、安全等级、设备配置来判断。


关键点 3:«xxx»表示 Bluetooth SIG 定义的 UUID

比如:

«Device Name»

不是普通字符串,而是标准 UUID 名称。

这对后面理解 GAP Service、Device Name、Appearance 很重要。


关键点 4:主要学 BLE,应重点看 LE 对应章节

从表 1.2 来看,如果现在主要研究 BLE,那么应该重点关注:

1 to 3 9 to 12 15 to 17 Appendices A and B

其中第 9 到第 12 章,是后面最应该投入精力的部分。

第 4 到第 8 章如果主要是 BR/EDR 内容,可以暂时不用深挖。


由于我优先把蓝牙 LE 先掌握清楚,所以后面只拆解:

1 to 3
9 to 12
15 to 17
Appendices A and B

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

GPT-4稀疏激活原理:2%参数如何驱动万亿级大模型高效推理

1. 这个标题到底在说一件什么事&#xff1f;别被数字吓住&#xff0c;先搞懂它的真实含义“GPT-4 Has 1.8 Trillion Parameters. It Uses 2% of Them Per Token.”——这句话最近在技术圈传得挺广&#xff0c;但很多人一看到“1.8万亿参数”就下意识觉得“哇&#xff0c;好大”…

作者头像 李华
网站建设 2026/7/1 17:55:55

Go Eino 框架:从小白到上线,手把手搭建自己的ai模型,基础教学

本文面向 Go 初学者 AI 零基础&#xff0c;从安装环境到跑通一个能查天气、能搜索的智能助手&#xff0c;全程复制粘贴即可运行。 前置准备&#xff08;5 分钟搞定&#xff09; 你需要什么 工具要求怎么检查Go1.21 以上终端输入 go versionAPI KeyOpenAI 或兼容的 API去 pla…

作者头像 李华
网站建设 2026/7/1 17:54:02

竞争存在论:存在的递归语法

存在的递归语法&#xff1a;竞争存在论的元模式统一理论 ——从微观到宇宙的三阶段循环 摘要&#xff1a; 基于竞争存在论的三连续统框架及其向下、向上递归的实例&#xff0c;本文揭示一个贯穿所有层级的存在递归模式。通过分析空间连续统、运动连续统、属性连续统的递归展开&…

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

不过还好,自己还是坚持下来了

关于心态 回顾做这个项目&#xff0c;我觉得心态问题是最重要的&#xff0c;技术问题倒是其次。为什么这么说呢&#xff1f;因为对于10余年的老功能模块来说&#xff0c;其中最复杂的其实是业务逻辑&#xff0c;而并非技术实现。所以对于老系统的重构&#xff0c;你首先需要将…

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

安全触边是什么?主要具有哪些防撞功能与应用?

安全触边是一种专为防撞而设计的系统&#xff0c;广泛应用于工业设备的边缘&#xff0c;如AGV小车和自动门。这种装置依靠感应压力&#xff0c;在遇到人或障碍物时能够立即停止设备运行&#xff0c;进而有效降低碰撞风险。它的核心功能在于触压即停&#xff0c;确保在运行过程中…

作者头像 李华
网站建设 2026/7/1 17:48:11

头疼:要求不高,不去大厂,国央企开发岗就够了

很多985、211的同学&#xff0c;包括不少家长&#xff0c;现在都有一个超级致命的误区&#xff01;不少人过来咨询说&#xff1a;大厂太卷、太拼了&#xff0c;我要求不高&#xff0c;我不想冲互联网大厂&#xff0c;我只求稳一点&#xff0c;能进个大国央企、银行的开发岗&…

作者头像 李华