劉玉賓,鄭晶晶
(唐山師范學院 計算機科學系,河北 唐山 063000)
1998年愛立信、IBM、Intel、諾基亞和東芝公司聯合推出了一項最新的無線網絡技術,即藍牙(BlueTooth)技術。藍牙技術是一種無線數據與語音通信的開放性全球規范,它以低成本的近距離無線連接為基礎,為固定與移動設備通信環境建立一個特別連接的短程無線電技術。其實質內容是要建立通用的無線電空中接口(radio air interface)及其控制軟件的公開標準,使通信和計算機進一步結合,使不同廠家生產的便攜式設備在沒有電線或電纜相互連接的情況下,能在近距離范圍內具有相互操作的性能(interoperability)[1]。藍牙技術采用無線電纜的概念,實現了設備間的無線連接和接入數據網的功能,具有外圍設備的接口,從而實現了藍牙局域網的開發。
藍牙特別興趣小組(Bluetooth SIG)于1999年7月正式公布了藍牙技術規范的1.0版。藍牙協議規范的目標是允許遵循規范的應用能夠進行相互間操作。整個藍牙協議棧體系結構如圖1所示。

圖1 藍牙協議棧體系結構
底層硬件模塊由鏈路管理層(LM)、基帶層(BB)和射頻(RF)三部分構成。RF通過2.4GHz無需授權的ISM頻段,實現數據位流的過濾與傳輸,它主要定義藍牙收發器滿足的要求。BB主要負責跳頻和藍牙數據及信息幀的傳輸。LM主要負責連接的建立和拆除以及鏈路的安全和控制,它們為上層軟件模塊提供了不同的訪問口,但是兩個模塊接口之間的消息和數據傳遞必須通過藍牙主機控制器接口(HCI)的解釋才能進行,也就是說HCI是藍牙系統中硬件和軟件的統一命令接口。中間協議層包括邏輯鏈路控制和適配協議(L2CAP)、服務發現協議(SDP)、串口仿真協議(RFCOMM)和電話通信協議(TCS)。L2CAP完成數據拆裝、服務質量控制和協議復用等功能,是其它上層協議實現的基礎,因此也是藍牙協議棧的核心部分。SDP為上層應用程序提供一種機制來發現網絡中可用的服務及其特性。RFCOMM依據ESTI標準TS07.10在L2CAP上仿真9針RS232串口功能。TCS則提供藍牙設備見話音和數據的呼叫控制信令。
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟件,它是嵌入式系統(包括硬、軟件系統)極為重要的組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等browser。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬件的相關依賴性、軟件固態化以及應用的專用性等方面具有較為突出的特點
盡管藍牙規范定義了很多應用框架(Profile),如:文件傳輸、數據訪問點、實時同步、終端耳機等,但不外乎兩個方面的藍牙應用:語音/數據訪問點、外設連接。語音/數據訪問點是最先提出的訪問模型,它的目的在于通過安全的無線鏈路把計算機和通訊設備連接起來。這類模型的典型代表就是藍牙局域網訪問(Lan Acess)模型。藍牙局域網訪問包括兩部分內容:使具有藍牙功能的設備通過PPP協議存取局域網的服務和使用 PPP機制組成一個包含兩個具有藍牙功能的設備網絡。下面以 IP-PPP架構為例說明一下藍牙局域網的設計思路。
PPP網絡就是將IP數據包傳入或者傳出PPP協議層,然后將這些數據包傳給局域網。藍牙局域網中的訪問設備有兩種,一種是數據終端DT(Data Terminal),用來使用局域網訪問服務,它是PPP的客戶端,主動和藍牙局域網訪問點LAP建立PPP連接,存取藍牙局域網。另外一種是藍牙局域網訪問點,提供存取局域網的服務功能。LAP是PPP的服務器端。PPP連接建立在RFCOMM上。RFCOMM傳輸PPP包并且配合PPP進行流控。藍牙局域網功能模塊實現分三個步驟:
(1)初始化藍牙局域網訪問點
在這個過程中,通常將設備設置為LAP,設定GAP參數,如最大用戶數和發現模式,設定要求使用的PIN或者建鏈密鑰,設定PPP參數,在設定PPP參數過程中,不應該設定LAP的PPP身份機制,這一工作通常由LAP管理者完成。完成初始化進程后就可以連接PPP。
(2)建立局域網連接
首先,DT主動發出請求與局域網進行連接,DT在LAP列表中選擇一個服務點,并通過藍牙的SDP協議,得到建立RFCOMM連接的全部信息,接著,DT輸入藍牙認證的PIN或者建鏈密鑰Link Key。如果上一步設置了PPP認證環節,還需要輸入用戶名和密碼。這樣第二步建立PPP鏈路完成。
(3)拆除局域網連接
用戶或者 LAP端在使用藍牙局域網過程中都可能斷掉PPP鏈路,這樣,我們必須設置拆除局域網連接功能,也就是拆除PPP鏈路。那么我們可以通過對PPP層的操作來實現,首先拆除IPCP鏈路,斷掉IP連接,斷掉LCP連接,拆除RFCOMM連接,當RFCOMM/L2CAP連接突然斷掉,也會斷掉PPP鏈路。
DT端的操作環境一般基于Windows平臺,而LAP一般是架構在嵌入式系統上。所以主要設計部分一般在 LAP端的軟件設計部分。LAP的軟件設計由三個模塊和一個接口組成:分別是藍牙模塊,PPP模塊,RAS(Remote Access Server)模塊和模塊之間的接口。
3.2.1 實現藍牙模塊
藍牙模塊的主要工作在編寫藍牙協議棧的下接口上,其功能是通過一個適配層 Transport Layers連接 HCI和HCITransport Layer 數據附送調用操作系統的Driver來驅動硬件,所以實現下接口就要重寫Transport Layers 來調用OS Driver。圖示如下:

