Sam一年前在Linux下寫了一個相似Windows下BTW的庫--BTX。如今須要添加新功能時發現不少知識點都忘記了。因此決定在此次學習中,把一些bluez API記錄下來。這幾天又想,這樣還不夠,不如把Linux下的Bluetooth編程基礎給記錄下來吧。 編程
前言:隨着嵌入式系統的飛速發展,不少嵌入式平臺上須要Bluetooth設備和應用。但在Linux下如何對Bluetooth編程,一直沒有一份很好的中文文檔。Sam結合本身的工做,一步一步將一些有用的東西記錄下來,但願對其它Linux下Bluetooth編程的朋友有點幫助。 windows
一:Bluetooth基本概念: Bluetooth是愛立信、諾基亞、東芝、IBM和Intel 5家公司在1998年聯合推出的一項無線網絡技術。其宗旨是提供一種短距離、低成本的無線傳輸應用技術。在行業協會籌備階段,須要一個極具備表現力的名字來命名這項高新技術。行業組織人員,在通過一晚上關於歐洲歷史和將來無限技術發展的討論後,有些人認爲用Blatand國王的名字命名再合適不過了。Blatand國王將如今的挪威,瑞典和丹麥統一塊兒來;就如同這項即將面世的技術,將標準不一的短距離無線傳輸技術統一塊兒來。 Intel負責半導體芯片和傳輸軟件的開發,愛立信負責無線射頻和移動電話軟件的開發,IBM和東芝負責筆記本電腦接口規格的開發。 藍牙是無線數據和語音傳輸的開放式標準,它將各類通訊設備、計算機及其終端設備、各類數字數據系統、甚至家用電器採用無線方式聯接起來。它的傳輸距離爲10cm~10m,若是增長功率或是加上某些外設即可達到100m的傳輸距離。它採用2.4GHz ISM頻段和調頻、跳頻技術,使用權向糾錯編碼、ARQ、TDD和基帶協議。TDMA每時隙爲0.625μs,基帶符合速率爲1Mb/s。藍牙支持64kb/s實時語音傳輸和數據傳輸,語音編碼爲CVSD,發射功率分別爲1mW、2.5mW和100mW,並使用全球統一的48比特的設備識別碼。因爲藍牙採用無線接口來代替有線電纜鏈接,具備很強的移植性,而且適用於多種場合,加上該技術功耗低、對人體危害小,並且應用簡單、容易實現,因此易於推廣。 藍牙技術的系統結構分爲三大部分:底層硬件模塊、中間協議層和高層應用。底層硬件部分包括無線跳頻(RF)、基帶(BB)和鏈路管理(LM)。無線跳頻層經過2.4GHz無需受權的ISM頻段的微波,實現數據位流的過濾和傳輸,本層協議主要定義了藍牙收發器在此頻帶正常工做所須要知足的條件。基帶負責跳頻以及藍牙數據和信息幀的傳輸。鏈路管理負責鏈接、創建和拆除鏈路並進行安全控制。 關於bluetooth協議棧,接下來再談。 當前已經實現的Bluetooth協議棧有如下各類:1. Widcomm: 第一個windows上的協議棧,由Widcomm公司開發,也就是如今的Broadcom.2. Microsoft Windows stack: Windows XP SP2中包括了這個內建的協議棧,開發者也能夠調用其API開發第三方軟件。3. Toshiba stack: 它也是基於Windows的,不支持第三方開發,但它把協議棧受權給一些laptop商(sony, asus等,個人本本上就是Toshiba的)。它支持的Profile有: SPP, DUN, FAX, LAP, OPP, FTP, HID, HCRP, PAN, BIP, HSP, HFP , A2DP, AVRCP, GAVDP)4. BlueSoleil: 著名的IVT公司的產品.該產品能夠用於桌面和嵌入式,他也支持第三方開發,DUN, FAX, HFP, HSP, LAP, OBEX, OPP, PAN SPP, AV, BIP, FTP, GAP, HID, SDAP, and SYNC。5. Bluez: Linux官方協議棧,該協議棧的上層用Socket封裝,便於開發者使用,經過DBUS與其它應用程序通訊。6. Affix: NOKIA公司的協議棧,在Symbian系統上運行.7. BlueDragon:東軟公司產品,好像2002年6月就經過了藍牙的認證,支持的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 embedded divce的協議棧,iphone(apple),nav-u(sony)等不少電子產品都用該商業的協議棧,BlueMagic 3.0是第一個經過bluetooth 協議棧1.1認證的協議棧,那麼我如今就在用它,那麼該棧用起來簡單,API清晰明瞭。實現了的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: 藍牙芯片CSR的協議棧,同時他也提供了一些上層應用的Profile的庫,固然了它也是爲嵌入式產品了,支持的Profile有:A2DP,AVRCP,PBAP,BIP,BPP,CTP,DUN,FAX,FM API,FTP GAP,GAVDP,GOEP,HCRP,Headset,HF1.5,HID,ICP,JSR82,LAP Message Access Profile,OPP,PAN,SAP,SDAP,SPP,SYNC,SYNC ML。10. Windows CE:微軟給Windows CE開發的協議棧,可是windows ce自己也支持其它的協議棧11. BlueLet:IVT公司for embedded product的清量級協議棧。