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

2.2 藍牙協(xié)議體系結(jié)構(gòu)

藍牙技術(shù)規(guī)范的目的是使符合該規(guī)范的各種應(yīng)用之間能夠互通。為此,本地設(shè)備與遠端設(shè)備需要使用相同的協(xié)議棧。

不同的應(yīng)用可以在不同的協(xié)議棧上運行。但是,所有的協(xié)議棧都要使用藍牙技術(shù)規(guī)范中的數(shù)據(jù)鏈路層和物理層。完整的藍牙協(xié)議棧如圖2.6所示,在其頂部支持藍牙使用模式的相互作用的應(yīng)用被構(gòu)造出來。不是任何應(yīng)用都必須使用全部協(xié)議,相反,應(yīng)用只會采用藍牙協(xié)議棧中垂直方向的協(xié)議。圖2.6顯示了數(shù)據(jù)經(jīng)過無線傳輸時,各個協(xié)議如何使用其他協(xié)議所提供的服務(wù),但在某些應(yīng)用中這種關(guān)系是有變化的,如需控制連接管理器時,一些協(xié)議如邏輯鏈路控制應(yīng)用協(xié)議(L2CAP)、二元電話控制規(guī)范(TCS Binary)可使用連接管理協(xié)議(LMP)。完整的協(xié)議包括藍牙專用協(xié)議(LMP和L2CAP)和藍牙非專用協(xié)議(如對象交換協(xié)議OBEX和用戶數(shù)據(jù)報協(xié)議UDP)。設(shè)計協(xié)議和協(xié)議棧的主要原則是盡可能利用現(xiàn)有的各種高層協(xié)議,保證現(xiàn)有協(xié)議與藍牙技術(shù)的融合以及各種應(yīng)用之間的互通性,充分利用兼容藍牙技術(shù)規(guī)范的軟硬件系統(tǒng)。藍牙技術(shù)規(guī)范的開放性保證了設(shè)備制造商可自由地選用藍牙專用協(xié)議或常用的公共協(xié)議,在藍牙技術(shù)規(guī)范基礎(chǔ)上開發(fā)新的應(yīng)用。

圖2.6 藍牙協(xié)議棧

藍牙協(xié)議體系中的協(xié)議由SIG分為4層:

  • 藍牙核心協(xié)議——Baseband、LMP、L2CAP、SDP;
  • 電纜替換協(xié)議——RFCOMM;
  • 電話傳送控制協(xié)議——TCS Binary、AT Commands;
  • 所采用的協(xié)議——PPP、UDP/TCP/IP、OBEX、vCard、vCal、IrMC、WAE。

除上述協(xié)議層外,藍牙規(guī)范還定義了主機控制器接口(HCI),它為基帶控制器、連接管理器提供命令接口,并且可通過它訪問硬件狀態(tài)和控制寄存器。HCI位于L2CAP的下層,但HCI也可位于L2CAP上層。藍牙核心協(xié)議由SIG制定的藍牙專利協(xié)議組成,絕大部分藍牙設(shè)備都需要藍牙核心協(xié)議(包括無線部分),而其他協(xié)議根據(jù)應(yīng)用的需要而定。總之,電纜替換協(xié)議、電話控制協(xié)議和被采用的協(xié)議構(gòu)成了面向應(yīng)用的協(xié)議,允許各種應(yīng)用運行在核心協(xié)議之上。

2.2.1 藍牙核心協(xié)議

1)基帶協(xié)議(Baseband)

基帶和鏈路控制層確保了微微網(wǎng)內(nèi)各藍牙設(shè)備單元之間由射頻構(gòu)成的物理連接。藍牙的射頻系統(tǒng)是一個跳頻擴展頻譜系統(tǒng),其任一分組在指定時隙、指定頻率上發(fā)送,它使用查詢和尋呼進程來同步不同設(shè)備間的發(fā)送跳頻和時鐘。藍牙提供了兩種物理連接方式及其相應(yīng)的基帶數(shù)據(jù)分組:同步面向連接和異步無連接,而且在同一射頻上可實現(xiàn)多路數(shù)據(jù)傳送。ACL只用于數(shù)據(jù)分組,SCO適用于音頻及音頻與數(shù)據(jù)的組合,所有音頻與數(shù)據(jù)分組都附有不同級別的前向糾錯(FEC)或循環(huán)冗余校驗(CRC),而且可進行加密。此外,不同數(shù)據(jù)類型(包括連接管理信息和控制信息)都被分配了一個特殊通道。

