蓝牙AVRCP协议解析

2023-11-02

在这里讨论蓝牙的AVRCP协议,要理解AVRCP,需要先了解AVCTP;

 

我们分两个部分来进行;

1、AVCTP协议;

2、AVRCP协议;

 

下面先来看AVRCp协议:

 

一、概述

1、定义

AVCTP(Audio/Video Control Transport Protocol Specification)音频/视频控制传输协议是一个框架协议,描述蓝牙设备间Audio/Video的控制信号交换的传输机制,具体的控制信息(编码和格式)由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式,AVCTP是建立在L2CAP上的;

 

2、角色

AVCTP分为两个角色,CT(The Controller)是命令的发起方,命令接收方是TG(The target),如下图:

AVCTP通信要求已经建立了ACL链接,AVCTP交互是在面向连接的通道中的双向通信,

 

 

 

3、通信过程

首先会有CT发起通信,发送命令道TG端;

一个完整的AVCTP消息包含一个指定TG地址的命令,然后由TG端回复消息,AVCTP不会控制命令或响应的顺序或定义CT/TG的行为,大体流程可参照下图:

因为AVCTP是建立在不可靠的ACL上,所以存在命令收不到应答的情况,命令的重发不是必须的,这个由应用层开发者决定;

 

4、通信模式

在AVCTP中,bit和byte传输时采用大端模式,即高字节在左侧;

 

二、AVCTP消息包格式

1、概述

AVCTP命令或应答在传输时是包含在一个或多个AVCTP packets中,这些包中包含AVCTP header和多个消息体部分,但是在AVCTP中并未定义length域,它是依靠L2CAP层去限制发送的包数,所以AVCTP也需要遵循L2CAP协议长度的相关定义;

 

2、消息格式

大部分的AVCTP命令以负载的方式通过单一L2CAP包传输,但也有少数大信息AVCTP包需要被拆分,通过多个L2CAP包传递出去,下面我们分别来看这两种包格式

 

a、不拆分的包格式,见下图:

 

 

格式中bit含义spec中都有说明,我们再详细看下;

TL占用了4bit,它是通信中标识唯一的tag,由应用层给出其值;

PT是包类型,PT=0时表示开始包,PT=10表示中间包,PT=11表示结束包,在非拆分包中,PT=0;

IPID只有在响应为无效包时才会置位1,其他情况都为0;

 

 

 

上图显示了几个信息:

(1) AVCTP header为3字节;

(2)不拆分的AVCTP包不能大于L2CAP的MTU大小;

 

 

b、拆分包格式,如下图:

 

可以看到拆分包格式start packet多了一个字节,Number of AVCTP Packets,continue packet 和end packet去掉了IPID和PID字段,AVCTP通过L2CAP层保证包的每个包的完整性及传递顺序,但无法保证所有包的完整性;由于信道的不稳定性,可能会产生AVCTP丢包,我们看下拆包AVCTP在L2CAP的拆包方式,如下图:

 

 

3、AVCTP Message Information Part的说明

这部分可以包含不定长度的命令或应答帧;

其具体格式需要参照具体的profile,如AVRCP,AVDTP等;

 

三、总结

好了,分析到这里相信大家对AVCTP有了比较不错的认识,其实AVCTP就是定义了一个通信框架,它定义好了packet heaeder,定义好了与L2CAP层的传输机制,剩下的数据域(AVCTP Message Information Part)就需要参考其他profile来填充;

AVCTP提供了一组Upper Interface,作为一组测试接口,也可作为其他应用协议的接口,这里就不去看了,感兴趣的可以自己翻一下spec;

