在本模块中,我们将从架构视角探讨 Linux 系统中的蓝牙技术,以及使用蓝牙的应用程序如何与蓝牙协议栈通信。我们还会梳理可用的编程语言与 API 选项。
Linux 与蓝牙架构
蓝牙低功耗协议栈分为两个主要架构模块,即 “主机(Host)” 与 “控制器(Controller)”。协议栈的结构,以及各层在主机与控制器部分的分布,将在图 1 中展示。
Linux 计算机通常会使用一个名为 BlueZ 的组件,其官方网站将其描述为官方 Linux 蓝牙协议栈。
图 2 展示了蓝牙低功耗协议栈的架构:控制器通常位于芯片之中 —— 该芯片要么是计算机的组成部分(例如树莓派这类设备),要么是集成在外设里(比如 USB 蓝牙适配器)。
在 BlueZ 的文档与代码中,蓝牙控制器被称为 “适配器(adapter)”
主机中的 BlueZ 与控制器中蓝牙协议栈底层之间的通信,是通过一种标准蓝牙接口实现的 —— 该接口被称为主机控制器接口(Host Controller Interf