藍芽之十四 HFP profile

2021-07-22 22:17:34 字數 3064 閱讀 7877

圖中繪出了藍芽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.簡化配對流程 提公升安全性 安全簡單配對採用了四個關...