下一篇我们将一起来看下AVRCP协议,希望大家多多支持;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙AVRCP协议解析 的相关文章

  • App 和设备通过蓝牙连接收发数据

    一 Android 中进行蓝牙开发需要用到的类和执行过程 1 使用BluetoothAdapter startLeScance来扫描设备 2 在扫描到设备的回调函数中的得到BluetoothDevice 对象 并使用Bluetooth st
  • 蓝牙模块AT模式AT指令

    文章目录 进入AT模式的两种方法 HC 05的AT指令 HC 06的AT指令 进入AT模式的两种方法 经过摸索 这里总结两种进入AT模式的方法 与USB转TTL相连后接入电脑 将波特率设置成9600 模块指示灯快闪 这时再按下模块的按钮便进
  • Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU Primary Advertising
  • Dialog的IDE搭建systermView的方法步骤(DA1469X)

    1 背景 SystemView 是一个可以在线调试嵌入式系统的工具 它可以分析有哪些中断 任务执行了 以及这些中断 任务执行的先后关系 还可以查看一些内核对象持有和释放的时间点 比如信号量 互斥量 事件 消息队列等 这在开发和处理具有多个线
  • 蓝牙AVRCP协议解析

    在这里讨论蓝牙的AVRCP协议 要理解AVRCP 需要先了解AVCTP 我们分两个部分来进行 1 AVCTP协议 2 AVRCP协议 下面先来看AVRCp协议 一 概述 1 定义 AVCTP Audio Video Control Tran
  • ESP-NOW无线通信

    本文由铁熊与默联合创作 在学习 Arduino 开发的过程中 无线通讯是我们学习道路上一道必过的坎 无线通讯摆脱了线材的束缚 使用更加灵活且通讯距离根据不同无线模块可达几十米甚至是数公里 常见的无线通讯方式有蓝牙 WiFi LoRa NB
  • JDY-31蓝牙模块使用指南

    前言 本来是想买个hc 05 这种非常常用的模块 但是在优信电子买的时候 说有个可以替代的 没注意看 买回来折腾半天 这个模块是从机模块 蓝牙模块分为主机从机和主从一体的 主机与从机的区别就是 主机可以主动连接从机 但是从机不能主动连接主机
  • 微信小程序之蓝牙 BLE 踩坑记录

    前言 前段时间接手了一个微信小程序的开发 主要使用了小程序在今年 3 月开放的蓝牙 API 此过程踩坑无数 特此记录一下跳坑过程 顺便开了另一个相关的小项目 欢迎 start 和 fork BLE MiniProgram API简介 微信小
  • 使用蓝牙耳机听群晖ds218play中的音乐(audio station)

    缘起 有时需要欣赏nas中的音乐而又不影响家人 有什么方法呢 思路 研究了一下 发现新版的群晖dms支持蓝牙usb蓝牙适配器 可以使用audio station播放 蓝牙耳机收听 步骤 1 购买CSR USB蓝牙适配器 2 插入ds218p
  • 【经典蓝牙】 蓝牙HFP层协议分析

    HFP 概述 HFP概念介绍 HFP Hands Free Profile 是蓝牙免提协议 可以让蓝牙设备对对端蓝牙设备的通话进行控制 例如蓝牙耳机控制手机通话的接听 挂断 拒接 语音拨号等 HFP中蓝牙两端的数据交互是通过定义好的AT指令
  • Android 蓝牙串口通信Demo

    目录 一 前言 二 效果图 三 源码 带注释 1 布局代码 2 Java代码 3 权限声明 四 注意 五 项目源码下载 一 前言 在学校和机电的同学组队准备做一个智能小车去参加比赛 需要我开发一个小车的控制app 所以我开始学习蓝牙串口通信
  • 蓝牙HCI Dongle说明

    Chipsets 本项目主要实现了蓝牙Host协议栈 并没有包含Controller部分 如果需要实现蓝牙交互 按照Core Spec 需要通过HCI接口连接其他蓝牙芯片实现蓝牙功能 由于HCI接口层是Spec有规定的 所以只要符合HCI接
  • STM32 BlueNRG-1低功耗介绍,包含CPU堆栈恢复和外设恢复

    概述 在消费类电子产品形态中 通常用锂电池 纽扣电池 干电池等设备供电 需要现有供电情况下能连续使用几个月或者1年 而这些供电电源通常只有20 40mAh左右的电 要达到要求的运行时间 通常要求平均功耗在uA级别 芯片正常工作下的工作级别基
  • Bes 充电盒协议总结

    1 开盖 上升沿信号开机 a 充电脚设成3 0 v 然后延迟160ms b 充电脚设成5v 然后延时100 ms c充电脚设成3 0 v 2 合盖 a 开5v 然后延时3s b 关5v 然后延时45ms c 发送复位pattern 0101
  • BLE MESH组网(五)配置BLE MESH

    BLE MESH 五 配置BLE MESH 前言 概述 配置协议 供应程序 信标 邀请 交换公钥 前言 2017 年 5 月 全球最臭名昭著的勒索软件 WannaCry 在全球范围内积极攻击计算机 劫持用户数据索要赎金 这次攻击影响了 15
  • nRF52832学习记录(一、外设初识之 GPIOTE)

    添加GPIO和GPIOTE寄存器表 对于应用的理解对着寄存器查看会比较明了 这个不管是在哪款芯片上都是如此 2021 9 27 这些年蓝牙5 0的应用越来越多 最近也是想着把以前Enocean的低功耗设备有过的产品 用蓝牙做一套匹配的版本
  • 蓝牙之十八- bluetooth pair

    蓝牙之十八 bluetooth pair 在蓝牙核心规范2 1之后 蓝牙配对除了传统的PIN Code Pairing方式外 新增了Secure Simple Pairing配对方式 根据核心规范4 2 简单配对主要有两种目的 蓝牙配对过程
  • 使用Arduino开发ESP32(22):蓝牙作为客户端使用

    文章目录 目的 基础准备 搜索蓝牙设备 搜索设备 信息查询 连接与交互 总结 目的 ESP32的蓝牙除了作为服务器 从设备 使用还可以作为客户端 主机 使用 这篇文章将对相关内容做个简单说明 基础准备 这篇文章中测试需要先准备一个蓝牙服务器
  • BES系列蓝牙开发总结

    博文索引 框架 BES2300X BES2500X 框架解析 一 UI及外围功能模块 BES2300X BES2500X UI 按键 提示音 指示灯 BES2300X BES2500X UI 电池管理模块 蓝牙操作及协议连接 数据流及数据编
  • 【经典蓝牙 SSP协议介绍】

    协议定义 SSP Secure Simple Pairing 安全简单配对 协议目的 1 为用户简化配对过程 2 维护或提高蓝牙无线技术的安全性 安全性指两点目标 1 被动窃听保护 2 中间人 MITM 攻击保护 协议流程 下面说下我认为的

