【蓝牙AVDTP A2DP协议】

news2024/11/26 16:40:23

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/782126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习 C语言第一天 :C语言常见概念

1.C语言是什么&#xff1f; 那人和计算机是怎么交流的呢&#xff1f;使用计算机语言。 C语言就是众多计算机语言中的一种&#xff0c;当然C/Java/Go/Python都是计算机语言。 2.了解 C语言的历史和辉煌 初衷&#xff1a;C语言最初是作为 Unix系统开发工具而发明的。 历史过程&am…

uniapp uni.$emit()失效

1.业务场景 settle.vue页面引入bjs-settle.vue组件&#xff0c;bjs-settle.vue组件点击后在settle.vue中进行结算操作&#xff08;过程中有跳转&#xff09; 本来以为使用vue的this.$emit()就可以实现子组件回调父组件中的方法&#xff0c;但是发现没用。 然后看到uniapp中需…

Linux性能与统计命令

目录&#xff1a; linux常用命令之性能统计linux常用统计命令linux进程与线程Linux性能统计 1.linux常用命令之性能统计 为什么要学习性能统计&#xff1f; 性能统计是衡量系统性能的重要手段&#xff0c;通过对系统各项指标的监控和分析&#xff0c;可以及时发现系统瓶颈和…

山西电力市场日前价格预测【2023-07-24】

日前价格预测 预测明日&#xff08;2023-07-24&#xff09;山西电力市场全天平均日前电价为338.25元/MWh。其中&#xff0c;最高日前电价为377.59元/MWh&#xff0c;预计出现在20: 30。最低日前电价为283.56元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a;实…

Linux系统初装后的配置

目录 1、学习环境关闭SElinux 2、关闭防火墙 3、添加用户 4、使用sudo进行权限管理 5、修改ssh服务的默认配置 6、修改网卡参数 环境&#xff1a;centOS7 1、学习环境关闭SElinux 临时关闭 &#xff1a;setenforce 0;查看状态&#xff1a;getenforce;临时开启&#xff…

uniapp 小程序 查看评价

查看评价效果图&#xff1a; 评分组件在上一篇文章&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; <template><view class"view-comments"><view class"evaluate-box"><view class"ti…

C++ | set与map的用法指南

前言 前面我们学习了vector、list等容器&#xff0c;其实他们都属于序列式容器&#xff0c;因为其底层为线性结构&#xff1b;今天我们学习使用的set与map是属于关联式容器&#xff0c;关联式容器更注重于数据检索访问的效率&#xff1b;本文所有的资料均查阅于文档&#xff0c…

Python实战项目——旅游数据分析(四)

由于有之前的项目&#xff0c;所以今天我们直接开始&#xff0c;不做需求分析&#xff0c;还不会需求分析的可以看我之前的文章。Python实战项目——用户消费行为数据分析&#xff08;三&#xff09; 导入库 import numpy as np import pandas as pd import matplotlib.pyplo…

Sentinel授权规则与规则持久化

&#x1f333;&#x1f333;&#x1f333;&#x1f333;&#x1f333;&#x1f333;&#x1f333; 学习授权规则前&#xff0c;先想想SpringCloud Gateway的黑白名单&#xff0c;请求过网关&#xff0c;gateway会去鉴权。但如果有人把微服务信息泄露出去了呢&#xff1f;此时微…

输出函数print

print("hello world") # 可以输出数字 print(1111) print(2222) # 可以输出字符串 print(helloworld) print("helloworld") # 可以输出运算符的表达式 print(56) # 将数据输出文件中&#xff0c;注意点&#xff1a;1.所指定的盘符存在&#xff0c;2.使…

「苹果安卓」手机搜狗输入法怎么调整字体大小及键盘高度?

手机搜狗输入法怎么调整字体大小及键盘高度&#xff1f; 1、在手机上准备输入文字&#xff0c;调起使用的搜狗输入法手机键盘&#xff1b; 2、点击搜狗输入法键盘左侧的图标&#xff0c;进入更多功能管理&#xff1b; 3、在搜狗输入法更多功能管理内找到定制工具栏&#xff0c…

uni-app中全局设置页面背景颜色

在uni-app中设置背景颜色&#xff0c;想象中应该很简单&#xff0c;其实里面也还是有点小坑的&#xff0c;我们来一起看一下。 方法一&#xff1a;pages.json globalStyle 中设置 backgroundColor 结果&#xff1a;未生效 猜测可能是颜色不能用别名&#xff0c;换十六进制试一…

讯为RK3568开发板入门之-tftpnfs的配置

基础条件 VMware虚拟机 Ubuntu18.04 【网络配置陈桥接模式】 RK3568开发板【我是用讯为的RK3568】 网线连接路由器或者和电脑直连 配置TFTP和NFS的作用 使用tftp和nfs网络挂载可以很方便的进行软件的调试&#xff0c;挂载成功后只要把Ubuntu下编译好的文件程序放到挂载的目录…

有名管道(FIFO)的学习笔记

文章目录 有名管道介绍有名管道的使用创建 注意事项 有名管道介绍 有名管道的使用 创建 命令&#xff0c; mkfifo name函数&#xff0c;int mkfifo(const char *pathname, mode_t mode); 设置错误号&#xff1b; 向管道中写数据&#x1f447;&#xff1a; 从管道读数据&am…

数据库新闻速递 SingleStore Kai for MongoDB有以下6个关键特性, MONGODB 也疯狂

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到3群&#xff08;共…

Hive查询性能优化——物化视图(materialized view)

1. 背景&#xff1a; 在一次大表查询中&#xff0c;查询速度非常慢,插叙时间以分钟为单位&#xff0c;而生产需求要达到10s以内。造成这个问题的原因有多种&#xff0c;性能调优的方式也有多种&#xff0c;这里记录一下其中一种方案&#xff0c;采用物化视图&#xff08;Mater…

[JAVAee]synchronized关键字

目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…

从零开始学习自动驾驶路径规划-环境配置

从零开始学习自动驾驶路径规划-环境配置 前面&#xff0c;每个人遇到的问题不一样&#xff0c;这里记录了配置步骤和目前遇到的问题&#xff0c;会持续更新报错解决方法。配置时有报错请认真看报错经验 环境配置步骤&#xff08;18.04和20.04都可以&#xff0c;有些问题没遇到…

流媒体视频融合平台EasyCVR更新版本后,首页无法打开的原因排查与解决

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力&#xff0c;可在复杂的网络环境中&#xff0c…

精通自动化,Pytest自动化测试框架-fixture用例的前后置(实现)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试用例实现前后…