【AVRCP】探寻AVRCP控制互操作性:连接、命令与设备交互

AVRCP对于实现设备间的高效音频/视频控制至关重要。而控制互操作性要求作为AVRCP的核心部分,详细规定了设备在连接建立、命令传输等方面的具体操作。确保了不同设备之间能够实现无缝的远程控制。

一、AVCTP连接管理

1.1 AVCTP连接建立

  • 发起者:AVCTP控制通道的L2CAP连接建立可以由控制器(CT)或目标设备(TG)发起。内部事件或用户操作(如开机)可以触发连接建立。
  • 浏览通道:如果设备支持浏览通道,则应在控制通道建立后立即建立浏览通道。控制通道必须始终在浏览通道之前建立。
  • 延迟优化:从优化性能角度看,建议控制通道建立后立即建立浏览通道,这样能有效避免发送浏览命令时出现较大延迟。但在一些特殊场景中,若浏览功能使用频率很低,设备为了节省资源,也可以选择按需打开浏览通道。同时,浏览通道需配置为使用L2CAP增强重传模式,以确保数据传输的可靠性。

  • 冲突处理:在连接建立过程中,若双方设备同时尝试打开AVCTP通道,为避免冲突,两个通道都要关闭,然后各自等待一个随机时间(100ms到1s之间)后再重新尝试打开。若能确定哪个设备是中央设备,那么该设备可直接重试。并且,需要注意的是,AVCTP实体之间只能建立一个用于控制的L2CAP连接和一个用于浏览的L2CAP连接(前提是双方都支持浏览功能),若连接已存在,CT或TG就不应再发起连接请求了。

1.2 AVCTP连接释放

  • **发起者:**AVCTP控制通道的L2CAP连接释放同样可以由CT或TG发起。内部事件或用户操作(如关机)可以触发连接释放。

  • 浏览通道释放:当存在浏览通道时,必须先释放浏览通道,然后才能释放控制通道。当然,如果不再需要浏览通道,也可以单独释放它而不影响控制通道。而且,只要控制通道还存在,当再次需要浏览功能时,浏览通道是可以重新建立的。

二、AV/C命令的操作流程

2.1 AV/C命令交换流程

  • 连接建立:当CT检测到内部事件或者用户操作,并且此时连接尚未建立时,CT就需要先发起连接建立操作。一旦连接建立,即可发送AV/C命令。

  • 命令响应:TG在接收到命令后,根据命令类型返回相应的响应。对于某些命令,可能返回中间响应。

2.2 AV/C命令类型

在AV/C命令的交互过程中,可能会涉及到以下几种命令:

  • UNIT INFO命令:CT端为可选支持(O),TG端为必须支持(M)。该命令用于获取AV/C单元的整体信息,TG的响应帧会包含自身的厂商ID以及最能描述该单元的子单元类型信息。通过厂商ID,CT在使用VENDOR DEPENDENT命令之前可以先了解TG的厂商信息。例如,一个VCR设备,即便它有调谐器功能,但在响应UNIT INFO命令时,可能返回的单元类型是磁带录音机/播放器。

  • SUBUNIT INFO命令:在CT端和TG端的支持情况与UNIT INFO命令相同(CT:O;TG:M)。它主要用于获取AV/C单元的子单元信息。如果设备支持多个子单元(当设备同时存在其他配置文件时可能会出现这种情况),CT可以通过这个命令来发现这些子单元,从而实现对AV/C功能的探索。

  • VENDOR DEPENDENT命令若支持3.1 - 10到3.1 - 15中的任何一项功能,该命令在CT和TG端都为必须支持(C),否则为可选支持。这个命令允许模块厂商根据AV/C帧中包含的AV/C地址,为AV/C单元或子单元指定自己的一套命令和响应。

  • PASS THROUGH命令:在CT和TG端均为必须支持(M)。它是AVRCP的一个重要特性,TG中只能有一个面板子单元,CT通过这个命令,依据用户的操作,以特定的与CT相关的方式来控制面板子单元。用户在设备的显示屏上进行操作或者按下按钮,CT就会将这些操作命令发送给面板子单元,面板子单元接收到命令后会执行相应的操作。面板子单元的主要作用是将用户的操作命令转化为内部操作,这些操作会影响其他子单元或整个单元,并以TG特定的方式将其调度到合适的子单元或单元中,最终可能会对媒体流产生影响。

