Fuchsia 藍牙系統旨在提供雙模式, 藍牙主機子系統 4.2 和 5.0 以上版本。這包括
用於集中開發藍牙低功耗應用程式的架構 週邊裝置、廣播器和掃描器角色
用於建構 LE 和傳統服務驅動程式的 DDK 介面, 最高處理量需求
用來建構供應商專屬 HCI 驅動程式,以支援各種範圍的 DDK 介面 以及一般傳輸驅動程式
政策和管理服務,可整合系統與一般類別 存取設定檔。
裝置堆疊
系統表面上的藍牙控制器是 裝置。在 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 提供實作 HCI 傳輸的司機
USB
和 UART。
此傳輸通訊協定會抽象化 HCI 控管機制、ACL 和 SCO
管道 (目前為 Zircon 頻道)。
傳輸驅動程式庫發布 bt 傳輸裝置 (例如 /dev/class/bt-transport/000
)。
下列每部裝置都僅代表傳輸,而非初始化
藍牙控制器,因為大多數藍牙控制器都需要廠商專用的通訊協定
(例如載入韌體)。這個邏輯是由廠商 HCI 實作
繫結至 bt 傳輸裝置的驅動程式。
供應商驅動程式可存取 HCI 交易的 bt 傳輸通訊協定,如
以及傳輸裝置支援的其他基礎通訊協定我們
藍牙控制器已初始化,可供主機子系統使用。
廠商驅動程式庫發布了 bt-hci
裝置。
系統提供 bthci-passthrough
驅動程式庫,該驅動程式會繫結至 bt 傳輸
裝置,並未由任何供應商專屬驅動程式庫聲明擁有權。bthci-passthrough
只是發布 bt-hci 裝置,不需執行特殊初始化作業。
舉辦派對
bthost
驅動程式庫會實作核心藍牙通訊協定,在
一般存取設定檔。bthost 繫結至 bt-hci 裝置,並發布 bt-host
裝置。根主機裝置認領基礎的 HCI 控制和資料端點
bt-hci
,並實作:
- 核心雙模式 GAP 記帳
- 處理核心服務的 FIDL 訊息
- L2CAP 和固定管道通訊協定 (GATT、SMP、SDP)
- 配對通訊協定和委派
- 其他類型的 IPC (例如 L2CAP 通訊端)
- 針對實作為裝置驅動程式的服務,適用於子裝置的 Bus 通訊協定
主機裝置是由 藍牙系統服務。 這項服務只允許針對特定的 bt-host 服務要求存取 讓應用程式從可以最快做出回應的位置 回應使用者要求此 bt-host 會表示為「主動轉接器」。 host_watcher.fidl 提供 透過管理介面在多個轉接程式執行時指定有效轉接程式 。
bt 主機裝置會實作 host.fidl 與藍牙系統服務通訊
主機匯流排
TODO(armansito):孩童裝置
服務
藍牙環境服務是實作藍牙的主要方式 服務與應用程式
Sys FIDL 程式庫是 適用於具有特殊權限的用戶端,用於裝置層級的控制/政策。
任務:說明其他服務