和菜鳥一起學linux之bluetooth學習記錄基礎知識

來源:互聯網
上載者:User

 

藍芽技術是一項新興的技術。它的主要目的就是要在全世界範圍內建立一個短距離的無線通訊標準。它使用 2.4-2.5 GHz的 ISM(Industrion ScientifcMedical ) 頻段來傳送話音和資料。運用成熟、實用、先進的無線技術來代替電纜,它提供了低成本,低功耗的無線介面,使所有的固定和行動裝置諸如:電腦系統、家庭影院系統、無繩電話系統、通訊裝置等,通過微微網(PAN, Personal Area Network)串連起來相互連信,實現資源共用。

 

關於藍芽規範

藍芽的標準是IEEE802.15,工作在2.4GHz 頻帶,頻寬為1Mb/s。以時分方式進行全雙工系統通訊,其基帶協議是電路交換和封包交換的組合。一個跳頻頻率發送一個同步分組,每個分組佔用一個時隙,使用擴頻技術也可擴充到5個時隙。同時,藍芽支援人員1個非同步資料通道或3個並發的同步話音通道,或1個同時傳送非同步資料和同步話音的通道。每一個話音通道支援64kb/s的同步話音;非同步通道支援最大速率為721kb/s,反嚮應答速率為57. 6 kb/s的非對稱串連,或者是432.
6 kb/s對稱串連。

依據發射輸出電平功率不同,藍芽傳輸有3 種距離等級:Class1 為100m左右;Class2約為10m;Class3 約為2-3m。一般情況下,其正常的工作範圍是10m半徑之內。在此範圍內,可進行多台裝置間的互聯。

藍芽技術的特點包括:1、採用跳頻技術,資料包短,抗訊號衰減能力強;2、採用快速跳頻和前向錯誤修正方案以保證鏈路穩定,減少同頻幹擾和遠距離傳輸時的隨機雜訊影響;3、使用2.4GHzISM頻段,無須申請許可證;4、可同時支援資料、音頻、視頻訊號;5、採用FM調製方式,降低裝置的複雜性。

 

關於藍牙裝置

藍芽技術將裝置分為兩種:主裝置和從裝置。

藍芽主裝置的特點:主裝置一般具有輸入端。在進行藍芽匹配操作時,使用者通過輸入端可輸入隨機的匹配密碼來將兩個裝置匹配。藍芽手機、安裝有藍芽模組的PC等都是主裝置。(例如:藍芽手機和藍芽PC進行匹配時,使用者可在藍芽手機上任意輸入一組數字,然後在藍芽PC上輸入相同的一組數字,來完成這兩個裝置之間的匹配。)

藍芽從裝置特點:從裝置一般不具備輸入端。因此從裝置在出廠時,在其藍芽晶片中,固化有一個4位或6位元字的匹配密碼。藍芽耳機、優士通UD筆等都是從裝置。(例如:藍芽PC與UD筆匹配時,使用者將UD筆上的藍芽匹配密碼正確的輸入到藍芽PC上,完成UD筆與藍芽PC之間的匹配。)

 

關於藍芽串連

藍芽主端裝置發起呼叫,首先是尋找,找出周圍處於可被尋找的藍牙裝置,此時從端裝置需要處於可被尋找狀態。

主端裝置找到從端藍牙裝置後,與從端藍牙裝置進行配對,此時需要輸入從端裝置的數字 PIN 碼,一般藍芽耳機預設為:1234或0000,立體聲藍芽耳機預設為:8888,也有裝置不需要輸入數字 PIN 碼。

配對完成後,從端藍牙裝置會記錄主端裝置的信任資訊,此時主端即可向從端裝置發起呼叫,根據應用不同,可能是ACL資料鏈路呼叫或SCO語音鏈路呼叫,已配對的裝置在下次呼叫時,不再需要重新配對。

已配對的裝置,做為從端的藍芽耳機也可以發起建鏈請求,但做資料通訊的藍芽模組一般不發起呼叫。

鏈路建立成功後,主從兩端之間即可進行雙向的資料或語音通訊

在通訊狀態下,主端和從端裝置都可以發起斷鏈,斷開藍芽鏈路

 

關於藍芽協議棧體繫結構

