当前位置: 首页 > ops >正文

蓝牙AVRCP协议概述

AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和 audio/video 控制功能通信的特
点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP 传输协议。该 Profile 定义了AV/C 数字命令控制集。命令和信息通过 AVCTP(Audio/Video Control Transport Protocol)协议进
行传输。浏览功能通过 AVCTP 的第二个 channel 而不是 AV/C。传输媒体信息通过基于 OBEX
协议的 BIP(Bluetooth Basic Imaging Profile)协议。架构如下:
在这里插入图片描述

在我们协议栈的位置是:
在这里插入图片描述
角色
发送命令控制的就是 AVRCP controller(CT),那么接受命令的就是 AVRCP target(TG).

AVCTP 的连接分为两个通道:Control 通道跟 Brwoing 通道,对应的 L2CAP PSM 不同,control
通道的 PSM 为 0x0017,AVCTP browing 通道的 PSM 为 0x001B,两个通道 controller 跟 target 角
色都可以发起连接,注意一点,AVCTP browing 部分基于 L2CAP 不能用 basic mode,需要用
到 Enhanced Retransmission Mode,而且在双方都支持 AVCTP browing 的情况下才能发起
AVCTP browing channel 的连接;连接时,先建立 control通道,再建立brwoing通道,断开时反过来

VENDOR DEPENDENT 格式
command格式
在这里插入图片描述
Ctype:这个是 command 类型,一共分为 5 种,此定义在 AVC Digital Interface Command Set.pdf
中有介绍,一般我们在 AVRCP 协议中会用到 3 中,分别是 CONTROL 控制命令,STATUS 获取
状态命令,NOTIFY 通知命令,分别类型如下:
在这里插入图片描述
Subunit_type:子信息类型,一般用9(PANEL)
Subunit_id:此部分我们一般填 0
Opcode:我们仅仅需要知道每个特定的 comamnd opcode 是什么就行,VENDOR DEPENDENT
的值为 0。
Company ID:此部分需要填写蓝牙 SIG 的 ID

response 格式
在这里插入图片描述
response的值可以是A B C D F,个人简单理解:
A REJECTED 拒绝执行command
B IN TRANSITION 正在执行的过渡状态
C implemented/stable 执行完成的稳定状
D changed 标明目标设备的状态已发生变化
E 保留
F interim 目标已接收该请求,但无法在100ms内返回信息,将在未来某个时间,向控制器通知目标状态的变化

PASS THROUGH格式
它的command和response格式如下:
在这里插入图片描述
Operation_ID:操作 ID,从0-7f,包括音量加减啦,上下一曲啦,播放暂停啦等等
State_flag:分 press 跟 realease 动作,发送press 的时候这个值为 0,realease 的时候这个值为 1

还有一些AVRCP的特定命令
在这里插入图片描述
在这里插入图片描述
实际应用中我们一般只会用到 Get Capabiliby for event,来获取对端支持的 event,方便注册notify,可以看到上图支持播放状态改变,歌曲改变,播放器设置改变。

GetPlayStatus
这个命令是 controller 像 target 发送获取播放状态的命令,返回值包括歌曲总长度,歌曲当
前进度,以及播放状态,一共占用 9byte(4byte 歌曲长度,4byte 当前进度,1byte 播放状态)

还有注册通知命令
在这里插入图片描述
在这里插入图片描述
有这些通知:
在这里插入图片描述
上面说的支持哪些event,其实就是有哪些通知可以发,ct可以注册哪些通知

每个EVENT的具体response结构可以在官方文档查

还有很多的特定命令,这里没有列出

http://www.xdnf.cn/news/6656.html

相关文章:

  • 【MySQL】项目实践
  • 对于指针的理解
  • 8.重建大师刺点功能介绍
  • K8S从Harbor拉取镜像
  • 初识SOC:RK3588
  • AQS 基本思想与源码分析
  • go-数据库基本操作
  • 云存储最佳实践
  • 【PhysUnits】4.1 类型级比特位实现解释(boolean.rs)
  • 大数据革命:转变商业洞察力
  • 虹桥前湾印象城MEGA品牌大会灵感迸发,共绘湾系生活新章
  • 智能AI构建工地安全网:跌倒、抽搐、区域入侵多场景覆盖
  • 卓力达电铸镍网:精密制造与跨领域应用的创新典范
  • 预测模型开发与评估:基于机器学习的数据分析实践
  • 数据服务共享平台方案
  • 分布式锁: Redisson红锁(RedLock)原理与实现细节
  • 【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总
  • 双流芯谷产业园:元宇宙枢纽的区位密码
  • IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别
  • 泰迪杯特等奖案例深度解析:基于MSER-CNN的商品图片字符检测与识别系统设计
  • 会议分享|高超声速流动测量技术研讨会精彩探析
  • 深入探索:Core Web Vitals 进阶优化与新兴指标
  • Windows11安装rockerMq5.0+以及springboot集成rockerMq
  • 现代计算机图形学Games101入门笔记(十四)
  • YOLO12改进-Backbone-引入MobileNetV4替换backbone,平衡精度与效率的问题
  • 在服务器上安装AlphaFold2遇到的问题(1)
  • LLaMA-Factory:准备模型和数据集
  • 【软件测试学习day8】性能测试相关指标
  • WebGL2光照效果
  • DeepSeek解读道德经 第三十四章