Fuchsia 蓝牙系统旨在为 蓝牙主机子系统版本 4.2 和 5.0 及更高版本。这包括
用于开发蓝牙低功耗蓝牙应用的框架, 外围设备、广播器和扫描程序角色。
用于构建 LE 和具有 高吞吐量要求
用于构建供应商专用 HCI 驱动程序以支持多种多样的 DDK Surface 蓝牙控制器和通用传输驱动程序。
将系统与通用政策与管理相集成的服务 访问个人资料。
设备堆栈
作为层次结构在系统 surface 上的蓝牙控制器 设备。在 x86 平台上,此层次结构可能如下所示:
[pci] pid=1633 /boot/driver/bus-acpi.so
[00:14.0] pid=1633 /boot/driver/bus-pci.so
<00:14.0> pid=2179 /boot/driver/bus-pci.proxy.so
[xhci] pid=2179 /boot/driver/xhci.so
[usb] pid=2179 /boot/driver/usb-bus.so
[005] pid=2179 /boot/driver/usb-bus.so
[ifc-000] pid=2179 /boot/driver/usb-bus.so
[bt_transport_usb] pid=2179 /boot/driver/bt-transport-usb.so
[bthci-passthrough] pid=2179 /system/driver/bthci-passthrough.so
[bt-host] pid=2179 /system/driver/bthost.so
HCI
通用 HCI 传输功能由 bt-transport
协议提供。
Fuchsia 提供通过
USB
和 UART。
传输协议将 HCI 控件、ACL 和 SCO 抽象化
频道(目前称为 Zircon 频道)。
传输驱动程序发布 bt 传输设备(例如 /dev/class/bt-transport/000
)。
这些设备中的每一个都仅代表传输,而不是初始化的
蓝牙控制器,因为大多数蓝牙控制器都需要供应商专用协议
(例如,加载固件)。该逻辑由供应商 HCI 实现
绑定至 bt-transport 设备的驱动程序。
供应商驱动程序可以访问 HCI 事务的 bt-transport 协议,
以及传输设备支持的其他底层协议。在
蓝牙控制器已初始化,可供主机子系统使用,
供应商驱动程序发布 bt-hci
设备。
系统提供绑定到 bt-transport 的 bthci-passthrough
驱动程序
未被任何供应商专用驱动程序声明的设备。双向直通
只发布 bt-hci 设备,而不进行特殊的初始化。
主机
bthost
驱动程序实现核心蓝牙协议,这些协议构成
通用访问配置文件。bthost 绑定到 bt-hci 设备并发布 bt-host
设备。BT 主机设备声明底层的 HCI 控制和数据端点
bt-hci
,并实现:
- GAP 双模式核心簿记
- 对核心服务的 FIDL 消息的处理方式
- L2CAP 和固定信道协议(GATT、SMP、SDP)
- 配对协议和委托
- 其他类型的 IPC(例如 L2CAP 套接字)
- 作为设备驱动程序实现的服务的子设备的总线协议
主机设备由 蓝牙系统服务。 对于指定的 。该 bt 主机表示为“活动适配器”。 host_watcher.fidl 提供了 当有多个适配器时,用于管理接口来指定活动适配器 存在。
bt-host 设备会实现 host.fidl 与蓝牙系统服务进行通信。
主机总线
TODO(armansito):子设备
服务
蓝牙环境服务是实现蓝牙的主要方式 服务和应用
Sys FIDL 库是 适用于特权客户端,适用于设备级控制/政策。
TODO:描述其他服务