首次解决ARC的问题,项目刚开始时点检发现ARC通道都是正常的,有声音输出,也可由音量控制。但是突然有一天发现ARC无声了,各种软件排查,最后才发现硬件主板上ARC的port口换了,软件映射玩端口,各个流程有重新梳理了一遍,顺便把ARC的协议整理了一下。
一,ARC用到的消息:
< Initiate ARC>,< Report ARC Initiated>,< Report ARC Terminated>,< Request ARC Initiation>,< Request ARC Termination>,< Terminate ARC>
二,ARC功能介绍:
ARC功能允许ARC RX设备启动或终止相邻的ARC TX设备和ARC RX之间的ARC功能。相反,ARC Tx设备被允许请求相邻 ARC Rx设备启用或停止ARC Tx 和 ARC Rx间的ARC功能。相邻设备之间只有在按照本节规定的协议要求成功地进行协商和确认后,才能利用设备之间通过音频回传通道进行音频数据传输。
如果一个Follower从一个不相邻的发起者那里接收到此特性的消息,或者在相关链接上从未支持过此特性(Follower可以在另一个链接上支持此特性),那么Follower可以用< feature Abort> ["refuse "]消息进行响应。消息为音频回传通道控制提供连接功能,并不控制音频源的选择。
三,发自ARC Rx设备的开始和结束
注意:消息有一定的时间限制,在应用时应该遵守。理想的最大响应时间是200ms,要求的最大响应时间是1秒。
(1)在启动过程,ARC Rx设备应在ARC Rx功能被激活后向邻近设备发送一个直接寻址< Initate ARC>的信息。如果Follower 发送了一个 < Feature Abort> 【未识别操作码】消息,或在最大的相应时间内没有相关消息发送,那么ARC Rx设备会假定Follower 不支持ARC功能。
如果Follower是ARC Tx设备,则在上面“注意”规定的最大响应时间内,直接寻址为< Report ARC initiated>的消息或< Report ARC Terminated>消息或< Feature Abort>消息。注意:如果Follower是一个ARC Tx设备,且如果没有音频流输出,它可以发送一个[“不能提供Source”]的消息。
如果Follower 响应一个直接寻址的 < Report ARC Initiated>消息,ARC Rx设备就会知道这个Follower是一个ARC Tx设备,它的 ARC Tx功能被激活,并且它可以通过音频回传通道传送音频流。如果Follower响应一个直接寻址的 < Report ARC Ternimated>消息,ARC Rx 设备就会知道这个Follower是一个ARC Tx设备,但它的ARC Tx功能被停掉,并且它不可以通过音频会穿通道传送音频流。在这个例子里,ARC Rx设备可以停掉 ARC Tx的功能。
(2)在结束过程,ARC Rx设备应该给相邻的ARC Tx设备发送直接寻址的 < Terminate ARC>消息。ARC Tx 设备应该停止传送自身的音频流,并停掉ARC Tx功能,同时返回一个直接寻址的< Report ARC Terminated>消息。在这个过程中,ARC Rx 设备停掉 ARC Rx功能。如果ARC Rx 设备在最大的效应时间内没有收到 < Report ARC Terminated> 消息,那么ARC Rx 设备会继续保持自身 ARC Rx 功能活跃状态,或者当检测到ARC Tx 功能停掉时可停掉ARC Rx功能,例如丢失了音频信号。
四,发自ARC Tx设备的请求
在ARC Tx 设备想要启用音频回传通道的过程中,ARC Tx 设备不应该发送 < Initiate ARC>消息;相反,ARC Tx 设备可以请求一个相邻的设备来通过发送直接寻址 < Request ARC Initiation>消息来启用音频回传通道。如果Follower发送一个 < Feature Abort> [“未识别操作码”]的消息,或者没有消息在最大响应时间内发送,ARC Tx设备会假定Follower不支持音频回传通道功能。如果Follower 发送了一个 < Feature Abort> [“无正确模式响应”]的消息,ARC Tx设备会假定这个Follower是一个ARC Rx设备,并且没有打算启用音频回传功能。如果Follower 是一个ARC Rx 设备,当它打算启用ARC 功能时,它开始启用的顺序应该遵从上(二)中的定义。
在ARC Tx 设备要结束一个音频回传通道的过程中,ARC Tx 设备不应该发送 < Terminat ARC>的消息,相反,ARC Tx 设备可通过发送一个直接寻址的 < Request ARC Termination>消息向相邻的ARC Rx 设备请求停掉 音频回传通道。当 ARC Rx 设备要停止音频回传通道式, ARC Rx 设备应该按照上(二)的定义开始结束流程。如果ARC Rx 设备发送了一个 < Feature Abort>的消息,或者在最大的效应时间内没有相关的消息收到,那么ARC Tx 设备可以停止 ARC Tx的功能。如果ARC Tx设备暂时进入一种不能停止音频回传通道的状态,它应该在进入该状态之前通过发送一个直接寻址的< Request ARC Ternimation>消息到邻近的ARC Rx设备。另外,在ARC Rx设备已启动此功能的情况下,邻近的ARC Tx设备可向ARC Rx设备请求终止该功能。