官术网_书友最值得收藏!

2.4 藍牙協議子集及應用規范

世界藍牙組織(SIG)已經確定了一些應用模型,每個應用模型都有一個協議子集。它定義了支持特定應用模型的協議和功能。如果不同廠商的不同設備遵循相同的藍牙SIG應用規范,那么在應用于該特定服務和使用環境時,這些設備之間就可望實現互連。

一個協議子集定義了用于實現某種功能的一些消息和進程。有些功能是強制的,另一些是可選的,還有一些是有條件的。所有定義的功能都是強制過程的,即要實現某一種功能就必須遵循一種特定的方式。這保證了同樣的功能對每個設備來說都是以相同方式工作,而與制造商無關。

有4個通用的協議子集可用于各種不同的應用模型:通用接入協議子集(GAP),串口協議子集(SPP),服務發現應用協議子集(SDAP)及通用對象交換協議子集(GOEP)。

2.4.1 通用接入協議子集

通用接入協議子集(GAP)構成了所有藍牙協議子集的一個公共基礎,因此也為藍牙傳輸協議組的通用互操作應用提供了基礎。GAP的一個最重要的貢獻是它定義了一套標準的術語。除了公共的術語之外,GAP的大部分內容是對建立藍牙連接所需的必要過程進行的定義。這些定義包括設備和名字的發現、查詢過程、匹配和綁定以及鏈路、信道和連接的建立。對于上述的所有考慮,GAP提供了通用的和標準的過程,在某些情況下,給出了流程圖。定義基本的通信操作是非常重要的:如果沒有設備之間基本互操作通信方法的規范定義,其他的協議子集就無法實現。

GAP主要包含三項內容:詞典、連接和個性化。詞典匯集了所有術語和術語的定義。這些術語既出現在核心規范中,也出現在了協議子集中,詞典為術語在規范中的清晰使用提供了依據。連接包含了設備為與其他設備建立或斷開連接、鑒權或不鑒權而需要完成的操作。個性化包括了對藍牙設備進行識別和定制的內容,例如使用友好的用戶名稱和PIN。對于連接和個性化這兩項內容,只需要GAP提供的術語就可以在用戶接口層(UI)顯示。

1.連接模式

一個設備可以進入查詢掃描模式或尋呼掃描模式,既可以被其他發送查詢消息的設備發現,也可以通過發送尋呼消息與其他的設備建立連接。基帶規范沒有說明設備執行查詢掃描和尋呼掃描的條件,因此規范也沒有規定什么時候設備允許自己被發現或被連接。GAP定義了設備建立通信的策略,并將它們分類成發現模式、連接模式和匹配模式。

1)發現模式

當一個藍牙設備允許自己被其他的藍牙設備發現時,這個設備就被稱為是可發現的。特別地,一個可發現的設備會定期執行查詢掃描,并響應其他的查詢設備發來的查詢消息。設備的發現有3個等級:

(1)完全可發現模式。在這個可發現的等級中,一個設備使用通用查詢接入碼進入查詢掃描,而通用查詢接入碼(GIAC)是用48比特藍牙地址中特別保留的LAP“0x9E8B33”產生的查詢接入碼(IAC)。在這種模式中一個設備響應所有的查詢,這樣它總能被所有的其他正在查詢的設備發現。

(2)有限可發現模式。在這個可發現的等級中,一個設備使用有限查詢接入碼進入查詢掃描,而這個有限查詢接入碼(LIAC)使用48比特藍牙地址中特別保留的LAP“0x9E8B00”產生的查詢接入碼(IAC)。在這種模式中,一個設備只響應包含LIAC信息的查詢,這樣它只能被使用LIAC進行查詢的設備發現。

(3)不可發現模式。在這個發現等級中,一個設備不響應任何查詢,所以它不能被其他的查詢設備發現。說一個設備是可發現的,它必須一直處在完全可發現模式:即使它處在有限可發現模式也不能說是可發現的。設備可以同時處于有限可發現模式和完全可發現模式,也可以順序進入有限可發現模式和完全可發現模式。一個可發現的設備必須以至少每2.56s一次的頻率進入查詢掃描,查詢掃描的持續時間不少于10.625ms。

