蓝牙AVDTP A2DP
- 一.AVDTP
- 1.1 AVDTP概念
- 1.2 Source Sink整体框架
- 1.3 AVDTP术语
- 1.3.2 Stream
- 1.3.2 SRC and Sink
- 1.3.3 INT and ACP
- 1.3.4 SEP:
- 1.4 AVDTP体系
- 1.4.1 体系概括
- 1.4.2 Transport Services
- 1.5 Signaling Procedures
- 1.5.1 General Requirements
- 1.5.2 Transaction Model
- 1.5.3 Stream Management Signaling Overview
- 1.5.4 Signal Command Set![请添加图片描述](https://img-blog.csdnimg.cn/45235bb134be40d28ced34f705be63a2.bmp)
- 1.6 Transport Procedures
- 1.6.1 Basic Service
- 1.7 Signaling Messages
- 1.7.1 数据格式
- 1.7.2 信令集概括
- 1.7.3 AVDTP_DISCOVER
一.AVDTP
1.1 AVDTP概念
AVDTP 即 AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL(音视频分配传输协议),主要负责 A/V stream 的协商、建立及传输程序,还指定了设备之前传输A/V stream 的消息格式.
AVDTP的传输机制和消息格式是以 RTP 为基础的。
RTP 由 RTP Data Transfer Protocol (RTP)和 RTP Control Protococl(RTCP)组成。
AVDTP是在L2CAP上传输的。AVDTP有专门的PSM(0x19)值。AVDTP和蓝牙协议栈的结构图:
A/V stream 和 A/V signaling 都在 L2CAP 上传输。通过PSM 建立两条L2CAP通路,1条 Singnaling通路,1条 Streaming Media通路。
Signaling负责stream的发现、配置、建立和传输控制。Stream传输音频。
1.2 Source Sink整体框架
1.3 AVDTP术语
1.3.2 Stream
音频数据流
1.3.2 SRC and Sink
SRC:Source 发送音频数据的一端。
Sink:接受音频数据的一端。
例如:
手机与耳机:
手机:发送音频数据到耳机,手机是Source。
耳机:接受音频数据,耳机是Sink。
1.3.3 INT and ACP
Initiator (INT) and Acceptor (ACP)
INT和 ACP的角色 与 SRC, ACP无关。
INT 和 ACP是一直在在变的。谁发起命令,谁就是INT.谁接受命令响应,谁就是ACP.
1.3.4 SEP:
Stream End Point 流端点
流端点配置过程示例分为三个步骤:
设备A 发现 设备B 的资源 包括SEID和媒介类型
收集SEP z的应用和传输服务能力
在了解到所有的能力并与自身的能力比较之后,设备A 可以对流 进行配置。
状态图::
1.4 AVDTP体系
1.4.1 体系概括
Singnalling: 命令以及命令响应交互通道
Stream Manager: 流管理组件,一共有以下几种能力:传输流,组合 media 封包,时间戳管理,media
封包序号管理,报告丢包给上层,抖动计算
Recovery: 封包回复组件
Adaptation Layer:适配层
以上所需接口功能:
1.4.2 Transport Services
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 Establishmen
Basic Service
基本服务,当基本服务开启的时候只有两个组件可用Signalling ,Stream Manager ,如图:
AVDTP基本服务确保每个会话的媒体数据包在单个传输信道上的传输。该服务提供了一个适当的接口,使应用程序能够流式传输符合传输通道最大大小要求的数据包单元。当通道已成功配置时,此数据包大小限制将返回给应用程序。
后续几种service不常用,暂不讲解
1.5 Signaling Procedures
1.5.1 General Requirements
信令交换,需要先建立ACL连接,然后通过PSM(0x19) 建立L2CAP连接,连接上AVDTP.
1.5.2 Transaction Model
信令交换方式,遵循L2CAP中的req responed模式。
1.5.3 Stream Management Signaling Overview
如果 AVDTP Version of ACP >= 1.3 使用Get All Capabilities
使用AVDTP Version of ACP < 1.3 使用Get Capabilities。
1.5.4 Signal Command Set
1.6 Transport Procedures
传输过程需要先前在一对互连设备之间建立的ACL链路。在通信设备之间的链路上可用的面向连接的信道上执行事务。
1.6.1 Basic Service
AVDTP提供给上层的基本服务 信令 和 媒体流。通过PSM(0x19)连接2条 L2CAP链路,1条Singnalling 1条Stream.
1.7 Signaling Messages
1.7.1 数据格式
数据格式 :L2CAP Header + SingnallingHeader + Signalling Message
SingnallingHeader格式:
分为三种:单包,开始包,继续包结束包。常用的是单包
Transaction Label(4位): 交易标签Command 传什么 Respond就回什么
Packet Type(2位) :
Message Type:
1.7.2 信令集概括
1.7.3 AVDTP_DISCOVER
每个 AVDTP 端都会注册一个或者多个 SEP,通过 SEID 来表示,这个命令就是获取对端的 SEP 信息,包括 SEID(SEP 的 ID),In Use(是否被使用),MediaType(Audio,Media,MultiMedia),TSEP(角色是 Sink 还是 Source)
流程如下:
命令如下:
Stream End Point Discovery Command: 获取到 remote 端所有的 SEP 的信息
参数介绍:
(1).SEID :0x01~ 0x3E
(2).In Use:
(3).MediaType : 在Assigned_Numbers 中
(4).TSEP: 表示SRC 还是 SNK
hci log:
后续待定