零. 概述
主要介紹下藍牙協議堆疊(bluetooth stack)傳統藍牙音頻協議之 音視頻分布傳輸協議的概念,包含AVDTP概念,AVDTP組件,AVDTP傳輸服務,AVDTP的屬于介紹,
一. 宣告
本專欄文章我們會以連載的方式持續更新,本專欄計劃更新內容如下:

第一篇:藍牙綜合介紹 ,主要介紹藍牙的一些概念,產生背景,發展軌跡,市面藍牙介紹,以及藍牙開發板介紹,
第二篇: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
--------------------------------------------------------------------------------------------------------------------------
二. AVDTP(A/V Distribution Transport Protocol)概念
2.1 AVDTP概念
AVDTP( A/V Distribution Transport Protocol)就是音視頻分布傳輸協議,主要用于傳輸音頻/視頻資料,在整個協議堆疊的架構圖如下:

在我們整個架構圖如下:

可以看到上圖架構紅框內就是AVDTP協議,AVDTP的底層是L2CAP層,
2.1.1 AVDTP組件
AVDTP一共有以下幾個組件(如下圖):

① Signalling :命令以及命令回應互動通道
② Stream Manager:流管理組件,一共有以下幾種能力:傳輸流,組合media封包,時間戳管理,media封包序號管理,報告丟包給上層,抖動計算
③ Recovery:封包回復組件
④ Adaptation Layer:這層提供了一下幾個能力:多路復用模式,允許在一個傳輸通道(TCID)上多路復用多個傳輸會話(TSID),使用更強勁頭壓縮
另外,以上圖示需要功能如圖片:

2.1.2 傳輸服務
AVDTP一共分為幾個傳輸服務
1)Basic Service
2)Recovery Service
3)Reporting Service
4)Adaptation Service – Multiplexing
5)Adaptation Service – Robust Header Compression
6)Transport and Signaling Channel Establishment
下面我們來針對每個服務詳細講解下
1)Basic Service
基本服務,當基本服務開啟的時候只有兩個組件可用(Signalling ,Stream Manager),如圖

AVDTP基本服務確保通過單個傳輸通道傳輸每個會話的媒體包,該服務提供了適當的介面,使應用程式能夠流進/流出滿足傳輸通道的最大大小要求的包單元,當通道成功配置后,此包大小限制將回傳給應用程式,
2)Recovery Service

在basic service的基礎上加了Recovery組件
該恢復服務使用SRC端上的一個傳輸會話的媒體包來生成附加的編碼包;這些恢復包可以在SNK端用于重建在空氣傳輸路徑上丟失的原始媒體包,
這種服務特別適用于需要巨大帶寬和重傳能力有限的應用程式,與基帶FEC相比,恢復服務實作了一種靈活的隨需應變的錯誤糾正機制:應用程式根據信道條件完全控制服務操作,并可以決定只覆寫媒體流中最敏感的部分,該服務獨立于基帶包型別執行,可為每個活動傳輸會話選擇,
為了有效地對抗干擾,所有恢復包都通過一個單獨的傳輸通道傳送,
3)Reporting Service

用到以上組件
打開時,報告服務向本地用戶提供統計資訊應用程式和到遠程設備的媒體流的時間對齊
包損失,這些報告用于實作適當的媒體流同步和/或調整應用程式的錯誤隱藏策略,
報告服務可以配置為單向(從SNK到SRC或從SRC到SNK),也可以配置為雙向,這取決于應用程式的需求,服務介面允許應用程式調整報告的周期和激活/停用服務根據背景關系,
報告服務可以使用獨立的傳輸通道傳輸報表資料包到遠程端,
4)Adaptation Service – Multiplexing

在多路復用模式中,屬于同一種或屬于某一種的多個傳輸會話不同的流,可以共享一個公共傳輸(L2CAP)通道,此外,一個L2CAP資料包可以包含屬于相同或不同傳輸的多個資料包會話,因此,每個封裝頭都需要媒體/報告/恢復包,包含在這個頭中的TSID允許正確SNK設備上資料包的路由,
在流配置程序中,INT分配了tsid和tcid并通知ACP,避免在多設備配置中發生沖突為了減小其寬度,將TSID和TCID的范圍限制在連接上在一對設備之間,建立流程不一定打開一個新的傳輸(L2CAP)通道,相反,它可以將一個新的傳輸會話映射到現有的L2CAP信道,這是通過參考一個現有的TCID來實作的,
5)Adaptation Service – Robust Header Compression
健壯的報頭壓縮是一種傳輸服務,它可以減少這方面的開銷媒體包和恢復包的頭引入,這種機制是完全可由應用程式選擇,但在兩個設定相同的配置要建立的每個流的連接的兩端,健壯的頭壓碩訓制允許使用一個反饋通道,這是在談判媒體流配置的時間,
6)Transport and Signaling Channel Establishment

2.2 AVDTP術語介紹
Stream:兩個點對點設備之間的流媒體資料
Source (SRC) and Sink (SNK):SRC是音視頻的發送方,SNK是音視頻的接收方,
Initiator (INT) and Acceptor (ACP):啟動程序的設備作為啟動者、接受啟動的設備為接收者,要注意的是INT和ACP獨立于上層應用定義的SRC和SNK,也就是在一個CMD跟RESPONSE中,發送CMD的是INT角色,回送RESPONSE的就是ACP角色,所以他的角色會一直在動態切換中,我個人覺得這個定義有點奇怪并且雞肋
Application and Transport Service Capabilities:應用服務和傳輸服務的功能,應用服務功能比如協商、配置音源設備的codec,內容保護系統等;傳輸服務能力比如資料報文的分割和重組,資料包的防丟檢測等等,
Services, Service Categories, and Service Parameters:服務、服務類別、服務引數
Media Packets, Recovery Packets, and Reporting Packets:流媒體包,資料恢復包,報告報文
Stream End Point (SEP):流端點,流端點是為了協商一個流而公開可用傳輸服務和A/V功能的應用程式
Stream Context (SC):流背景關系,指在流設定程序中,兩個對等設備達到一個公共的了解流的配置,包括選擇的服務,引數,以及傳輸通道分配,
Stream Handle (SH):流句柄,在SRC和SNK建立了連接之后分配的一個獨立的識別符號,代表了上層對流的參考
Stream End Point Identifier (SEID):流端點標識,對特定設備的跨設備參考,該參考用于信令事物
Stream End Point State:流端點狀態
Transport Session:傳輸會話,在A/V傳輸層的內部,在配對的AVDTP物體之間,流可以分解為一個、兩個或多個三個傳輸會話,
Transport Session Identifier (TSID):傳輸會話標識,代表對一個傳輸會話的參考,
Transport Channel:傳輸通道,傳輸通道指的是對A/V傳輸層下層承載程式的抽象,始終對應L2CAP的通道
Transport Channel Identifier (TCID):傳輸通道標識,代表對一個傳輸通道的參考,
Reserved for Future Additions(RFA):保留給將來添加
Reserved for Future Definitions (RFD):保留給將來定義
Forbidden (F):棄用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206158.html
標籤:其他
上一篇:PX4添加新的應用