Linux系統的官方藍芽協議棧是Bluez協議棧, 其體繫結構1所示。它是由底層硬體模組,中間協議層和高端應用程式層三大部分組成。

                                          圖1:藍芽協議棧體繫結構

 

1、底層硬體模組是藍芽技術的核心模組,所有嵌入藍芽技術的裝置都必須包括底層模組。它主要由鏈路管理層(LMP Link Manager Protocol )、基帶層(BB Base Band )和射頻(RF Rodio Frequency)組成。其功能是如下:

無線串連層(RF):通過2.4GHZ無需申請的ISM 頻段, 實現資料流的過濾和傳輸, 它主要定義了對工作在此頻段的藍芽接收機應滿足的要求;

基帶層(BB):提供了兩種不同的物理鏈路(同步連線導向鏈路SCO Synchronous ConnectionOriented和非同步無串連鏈路ACL AsynchronousConnection Less ),負責跳頻和藍芽資料及資訊幀的傳輸,且對所有類型的資料包提供了不同層次的前向錯誤修正碼(FEC Frequency ErrorCorrection )或迴圈沉餘度差錯校正(CTC Cyc lic RedundancyCheck);

LMP層:負責兩個或多個裝置鏈路的建立和拆除及鏈路的安全和控制,如鑒權和加密、控制和協商基帶包的大小等,它為上層軟體模組提供了不同的訪問入口;

藍芽主機控制器介面HCI(Host Controller Interface):由基帶控制器、連線管理員、控制和事件寄存器等組成。它是藍芽協議中軟硬體之間的介面,它提供了一個調用下層BB、LM、狀態和控制寄存器等硬體的統一命令, 上、下兩個模組介面之間的訊息和資料的傳遞必須通過HCI 的解釋才能進行。HCI 層以上的協議軟體實體運行在主機上,而HCI以下的功能由藍牙裝置來完成,二者之間通過傳輸層進行互動。

 

2、中間協議層由邏輯鏈路控制與適配協議L2CAP(Logical Link Control andAdaptation Protocol)、服務發現協議SDP (Service Discovery Protocol)、串口模擬協議或稱線纜替換協議RFCOM 和二進位電話控制協議TCS (Telephony

Control protocol Spectocol)組成。

邏輯鏈路控制與適配協議(L2CAP):是藍芽協議棧的核心組成部分,也是其它協議實現的基礎。它位於基帶之上,向上層提供連線導向的和不需連線的資料服務。它主要完成資料的拆裝、服務品質控制,協議的複用、分組的分割和重組(Segmentation AndReassembly )及組提取等功能。L2CAP允許高達64KB 的資料分組。

服務發現協議(SDP): 是一個基於客戶/ 伺服器結構的協議。它工作在L2CAP層之上,為上層應用程式提供一種機制來發現可用的服務及其屬性, 而服務的屬性包括服務的類型及該服務所需的機制或協議資訊。

串口模擬協議或稱線纜替換協議RFCOMM:是一個模擬有線鏈路的無線資料模擬協議,符合ETSI標準的TS 07.10串口模擬協議。它在藍芽基帶上模擬RS-232的控制和資料訊號,為原先使用串列串連的上層業務提供傳送能力。

二進位電話控制協議TCS :是一個基於ITU-TQ.931 建議的採用面向位元的協議,它定義了用於藍牙裝置之間建立語音和資料呼叫的控制信令(Call Control Signalling),並負責處理藍牙裝置組的移動管理過程。

 

3、高端應用程式層位於藍芽協議棧的最上部分。一個完整的藍芽協議棧按其功能又可劃分為四層:核心協議層(BB、LMP、LCAP 、SDP )、線纜替換協議層(RFCOMM )、電話控制協議層(TCS-BIN )、選用協議層(PPP 、TCP 、TP、UDP 、OBEX、IrMC、WAP、WAE)。

高端應用程式層就是由選用協議層組成。

選用協議層中的PPP (Point-to-Point Protocol)是點到點協議,它由封裝、鏈路控制協議、網路控制協議組成,它定義了串列點到點鏈路應當如何傳輸網際網路協議資料,它主要用於LAN接入、撥號網路及傳真等應用規範;TCP/IP(傳輸控制通訊協定/ 網路層協議) 、UDP(User Datagram Protocol 對象交換協議)是三種已有的協議,它定義了網際網路與網路相關的通訊及其他類型電腦裝置和外圍裝置之間的通訊。藍芽採用或共用這些已有的協議去實現與串連網際網路的裝置的通訊,這樣,既可提高效率,又可在一定程度上保證藍芽技術和其它通訊技術的互通性;

