蓝牙协议栈的各层功能简述
一般来说,我们把某个协议的实现代码称为协议栈(protocol stack),蓝牙协议栈就是实现低功耗蓝牙协议的代码,理解和掌握蓝牙协议是实现蓝牙协议栈的前提。蓝牙协议栈分为:应用层、主协议层、控制层。
1.控制层
PHY:物理层,主要负责指定BLE的无线频段,调制解调方式和方法等。直接决定了BLE芯片的功耗灵敏度。
LL:链路层(协议栈核心),此层为RF控制器,用于控制设备的射频状态,控制设备会处于5种状态之一:standby(准备)、advertising(广播)、scanning(信道监听/扫描),initiating(发起连接)、connected(已连接) 。五种状态的切换描述为:advertising(广播)不需要连接就可以发送数据(告诉所有人,我来了);
scanning(监听/扫描)来自广播的数据;initiator(发起人)将携带 connection request(连接请求)来响应广播者,如advertiser(广播者)同意该请求, 那么广播这和发起者都会进入已连接状态, 发起连接的设备变为 master(主机),接收连接请求的设备变为 slave(从机)。
HCI:主机控制接口(可选),规范两颗芯片之间的通信协议和通信命令。这一层可以通过软件API或硬件接口实现,例如UART、SPI、USB。
2.主协议层
GAP:通用访问配置文件层(Generic Access Profile):是直接与应用程序或配置文件(profiles)通信的接口,处理设备发现和连接相关服务,另外还处理安全特性的初始化。对上级提供应用程序接口,对下级管理各级智能部门,尤其是指示LL层控制器5种状态切换。GAP目前主要用来进行广播,扫描和发起连接等。
L2CAP:逻辑链路控制和适应协议,对LL进行封装,LL层至区分传输数据本身,L2CAP关心是否是加密通道或是普通通道,管理连接间隔。
SMP:安全管理协议,管理BLE加密和安全。定义了配对和密钥分配方式。并为协议栈的其它层和其它设备之间的安全连接和交换数据提供服务。
ATT:属性协议,定义用户命令和命令操作的数据变量。ATT用来描述一条条的数据。
GATT:通用属性协议层,许设备向其它设备展示一块特定的数据,称之为“属性(attribute)”。在ATT环境中,展示“属性”的设备称之为服务器,与之配对的设备称之为客户端。链路层状态(主机和从机)与设备的ATT角色是相互独立的。例如,主机设备既可以是ATT服务器,也可以是ATT客户端。从机设备可以是ATT客户端,也可以是ATT服务端。
3.应用层
包括SIG蓝牙协议小组定义的公有任务和用户自定义的私有任务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?