劉玉賓,鄭晶晶
(唐山師范學(xué)院 計算機科學(xué)系,河北 唐山 063000)
1998年愛立信、IBM、Intel、諾基亞和東芝公司聯(lián)合推出了一項最新的無線網(wǎng)絡(luò)技術(shù),即藍(lán)牙(BlueTooth)技術(shù)。藍(lán)牙技術(shù)是一種無線數(shù)據(jù)與語音通信的開放性全球規(guī)范,它以低成本的近距離無線連接為基礎(chǔ),為固定與移動設(shè)備通信環(huán)境建立一個特別連接的短程無線電技術(shù)。其實質(zhì)內(nèi)容是要建立通用的無線電空中接口(radio air interface)及其控制軟件的公開標(biāo)準(zhǔn),使通信和計算機進(jìn)一步結(jié)合,使不同廠家生產(chǎn)的便攜式設(shè)備在沒有電線或電纜相互連接的情況下,能在近距離范圍內(nèi)具有相互操作的性能(interoperability)[1]。藍(lán)牙技術(shù)采用無線電纜的概念,實現(xiàn)了設(shè)備間的無線連接和接入數(shù)據(jù)網(wǎng)的功能,具有外圍設(shè)備的接口,從而實現(xiàn)了藍(lán)牙局域網(wǎng)的開發(fā)。
藍(lán)牙特別興趣小組(Bluetooth SIG)于1999年7月正式公布了藍(lán)牙技術(shù)規(guī)范的1.0版。藍(lán)牙協(xié)議規(guī)范的目標(biāo)是允許遵循規(guī)范的應(yīng)用能夠進(jìn)行相互間操作。整個藍(lán)牙協(xié)議棧體系結(jié)構(gòu)如圖1所示。
圖1 藍(lán)牙協(xié)議棧體系結(jié)構(gòu)
底層硬件模塊由鏈路管理層(LM)、基帶層(BB)和射頻(RF)三部分構(gòu)成。RF通過2.4GHz無需授權(quán)的ISM頻段,實現(xiàn)數(shù)據(jù)位流的過濾與傳輸,它主要定義藍(lán)牙收發(fā)器滿足的要求。BB主要負(fù)責(zé)跳頻和藍(lán)牙數(shù)據(jù)及信息幀的傳輸。LM主要負(fù)責(zé)連接的建立和拆除以及鏈路的安全和控制,它們?yōu)樯蠈榆浖K提供了不同的訪問口,但是兩個模塊接口之間的消息和數(shù)據(jù)傳遞必須通過藍(lán)牙主機控制器接口(HCI)的解釋才能進(jìn)行,也就是說HCI是藍(lán)牙系統(tǒng)中硬件和軟件的統(tǒng)一命令接口。中間協(xié)議層包括邏輯鏈路控制和適配協(xié)議(L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(SDP)、串口仿真協(xié)議(RFCOMM)和電話通信協(xié)議(TCS)。L2CAP完成數(shù)據(jù)拆裝、服務(wù)質(zhì)量控制和協(xié)議復(fù)用等功能,是其它上層協(xié)議實現(xiàn)的基礎(chǔ),因此也是藍(lán)牙協(xié)議棧的核心部分。SDP為上層應(yīng)用程序提供一種機制來發(fā)現(xiàn)網(wǎng)絡(luò)中可用的服務(wù)及其特性。RFCOMM依據(jù)ESTI標(biāo)準(zhǔn)TS07.10在L2CAP上仿真9針RS232串口功能。TCS則提供藍(lán)牙設(shè)備見話音和數(shù)據(jù)的呼叫控制信令。
嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等browser。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點
盡管藍(lán)牙規(guī)范定義了很多應(yīng)用框架(Profile),如:文件傳輸、數(shù)據(jù)訪問點、實時同步、終端耳機等,但不外乎兩個方面的藍(lán)牙應(yīng)用:語音/數(shù)據(jù)訪問點、外設(shè)連接。語音/數(shù)據(jù)訪問點是最先提出的訪問模型,它的目的在于通過安全的無線鏈路把計算機和通訊設(shè)備連接起來。這類模型的典型代表就是藍(lán)牙局域網(wǎng)訪問(Lan Acess)模型。藍(lán)牙局域網(wǎng)訪問包括兩部分內(nèi)容:使具有藍(lán)牙功能的設(shè)備通過PPP協(xié)議存取局域網(wǎng)的服務(wù)和使用 PPP機制組成一個包含兩個具有藍(lán)牙功能的設(shè)備網(wǎng)絡(luò)。下面以 IP-PPP架構(gòu)為例說明一下藍(lán)牙局域網(wǎng)的設(shè)計思路。
PPP網(wǎng)絡(luò)就是將IP數(shù)據(jù)包傳入或者傳出PPP協(xié)議層,然后將這些數(shù)據(jù)包傳給局域網(wǎng)。藍(lán)牙局域網(wǎng)中的訪問設(shè)備有兩種,一種是數(shù)據(jù)終端DT(Data Terminal),用來使用局域網(wǎng)訪問服務(wù),它是PPP的客戶端,主動和藍(lán)牙局域網(wǎng)訪問點LAP建立PPP連接,存取藍(lán)牙局域網(wǎng)。另外一種是藍(lán)牙局域網(wǎng)訪問點,提供存取局域網(wǎng)的服務(wù)功能。LAP是PPP的服務(wù)器端。PPP連接建立在RFCOMM上。RFCOMM傳輸PPP包并且配合PPP進(jìn)行流控。藍(lán)牙局域網(wǎng)功能模塊實現(xiàn)分三個步驟:
(1)初始化藍(lán)牙局域網(wǎng)訪問點
在這個過程中,通常將設(shè)備設(shè)置為LAP,設(shè)定GAP參數(shù),如最大用戶數(shù)和發(fā)現(xiàn)模式,設(shè)定要求使用的PIN或者建鏈密鑰,設(shè)定PPP參數(shù),在設(shè)定PPP參數(shù)過程中,不應(yīng)該設(shè)定LAP的PPP身份機制,這一工作通常由LAP管理者完成。完成初始化進(jìn)程后就可以連接PPP。
(2)建立局域網(wǎng)連接
首先,DT主動發(fā)出請求與局域網(wǎng)進(jìn)行連接,DT在LAP列表中選擇一個服務(wù)點,并通過藍(lán)牙的SDP協(xié)議,得到建立RFCOMM連接的全部信息,接著,DT輸入藍(lán)牙認(rèn)證的PIN或者建鏈密鑰Link Key。如果上一步設(shè)置了PPP認(rèn)證環(huán)節(jié),還需要輸入用戶名和密碼。這樣第二步建立PPP鏈路完成。
(3)拆除局域網(wǎng)連接
用戶或者 LAP端在使用藍(lán)牙局域網(wǎng)過程中都可能斷掉PPP鏈路,這樣,我們必須設(shè)置拆除局域網(wǎng)連接功能,也就是拆除PPP鏈路。那么我們可以通過對PPP層的操作來實現(xiàn),首先拆除IPCP鏈路,斷掉IP連接,斷掉LCP連接,拆除RFCOMM連接,當(dāng)RFCOMM/L2CAP連接突然斷掉,也會斷掉PPP鏈路。
DT端的操作環(huán)境一般基于Windows平臺,而LAP一般是架構(gòu)在嵌入式系統(tǒng)上。所以主要設(shè)計部分一般在 LAP端的軟件設(shè)計部分。LAP的軟件設(shè)計由三個模塊和一個接口組成:分別是藍(lán)牙模塊,PPP模塊,RAS(Remote Access Server)模塊和模塊之間的接口。
3.2.1 實現(xiàn)藍(lán)牙模塊
藍(lán)牙模塊的主要工作在編寫藍(lán)牙協(xié)議棧的下接口上,其功能是通過一個適配層 Transport Layers連接 HCI和HCITransport Layer 數(shù)據(jù)附送調(diào)用操作系統(tǒng)的Driver來驅(qū)動硬件,所以實現(xiàn)下接口就要重寫Transport Layers 來調(diào)用OS Driver。圖示如下:
圖2 藍(lán)牙協(xié)議棧下接口
3.2.2 實現(xiàn)PPP模塊
PPP協(xié)議由嵌入式操作系統(tǒng)提供,用戶要編寫的是PPP進(jìn)程的實現(xiàn),首先用戶在初始化接口Application_Initialize()創(chuàng)建PPP進(jìn)程,其工作過程為先創(chuàng)建一個NET模塊到所用的內(nèi)存池,然后對NET模塊進(jìn)行初始化,對PPP模塊進(jìn)行初始化,當(dāng)出事工作完畢后,設(shè)置事件并啟動相關(guān)進(jìn)程,并對連接過程進(jìn)行監(jiān)視。代碼如下:
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 實現(xiàn)RAS模塊
DT端在Windows環(huán)境下,LAP需要實現(xiàn)一個RAS模塊來配合Windows來實現(xiàn)藍(lán)牙局域網(wǎng)的功能,RAS模塊的主要作用是模仿調(diào)制解調(diào)器回復(fù)的 AT命令,使對端的Windows以為在和一個真正的調(diào)制解調(diào)器通信,當(dāng)Windows開始發(fā)送PPP包是,切換數(shù)據(jù)走向,將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);
………..
}
采用藍(lán)牙技術(shù)組建局域網(wǎng),不僅在辦公條件不完善時能發(fā)揮作用,而且在臨時增刪辦公點和移動性辦公業(yè)務(wù)方面也有著獨特的優(yōu)勢。隨著藍(lán)牙技術(shù)的發(fā)展,組建藍(lán)牙局域網(wǎng)會越來越經(jīng)濟(jì)實用。