由於HFP feature小節太多,所以我們計劃本章把相近的feature合併,本文章主要講下電話擴音協定HFP(Hands-Free Profile)Audio Connection handing以及Audio Connection transfer during an outgoing call,就是一下HFP feature中的NO.3跟NO.7。
其中Audio Connection handing包括:
1)Audio Connection set up(建立SCO連線)
2)Audio Connection release(斷開SCO連線)
3)Codec Connection set up(Codec建立)。
其中Audio Connection transfer during an outgoing call包括:
1)Audio Connection transfer towards the HF(建立SCO連線)
2)Audio Connection transfer towards the AG(斷開SCO連線)。
另外,這兩個feature我也錄製了btsnoop,在資料中的...\STM32_UBUNTU_BLUETOOTH\2-藍芽資料\藍芽協定分析hfp_audio_transfer.log,還生成了流程圖等。
本專欄文章我們會以連載的方式持續更新,本專欄計劃更新內容如下:
第一篇:藍芽綜合介紹 ,主要介紹藍芽的一些概念,產生背景,發展軌跡,市面藍芽介紹,以及藍芽開發板介紹。
第二篇:Transport層介紹,主要介紹藍芽協定棧跟藍芽晶片之前的硬體傳輸協定,比如基於UART的H4,H5,BCSP,基於USB的H2等
第三篇:傳統藍芽controller介紹,主要介紹傳統藍芽晶片的介紹,包括射頻層(RF),基頻層(baseband),鏈路管理層(LMP)等
第四篇:傳統藍芽host介紹,主要介紹傳統藍芽的協定棧,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的協定吧。
第五篇:低功耗藍芽controller介紹,主要介紹低功耗藍芽晶片,包括物理層(PHY),鏈路層(LL)
第六篇:低功耗藍芽host介紹,低功耗藍芽協定棧的介紹,包括HCI,L2CAP,ATT,GATT,SM等
第七篇:藍芽晶片介紹,主要介紹一些藍芽晶片的初始化流程,基於HCI vendor command的擴充套件
第八篇:附錄,主要介紹以上常用名詞的介紹以及一些特殊流程的介紹等。
另外,開發板如下所示,對於想學習藍芽協定棧的最好人手一套。以便更好的學習藍芽協定棧,相信我,學完這一套視訊你將擁有修改任何協定棧的能力(比如Linux下的bluez,Android下的bluedroid)。
-------------------------------------------------------------------------------------------------------------------------
CSDN學院連結(進入選擇你想要學習的課程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144
藍芽交流扣扣群:970324688
Github程式碼:https://github.com/sj15712795029/bluetooth_stack
入手開發板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708
藍芽學習目錄:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900
--------------------------------------------------------------------------------------------------------------------------
Audio connection handing分為3個部分介紹,audio connection大家要通過看HCI protocol中的SCO才能知道,我來給大家用最簡短的概括,說白了就是一個資料通道,主要傳輸電話音訊資料。
Aududio connection HF & AG都可以建立.
1) 從AG建立audio connection如圖所示
Btsnoop流程如下:
2) 從HF建立audio connetion的過程如下:
AT+BCC (Bluetooth Codec Connection)
這個AT command主要是觸發AG來建立codec connection
流程如下:
HF和AG都可以主動斷開SCO,主動斷開通過HCI command ,remote斷開會收到HCI disconnect的event
Codec connection的建立也很簡單,在SLC建立得而時候如果傳送過AT+BAC,那麼AG會傳送+BCS選擇codec id,HF回覆AT+BCS回覆相同得而codec id,然後AG回覆OK
此部分比較簡單,transfer towards to the HF就是建立SCO,transfer towards to the AG就是斷開SCO,不再重複