2)音頻(Audio)

音頻數(shù)據(jù)可以在藍牙設(shè)備間傳送,使得各種使用模式成為可能。面向連接的音頻分組只需經(jīng)過基帶傳輸,不通過L2CAP。音頻模式在藍牙系統(tǒng)內(nèi)相對簡單,只需開通音頻連接,就可傳送音頻。

3)連接管理協(xié)議(LMP)

連接管理協(xié)議(LMP)負責(zé)藍牙各設(shè)備間連接的建立。它通過連接的發(fā)起、交換、核實,進行身份驗證和加密,通過協(xié)商確定基帶數(shù)據(jù)分組大小;它還控制無線設(shè)備的電源模式和工作周期,以及微微網(wǎng)內(nèi)藍牙單元的連接狀態(tài)。

4)邏輯鏈路控制和適配協(xié)議(L2CAP)

邏輯鏈路控制和適配協(xié)議(L2CAP)位于基帶層之上,向上層協(xié)議提供服務(wù),可以認為它與LMP并行工作,它們的區(qū)別在于L2CAP為上層提供服務(wù),與此同時,負荷數(shù)據(jù)從不通過LMP消息進行傳遞。

L2CAP向上層提供面向連接的和無連接的數(shù)據(jù)服務(wù),它采用了多路技術(shù)、分割和重組技術(shù)、群提取技術(shù)。L2CAP允許高層協(xié)議及應(yīng)用以最大為64KB的長度收發(fā)數(shù)據(jù)包。

雖然基帶協(xié)議提供了SCO和ACL兩種連接類型,但L2CAP只支持ACL連接,不支持SCO連接。

5)服務(wù)發(fā)現(xiàn)協(xié)議(SDP)

發(fā)現(xiàn)服務(wù)在藍牙技術(shù)框架中起到至關(guān)重要的作用,它是所有使用模式的基礎(chǔ)。使用SDP,可以查詢到設(shè)備信息、服務(wù)和服務(wù)類型,從而在藍牙設(shè)備間建立相應(yīng)的連接。

1.藍牙基帶層協(xié)議

1)基帶

基帶就是藍牙的物理層,它負責(zé)管理物理信道和鏈路中除了錯誤糾正、數(shù)據(jù)處理、調(diào)頻選擇和藍牙安全之外的所有業(yè)務(wù)。基帶在藍牙協(xié)議棧中位于藍牙射頻之上,基本上起鏈路控制和鏈路管理的作用,比如承載鏈路連接和功率控制這類鏈路級路由等。基帶還管理異步和同步鏈路、處理數(shù)據(jù)包、尋呼、查詢接入和查詢藍牙設(shè)備等。基帶收發(fā)器采用時分復(fù)用TDD方案(交替發(fā)送和接收),因此除了不同的跳頻之外(頻分),時間都被劃分為時隙。在正常的連接模式下,主單元會總是以偶數(shù)時隙啟動,而從單元則總是從奇數(shù)時隙啟動(盡管可以不考慮時隙的序數(shù)而持續(xù)傳輸)。

2)ACL和SCO鏈路

基帶可以處理兩種類型的鏈路:SCO(同步連接)和ACL(異步無連接)鏈路。SCO鏈路是微微網(wǎng)中單一主單元和單一從單元之間的一種點對點對稱的鏈路。主單元采用按照規(guī)定間隔預(yù)留時隙(電路交換類型)的方式可以維護SCO鏈路。SCO鏈路攜帶語音信息。主單元可以支持多達三條并發(fā)SCO鏈路,而從單元則可以支持兩條或者三條SCO鏈路。SCO數(shù)據(jù)包永不重傳。SCO數(shù)據(jù)包用于64kbps語音傳輸。ACL鏈路是微微網(wǎng)內(nèi)主單元和全部從單元之間點對多點的鏈路。在沒有為SCO鏈路預(yù)留時隙的情況下,主單元可以對任意從單元在每時隙的基礎(chǔ)上建立ACL鏈路,其中也包括了從單元已經(jīng)使用某條SCO鏈路的情況(分組交換類型)。只能存在一條ACL鏈路。對大多數(shù)ACL數(shù)據(jù)包來說都可以應(yīng)用數(shù)據(jù)包重傳。