2)連接模式

當一個藍牙設備允許自己與其他的藍牙設備建立藍牙鏈路時,這個設備被稱為是可連接的。特別地,一個可連接的設備能定期執行尋呼掃描,并響應其他尋呼設備發來的尋呼消息。一個不可連接的設備不響應尋呼消息,所以不能與其他的設備建立鏈路。可發現模式和連接模式可以彼此獨立地設置,然而一個僅僅是可發現卻不可連接的設備并不會經常用到。

3)匹配模式

一個藍牙設備允許自己被其他的藍牙設備鑒權認證時,這個設備被稱為是可匹配的,這意味著該設備可以在一個鑒權事務中承擔申請者的角色。此外,一個可匹配的設備除了要接收LMP_au_rand PDU之外,還必須接收從校驗設備發出的包含在LMP_in_rand PDU中的初始鑒權請求信息。一個不可匹配的設備用一個LMP_not_accepted PDU來響應LMP_in_rand PDU,表明這個設備不愿意與任何新設備匹配。

2.安全模式

藍牙設備有三種安全模式。當處于安全模式1時,藍牙設備不會發起安全進程。當處于安全模式2時,藍牙設備只有在收到信道建立請求或已經啟動信道建立進程之后,才能啟動安全進程。安全進程是否啟動取決于被請求的信道或服務的安全要求。至少處于安全模式2的藍牙設備必須以授權、鑒權和加密來區分安全要求。

當處于安全模式3時,藍牙設備在發送鏈路設置完成的消息之前啟動安全進程。處于安全模式3的藍牙設備可能會根據內部設置拒絕連接請求。

3.空閑模式過程

連接和安全模式與外界激勵引起的行為有關,這些到來的外部激勵(例如查詢、尋呼等)可以使藍牙設備再次激活,而空閑模式過程與設備發送出去的激勵信號有關。這些過程包括一般查詢和有限查詢、名字和設備發現及綁定等。

通用查詢和有限查詢分別用來發現處于完全可發現模式和有限可發現模式的設備。設備發現過程返回可發現和可連接設備的友好用戶名。對名字的請求僅與這兩個設備的LMP層有關,而與主機無關。

綁定是一個為了在設備間建立鏈路密鑰并將之存儲以備將來使用而執行的一個匹配過程。在一般綁定中,綁定與其他設備的通信,如訪問高層服務相結合。在專用綁定中,一個設備將另一個可匹配設備與這兩個設備之間創建的一個綁定聯系起來,而不涉及高層事務。

2.4.2 串口協議子集

1.協議概況

1)SPP應用規范協議模型

圖2.8中端口仿真是一個模擬串行端口和給應用層提供API的實體。兩邊的應用是典型的繼承性應用,能通過仿真的串行電纜進行通信。但是,繼承性應用并不清楚設置仿真串行電纜的藍牙進程,它們可能需要在鏈路雙方都采用藍牙規范的一個輔助性應用的協助。

圖2.8 SPP應用規范協議模型

2)SPP包含的作用

在兩個設備上設置虛擬串口,并用藍牙連接模擬兩個設備之間的串行電纜。

任何繼承性應用可以運行在任一設備上,使用虛擬串口,好像在兩個設備間有真正的電纜連接一樣。這一應用規范支持一個時隙數據包,僅需要一個時隙的分組,這樣可以確保最大為128kbps的數據速率,對更高速率的支持作為可選要求。

雖然藍牙技術標準描述了一段時間內僅支持一個串口連接,因此可知,它也僅支持點對點的配置。然而,這不妨礙在一設備上同時運行多個SPP,以支持多重連接。在這種情況下,設備可同時成為發起者和接收者。

