【蓝牙AVDTP A2DP协议】

一.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:
请添加图片描述
请添加图片描述
后续待定

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值