3)藍牙編址

藍牙有4種基本類型的設(shè)備地址,見表2.1。

表2.1 藍牙設(shè)備地址

4)藍牙數(shù)據(jù)包

微微網(wǎng)信道內(nèi)的數(shù)據(jù)都是通過數(shù)據(jù)包傳輸?shù)摹Mǔ5臄?shù)據(jù)包格式如表2.2所示。

表2.2 標(biāo)準(zhǔn)的藍牙數(shù)據(jù)包

訪問碼(Access Code)用于時序同步、偏移補償、尋呼和查詢。訪問碼分為3類:信道訪問碼CAC、設(shè)備訪問碼DAC和查詢訪問碼IAC。信道訪問碼標(biāo)識微微網(wǎng)(對微微網(wǎng)唯一),而設(shè)備訪問碼則用于尋呼及其響應(yīng)。查詢訪問碼用于查詢。數(shù)據(jù)包包頭包含了數(shù)據(jù)包確認、亂序數(shù)據(jù)包重排的數(shù)據(jù)包編號、流控、從單元地址和報頭錯誤檢查等信息。數(shù)據(jù)包的數(shù)據(jù)部分可以包含語音字段、數(shù)據(jù)字段或者兩者皆有。數(shù)據(jù)包可以占據(jù)一個以上的時隙(多時隙數(shù)據(jù)包),而且可以在下一個時隙中持續(xù)傳輸。數(shù)據(jù)部分還可以攜帶一個16位長的CRC碼用于數(shù)據(jù)錯誤檢測和錯誤糾正。SCO數(shù)據(jù)包則不包括CRC。有5種普通類型數(shù)據(jù)包、4種SCO數(shù)據(jù)包和7種ACL數(shù)據(jù)包。

5)糾錯

糾錯方式有3種:1/3速率FEC、2/3速率FEC和ARQ。采用1/3速率FEC則每個位被重復(fù)三遍作為冗余;2/3方式則采用一個生成多項式把10位代碼編碼為15位代碼。在ARQ方式下,數(shù)據(jù)包被重傳,直到最終收到確認(或者超時)。藍牙使用快速的無編號確認,通過設(shè)置適當(dāng)?shù)腁RQN值來使用正確認和負確認。如果傳輸超時,藍牙丟棄數(shù)據(jù)包并處理下一個數(shù)據(jù)包。

6)流控與同步

藍牙建議在ACL和SCO鏈路中采用先入先出(FIFO)隊列處理數(shù)據(jù)包的收發(fā)。鏈路管理器(Link Manager)填充這些隊列,鏈路控制器負責(zé)自動清空隊列。

如果這些RX FIFO隊列全滿,流控就會避免丟棄數(shù)據(jù)包和防止阻塞。如果數(shù)據(jù)沒有收到,STOP表示符即被接收方的鏈路控制器插入到返回數(shù)據(jù)包的包頭中被傳送。當(dāng)發(fā)送方收到STOP表示符,它就凍結(jié)其FIFO隊列。如果接收方準(zhǔn)備完畢即可發(fā)送GO數(shù)據(jù)包從而再次恢復(fù)數(shù)據(jù)流傳輸。我們已經(jīng)知道,藍牙收發(fā)器采用時分復(fù)用(TDD)技術(shù)方案,這意味著它可以采用同步方式實現(xiàn)交替地傳送和接收操作。主單元數(shù)據(jù)包傳輸?shù)钠骄鶗r間相對于理想的625μs時隙必定不會快于20ppm。平均延遲時間應(yīng)當(dāng)小于1ms。微微網(wǎng)由主單元的系統(tǒng)時鐘同步。主單元的藍牙設(shè)備地址(BD-ADDR)決定了跳頻序列和信道訪問碼:主單元的系統(tǒng)時鐘確定跳頻序列的相位。主單元通過查詢方式控制信道上的流量。在微微網(wǎng)存在期間主單元從不調(diào)節(jié)其系統(tǒng)時鐘。從單元為了匹配主單元時鐘采用時序偏移以適應(yīng)其內(nèi)部時鐘。藍牙時鐘應(yīng)該達到31.25μs的精度。為了讓接收方的訪問相關(guān)器可以搜索到正確的信道訪問碼并和發(fā)送方保持同步,精確接收時間允許有一個20μs的不確定窗口。當(dāng)從單元從保持狀態(tài)返回時,它即可和更大的不確定窗口發(fā)生相關(guān)直到從單元不再與時隙交疊。休眠的從單元周期性地被喚醒以偵聽來自主單元的信號并重新同步自身的時鐘偏移。

