實戰(zhàn)Linux Bluetooth編程(一) 協(xié)議棧概述
作者:Sam (甄峰) sam_code@hotmail.com
?
Sam一年前在Linux下寫了一個類似Windows下BTW的庫--BTX?,F(xiàn)在需要添加新功能時發(fā)現(xiàn)很多知識點都忘記了。所以決定在這次學(xué)習(xí)中,把一些bluezAPI記錄下來。這幾天又想,這樣還不夠,不如把Linux下的Bluetooth編程基礎(chǔ)給記錄下來吧。
?
?
前言:隨著嵌入式系統(tǒng)的飛速發(fā)展,很多嵌入式平臺上需要Bluetooth設(shè)備和應(yīng)用。但在Linux下如何對Bluetooth編程,一直沒有一份很好的中文文檔。Sam結(jié)合自己的工作,一步一步將一些有用的東西記錄下來,希望對其它Linux下Bluetooth編程的朋友有點幫助。
?
一:Bluetooth基本概念:
?
Bluetooth是愛立信、諾基亞、東芝、IBM和Intel5家公司在1998年聯(lián)合推出的一項無線網(wǎng)絡(luò)技術(shù)。其宗旨是提供一種短距離、低成本的無線傳輸應(yīng)用技術(shù)。在行業(yè)協(xié)會籌備階段,需要一個極具有表現(xiàn)力的名字來命名這項高新技術(shù)。行業(yè)組織人員,在經(jīng)過一夜關(guān)于歐洲歷史和未來無限技術(shù)發(fā)展的討論后,有些人認(rèn)為用Blatand國王的名字命名再合適不過了。Blatand國王將現(xiàn)在的挪威,瑞典和丹麥統(tǒng)一起來;就如同這項即將面世的技術(shù),將標(biāo)準(zhǔn)不一的短距離無線傳輸技術(shù)統(tǒng)一起來。
Intel負(fù)責(zé)半導(dǎo)體芯片和傳輸軟件的開發(fā),愛立信負(fù)責(zé)無線射頻和移動電話軟件的開發(fā),IBM和東芝負(fù)責(zé)筆記本電腦接口規(guī)格的開發(fā)。
?
藍(lán)牙是無線數(shù)據(jù)和語音傳輸?shù)拈_放式標(biāo)準(zhǔn),它將各種通信設(shè)備、計算機及其終端設(shè)備、各種數(shù)字?jǐn)?shù)據(jù)系統(tǒng)、甚至家用電器采用無線方式聯(lián)接起來。它的傳輸距離為10cm~10m,如果增加功率或是加上某些外設(shè)便可達(dá)到100m的傳輸距離。它采用2.4GHzISM頻段和調(diào)頻、跳頻技術(shù),使用權(quán)向糾錯編碼、ARQ、TDD和基帶協(xié)議。TDMA每時隙為0.625μs,基帶符合速率為1Mb/s。藍(lán)牙支持64kb/s實時語音傳輸和數(shù)據(jù)傳輸,語音編碼為CVSD,發(fā)射功率分別為1mW、2.5mW和100mW,并使用全球統(tǒng)一的48比特的設(shè)備識別碼。由于藍(lán)牙采用無線接口來代替有線電纜連接,具有很強的移植性,并且適用于多種場合,加上該技術(shù)功耗低、對人體危害小,而且應(yīng)用簡單、容易實現(xiàn),所以易于推廣。
?
藍(lán)牙技術(shù)的系統(tǒng)結(jié)構(gòu)分為三大部分:底層硬件模塊、中間協(xié)議層和高層應(yīng)用。底層硬件部分包括無線跳頻(RF)、基帶(BB)和鏈路管理(LM)。無線跳頻層通過2.4GHz無需授權(quán)的ISM頻段的微波,實現(xiàn)數(shù)據(jù)位流的過濾和傳輸,本層協(xié)議主要定義了藍(lán)牙收發(fā)器在此頻帶正常工作所需要滿足的條件?;鶐ж?fù)責(zé)跳頻以及藍(lán)牙數(shù)據(jù)和信息幀的傳輸。鏈路管理負(fù)責(zé)連接、建立和拆除鏈路并進(jìn)行安全控制。
?
關(guān)于bluetooth協(xié)議棧,接下來再談。
?
?
當(dāng)前已經(jīng)實現(xiàn)的Bluetooth棧有以下各種:
1. Widcomm:?第一個windows上的協(xié)議棧,由Widcomm公司開發(fā),也就是現(xiàn)在的Broadcom.
?
2. Microsoft Windows stack: Windows XPSP2中包括了這個內(nèi)建的協(xié)議棧,開發(fā)者也可以調(diào)用其API開發(fā)第三方軟件。
?
3. Toshiba stack: 它也是基于Windows的,不支持第三方開發(fā),但它把協(xié)議棧授權(quán)給一些laptop商(sony,asus等,我的本本上就是Toshiba的)。它支持的Profile有: SPP, DUN, FAX, LAP, OPP, FTP,HID, HCRP, PAN, BIP, HSP, HFP , A2DP, AVRCP, GAVDP)
?
4. BlueSoleil: 著名的IVT公司的產(chǎn)品.該產(chǎn)品可以用于桌面和嵌入式,他也支持第三方開發(fā),DUN, FAX, HFP,HSP, LAP, OBEX, OPP, PAN SPP, AV, BIP, FTP, GAP, HID, SDAP, andSYNC。
5. Bluez:Linux官方協(xié)議棧,該協(xié)議棧的上層用Socket封裝,便于開發(fā)者使用,通過DBUS與其它應(yīng)用程序通信。
6. Affix: NOKIA公司的協(xié)議棧,在Symbian系統(tǒng)上運行.
?
7.BlueDragon:東軟公司產(chǎn)品,好像2002年6月就通過了藍(lán)牙的認(rèn)證,支持的Profile:SDP、Serial-DevB、AVCTP、AVRCP-Controller、AVRCP-Target、Headset-AG、Headset-HS、OPP-Client、OPP-Server、CT-GW、CT-Term、Intercom、FT-Server、FT-Client、GAP、SDAP、Serial-DevA、AVDTP、GAVDP、A2DP-Source、A2DP-Sink.
8. BlueMagic:美國Open Interface 公司for portable embeddeddivce的協(xié)議棧,iphone(apple),nav-u(sony)等很多電子產(chǎn)品都用該商業(yè)的協(xié)議棧,BlueMagic3.0是第一個通過bluetooth協(xié)議棧1.1認(rèn)證的協(xié)議棧,那么我現(xiàn)在就在用它,那么該棧用起來簡單,API清晰明了。實現(xiàn)了的profile有:HCI,L2CAP,RFCOMM,A/V,Remote,Control,A/V,Streaming,BIP,BPP,DUN,FAX,FTP,GAP,Hands-Free,and,Headset,HCRP,HID,OBEX,OPP,PAN,BNEP,PBAP,SAP,SPP,Synchronization,SyncML,Telephony,XML.
9. BCHS-Bluecore Host Software:藍(lán)牙芯片CSR的協(xié)議棧,同時他也提供了一些上層應(yīng)用的Profile的庫,當(dāng)然了它也是為嵌入式產(chǎn)品了,支持的Profile有:A2DP,AVRCP,PBAP,BIP,BPP,CTP,DUN,FAX,FMAPI,FTP GAP,GAVDP,GOEP,HCRP,Headset,HF1.5,HID,ICP,JSR82,LAP MessageAccess Profile,OPP,PAN,SAP,SDAP,SPP,SYNC,SYNC ML。
10. Windows CE:微軟給Windows CE開發(fā)的協(xié)議棧,但是windowsce本身也支持其它的協(xié)議棧
11. BlueLet:IVT公司for embedded product的清量級協(xié)議棧。
?
?