在蓝牙音频 / 视频远程控制规范(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中的命令相关知识,也欢迎大家在评论区分享自己的见解和经验。