2.鏈路管理協(xié)議(LMP)

鏈路管理協(xié)議(LMP)和邏輯鏈路控制與適應(yīng)協(xié)議(L2CAP)都是藍牙的核心協(xié)議,L2CAP與LMP共同實現(xiàn)OSI數(shù)據(jù)鏈路層的功能。

LMP負責(zé)藍牙設(shè)備之間的鏈路建立,包括鑒權(quán)、加密等安全技術(shù)及基帶層分組大小的控制和協(xié)商。它還控制無線設(shè)備的功率以及藍牙節(jié)點的連接狀態(tài)。L2CAP在高層和基帶層之間作適配協(xié)議,它與LMP是并列的,區(qū)別在于L2CAP向高層提供負載的傳送,而LMP不能,即LMP不負責(zé)業(yè)務(wù)數(shù)據(jù)的傳遞。

鏈路管理協(xié)議(LMP)有以下關(guān)鍵作用:

(1)鏈路管理協(xié)議(LMP)負責(zé)藍牙組件間連接的建立和斷開。在兩個不同的藍牙設(shè)備之間建立連接時,該連接由ACL鏈路組成(先傳遞參數(shù)),然后就可以建立起一條或多條SCO鏈路。鏈路管理協(xié)議(LMP)支持由主、從單元初始化SCO鏈路,支持由主、從單元請求改變SCO鏈路參數(shù);它還提供了一種協(xié)商呼叫方案的方法,并支持通過協(xié)商確定基帶數(shù)據(jù)分組大小。

(2)通過監(jiān)控信道特性、支持測試模式和出錯處理來維護信道。鏈路管理器負責(zé)監(jiān)控?zé)o線單元(射頻部分)的信號場強和信號發(fā)射功率;鏈路管理器負責(zé)監(jiān)控在DM和DH之間基于質(zhì)量的信道變化;鏈路管理器還提供支持服務(wù)質(zhì)量(QoS)的能力;每一條藍牙鏈路都具有一個用于鏈路監(jiān)控的計時器,鏈路管理器利用該計時器對超時進行監(jiān)控;另外,LMP具有不同藍牙測試模式的PDU,測試模式主要用于對兼容藍牙無線電和基帶的測試(也可用于藍牙設(shè)備的鑒權(quán));鏈路管理器中針對各種錯誤,有相應(yīng)的出錯處理,還能夠監(jiān)測鏈接中錯誤消息的數(shù)量,一旦超過閉值就將其斷開。

(3)通過連接的發(fā)起、交換、核實,進行身份鑒權(quán)和加密等安全方面的任務(wù)。包括鏈接字(用于身份鑒權(quán))的創(chuàng)建、改變、匹配檢驗;協(xié)商加密模式、加密字長度;加密的開始和停止等。

(4)控制微微網(wǎng)內(nèi)及微微網(wǎng)之間藍牙組件的時鐘補償和計時精度。藍牙的鏈路管理器可以從其他鏈路管理器那里請求時鐘偏移信息(主單元請求,從單元告訴它目前從單元存儲的時鐘偏移,而該時間偏移則是從單元自身在和主單元進行某些數(shù)據(jù)包交換的過程中得到的)、時隙偏移信息(時隙偏移就是微微網(wǎng)內(nèi)主單元和從單元傳送的開始時隙之間的時間差,時間差的單位是毫秒)、計時精度信息(時鐘漂移和抖動)。這些信息對微微網(wǎng)內(nèi)部和微微網(wǎng)間的正常通信是至關(guān)重要的,LMP還支持多時隙分組控制。

