本文詳細分析Android藍牙協議棧在設備故障時的處理流程。當藍牙設備發生硬件故障或系統異常時,協議棧通過
btm_acl_device_down
觸發多層次的資源清理和狀態重置,包括ACL連接終止、L2CAP通道釋放、SCO連接清理、BLE拓撲更新、設備數據庫重置等關鍵操作,確保系統安全恢復。
一、概述
1.1 藍牙核心控制塊與故障處理框架
藍牙協議棧通過全局控制塊tBTM_CB
實現跨模塊狀態管理,其整合了經典藍牙(BR/EDR)和低功耗藍牙(BLE)的控制邏輯,包含設備信息(devcb
)、連接數據庫(acl_cb_
)、查詢狀態(btm_inq_vars
)等關鍵模塊。當本地設備被判定為故障(如硬件崩潰)時,btm_acl_device_down
函數作為入口,觸發全鏈路的狀態清理流程。
1.2 故障處理核心流程
(1) ACL 連接清理機制
bt