藍芽的鏈路、協議與應用2014.3.30

四季健壯發表於2014-03-30

以下內容是《藍芽應用開發指南—近程互聯解決方案》書中的有關章節,科學出版社。
第一章 藍芽應用介紹
1.住所網的理念 住所連網有兩種理念。第一種認為,有一臺“主裝置”將會控制從錄影機到安全系統的所有裝置,並且會代替PC而成為住所的技術中樞。另一種建議保留了PC作為連網家庭的中樞。
藍芽技術不該用於哪些必須絕對確保資料安全傳輸的應用程式,因為出現突發干擾而中斷鏈路的可能性總是存在的。藍芽傳送器和接收器都需要在通訊開始之前先進行同步,所以連線時間會很長。如果所用的無線鏈路關係重大,比如用於“應急按鈕”,攸關姓名的醫療監視器或者發動機管理系統,則這種限制可能會帶來嚴重後果。
2.藍芽鏈路建立連線的過程:
1)搜尋裝置
查詢inquiry,調頻的原因同一頻率的藍芽裝置將建立連線。
2)連線裝置
尋呼page。尋呼裝置需要知道裝置的ID值,可以從48位藍芽裝置地址BD_ADDR算出。
3)執行服務搜尋
分辨哪個裝置支援哪項服務,哪臺裝置允許傳送電子郵件、列印傳真或者交換名片。服務搜尋協議SDP使裝置可以或缺附近裝置提供的服務的資訊。所謂服務是指其它裝置可以使用的功能。
3.使用節能模式
藍芽標準提供了三種節省電源的模式,保持、呼吸和暫停。仍然保持鏈路,沒有處於啟用狀態。
第二章 探索藍芽基礎
一、藍芽協議層
較低的層:無線電基帶、鏈路管理器、邏輯鏈路控制和適配協議L2CAP和服務搜尋協議。
三個應用路徑:資料,音訊,裝置管理。
(1)資料:基礎層—HCI--L2CAP—recomm+OBEX/TCS/SDP—連線管理器
(2)音訊:基礎層—HCI--音訊—連線管理器
(3)裝置管理器:基礎層—HCI—音訊—連線管理器
1. L2CAP
邏輯鏈路控制和適配協議。將上層資料通過多路複用器傳送到兩臺裝置之間的單個非同步無連線ACL鏈路智商,對主裝置來說,引導資料併傳送給適當的從裝置。
資料分段重組為適合HCI的有效資料塊。HCI是主機控制器介面,將主機的高層連線到藍芽裝置的底層。
遠端裝置使用CID匹配識別同一通道的另一端。每個L2Cap邏輯通道有唯一的CID。0x000,0x0001訊號資訊,0x0002廣播資料。
L2cap上層通過協議服務多路複用器psm值識別。遠端裝置請求一個到特定psm的連線,l2cap則為它分配一個cid。L2cap層上的藍芽定義層的psm:
SDP-0x0001
RFCOMM-0x0003
TCS-BIN 0x0005
TCS-BIN-CORDLESS 0x0007
L2CAP只處理資料通訊,不包括語音。除了廣播,一個主裝置到多個從裝置的同時傳輸之外的所有通道被認為是可靠的。
2. RFCOMM
PC上的序列COM埠。在L2CAP上模仿9針RS232序列通訊。軟體模擬RS232硬體介面制定TS07.10標準。
為每個埠使用不同的資料鏈路連線識別符號DLCI,把多個模擬串列埠多路複用到單獨的一個資料連線上。只能連線到一個通道上,只能和一個裝置通訊。一臺主裝置必須為每個請求串列埠連線的從裝置執行單獨的RFCOMM。
3. OBEX
物件交換標準是紅外資料協會開發的。
4.PPP
5.SDP
以藍芽為中心,處理藍芽運作中的一項特殊需要,找出已連線裝置中有哪些可用的服務。像一個服務資料庫,本地應用程式負責將可用服務註冊到資料庫中,並更新資料庫中的記錄,然後遠端裝置就可以查詢資料庫,,找到有哪些可用服務以及如何連線到這些裝置。
6.TCS binary
7.管理實體
8.HCI
主機控制器介面不是軟體層,而是一個幫助不同製造商解決方案協同工作的傳輸和通訊協議。有更好的解決方案,不一定要使用高中標準:通用序列匯流排USB,RS232或者簡單的通用非同步收發UART定義的HCI介面,甚至根本不同任何HCI傳輸。
9.底層
各種規範使用了哪些層。
(1)串列埠:底層,L2cap,SDP,RFCOMM
(2)檔案傳輸:底層,L2cap,SDP。OBEX
三、連線並使用藍芽服務
在使用藍芽服務前必須完成的幾個步驟
(1)查到裝置—查詢
(2)連線到裝置—尋呼
(3)搜尋裝置支援何種服務—SDP
(4)決定連線到哪項服務並找出連線的方法—SDP
(5)連線到服務
1.用來發現裝置的過程稱為查詢,連線裝置的過程稱為尋呼。在這兩個過程中,一臺裝置都要按照所有裝置已知的特殊頻率序列進行傳送和接收。另一臺裝置需要偵聽傳輸,如果接收正確,就發出應答。因為該裝置知道查詢和尋呼所用的頻率序列,所以它能夠算出用於傳送應答的正確的頻率。關鍵:
1)發現或連線某臺裝置,必須將它置為偵聽模式。允許裝置被發現的模式叫做發現模式,或者查詢掃描。允許裝置被連線的偵聽模式叫做可連線模式,或者稱為尋呼掃描。
2)為了通訊,一臺裝置必須以另一臺裝置接受的頻率進行傳輸。這是通過傳送裝置快速改變頻率,每秒1600次,而接收裝置緩慢改變頻率,1.28s改變一次實現的。
3)語音鏈路優先,查詢和尋呼優先於其它資料傳輸。在語音傳輸的間隙進行查詢和尋呼是允許的,但是搜尋和連結非常緩慢和不可靠。必須注意這個限制。
2.查詢 HCI_inquiry
三個引數:
Lower address part( LAP)
Inqiuiry_length 超時時間
Number_of_responses 最大響應次數
LAP決定了查詢訪問碼inquiry access code IAC,用於被傳送的ID訊息中,進行偵聽的裝置對訊息做出響應。
HCI上的訊息傳送。不同把同時進行的HCI事物排入佇列中,而不是傳送到底層。
定期查詢:HCI_periodic_inquiry_Mode
關閉查詢掃描,把裝置隱蔽起來,這樣的裝置處於不可發現模式。HCI_Write_Scan_Enable關閉查詢掃描。
查詢要付出代價:電源消耗和頻寬。
3. 連線到裝置
尋呼HCI_Write_Page_Scan_Activity,scan_Mode,period_Mode。
從裝置使用HCI_Set_Event_Filter命令來切換三種可能的行為:
(1)向主機傳送HCI_connection_Request,等待HCI_Accept_connection_Request或HCI_Reject_connection_Request
主、從裝置角色交換。主裝置,從裝置的唯一區別,主裝置可以和多個從裝置對話,從裝置只能和主裝置對話。不允許主從裝置轉換,不允許連線,就會斷開連線。
尋呼成功,新建鏈路的兩端會生成一個狀態為succss的HCI_connection_Complete時間。
4.查詢裝置提供的服務資訊
提供的服務。通用音訊、耳機音訊開關、擴音音訊開關。獲取服務的協議,連線到這些協議,支援的規範。 音訊閘道器尋呼連線到耳機裝置
1)音訊閘道器應用程式向底層傳送尋呼請求
2)音訊閘道器底層尋呼耳機,用其藍芽裝置地址生成ID包,ID包是它唯一偵聽的。
3)耳機的底層向耳機應用程式傳送一條訊息,將連線請求告知它。這條通知包括音訊閘道器的藍芽裝置地址和裝置類,這些資訊是尋呼過程中收集的。
4)耳機應用程式回答低層,接收連線
5)耳機的底層將響應發到音訊閘道器的底層。
6)音訊閘道器的底層把訊息轉發,接收音訊閘道器應用程式的連線。音訊閘道器應用程式現在知道它已經準備好一條可用的ACL資料連線了。

相關文章