蓝牙协议栈分为三部分,从下到上分别为控制器(Controller)→主机(Host)→应用(Applications)。
控制器:它是协议栈的底层的实现,直接与硬件相关,一般直接集成在 SoC 中,由芯片厂商实现,包括物理层和链路层。
主机:这是协议栈的上层实现,是硬件的抽象,与具体的硬件和厂家无关。
应用层:就是使用 Host 层提供的 API,开发的应用。
控制层
物理层:蓝牙工作在2.4GHz附近,把频段分为40个通道,3个广播通道,37个数据通道,按照一定规律跳频通信(高斯频移键控 GFSK)
HCI(Host Controller Interface):主机和控制器之间通过HCI命令和事件交互。这是蓝牙上层应用和芯片的交互的必经之路,
这一层的 Log,能够很好的帮助我们分析和调试问题。
主机
- 属性协议(Attribute Protocol ATT):BLE通信的基础,ATT把数据封装,向外暴露为“属性”,提供“属性”的为服务端,获取“属性”的为客户端。ATT是专门为低功耗蓝牙设计的,结构非常简单,数据长度很短。