(5)控制微微網(wǎng)內(nèi)藍牙組件的工作模式。鏈路管理器還可以控制工作模式轉(zhuǎn)換過程(強迫或者請求某臺設(shè)備把所處工作模式轉(zhuǎn)換為以下模式之一:保持、呼吸或者休眠)。在休眠模式下,鏈路管理器會負責(zé)廣播消息給休眠的設(shè)備、處理信號參數(shù)以及喚醒休眠的設(shè)備等任務(wù)。鏈路管理器還會負責(zé)解除休眠。

(6)其他功能。包括支持對鏈路管理器協(xié)議版本信息的請求、請求命名、主從角色切換等。

3.邏輯鏈路控制與適應(yīng)協(xié)議(L2CAP)

L2CAP支持高層的協(xié)議復(fù)用、數(shù)據(jù)包打包重組(SAR)、傳送服務(wù)質(zhì)量(QoS)等。

邏輯鏈路控制與適應(yīng)協(xié)議(L2CAP)有以下關(guān)鍵作用:其完成數(shù)據(jù)的拆裝、基帶與高層協(xié)議間的適配,并通過協(xié)議復(fù)用、分段及重組操作為高層提供數(shù)據(jù)業(yè)務(wù)和分類提取,它允許高層協(xié)議和應(yīng)用接收或發(fā)送長過64KB的L2CAP數(shù)據(jù)包。數(shù)據(jù)重傳和低級別流控由L2CAP協(xié)議完成。

邏輯鏈路控制與適應(yīng)協(xié)議(L2CAP)的關(guān)鍵作用包括以下內(nèi)容:

(1)協(xié)議復(fù)用。L2CAP支持協(xié)議復(fù)用,因為基帶協(xié)議不能識別并支持任何類型段,而這些類型段則用于標(biāo)識要復(fù)用的更高層協(xié)議。L2CAP必須能夠區(qū)分高層協(xié)議,如藍牙服務(wù)搜索協(xié)議(SDP)、RFCOMM和電話控制(TCS)。在信道上收到的每一個L2CAP分組都指向相應(yīng)的高層協(xié)議。

(2)信道的連接、配置、打開和關(guān)閉。L2CAP基于分組,但它實際上遵循的是一個基于信道的通信模型。一條信道代表遠程設(shè)備上兩個L2CAP實體間的數(shù)據(jù)流。信道可以是面向連接的,也可以是無連接的。面向連接的數(shù)據(jù)信道提供了兩設(shè)備之間的連接,無連接的信道限制數(shù)據(jù)向單一方向流動。但要注意,如果一開始兩個設(shè)備之間沒有物理鏈路存在,系統(tǒng)使用LMP命令來產(chǎn)生物理鏈路。

(3)分段與重組。藍牙與其他有線物理介質(zhì)相比,由基帶協(xié)議定義的分組在大小上受到限制。輸出與最大基帶有效載荷口HS分組中的341B關(guān)聯(lián)的最大傳輸單元(MTU)限制了更高層協(xié)議帶寬的有效使用,而高層協(xié)議要使用更大的分組。大L2CAP分組必須在無線傳輸前分段成為多個小基帶分組。同樣,收到多個小基帶分組后也可以重新組裝成大的單一的L2CAP分組。在使用比基帶分組更大的分組協(xié)議時,必須使用分段與重組功能。實際上,所有L2CAP分組都可以在基帶分組的基礎(chǔ)上進行分段。

(4)服務(wù)質(zhì)量(QoS)。L2CAP連接建立過程允許交換有關(guān)兩個藍牙單元之間的服務(wù)質(zhì)量信息。每個L2CAP設(shè)備必須監(jiān)視由協(xié)議使用的資源并保證服務(wù)質(zhì)量(QoS)的完整實現(xiàn)。L2CAP還提供QoS授權(quán)控制,以避免其他信道違反QoS協(xié)定。

(5)組管理。許多協(xié)議包含地址組的概念。L2CAP組管理協(xié)議提供允許在微微網(wǎng)成員與組之間有效映射的單元組概念。L2CAP組概念可以實現(xiàn)在微微網(wǎng)上的有效協(xié)議映射。如果沒有組概念,為了有效管理組,高層協(xié)議就必須直接與基帶協(xié)議和鏈路管理器打交道。

2.2.2 電話控制協(xié)議

1.二元電話控制協(xié)議(TCS BIN)