3)SPP基礎
  • 為了運行這一PROFLIE,一些安全性能例如授權、鑒權以及加密是可選的。然而,一個設備被對方要求,那他就必須支持相應的安全進程。如果需要采用安全功能的話,則在連接建立階段兩個設備就結對。
  • 在串口應用規范中沒有明確規定使用捆綁,故其對捆綁的支持是可選的。
  • 當發起者開始建立鏈路時,為了建立模擬串行電纜連接要執行業務發現進程。
  • 在這一應用規范中沒有固定的主從設備的角色,雙方被認為是對等的。
  • RFCOMM用于傳輸用戶數據、Modem控制信號和配置命令。

2.應用層

表2.3顯示了要求的三種應用級程序。

表2.3 三種應用級程序

1)建立鏈路/創建虛擬串行連接

這一過程描述了與遠端設備的虛串口建立連接所需的步驟:

(1)使用SDP提交一個查詢,以找到在遠端設備上所要應用的RFCOMM服務器的通道號。如果包含瀏覽功能,用戶可以在其對等設備可用的端口或服務中進行選擇。如果用戶已知要使用哪項服務,那么只需使用與該項服務關聯的服務類別D進行參數查找。

(2)作為可選項,遠端設備可以要求鑒權和密碼認證。

(3)請求與遠端RFCOMM實體建立一條新的L2CAP信道。

(4)在該L2CAP信道上啟動一個RFCOMM回話進程。

(5)使用服務器信道號在該RFCOMM回話進程上建立一個新的數據鏈路連接。

當此進程完成的時候,此虛擬電纜連接即可供兩個設備上的應用來進行通信。如果當建立新數據鏈路連接時,兩設備之間已經存在RFCOMM進程,那么新連接將建立在已有的RFCOMM進程上,在這種情況下,步驟(3)和步驟(4)就不需要了。

2)接收鏈路/建立虛擬串行連接

這一進程要求參與下面的步驟:

(1)如果遠端設備需要,就要參鑒權,或進一步采用加密。

(2)接收來自L2CAP的一個新的信道建立指示。

(3)在該信道上接收一個RFCOMM會話進程的建立。

(4)在該RFCOMM會話進程上接受一個新的數據鏈路連接。如果請求虛擬串口的用戶需要安全服務,并且這些進程還沒有執行,則可能會觸發一個本地請求來鑒權遠端設備并啟用加密。

注:當已經和遠端設備建立RFCOMM會話進程,步驟(1)和步驟(4)可以單獨存在。

3)在本地SDP數據庫注冊服務記錄

這一進程提到虛擬串口服務記錄在SDP數據庫中的注冊,這暗示了服務數據庫的存在和其響應查詢的能力。所有通過RFCOMM可用的服務/應用都必須有一個SDP服務記錄,其包括獲取相應服務/應用所需的參數。為了支持運行在虛擬串口上的繼承性應用,服務注冊由一個可以協助用戶設置端口的輔助應用來完成。

3.功率模式和鏈路丟失處理

通過虛擬串口連接設備的功率需求可能會有很大差別,因此在SDP中沒有要求使用功率節省模式。不過,可能的話禁止使用低功耗模式。如果使用偵聽、休眠和保持模式,RFCOMM數據鏈路和L2CAP信道就都不釋放。如果檢測到鏈路丟失,RFCOMM就被認為已關閉。如果在高層可再繼續通信之前,必須先執行RFCOMM初始化進程。

2.4.3 服務發現應用協議子集

服務發現是大多數藍牙應用的關鍵組成部分。幾乎所有的協議子集都包含了服務發現的內容。與GAP一樣,服務發現應用協議子集(SDAP)提供了一個通用且標準的方法,使用藍牙協議棧來完成服務發現。與大多數其他協議子集不同的是,SDAP描述了一個標準的服務發現應用模型,還定義了抽象的、類似于應用程序接口(API)的服務元語。