OBEX(Object Exchange Protocol)是對象交換協議,它支援裝置間的資料交換,採用客戶/ 伺服器模式提供與HTTP(超文字傳輸通訊協定 (HTTP))相同的準系統。該協議作為一個開放性標準還定義了可用於交換的電子商務卡、個人議程表、訊息、和便條等格式;

WAP(Wireless Application Protocol)是無線應用通訊協定,它的目的是要在數字蜂窩電話和其它小型無線裝置上實現網際網路業務。它支援行動電話瀏覽網頁、收取電子郵件和其它基於網際網路的協議。

WAE(Wireless Application Environment) 是無線應用環境, 它提供用於 WAP 電話和個人數位助理PDA(Personal Digtital Assistant) 所需的各種應用軟體。

藍芽音頻(Audio)是通過在基帶上直接傳輸SCO分組實現的,目前藍芽SIG並沒有以規範的形式給出此部分。雖然嚴格意義上來講它並不是藍芽協議規範的一部分,但也可以視為藍芽協議體系中的一個直接面嚮應用的層次。

 

 

HCI層位於藍芽協議的中介層與底層,起著溝通兩者的作用(圖2中描述了HCI層在底層軟體中的位置)。同時,HCI層也是藍芽軟體與藍芽硬體之間的互動介面。藍芽軟體將通過HCI層提供的一系列介面完成與藍芽硬體的通訊。就是藍芽軟體將通過HCI層的介面函數實現對藍芽適配器設定和控制。

HCI也可以讀取和設定遠程藍牙裝置的相應參數。


圖2:HCI架構

HCI三項準系統。

1、完成對本地藍牙裝置參數的讀取和設定;

2、負責對周圍裝置進行掃描,並可以對遠程藍牙裝置的基本參數進行讀取和設定;

3、提供一個HCI命令的發送介面,可以直接利用HCI命令控制本地藍芽適配器。

BlueZ的HCI層是基於上文描述的C/S模式進行的。一般來講,發起會話的藍牙裝置將充當C/S模式的用戶端,而被串連的遠程裝置扮演伺服器端角色。在Linux中,藍芽應用啟動以後,其守護進程(守護進程,運行於背景,用於為系統提供某項服務的程式)bluetoothd起到了C/S模型中伺服器的作用,可以對來自遠端查詢和連結請求進行響應。

(1) 本地裝置參數讀模數塊實現

本地裝置參數的讀取將通過get_dev_infor()函數調用完成。這個介面將給出本地裝置的bd_addr、dev_name和dev_id等所有包含於hci_dev_info結構中的參數。這個結構體用於描述裝置的基本參數。另外,本地參數讀模數塊還提供了單獨針對某一參數的介面。如,獲得本地裝置名稱的get_localnameO,獲得本地bd_addr的get_local_addr0等。其實現流程與遠程裝置參數讀取基本類似,只是不需要建立socket串連,不需要對遠程裝置進行查詢,其資料處理方法和實現方法均一致。在此,僅以遠程裝置的讀取流程進行敘述。

(2) 遠程裝置參數讀模數塊實現

遠程裝置參數讀模數塊的功能與上一模組基本一致。所不同的是,在讀取時需要先完成對周圍裝置查詢,得到遠程裝置的bd_addr,並填充inquiry_info結構。而後,本地裝置將與其建立串連,最終實現參數的傳遞。另外,這裡通過調用hciread_remotename0、hciread_remoteversion0和hci_read_remote_featuresO等函數來實現對遠程裝置其他參數的讀取。

 

 

藍芽協議棧中,位於HCI層之上的是L2CAP層,即邏輯鏈路控制和適配層(Logical Link Control andAdaptation Protoc01)。

L2CAP在藍芽協議中的位置3.9所示。它處於底層與高層協議之間。L2CAP通過協議多工、分段和重組操作以及組的概念,向高層協議提供面向連結和面向無連結的資料服務。L2CAP允許高層協議和應用傳輸長達64Kb的L2CAP分組。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.