二元電話控制協(xié)議(TCS Binary或TCS BIN)是面向比特的協(xié)議,它定義了藍牙設(shè)備間建立語音和數(shù)據(jù)呼叫的呼叫控制信令。此外,還定義了處理藍牙TCS設(shè)備群的移動管理進程。基于ITU-T推薦書Q.931建議的TCS Binary被定義為藍牙的二元電話控制協(xié)議規(guī)范。

2.電話控制協(xié)議——AT命令集(AT Commands)

藍牙SIG根據(jù)ITU-TV250建議和GSM07.07定義了在多使用模式下控制移動電話和調(diào)制/解調(diào)器的AT命令集(可用于傳真業(yè)務(wù))。

被采用的協(xié)議有以下幾種。

(1)點對點協(xié)議(PPP)。在藍牙技術(shù)中,PPP位于RFCOMM上層,完成點對點的連接。

(2)TCP/UDP/IP。TCP/UDP/IP協(xié)議是由IEEE制定的,廣泛應(yīng)用于互聯(lián)網(wǎng)通信的協(xié)議,在藍牙設(shè)備中使用這些協(xié)議是為了與互聯(lián)網(wǎng)相連接的設(shè)備進行通信。藍牙設(shè)備均可以作為訪問Internet的橋梁。

(3)對象交換協(xié)議(OBEX)。IrOBEx(簡寫為OBEX)是由紅外數(shù)據(jù)協(xié)會(IrDA)制定的會話層協(xié)議,它采用簡單的和自發(fā)的方式交換目標(biāo)。假設(shè)傳輸層是可靠的,OBEX就能提供諸如HTTP等一些基本功能,采用客戶機/服務(wù)器模式,獨立于傳輸機制和傳輸應(yīng)用程序接口(API)。除了OBEX協(xié)議本身以及設(shè)備之間的OBEX保留用“語法”,OBEX還提供了一種表示對象和操作的模型。

另外,OBEX協(xié)議定義了“文件夾列表”的功能目標(biāo),用來瀏覽遠程設(shè)備上文件夾的內(nèi)容。在第一階段,RFCOMM被用作OBEX的唯一傳輸層。將來可能會支持TCP/IP作為傳輸層。

(4)無線應(yīng)用協(xié)議(WAP)。無線應(yīng)用協(xié)議(WAP)是由無線應(yīng)用協(xié)議論壇制定的,它融合了各種廣域無線網(wǎng)絡(luò)技術(shù),其目的是將互聯(lián)網(wǎng)的內(nèi)容以及電話業(yè)務(wù)傳送到數(shù)字蜂窩電話和其他無線終端上。

選用WAP,可以充分復(fù)用為無線應(yīng)用環(huán)境(WAE)所開發(fā)的高層應(yīng)用軟件,包括能與PC上的應(yīng)用程序交互的WML和WTA瀏覽器。構(gòu)造應(yīng)用程序網(wǎng)關(guān)就可以在WAP服務(wù)器和PC上的某些應(yīng)用程序之間進行調(diào)節(jié),從而可以實現(xiàn)各種各樣隱含的計算功能,比如遠程控制、從PC到手持機預(yù)取數(shù)據(jù)等。WAP服務(wù)器還允許在PC和手持機之間交換信息,帶來信息中轉(zhuǎn)的概念。WAP框架也使得使用WML和WML Script作為“通用”的軟件開發(fā)工具來為手持機開發(fā)定制應(yīng)用程序成為可能。

2.2.3 主機控制接口功能規(guī)范

1.通信方式

主機控制器接口(Host Controller Interface,HCI)是通過包的方式來傳送數(shù)據(jù)、命令和事件的,所有在主機和主機控制器之間的通信都以包的形式進行。包括每個命令的返回參數(shù)都通過特定的事件包來傳輸。HCI有數(shù)據(jù)、命令和事件三種包,其中數(shù)據(jù)包是雙向的,命令包只能從主機發(fā)往主機控制器,而事件包始終是主機控制器發(fā)向主機的。主機發(fā)出的大多數(shù)命令包都會觸發(fā)主機控制器產(chǎn)生相應(yīng)的事件包作為響應(yīng)。命令包分為6種類型:

