第三章、 Blueg 系統架構設計
3.2 以嵌入訊息有效率建立連線機制
從建立連線流程的觀察中,藍芽搜尋與服務搜尋佔去絕大部分的 時間,為了節省建立連線所花費的時間,我們提出使用有限制的詢問 存取碼 (LIAC) 縮短藍芽回應時間,並利用嵌入服務訊息於 FHS 回應 封包,判斷是否省略服務搜尋步驟。
3.2.1 使用有限制的詢問存取碼
會在一個亂數時間延遲後回應 FHS 封包,在藍芽規格中定義,使用 LIAC 允許有更短的亂數時間延遲,也就是說使用 LIAC 之後,接收到 LIAC 的藍芽裝置將在更短的時間內回應,並提供建立連線的必要資 訊。
通用詢問存取碼 (GIAC) 與有限制的詢問存取碼 (LIAC) 主要 差別在於回應裝置的模式,GIAC 允許所有可發現模式的藍芽裝置回 應,LIAC 只允許有限制的可發現模式 (Limited discoverable mode) 的藍芽裝置回應,參考圖 3-15。一個藍芽裝置在設定成有限制可發 現模式並不影響其正常運作,因為 LIAC 為 GIAC 的子集合,此模式下 仍會對 GIAC 詢問有所回應[6]。
圖 3-15、有限制的詢問存取碼回應示意圖
因為絕大部分的藍芽裝置都設定在通用可發現模式 (General discoverable mode),所以使用 LIAC 除了在藍芽裝置搜尋上會加快 之外,也潛在性的過濾了其它設備 (例如:藍芽耳機、藍芽滑鼠),
減少其它一般性藍芽設備所造成的干擾。
3.2.2 嵌入服務訊息
在前述章節提到藍芽裝置被搜尋到時,會回應 FHS 封包,封包中 含有建立連線的訊息,其中裝置的類別 (CoD) 訊息可用來辨別此藍 芽裝置的主要類別 (例如:電腦、電話、週邊設備) 與次要類別 (例 如:桌上型電腦、筆記型電腦),參考圖 3-16,其中服務類別左方 8 個位元可經由應用程式修改。
圖中可觀察到主要類別的值等於 0x02,代表此裝置為電話,次要 類別的值等於 0x03,代表此裝置為智慧型手機,而服務類別的左邊 第一個位元定義為網頁伺服器等服務,智慧型手機一般不提供此服 務,此值為 0,類別的定義請參照[4]。
圖 3-16、手機於裝置類別的預設值
基於以上觀察,將 CoD[23]的值設定為 1 代表此手機具有 Blueg 系統服務,如圖 3-17。因此是否提供指定服務的訊息即嵌入屬於建 立連線第一個步驟的 FHS 封包內,而後當每一個藍芽裝置回應時,即 可利用 CoD 的主要類別、次要類別與 CoD[23]來辨別該裝置是否具有 Blueg 服務,並可省略第二個步驟的服務搜尋時間。
圖 3-17、嵌入服務訊息於裝置類別
下圖 3-18 為使用 LIAC 並修改 CoD 來達到快速連線的流程。首先 透過 LIAC 縮短藍芽回應時間,並於回應的 FHS 封包內嵌入 Blueg 服 務訊息,再經由簡單的比對確認 Blueg 服務的存在,直接跳過服務搜 尋步驟,建立連線至 Blueg 服務。原先服務搜尋所花費的時間所佔比 例約五分之二,如今將之省略,顯然有助於縮短藍芽裝置間連線的建 立。
Blueg System
LIAC
CoD
圖 3-18、改良後快速建立連線示意圖