圖2 藍牙協議棧下接口
3.2.2 實現PPP模塊
PPP協議由嵌入式操作系統提供,用戶要編寫的是PPP進程的實現,首先用戶在初始化接口Application_Initialize()創建PPP進程,其工作過程為先創建一個NET模塊到所用的內存池,然后對NET模塊進行初始化,對PPP模塊進行初始化,當出事工作完畢后,設置事件并啟動相關進程,并對連接過程進行監視。代碼如下:
Void PPP_Task(UNSIGNED argc, VOID *argv)
{
……
PPPI_Device[0].dv_name= “PPP_0”
PPPI_Device[0].dv_init= PPP_Initialize;
PPPI_Device[0].dv_flags=
(DV_POINTTOPOINT|DV_NOARP)
PPPI_Device[0].dv_hw.uart.com_port= SMC1;
PPPI_Device[0].dv_hw.uart.baud_rate= 115200;
……
}
3.2.3 實現RAS模塊
DT端在Windows環境下,LAP需要實現一個RAS模塊來配合Windows來實現藍牙局域網的功能,RAS模塊的主要作用是模仿調制解調器回復的 AT命令,使對端的Windows以為在和一個真正的調制解調器通信,當Windows開始發送PPP包是,切換數據走向,將PPP包傳送給PPP模塊。代碼如下:
Void RemoterAccessServer(UNSIGNED argc, VOID*argv)
{
……
Do
{
DEMO!_GET_Modem_String(mstring,Devices[1].dv_na me);
NU_Modem_Control_String(“Yes ”,Devices[1].dv_na me);
} while(strncmp(mstring,”ATDT”,4)!=0);
………..
}
采用藍牙技術組建局域網,不僅在辦公條件不完善時能發揮作用,而且在臨時增刪辦公點和移動性辦公業務方面也有著獨特的優勢。隨著藍牙技術的發展,組建藍牙局域網會越來越經濟實用。