圖中繪出了藍芽profile結構和其依賴,profile之間可以存在依賴關係。根據圖1可以知道hands-free profile依賴於serial port profile和generic access profile。
圖1.1 藍芽profile
基帶,lmp以及l2cap是藍芽osi協議的第一和第二層。
rfcomm是藍芽的模擬串列埠,sdp是藍芽的服務發現協議。
hands-free control實現了hands-free規範資訊控制,該資訊基於at命令格式。
audio port是模擬audio gateway的音訊埠,
圖1.2 協議棧
audio gateway(ag) 角色是audio 的gateway角色,乙個例子是智慧型手機。
hands-free unit(hf)-是audio gateway遠端音訊輸入和輸出裝置。如藍芽耳機等。
hfp協議要求必須支援單聲道,cvsd(continuously variable slope delta modulation)格式的語音傳輸,
hf(hands-free) unit和audio gateway都可以發起和斷開audio。
基帶授權和加密對hf unit和audio gateway都是可選的。
hf和ag都可以發起服務層連線,服務層連線能夠建立的前提是rfcomm連線已經建立,也就是hf和ag的之間需要有rfcomm的資料鏈路。
如果在建立服務連線時rfcomm並未在ag和hf之間建立,則發起方應當先發起rfcomm建立,rfcomm的建立是在gap的spp中定義的。
服務層連線的建立過程,hf端首先傳送at+brsf=命令通知ag其對hf特性的支援情況,同時收到ag的包含其支援特性的+brsf返回碼。
在收到ag支援的特性資訊後,hf將會傳送at+cind=?命令查詢ag支援indicator和其順序,這是因為3gpp 27.007規範定義的ag支援擴充indicator,而這些indicator在hf裡也許並不支援。可知道ag支援的indicator以及indicator的順序。
一旦indicator狀態更新功能被使能,ag將只在收到at+cmer或者服務鏈結斷開情況停用該功能。
如果indicator狀態更新功能被使用,如果三方**功能被hf和ag支援,則hf將會傳送at+chld=?查詢ag是如何支援呼叫保持以及多方服務支援的。如果hf和ag其中乙個不支援三方**,則at+chld=?命令不會被傳送。
hf在以下情況發生時認為服務連線成功初始化:
ag在以下情況發生時認為服務連線成功建立:
圖1.2 服務層連線建立過程
hf或者ag可以在需要的時刻建立音訊連線,音訊連線建立過程意味著同步連線。音訊連線建立並不依賴任何**過程。
一旦hf和ag之間建立好了音訊連線,ag會將hf選擇作為首選音訊埠。ag將會保持音訊通路,(voice,alert以及按鍵音)都可以通過hf放出來。
來電時,ag將傳送序列的ring alert給hf,ring持續的時間和來電pend時間一直。 hf可以用區別於ag的ring來提示來電。
如果ag的sdp(或+brsf)顯示支援「in-band ring tone」,ag將傳送in-band ring tone。
圖1.3 hf來電接聽-(in-band ring tone)
圖1.4 hf來電接聽-no in-band ring tone
hf可以發起對外的呼叫,通過把**號碼傳給ag。開始**建立要求服務連線已經建立並且傳送atddd...dd給ag。ag然後發起打**過程並返回+ciev結果碼,值為2的碼表示**撥打成功發起。
此處省去若干at命令提供的功能描述。
回車換行
hf到ag的at命令格式如下:
ag到hf的ok返回格式如下:
okag到hf的error返回
error
ag到hf不固定的返回結果碼如下:
ata
標準的**應答at命令
atddd...dd;
hf傳送給ag的**號碼,hf側撥號用
atd>nnn...;
標準atd擴充套件命令,使用ag預儲存的號碼進行撥號,nnn指定哪乙個號碼
error
標準錯誤指示碼,
ok
命令的標準應答
no carrier, busy, no answer, delayed, blacklisted
at命令的擴充套件應答,其實對+cme error:的擴充套件應答
ring
標準的來電指示
at+ccwa
標準的呼叫保持命令。at+ccwa=[[,[,]]]
+ccwa
標準呼叫保持應答碼,和 at+chld
0:釋放所有保持的**
1:釋放所有啟用的**,並接受其他保持的**
1:釋放idx指定的處於啟用的**
2:將所有啟用的**保持以接聽其它**
2:將除了idx指示的其它**設定成呼叫保持狀態
3:增加乙個**進入會話
4:連線兩個**,斷開它們的訂閱者。
at+chld=?用於獲取**保持和多方**的情況。
at+chup
標準的結束通話at命令。
at+cind
更新indicator的at命令。
+cind
當前**的indicator 列表
at+clcc
列出當前**命令。
+clcc
ag列出當前**。
at+cmer
事件報告使能/禁止命令,at+cmer=[[,[,[,[,]]]]]命令中的和是和本協議相關的。
+ciev
事件報告,+ciev: ,此外還支援bluetooth定義的at命令
at+binp (bluetooth input):用於ag傳輸資料到hf.
at+bldn: bluetooth last dialed number
at+bvra (bluetooth voice recognition activation)
andriod 藍芽開發之藍芽搜尋
藍芽的搜尋是通過廣播來實現的。關鍵 如下 1 用於發現藍芽的廣播接受者 接收器 當搜尋藍芽裝置完成時呼叫 private broadcastreceiver foundreceiver new broadcastreceiver private broadcastreceiver discovery...
藍芽之九 AT命令
該命令使參考3gpp 27.007協議,以下是hfp規範。表示回車 表示換行 hfp使用已有at命令標準的子集。ata 標準 應答at命令 atddd.dd 用 號碼打 atd nnn.atd擴充套件命令,記憶撥號 error 錯誤指示符,語法,格式或者通訊過程出錯。ok 命令的成功應答。no ca...
藍芽之十八 bluetooth pair
在藍芽核心規範2.1之後,藍芽配對除了傳統的pin code pairing方式外,新增了secure pairing配對方式。根據核心規範4.2,簡單配對主要有兩種目的。藍芽配對過程參考藍芽核心規範4.2,卷1,part a,chapter 5.簡化配對流程 提公升安全性 安全簡單配對採用了四個關...