藍牙通信在信息家電中的實現
藍牙可以作為一種有效的通信手段,實現家庭網關與信息家電間的控制信息等其他適中數據量的傳輸。本文首先介紹藍牙的HCI和藍牙協議L2CAP、BNEP,然后介紹如何在Linux2.4.18下實現USB藍牙驅動,最后介紹如何實現在藍牙個人局域網中進行無線通信。
1 信息家電的基本框圖
信息家電的基本結構圖如下圖1所示,家庭主網關是負責各種家電與外部環境進行“交流”的橋梁,其中與外部環境進行通信的方式包括Ethernet、PSTN固話網等等。而就家庭內部而言,對于如:空調、電視等普通信息家電,由于家庭網關與其通信的數據量并不大,因此完全可以采取藍牙無線方式進行通信,從而達到控制家電工作的目的。
圖1
2藍牙的HCI和L2CAP、BNEP協議
藍牙協議體系大致分為三層,即底層硬件模塊層、中間協議層、高端應用層,每一層還
包含一些具體的協議。
2.1藍牙的HCI
藍牙的主機控制接口(HCI)是藍牙主機--主控制器應用模式中藍牙模塊和主機間的軟硬件接口,它位于藍牙協議棧的底層硬件模塊層與中間協議層之間,負責完成這二層的數據通信[1]。目前,藍牙HCI傳輸層的物理接口有USB、UART等,藍牙設備可以采用這些物理接口來實現通信。本文將介紹用USB口作為傳輸層實現通信。
2.2藍牙的L2CAP協議
藍牙的邏輯鏈路控制與適配協議(L2CAP)是整個藍牙協議的核心,它位于中間協議層,它將下層的數據分組轉換為便于高層應用的數據分組格式,并提供協議復用等功能。它向上層協議提供了面向連接和無連接的服務,L2CAP層只支持ACL(異步無連接)數據的傳輸,而不支持SCO(同步面向連接)數據的傳輸[1]。
2.3 藍牙的BNEP協議
藍牙SIG制定的網絡封裝協議(BNEP,Bluetooth Network Encapsulation Protocol),可對上層IP協議提供類似于以太網的接口,對IEEE802. 3/Ethernet封裝支持的網絡協議,均予以支持 [2]。BNEP通過面向連接的L2CAP來實現的,L2CAP可以看作是藍牙介質訪問控制(MAC)層。BNEP在整個藍牙協議棧中起著一個橋梁的作用,它將IP包轉換成L2CAP包通過藍牙傳輸。BNEP協議主要應用在藍牙個人區域網中。
3 USB藍牙模塊驅動
1、由于采用的內核是Linux2.4.18,其中并沒有包括對藍牙驅動的支持,因此必須對其打補丁。解壓Linux2.4.18內核,把藍牙補丁包patch-2.4.18-mh15.gz放在解壓內核目錄下,執行命令patch –p1 patch-2.4.18-mh15.gz[3]。
2、Linux Bluetooth協議棧中的BNEP(Bluetooth 網絡封裝協議)實現了Bluetooth上的以太網仿真
評論