三、AVRCP特定命令

AVRCP定义了一系列特定命令,用于实现更复杂的控制功能和元数据处理。这是对AV/C数字接口命令集通用规范的扩展,它通过在1394规范的框架内定义VENDOR DEPENDENT和PASS THROUGH命令来实现。为了与真正的厂商特定命令区分开来,使用了蓝牙SIG的厂商ID。通过这种扩展,实现了更复杂的控制功能,并且能够处理诸如歌曲和艺术家信息等元数据。

AVRCP定义了一系列特定命令,用于实现更复杂的控制功能和元数据处理。这些命令包括但不限于:

  • Capabilities:获取设备能力。
  • Player Application Settings:获取和设置播放器应用设置。
  • Metadata Attributes for Current Media Item:获取当前媒体项的元数据属性,如歌曲标题、艺术家名称等。
  • Notifications:注册和接收通知,如播放状态改变、曲目变化等。
  • Continuation:请求和终止连续响应,以处理大量数据。
  • Absolute Volume:设置绝对音量。
  • MediaPlayerSelection:选择媒体播放器。
  • Browsing:浏览媒体库,如获取文件夹项、总项目数等。
  • Search:搜索媒体项。
  • NowPlaying:获取当前播放的媒体项信息。

四、AVRCP浏览命令

AVRCP浏览命令定义了直接在AVCTP上使用的命令,用于使CT浏览TG设备上的媒体,并对特定媒体项执行操作。这些命令直接通过AVCTP使用,不依赖于AV/C,并且AVCTP浏览通道不使用分片技术。

五、OBEX连接管理

5.1 OBEX连接建立

AVRCP不对OBEX L2CAP通道的建立时间施加限制。然而,由于BIP图像句柄仅在BIP封面艺术连接的生命周期内有效,因此在成功检索BIP图像句柄之前必须存在OBEX级连接。

5.2 OBEX连接释放

AVRCP不对OBEX L2CAP通道的关闭时间施加限制。然而,当OBEX级连接关闭时,在该OBEX连接期间检索的BIP图像句柄将不再有效。强烈建议在仅因释放图像句柄而断开OBEX连接时,不断开底层L2CAP通道,以减少延迟和UID更改过程中的开销。

六、总结

AVRCP的控制互操作性要求涵盖了连接、命令等多个关键方面,它们相互协作,确保了蓝牙设备在音频/视频控制场景下能够实现稳定、高效的交互。


七、参考资料

AVRCP 1.6.3:可在蓝牙技术联盟官方网站或者https://download.csdn.net/download/weixin_37800531/90046059?spm=1001.2014.3001.5503获取。


希望通过这篇博客,能帮助大家更好地理解AVRCP控制互操作性的相关知识,也欢迎大家在评论区分享自己的见解和经验。

相关推荐
byte轻骑兵20 天前
【HFP】蓝牙HFP协议中音频连接转移与拨号功能的深度解析
音视频·蓝牙技术·hfp
byte轻骑兵23 天前
【HFP】蓝牙HFP协议来电处理机制解析
蓝牙技术·hfp
byte轻骑兵1 个月前
【HFP】蓝牙 HFP 协议状态通知机制研究
蓝牙技术·hfp
byte轻骑兵1 个月前
【HFP】蓝牙HFP服务层连接与互操作性核心技术研究
蓝牙技术·hfp
byte轻骑兵2 个月前
【SPP】深入解析蓝牙 L2CAP 协议在SPP中的互操作性要求 —— 构建可靠的蓝牙串口通信基础
spp·蓝牙技术·l2cap
byte轻骑兵2 个月前
【AVRCP】深度剖析 AVRCP 中 Generic Access Profile 的要求与应用
avrcp·蓝牙技术·音频/视频控制
RF_star1 年前
信驰达蓝牙数字钥匙方案持续创新,助推智慧汽车生态发展
智能汽车·蓝牙数字钥匙·蓝牙技术·信道探测·无线通信技术