(1)鏈路控制命令:鏈路控制命令是允許主機控制器控制與其他藍牙設(shè)備的連接。在鏈路控制命令運行時,LM控制藍牙Piocnet與Scatternet的建立與維持。這些命令指示LM創(chuàng)建及修改與遠端藍牙設(shè)備的連接鏈路,查詢范圍內(nèi)的其他藍牙設(shè)備,及其他鏈路管理協(xié)議命令。

(2)鏈路策略命令:用于改變本地和遠端設(shè)備鏈路管理器的工作方式,允許主機以適當(dāng)?shù)姆绞焦芾鞵iocnet。

(3)主機控制和基帶命令:主機控制器及基帶命令被用來改變與建立諸如聲音設(shè)置、認證模式、加密模式的連接相聯(lián)系的LM的操作方式。

(4)信息命令:這些信息命令的參數(shù)是由藍牙硬件制造商確定的。它們提供了關(guān)于藍牙設(shè)備及設(shè)備的主機控制器,鏈路管理器及基帶的信息。主機設(shè)備不能更改這些參數(shù)。

(5)狀態(tài)命令:狀態(tài)命令提供了目前HCI、LM及BB的狀態(tài)消息。這些狀態(tài)參數(shù)不能被主機改變,除了一些參數(shù)可以被重置。

(6)測試命令:測試命令能夠測試藍牙硬件各種功能,并為藍牙設(shè)備的測試提供不同的測試條件。

2.通信過程

當(dāng)主機與基帶之間用命令的方式進行通信時,主機向主機控制器發(fā)送命令包。主機控制器完成一個命令,大多數(shù)情況下,它會向主機發(fā)出一個命令完成事件包,包中攜帶命令完成的信息。有些命令不會收到命令完成事件,而會收到命令狀態(tài)事件包,若收到該事件則表示主機發(fā)出的命令已經(jīng)被主機控制器接收并開始處理,過一段時間該命令被執(zhí)行完畢時,主機控制器會向主機發(fā)出相應(yīng)的事件包來通知主機。如果命令參數(shù)有誤,則會在命令狀態(tài)事件中給出相應(yīng)錯誤碼。假如錯誤出現(xiàn)在一個返回Command Complete事件包的命令中,則此Command Complete事件包不一定含有此命令所定義的所有參數(shù)。狀態(tài)參數(shù)作為解釋錯誤原因同時也是第一個返回的參數(shù),總是要返回的。假如緊隨狀態(tài)參數(shù)之后是連接句柄或藍牙的設(shè)備地址,則此參數(shù)也總是要返回的,這樣可判別出此Command Complete事件包屬于那個實例的一個命令。在這種情況下,事件包中連接句柄或藍牙的設(shè)備地址應(yīng)與命令包種的相應(yīng)參數(shù)一致。假如錯誤出現(xiàn)在一個不返回Command Complete事件包的命令中,則事件包包含的所有參數(shù)都不一定是有效的。主機必須根據(jù)與此命令相聯(lián)系的事件包中的狀態(tài)參數(shù)來決定它們的有效性。

3.HCI流量控制

HCI的流量控制是為了管理主機和主機控制器中有限的資源并控制數(shù)據(jù)流量而設(shè)計的,由主機管理主機控制器的數(shù)據(jù)緩存區(qū),主機可動態(tài)地調(diào)整每個連接句柄的流量。

對于命令包的流量控制,主機在每發(fā)一個命令之前都要確定當(dāng)前能發(fā)命令包的數(shù)目,當(dāng)然,在開機和重啟時發(fā)命令包可以不用考慮接收情況,直到收到命令完成事件包或命令狀態(tài)事件包為止。因為在每個命令完成事件包和命令狀態(tài)事件包中都有Num_HCI_Command_Packets選項表明當(dāng)時主機能向主機控制器發(fā)送的命令包的數(shù)目,而對于每個命令必然會有相應(yīng)的命令完成事件包和命令狀態(tài)事件包,主機就能控制命令包不會溢出。

