轉載自http://www.360doc.com/content/12/0919/13/10388890_237015006.shtml
Android藍芽系統分為四個層次,核心層、BlueZ庫、BlueTooth的適配庫、BlueTooth的JNI部分、Java架構層、應用程式層。下面先來分析Android的藍芽協議棧。
Android的藍芽協議棧採用BlueZ來實現,BlueZ分為兩部分:核心代碼和使用者態程式及工具集。
核心代碼主要由BlueZ核心協議和驅動程式組成;藍芽協議實現在核心原始碼net/bluetooth中,驅動程式位於核心原始碼目錄driver/bluetooth中。使用者態程式及工具集主要包括應用程式介面和BlueZ工具集,位於Android原始碼目錄externel/bluetooth(註:Android版本不一樣,有的在externel/bluez目錄下)中。
1、藍芽協議棧
藍芽協議棧的體繫結構由底層硬體模組、中間協議層和高端應用程式層三部分組成。
一、底層硬體模組
組成:
鏈路管理協議(Link ManagerProtocol,LMP);
基帶(Base Band,BB);
射頻(Radio Frequency,RF)。
功能:
射頻(RF)通過2.4GHz的ISM頻段實現資料流的過濾和傳輸。
基帶(BB)提供兩種不同的物理鏈路,即同步連線導向鏈路(Synchronous Connection Oriented,SCO)和非同步無串連鏈路(AsynchronousConnection Less,ACL),負責跳頻和藍芽資料,及資訊幀的傳輸,且對所有類型的資料包提供不同層次的前向錯誤修正碼(Frequency Error Correction,FEC)或迴圈冗餘度差錯校正(CyclicRedundancy Check,CRC)。
鏈路管理協議(LMP)負責兩個或多個裝置鏈路的建立和拆除,及鏈路的安全和控制,如鑒權和加密、控制和協商基帶包的大小等,它為上層軟體模組提供了不同的訪問入口。
主機控制器介面(HostController Interface,HCI)是藍芽協議中軟硬體之間的介面,提供了一個調用下層BB、LMP、狀態和控制寄存器等硬體的統一命令,上下兩個模組介面之間的訊息和資料的傳遞必須通過HCI的解釋才能進行。
二、中間協議層
組成:
邏輯連接控制與應用協定(LogicalLink Control and Adaptation Protocol,L2CAP);
服務發現協議(ServiceDiscovery Protocol,SDP);
串口模擬協議(或稱線纜替換協議RFCOMM);
二進位電話控制協議(TelephonyControlprotocol Spectocol,TCS)。
功能:
L2CAP位於基帶(BB)之上,向上層提供連線導向的和不需連線的資料服務,它主要完成資料的拆裝、服務品質控制、協議的複用、分組的分割和重組,及組提取等功能。
SDP是一個基於客戶/伺服器結構的協議,它工作在L2CAP層之上,為上層應用程式提供一種機制來發現可用的服務及其屬性,服務的屬性包括服務的類型及該服務所需的機制或協議資訊。
RFCOMM是一個模擬有線鏈路的無線資料模擬協議,符合ETSI標準的TS07.10串口模擬協議,它在藍芽基帶上模擬RS-232的控制和資料訊號,為原先使用串列串連的上層業務提供傳送能力。
TCS定義了用於藍牙裝置之間建立語音和資料呼叫的控制信令(Call Control Signalling),並負責處理藍牙裝置組的移動管理過程。
三、高端應用程式層
組成:
點對點通訊協定 (PPP)(Point-to-PointProtocol,PPP);
傳輸控制通訊協定/網路層協議(TCP/IP);
使用者資料包協議(UserDatagram Protocol,UDP);
對象交換協議(ObjectExchang Protocol,OBEX);
無線應用通訊協定(WirelessApplication Protocol,WAP);
無線應用環境(WirelessApplication Environment,WAE);
功能:
PPP定義了串列點對點鏈路應當如何傳輸網際網路協議資料,主要用於LAN接入、撥號網路及傳真等應用規範。
TCP/IP、UDP定義了網際網路與網路相關的通訊及其他類型電腦裝置和外圍裝置之間的通訊。
OBEX支援裝置間的資料交換,採用客戶/伺服器模式提供與HTTP(超文字傳輸通訊協定 (HTTP))相同的準系統。可用於交換的電子商務卡、個人議程表、訊息和便條等格式。
WAP用於在數字蜂窩電話和其他小型無線裝置上實現網際網路業務,支援行動電話瀏覽網頁、收取電子郵件和其他基於網際網路的協議。
WAE提供用於WAP電話和個人數位助理(PersonalDigital Assistant,PDA)所需的各種應用軟體。
2、android與藍芽協議棧的關係
藍芽系統的核心是BlueZ,因此JNI和上層都圍繞跟BlueZ的溝通進行。JNI和android應用程式層,跟BlueZ溝通的主要手段是D-BUS,這是一套被廣泛採用的IPC通訊機制,跟Android架構使用的Binder類似。BlueZ以D-BUS為基礎,給其他部分提供主要介面。