【AVRCP】深入剖析 AVRCP 命令体系:从单元到特定命令的全面解读

发布于:2025-03-05 ⋅ 阅读:(18) ⋅ 点赞:(0)

在蓝牙音频 / 视频远程控制规范(AVRCP)中,丰富的命令体系是实现设备间高效交互的关键。这些命令涵盖了单元命令、通用单元与子单元命令、特定命令等多个层面,

一、支持的单元命令

1.1 单元命令概述

AVRCP中支持的单元命令在设备交互中扮演着重要角色,用于获取设备的整体信息和子单元信息。在使用这些单元命令时,AV/C命令帧的AV/C地址字段需指示单元的值。

1.2 UNIT INFO命令

  • 功能用途:根据AV/C通用规范,UNIT INFO状态命令用于获取单元的整体信息。例如,在一个蓝牙音频设备中,通过该命令可以获取设备的基本信息,包括设备的主要功能类型等。

  • 支持情况:在目标设备(TG)中是强制支持的,而在控制器(CT)中则不适用。

  • 响应帧内容

    • unit_type字段:响应帧的unit_type字段应显示代表单元主要功能的子单元类型代码。如果设备仅实现此配置文件,则应在响应帧中返回PANEL子单元。

    • company_ID字段:该字段应插入从IEEE注册管理机构委员会获得的24位唯一ID。若TG设备的供应商没有此唯一ID,则可使用值0xFFFFFF。

1.3 SUBUNIT INFO命令

  • 功能用途:同样依据AV/C通用规范,SUBUNIT INFO状态命令用于获取单元的子单元信息。对于了解设备内部的具体功能模块非常有帮助。

  • 支持情况:与UNIT INFO命令相同,在TG中是强制支持的,在CT中不适用。

  • 响应帧内容:如果设备实现了此配置文件,响应帧的subunit_type字段应返回PANEL子单元,max_subunit_ID字段的值应为0。

二、支持的通用单元和子单元命令

2.1 VENDOR DEPENDENT命令

  • 命令格式与规则:命令帧或响应帧的格式以及合规使用规则均按照AV/C通用规范定义。

  • 支持情况:若支持任何AVRCP特定的AV/C命令,则该命令在CT和TG端均为强制支持(C);否则为可选支持。

  • 特定ID使用:对于AVRCP特定的AV/C命令支持,使用预定义的VENDOR DEPENDENT命令,其company_ID字段应包含24位唯一ID [0x001958],所有AVRCP特定的AV/C协议数据单元(PDU)都应使用此唯一ID。若设备不支持与元数据传输相关的功能,则应按照AV/C协议规范返回“未实现”的响应。

  • 使用限制:除了定义为AVRCP特定AV/C命令的VENDOR DEPENDENT命令外,不得使用具有相同功能但未定义为AVRCP特定命令的VENDOR DEPENDENT命令来替代AVRCP中指定的命令。

2.2 PASS THROUGH命令

  • 功能用途:根据AV/C面板子单元规范,PASS THROUGH命令用于将用户操作信息从CT传输到TG的面板子单元。例如,在蓝牙遥控器控制智能音箱的场景中,用户按下遥控器上的按钮,通过该命令将操作信息传递给音箱的面板子单元,从而实现对音箱的控制。

  • AV/C地址字段:AV/C命令帧的AV/C地址字段应指示面板子单元的值。

  • 支持情况:CT和TG端都必须支持PASS THROUGH命令的操作码(M*),每个操作 ID 的支持级别取决于设备支持的 A/V 功能类别。

  • 特殊注意事项:需特别关注 state_flag,它用于传达按钮的按下和释放状态以及时序要求,以实现长按按钮等操作。

三、AVRCP特定命令

AVRCP定义了一系列特定命令,用于实现更复杂的控制功能和元数据处理。

3.1 命令分类

AVRCP 特定命令分为 AV/C VENDOR DEPENDENT 命令(命令类型为 AV/C CType)和浏览命令。AV/C 命令通过 AVCTP 控制通道发送,浏览命令通过 AVCTP 浏览通道发送。

3.2 具体命令介绍

  • 能力相关命令:如 GetCapabilities,用于获取设备能力信息。

  • 播放器应用设置命令:包括 ListPlayerApplicationSettingAttributes、ListPlayerApplicationSettingValues 等,用于管理播放器的应用设置。

  • 元数据属性命令:例如 GetElementAttributes,用于获取当前媒体项的元数据属性。

  • 通知命令:像 GetPlayStatus、RegisterNotification 等,用于设备间的状态通知和事件监听。

  • 浏览命令:如 SetBrowsedPlayer、GetFolderItems 等,支持对媒体文件的浏览和操作。

  • 搜索命令:Search 等命令,方便用户查找特定媒体内容。

  • 当前播放列表命令:用于管理和操作当前播放列表。

  • 错误响应命令:如 General Reject,处理命令执行过程中的错误情况。

3.3 支持情况说明

不同命令的支持情况根据设备支持的功能类别而定,用 C1 - C17 等标识。例如,若设备支持 Category 1,则部分与 Category 1 相关的命令为强制支持;若不支持,则为可选或排除。

四、AVRCP 特定供应商唯一 PASS THROUGH 命令

这类命令用于处理组导航功能,如 Next Group、Previous Group 等。使用时需以蓝牙 SIG 注册的 CompanyId 作为操作码,并结合定义的供应商唯一操作 ID 和 PANEL 子单元类型。

4.1 类别及操作 ID 支持级别

①TG 支持级别

不同类别(如 Player/Recorder、Monitor/Amplifier、Tuner、Menu)对操作 ID 有不同的支持要求。例如,在 Category 1 中,play、stop 等命令可能为强制支持;在 Category 2 中,volume up、volume down 等命令可能为强制支持。

 ②CT 支持级别

CT 虽无由 PASS THROUGH 命令操作 ID 定义的强制命令,但对于每个支持的类别,至少需支持一个操作 ID。不同类别下各操作 ID 的支持情况也有所不同。

五、实际应用与意义

这些支持的命令在实际的AVRCP应用中具有重要意义。通过UNIT INFO和SUBUNIT INFO命令,设备可以相互了解对方的基本信息和子单元情况,为后续的控制和交互提供基础。VENDOR DEPENDENT命令则为厂商提供了自定义命令和功能的灵活性,满足不同设备的特殊需求。而PASS THROUGH命令则是实现用户与设备交互的关键,让用户能够通过CT方便地控制TG的面板子单元,实现各种操作。

总之,AVRCP中支持的单元、通用单元与子单元以及子单元命令构成了一个完整的命令体系,为蓝牙音频/视频设备的远程控制和交互提供了坚实的基础。 


六、 参考资料

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

希望本文能帮助大家更好地理解AVRCP中的命令相关知识,也欢迎大家在评论区分享自己的见解和经验。