随机推荐

  • 嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)

    嵌入式 ADC使用手册完整版 188977万字 附源码详细篇 1 ADC简介 2 ADC主要特征 3 ADC引脚和内部信号 4 ADC 模块框图 5 ADC校准 CLB 6 ADC 时钟 7 ADCON 开关 8 ADC规则组和注入组 9
  • 华清远见-重庆中心-框架个人总结

    框架 一套规范 实际是他人实现的一系列接口和类的集合 通入导入对应框架的jar文件 maven项目导入对应的依赖 进行适当的配置 就能使用其中的所有内容 开发者可以省去很多模板代码 如dao中的CRUD MVC模式下层与层之间的关联 只需要
  • java设计模式之适配器设计模式

    什么是适配器模式 为什么要使用适配器模式 适配器模式 属于结构型设计模式 适配俩个字来说很明显需要做兼容 俩者毫无关系 从而联系到一起去使用 拓展 举个例子 我现在需要三根充电器线 我有安卓 苹果 和电脑充电器线 本身他们之间是没有任和关系
  • 【华为OD机试】路灯照明【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 一条长l的笔直的街道上有n个路灯 若这条街的起点为0 终点为l 第i个路灯坐标为a i 每盏灯可以覆盖到的最远距离为d 为了照明需求 所有灯的灯光必须覆盖整条街 但是
  • 使用nfs实现目录共享

    准备两台虚拟机 其中一台为主端 另一台为备用端 1 安装nfs及其依赖包 两台虚拟机都要安装 yum install y nfs utils rpcbind id nobody 查看nfsnobody用户是否存在 systemctl sta
  • LeetCode第178场周赛

    1365 有多少小于当前数字的数字 给你一个数组 nums 对于其中每个元素 nums i 请你统计数组中比它小的所有数字的数目 换而言之 对于每个 nums i 你必须计算出有效的 j 的数量 其中 j 满足 j i 且 nums j l
  • 02、单链表LinkList

    LinkList h pragma once typedef int DataType typedef struct Node DataType data struct Node next ListNode LinkList 定义方式 线性
  • Java > 牛客OJ在线编程常见输入输出练习场

    C 处理输入输出 牛客OJ在线编程常见输入输出练习场 A A B 1 B A B 2 C A B 3 D A B 4 E A B 5 F A B 6 G A B 7 H 字符串排序 1 I 字符串排序 2 J 字符串排序 3 牛客OJ在线编
  • 重磅!讯飞版ChatGPT来了!

    Datawhale发布 大模型 讯飞星火 发布 科大讯飞 倒计时1天 讯飞星火认知大模型来了 相约合肥滨湖国际会展中心 更有用户现场开放体验 注册体验 海报扫码直接申请体验 一起看发布会 讯飞星火发布会交流群 一起观看发布 星星之火 可以燎
  • AI画图midjourney和playgroundai

    AI画图 1 midjourney的介绍于注册使用 2 playgroundAI画图 3 算法学习 4 参考博文 1 midjourney的介绍于注册使用 midjourney归属于discord是一个聊天室网站 生成图片就像跟人聊天一样
  • 由instanceof引发的思考

    本来上课的时候对instanceof没怎么认真听 以为记住一个不要在equals之外的地方使用就够了 但听了几个大佬的复习讲座后 觉得对instanceof还是应该再深入了解一下 起初我只知道a instanceof b是判断a是否是b及其
  • HFSS15.0安装步骤

    安装步骤 安装前先关闭杀毒软件和360卫士 注意安装路径不能有中文 安装包路径也不要有中文 试装系统位win10 1 解压压缩包HFSS150Win64 ZIP 2 以管理员身份运行安装程序 3 选择INSTALL SOFTWARE 4 这
  • CTFHub 技能树-web文件上传

    目录 无过滤 前端过滤 htaccess MIME绕过 双写后缀 文件头检查 无过滤 直接传入一句话木马 然后用蚁剑连一下 得到flag 前端过滤 function checkfilesuffix var file document get
  • hdoj1024

    寡人又AC了 哦hoho include
  • Ubuntu虚拟机网络无法连接的几种解决方法

    虚拟机网络无法连接的几种解决方法 问题状况描述 可能的解决方案 问题状况描述 Ubuntu虚拟机没有网络 无法ping通互联网 左上角网络连接图标消失等情况 可能的解决方案 1 重启虚拟机网络编辑器 2 重启虚拟机网络适配器 3 重启虚拟机
  • 互联网数据分析岗实习感受

    互联网实习感受 本篇博客是我在互联网公司实习三个月的一个总结 包括实习前的准备 日常工作介绍 以及数据分析实习的收获 2020 8 29 2020 11 29 从实习到现在事有些多 才补上 1 实习前的准备 本人学校一般 非211985 应
  • 进阶高级测试专项,Pytest自动化测试框架总结(二)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Linux之shell脚本

    1 hello world 创建并编辑hello sh文件 写入脚本 运行脚本 运行脚本的两种方式 1 通过sh命令运行 localhost home sh hello sh hello world 2 通过chmod 755 localh
  • TeamViewer 的安装企业版改个人版

    1 清除注册表中的TeamViewer 2 计算机 管理 设备管理器 网络适配器 家庭控制器 高级 网络地址 不存在改为值 3 重新安装TeamViewer 4 将 2 步骤中的值改为不存在
  • 蓝牙AVRCP协议解析

    在这里讨论蓝牙的AVRCP协议 要理解AVRCP 需要先了解AVCTP 我们分两个部分来进行 1 AVCTP协议 2 AVRCP协议 下面先来看AVRCp协议 一 概述 1 定义 AVCTP Audio Video Control Tran