From 527d7f0600059344165cc4cc5bf8f57e8aaa4015 Mon Sep 17 00:00:00 2001 From: Aravind Angadi Date: Thu, 4 Feb 2021 23:46:57 +0530 Subject: [PATCH 1/2] CEC: Implement handleReportArcInitiate method Bug: 159901363 Test: None Change-Id: Ibdff6d2c83d945f487312a14b577ace0636d7b02 --- .../server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index 790c067c13004..3bb4587302e7c 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java @@ -358,8 +358,12 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { @Constants.HandleMessageResult protected int handleReportArcInitiate(HdmiCecMessage message) { assertRunOnServiceThread(); - // TODO(amyjojo): implement report arc initiate handler - HdmiLogger.debug(TAG + "Stub handleReportArcInitiate"); + /* + * Ideally, we should have got this response before the {@link ArcInitiationActionFromAvr} + * has timed out. Even if the response is late, {@link ArcInitiationActionFromAvr + * #handleInitiateArcTimeout()} would not have disabled ARC. So nothing needs to be done + * here. + */ return Constants.HANDLED; } From bbfb709012c1e5af5261415c58fcb88493706f78 Mon Sep 17 00:00:00 2001 From: Aravind Angadi Date: Fri, 5 Feb 2021 14:15:23 +0530 Subject: [PATCH 2/2] CEC: Implement handleReportArcTermination method Bug: 159901363 Test: None Change-Id: I0d22678f09219e47aa93af13992c3050b32334a8 --- .../server/hdmi/ArcTerminationActionFromAvr.java | 5 +---- .../server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/ArcTerminationActionFromAvr.java b/services/core/java/com/android/server/hdmi/ArcTerminationActionFromAvr.java index dedf2e28a5731..049a339957cbf 100644 --- a/services/core/java/com/android/server/hdmi/ArcTerminationActionFromAvr.java +++ b/services/core/java/com/android/server/hdmi/ArcTerminationActionFromAvr.java @@ -49,10 +49,7 @@ public class ArcTerminationActionFromAvr extends HdmiCecFeatureAction { switch (cmd.getOpcode()) { case Constants.MESSAGE_REPORT_ARC_TERMINATED: mState = STATE_ARC_TERMINATED; - audioSystem().setArcStatus(false); - if (audioSystem().getLocalActivePort() == Constants.CEC_SWITCH_ARC) { - audioSystem().routeToInputFromPortId(audioSystem().getRoutingPort()); - } + audioSystem().processArcTermination(); finish(); return true; } diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index 3bb4587302e7c..3678b198d6e5a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java @@ -372,8 +372,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { @Constants.HandleMessageResult protected int handleReportArcTermination(HdmiCecMessage message) { assertRunOnServiceThread(); - // TODO(amyjojo): implement report arc terminate handler - HdmiLogger.debug(TAG + "Stub handleReportArcTermination"); + processArcTermination(); return Constants.HANDLED; } @@ -716,6 +715,14 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { mArcEstablished = enabled; } + void processArcTermination() { + setArcStatus(false); + // Switch away from ARC input when ARC is terminated. + if (getLocalActivePort() == Constants.CEC_SWITCH_ARC) { + routeToInputFromPortId(getRoutingPort()); + } + } + /** Switch hardware ARC circuit in the system. */ @ServiceThreadOnly private void enableAudioReturnChannel(boolean enabled) {