對于數(shù)據(jù)包的流量控制,一開始,主機調(diào)用Read_Buffer_Size命令,該命令返回的兩個參數(shù)決定了主機能發(fā)往主機控制器的ACL和SCO兩種數(shù)據(jù)包的大小的最大值,同時兩個附加參數(shù)則說明了主機控制器能接收的ACL和SCO數(shù)據(jù)包總的數(shù)目。而每隔一段時間,主機控制器會向主機發(fā)Number_Of_Complete_Packets事件,該事件的參數(shù)值表明了對每個連接句柄已經(jīng)處理的數(shù)據(jù)包的數(shù)目(包括正確傳輸和被丟棄的)。主機根據(jù)一開始就知道的總數(shù),減去已經(jīng)處理的包的數(shù)目,則可計算出還能發(fā)多少數(shù)據(jù)包,從而控制數(shù)據(jù)包的流量。

如有必要,HCI的流量控制也可由主機控制器來實現(xiàn)對主機的控制,可以通過Set_Host_Controller_To-Host_Flow_Control命令來設(shè)置,其控制過程基本與主機控制過程類似,只是命令稍有不同。當(dāng)主機收到斷鏈確認的事件后,就認為所有傳往主機控制器的數(shù)據(jù)包已經(jīng)全部被丟棄,同時主機控制器中的數(shù)據(jù)緩沖區(qū)也被釋放了。

2.2.4 RFCOMM協(xié)議

RFCOMM是基于ETSI07.10規(guī)范的串行線仿真協(xié)議。電纜替換協(xié)議在藍牙基帶上仿真RS-232控制和數(shù)據(jù)信號,為使用串行線傳送機制的上層協(xié)議(如OBEX)提供服務(wù)。

藍牙技術(shù)的目的是替代電纜,很明顯最應(yīng)該替代的似乎就是串行電纜。要有效地實現(xiàn)這一點,藍牙協(xié)議棧需要提供與有線串行接口一致的通信接口,以便能為應(yīng)用提供一個熟悉的接口,使那些不曾使用過藍牙通信技術(shù)的傳統(tǒng)應(yīng)用能夠在藍牙鏈路上無縫地工作。對于熟悉串行通信應(yīng)用開發(fā)的人員來說,無須做任何改動即可保證應(yīng)用能在藍牙鏈路上正常工作。然而傳輸?shù)膮f(xié)議并不是專門為串口而設(shè)計的。

SIG在協(xié)議棧中定義了一層與傳統(tǒng)串行接口十分相似的協(xié)議層,這層協(xié)議就是RFCOMM,它的主要目標(biāo)是要在當(dāng)前的應(yīng)用中實現(xiàn)電纜替代方案。

RFCOMM使用L2CAP實現(xiàn)兩個設(shè)備之間的邏輯串行鏈路的連接。需要特別指出的是,一個面向連接的L2CAP信道能將兩個設(shè)備中的兩個RFCOMM實體連接起來。在給定的時間內(nèi),兩個設(shè)備之間只允許有一個RFCOMM連接,但是這個連接可以被復(fù)用,所以設(shè)備間可以存在多個邏輯串行鏈路。第一個RFCOMM的客戶端在L2CAP上建立RFCOMM連接;已有連接上的其他用戶能夠利用RFCOMM的復(fù)用能力,在已有的鏈路上建立新的信道;最后關(guān)閉RFCOMM串行鏈路的用戶將結(jié)束RFCOMM連接。每個復(fù)用鏈路用一個數(shù)字來標(biāo)識,這個數(shù)字被稱作數(shù)據(jù)鏈路連接標(biāo)識符(DLCI)。

在一個單獨的RFCOMM連接上,規(guī)范允許建立多達60個復(fù)用的邏輯串行鏈路,但是對于一個RFCOMM實現(xiàn)而言,沒有強制性的規(guī)定不能超過這個復(fù)用級別。DLCI0為控制信道,DLCI1根據(jù)服務(wù)器信道概念不能使用,DLCI62~63保留使用。

主站蜘蛛池模板: 江达县| 寻乌县| 公安县| 吉林市| 津市市| 名山县| 尼玛县| 合阳县| 墨脱县| 独山县| 澄江县| 洪湖市| 长海县| 山阴县| 长武县| 平舆县| 长汀县| 广灵县| 思南县| 汶上县| 通榆县| 裕民县| 濮阳县| 汾阳市| 定安县| 襄汾县| 新田县| 克拉玛依市| 吉安县| 且末县| 北海市| 张家口市| 巩义市| 洪雅县| 吐鲁番市| 富川| 东乌珠穆沁旗| 临泽县| 固原市| 碌曲县| 曲靖市|