在面向應用的協議子集中,例如文件傳送和LAN接入協議子集等,SDAP是獨一無二的。為了支持特定的應用情況,其他的那些協議子集所描述的是在進行聯合工作時,在兩個(或多個)設備上運行的用戶級應用所需要補充的內容。而SDAP應用只需要在一個設備中存在。SDAP應用與設備協議棧中的SDP層進行交互,SDP層向其他設備的一個或多個SDP層發起SDP事務,以便了解其他設備所能提供的服務。從其他設備返回的響應中,服務發現應用可以得到結果,并將這個結果提供給發起事務的設備用戶。

在非藍牙環境中,服務發現通常是利用服務的廣播查詢或定位服務地址目錄的查詢來完成。在后一種查詢方式中,廣播一律是單向的,只是從微微網的主控設備到從屬設備。此外,廣播傳輸是不可恢復的,因為廣播傳輸在出錯后無法重傳,所以在藍牙微微網中,服務發現不使用廣播方式。同時藍牙微微網中的服務發現與設備發現是密切相關的。服務發現在完成了鑒權的匹配設備之間進行,并且還要在設備彼此之間已經發現并且建立了藍牙鏈路(直到包括了一個L2CAP連接)之后進行。

根據SDAP,參與服務發現的設備可以擔任以下角色:①本地設備,該設備實現服務發現應用。它還能實現SDP層的客戶端功能。一個本地設備可以發起多個SDP事務。②遠程設備,本地設備與遠程設備進行聯絡,以查詢服務。一個遠程設備能實現SDP層的服務器功能。它響應本地設備發出的SDP事務請求。為了產生響應,遠程設備需要顯示或隱式地維持一個數據庫,這個數據庫包含通過遠程設備可以提供的服務紀錄。

盡管某些設備只能充當本地設備,或只能充當遠程設備,一般來講,這些設備角色是暫時的,只有在兩個設備間進行SDP事務處理時才有意義。一個設備可以在不同的時刻,甚至是在相同的時刻,扮演本地和遠程設備角色,這取決于設備創建服務查詢或響應服務查詢的時間。SDAP設備所扮演的角色與基帶傳輸中的主從角色無關,因為基帶傳輸中的主從角色在鏈路管理層之上是沒有意義的。一個本地設備在微微網中可以是主控設備,也可以是從屬設備,遠程設備也是如此。

SDAP對藍牙協議棧的需求是直接的。要實現該協議子集,除了使用SDP層以下所有協議層的默認設置之外,不需要做其他的任何改動。特別地,當僅僅是為了完成服務發現這個目的進行連接時,設備彼此之間不需要鑒權,也不需要對藍牙鏈路進行加密。SDP事務在設備間的ACL基帶鏈路上傳輸。在L2CAP層,SDP事務在面向連接的信道中傳輸,這個信道的配置為盡“最大努力(Best Effort)”傳輸業務數據。

SDAP協議子集的另一個不同之處是它規定了傳輸SDP業務的L2CAP信道的拆除條件,因為SDP沒有為傳送SDP_PDU定義一個會話或傳輸協議。SDP本身也是一個無連接的協議。為了運行無連接的SDP的請求/響應事務,L2CAP層至少需要在事務持續時期內保持承載事務信息的L2CAP信道。為了有效地利用傳輸資源,SDP客戶端和服務期間的L2CAP信道甚至可以保持更長的時間。從根本上講,執行一個SDP事務是為了某個應用,因此這個應用應該負責打開一個L2CAP信道,并根據所需的時間維持兩個設備之間用于事務處理的L2CAP信道。

主站蜘蛛池模板: 瑞安市| 安徽省| 武川县| 咸阳市| 平凉市| 重庆市| 汪清县| 乌苏市| 北流市| 修武县| 黑龙江省| 札达县| 宜宾市| 玉门市| 巴林右旗| 白城市| 乌兰浩特市| 绥化市| 临夏市| 绍兴市| 皮山县| 叶城县| 温州市| 武宣县| 房产| 湘潭县| 当涂县| 龙里县| 连城县| 贡觉县| 安平县| 桐城市| 宜昌市| 合江县| 沙湾县| 曲麻莱县| 垫江县| 伽师县| 波密县| 平南县| 大丰市|