蓝牙AVRCP协议解析

蓝牙AVRCP协议解析还有其他一些功能 如 continuation Groupnavigat AbsoluteVolu MediaPlayerS NowPlaying 等 这

大家好,欢迎来到IT知识分享网。

AVRCP使用AV/C command set(AV/C Digital Interface Command Set)来实现;

AVRCP的实现需要GAP协议的支持;

        browsing channel不是必须的,可根据双方协商是否建立,它在control channel建立后才可建立;

        CT和TG都可以发起一个AVCTP的L2CAP信道建立,这个事件是被外部触发的,比如开机事件;

        如果两个设备同时打开AVCTP信道,这时需要先同时关闭,然后两个设备经过一个随机时间后在尝试打开;

蓝牙AVRCP协议解析

        如果browsing channel存在,则需要在释放control channel之前先释放browsing channel;

蓝牙AVRCP协议解析

上图说明了命令流程,有两点需要注意:

a、AV/C interim response可能在VENDOR DEPENDENT命令时返回,其他命令不会返回interim response;

b、在某些情况下,TG不会响应response;

4、命令类型:

蓝牙AVRCP协议解析

Subunit Info指令用来获取AV/C子集信息;

Vendor Dependent允许划分子集的指令与响应集;

AVRCP协议的一个特点就是就是通过Pass Though指令的Panel subunit(面板子集),The Panel subunit提供一个以用户操作来触发的模型,当用户触发事件后(按键),CT会发送命令给Panel subunit,Panel subunit会给出相应动作的应答;尽管在TG中会有许多subunits,但Panel unit一定只有一个;不同于其他subunit,Panel unit不直接参与处理media流,Panel unit独立于其他unit,用来传递用户动作,影响其他unit;

spec中给出了一些pass through command命令,如下图,这些命令分为两种,使用AV/C Ctype的的AV/C VENDOR DEPENDENT命令和browsing commands,他们分别使用control channel和browsing channel

AVRCP特定命令分为AV/C VENDOR DEPENDENT命令和browsing命令

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

1)Target player application settings,为CT端提供了查询TG设置属性的一种机制,其形式为<attribute,value>,具体属性可参看spec;

2)Metadata Attributes for Current Media Item,CT获取TG特定属性时可通过GetElementAttributes命令实现;

3)TG 事件notification,这个机制是当TG有事件发生时,用来通知CT的;

(a)CT可以获取TG播放状态;

(b)TG可被监控的状态有

播放状态:Playing,Paused,Stopped,Seek Forward,Seek Rewind,PlayBack Position change;

Track改变事件:Change of track,Start of track,End of track;

(c)设备插播事件;

(d)所有Player应用的属性都可以被注册到CT,当产生变化时,TG会通知CT;

(e)音量事件通知;

(f)终端player变化通知;

(g)player地址变化通知;

(h)UIDs改变通知;

(i)Content of Now Playing变化通知;

CT想TG提供NOTIFY指令集,TG需要向已经注册的NOTIFY指令集给CT发送INTERIM响应;occurrence注册事件,TG发送CHANGED响应报告状态;CT可以定期更新需要NOTIFY的命令;为了有效性,我们应该限制事件数量;

还有其他一些功能,如continuation commands,Group navigation,Absolute Volume,Media Player Selection,Now Playing等,这里就不详细看了,我们开发时遇到随时查下spec就可以,了解就好;

2)我们先看下AVRCP四种命令类型的帧格式:

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

另一种是browsing channel,格式如下:

蓝牙AVRCP协议解析

笔者用耳机与手机连接,抓包后过滤只显示AVCTP与AVDTP包,显示如下:

蓝牙AVRCP协议解析

笔者后面会继续看下AVDTP协议,AVDTP中定义了流媒体初始化的过程,这里我们先关注Event Notification包,看看其具体是怎么发送的,我们展开一包来看:

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

笔者特意将上一篇中的AVCTP中的图拿过来,实际抓包和spec中图一对比,我们很容易理解AVRCP/AVCTP/L2CAP的作用,我们可以看到从具体AVRCP协议到AVCTP协议框架到L2CAP层的数据,首先这是一个AVRCP Event notification,PDUID是Event notification,然后根据PDUID找到这个包可以包含的事件:

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

上面两张图片可以和spec中的事件对应起来,下面两个图,你可以根据我们给出的AVCTP和AVRCP协议找到对应的字节吧?如果对应不起来,请再把上面两篇文章再来一遍吧(注:这里AVCTP使用了A/V Remote Control,其PDUID= 0x0e11 );

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

蓝牙AVRCP协议解析

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119236.html

(0)
上一篇 2025-11-06 22:20
下一篇 2025-11-06 22:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信