零. 概述
由于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介紹

Audio connection handing分為3個部分介紹,audio connection大家要通過看HCI protocol中的SCO才能知道,我來給大家用最簡短的概括,說白了就是一個資料通道,主要傳輸電話音頻資料,
2.1 Audio Connection set up
Aududio connection HF & AG都可以建立.
1) 從AG建立audio connection如圖所示

Btsnoop流程如下:


2) 從HF建立audio connetion的程序如下:

AT+BCC (Bluetooth Codec Connection)
這個AT command主要是觸發AG來建立codec connection
流程如下:


2.2 Audio Connection release

HF和AG都可以主動斷開SCO,主動斷開通過HCI command ,remote斷開會收到HCI disconnect的event
2.3 Codec Connection set up

Codec connection的建立也很簡單,在SLC建立得而時候如果發送過AT+BAC,那么AG會發送+BCS選擇codec id,HF回復AT+BCS回復相同得而codec id,然后AG回復OK

三. Audio Connection transfer during an outgoing call介紹

3.1 Audio Connection transfer towards the HF

3.2 Audio Connection transfer towards the AG

此部分比較簡單,transfer towards to the HF就是建立SCO,transfer towards to the AG就是斷開SCO,不再重復
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/174774.html
標籤:其他
