3、Head Set 的建鏈
當藍牙音頻網(wǎng)關(guān)A G 接收到一個呼叫, 發(fā)起與HS 的鏈接時, 為使應(yīng)用層語音通信可靠, 需要藍牙協(xié)議棧建立可靠的通信鏈路。根據(jù)藍牙協(xié)議棧運行, 從底層到高層的建鏈一般要經(jīng)過以下幾個過程:
(1) 建立ACL 即基帶層的鏈接;
(2) 建立L 2CA P 層的鏈接;
(3) 進行SDP 的查詢過程;
(4) 建立RFCOMM 層的鏈路;
(5) RFCOMM 鏈路建好后, 將通過RFCOMM 信道傳輸Head Set 控制層的一些A T 命令;
(6) 建立SCO 鏈接;
(7) 根據(jù)應(yīng)用層的動作執(zhí)行藍牙HS 與A G 之間的音頻通信。
藍牙協(xié)議棧的建鏈過程具體討論如下。
3.1 建立ACL 即基帶層的鏈接
A G 接收到一個呼叫時, 首先建立與HS 之間的ACL鏈接, 此HS 與A G 之間需預(yù)先綁定, 或者把原來處于休眠狀態(tài)下的HS 喚醒。這是通過page 進程完成的, 在用page 進程建立ACL 時, 定義A G 是M aster 角色, 于是A G首先發(fā)起查詢, 通過查詢A G 獲得HS 的藍牙地址。然后A G 在應(yīng)用層的驅(qū)動下向查詢到的HS 發(fā)起一個page 進程, 當接收到HS 返回的應(yīng)答時, 這時A G 與HS 之間的
ACL 鏈接已經(jīng)成功建立。
一旦ACL 鏈接建立, 他可以被用來傳送振鈴信號。振鈴信號的發(fā)送是通過A T 命令R IN G 來完成的。振鈴信號也可以在SCO 鏈路上發(fā)送。
3.2 建立L 2CA P 層的鏈接
ACL 鏈接好后, 接著建L 2CA P 鏈路。A G 首先在信令信道上發(fā)送一個鏈接請求信令, 要求建立信道標號為0x0040 的L 2CA P (0x0001~ 0x003F 是協(xié)議保留不可動態(tài)分配的, 0x0040~ 0xFFFF 可以自由分配) , 此信道的PSM (協(xié)議服務(wù)復(fù)用) 標志0001, 當對方返回鏈接響應(yīng)信號, 表明0x0040 信道已經(jīng)建好。然后對此信道進行配置,配置完信道后, 就可以利用此C ID 為0x0040 的L 2CA P 信道進行SDP 查詢了。
3.3 進行SDP 的查詢過程
利用C ID 為0x0040 的L 2CA P 信道進行SDP 的查詢過程, 首先是A G 在此L 2CA P 信道上發(fā)送一個SDP 查詢包, SDP 查詢包將查詢SDP 服務(wù)器端HS 是否具有所需要的服務(wù)。若查詢成功, 在ACL 鏈路上再建一條標號為0x0041 的L 2CA P 鏈路, 此信道的PSM 為0003, 用來傳輸RFCOMM 數(shù)據(jù)流的。同時斷開用作SDP 查詢的標號為0x0040 的L 2CA P 鏈路。
3.4 建立RFCOMM 層的鏈路
當C ID 為0x0041 的L 2CA P 信道建好之后, 接著就是RFCOMM 的建鏈過程, 如圖3 所示。首先建控制信道, 建鏈發(fā)起方A G 在信道上發(fā)送一個SABM 幀, 即要求建RFCOMM 層上的Channel0, 如果響應(yīng)方HS 希望建立鏈接, 返回一個UA 幀, 表明已經(jīng)建立好了Channel0 這條RFCOMM 信道。此信道為控制信道, 用來傳送攜帶控制消息和命令的U IH 幀。如果響應(yīng)方HS 不希望建立鏈接,返回一個DM 幀。
其次建立數(shù)據(jù)信道, 先是對數(shù)據(jù)傳送信道的參數(shù)進行協(xié)商, 協(xié)商命令PN 參數(shù)包括對將要建立的信道Channel1的優(yōu)先級, 最大幀長等, 當雙方協(xié)商好后建立傳輸數(shù)據(jù)的信道Channel1。
RFCOMM 層的數(shù)據(jù)信道建好后, 再對Head Set 控制層的控制命令進行傳輸。即在數(shù)據(jù)傳送信道Channel1 上利用U IH 幀傳送A T + CKPD= 200 等命令, 當接收到對方的響應(yīng)OK 之后, 就可以開始建立SCO 鏈接。
3.5 建立SCO 鏈接
初始化時HC I 發(fā)一個WR ITE_ VO ICE_ SETT IN G命令, 對音頻狀態(tài)進行設(shè)置, 當接收到A G 的建立SCO 鏈接的請求時, 若HS 允許, 發(fā)送一個接收的HC I 命令, 在命令完成之后, 傳輸音頻信號的SCO 鏈路就建好了, 此時就可以進行語音通信。
4、應(yīng)用層的狀態(tài)機設(shè)計
在協(xié)議棧的通信鏈路建立后, 可以進行應(yīng)用層通信。應(yīng)用層有一個主狀態(tài)機在運行, 如圖4 所示。根據(jù)用戶的動作以及A G 發(fā)送的命令, HS 應(yīng)用進程將在各狀態(tài)之間跑動。
空閑狀態(tài) HS 與A G 之間可能已經(jīng)存在ACL 鏈接,但沒有RFCOMM 信道建立, 也沒有音頻信號的SCO 鏈路存在。當A G 響應(yīng)內(nèi)部事件或者用戶請求時, 便發(fā)起鏈接建立的請求, HS 接收到建立鏈接的請求時, HS 與A G開始建ACL , L 2CA P, RFCOMM 鏈路, 建好RFCOMM信道后, A G 發(fā)送一個或多個A T + R IN G 的振鈴指示命令, 通知HS 用戶有入呼的音頻鏈接到達。此時狀態(tài)將轉(zhuǎn)至來電振鈴狀態(tài)。
來電振鈴狀態(tài) 此時音頻網(wǎng)關(guān)A G 已經(jīng)建立了與HS的ACL 與RFCOMM 信道, 并且HS 已經(jīng)接收到振鈴信號, 這預(yù)示著音頻網(wǎng)關(guān)要求建立SCO 鏈接, 若用戶不對振鈴做出響應(yīng), 音頻網(wǎng)關(guān)將終止RFCOMM 信道, 狀態(tài)將重新回到空閑狀態(tài), 若用戶按下HS 上的Bluetoo th 鍵, 則表示用戶接受入呼音頻鏈接的請求, 這時HS 將發(fā)送A T 控制命令A(yù) T+ CKPD 給A G, 這時兩者之間將建立SCO 鏈
接, 狀態(tài)將轉(zhuǎn)至鏈接狀態(tài)。
呼叫狀態(tài) 當HS 用戶按下HS 上的Bluetoo th 鍵, 用戶發(fā)出呼叫音頻網(wǎng)關(guān)的請求, 這時HS 將先建立ACL 鏈接, 再對音頻網(wǎng)關(guān)進行SDP 查詢。若SDP 查詢成功, HS打開與A G 鏈接的RFCOMM 信道, 并且發(fā)送A T 命令+CKPD 要求建立SCO 的音頻鏈接。當SCO 鏈接建立時, 狀態(tài)將轉(zhuǎn)移到連接狀態(tài), 若SCO 鏈接建立失敗, 狀態(tài)將轉(zhuǎn)到空閑狀態(tài)。
鏈接狀態(tài) 鏈接狀態(tài)下, ACL , L 2CA P, RFCOMM都已經(jīng)建立, 而且已經(jīng)執(zhí)行了SDP 查詢, 音頻通話就緒。若用戶對HS 講話, 語音將通過SCO 鏈路傳送至A G, 并通過A G 將語音傳到遠端。
鏈接斷開狀態(tài) 鏈接斷開可以通過HS 上的Bluetoo th 鍵完成, 也可以通過A G 的內(nèi)部事件或用戶干預(yù)觸發(fā)產(chǎn)生。無論那一種原因引起, 實質(zhì)上都是A G 鏈路釋放的結(jié)果。如果HS 發(fā)出了斷開鏈接的請求, 并且發(fā)送一個A T 命令+ CKPD 到音頻網(wǎng)關(guān)要求音頻網(wǎng)關(guān)斷開鏈接, 于是音頻網(wǎng)關(guān)斷開SCO 鏈接和RFCOMM 信道。當RFCOMM 斷開時, 狀態(tài)將轉(zhuǎn)換到空閑狀態(tài)。而ACL 鏈接有可能處于斷開狀態(tài)也有可能處于鏈接狀態(tài)。
5、Head Set 的實現(xiàn)方案
以摩托羅拉藍牙解決方案為例, 摩托羅拉在先進射頻技術(shù)方面很有經(jīng)驗。摩托羅拉藍牙解決方案可利用UART, RS 232, U SB 或SP I 連接主處理器, 而主處理器可通過這些接口處理藍牙協(xié)議上的堆棧及主控制器的接口等功能; 而這個藍牙解決方案則負責執(zhí)行下堆棧(主控制器接口, 鏈路管理程序協(xié)議, 基帶及射頻) 其余的功能。并采用摩托羅拉的MCORETM 32 位精簡指令集運算
(S ISC) 處理器內(nèi)核, 內(nèi)含一個高度靈活的外圍設(shè)備集, 適用于多種不同的嵌入式藍牙應(yīng)用方案。圖5 為一個采用摩托羅拉解決方案用于蜂窩式電話的例子。通用異步收發(fā)器是連接蜂窩式電話基帶處理器與摩托羅拉解決方案的接口, 而SS I 則為語音通訊提供支持。
近年來移動通信、便攜式計算機以及因特網(wǎng)的迅速發(fā)展, 使人們對電話通信以外的各種數(shù)據(jù)信息傳遞的需求日益增長?!八{牙”技術(shù)把各種便攜式電腦與蜂窩移動電話用無線電路連接起來, 使計算機與通信更加密切結(jié)合起來,使人們能隨時隨地進行數(shù)據(jù)信息的交換與傳輸。
評論
查看更多