From 71651d37125a5fe7339fb5f140876c891a8275df Mon Sep 17 00:00:00 2001 From: Jinsuk Kim Date: Fri, 27 Mar 2015 08:21:15 +0900 Subject: [PATCH] CEC: Do not send when init request gets rejected System audio may reject with a response or just time out. Do not send in response so as not to turn off the ARC mode, as it may not be the intended behavior. Bug: 19928094 Change-Id: I469dfa53bf35dfbca7daa86a69763b10551663ec --- .../com/android/server/hdmi/RequestArcAction.java | 12 +++++++----- .../server/hdmi/RequestArcInitiationAction.java | 6 +++--- .../server/hdmi/SetArcTransmissionStateAction.java | 1 + 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/RequestArcAction.java b/services/core/java/com/android/server/hdmi/RequestArcAction.java index cbbf91b6cc94e..75a79cb0213c6 100644 --- a/services/core/java/com/android/server/hdmi/RequestArcAction.java +++ b/services/core/java/com/android/server/hdmi/RequestArcAction.java @@ -58,14 +58,16 @@ abstract class RequestArcAction extends HdmiCecFeatureAction { // received without or . case Constants.MESSAGE_FEATURE_ABORT: int originalOpcode = cmd.getParams()[0] & 0xFF; - if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_INITIATION - || originalOpcode == Constants.MESSAGE_REQUEST_ARC_TERMINATION) { + if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_TERMINATION) { disableArcTransmission(); finish(); return true; - } else { - return false; + } else if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_INITIATION) { + tv().setArcStatus(false); + finish(); + return true; } + return false; } return false; } @@ -82,7 +84,7 @@ abstract class RequestArcAction extends HdmiCecFeatureAction { if (mState != state || state != STATE_WATING_FOR_REQUEST_ARC_REQUEST_RESPONSE) { return; } - HdmiLogger.debug("[T]RequestArcAction."); + HdmiLogger.debug("[T] RequestArcAction."); disableArcTransmission(); finish(); } diff --git a/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java b/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java index d9e1f24d95e99..f69f975a4b677 100644 --- a/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java +++ b/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java @@ -35,6 +35,7 @@ final class RequestArcInitiationAction extends RequestArcAction { @Override boolean start() { + // Seq #38 mState = STATE_WATING_FOR_REQUEST_ARC_REQUEST_RESPONSE; addTimer(mState, HdmiConfig.TIMEOUT_MS); @@ -44,9 +45,8 @@ final class RequestArcInitiationAction extends RequestArcAction { @Override public void onSendCompleted(int error) { if (error != Constants.SEND_RESULT_SUCCESS) { - // If failed to send , start "Disabled" - // ARC transmission action. - disableArcTransmission(); + // Turn off ARC status if fails. + tv().setArcStatus(false); finish(); } } diff --git a/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java index bffa854b79e56..d200d359bffbb 100644 --- a/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java +++ b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java @@ -52,6 +52,7 @@ final class SetArcTransmissionStateAction extends HdmiCecFeatureAction { @Override boolean start() { + // Seq #37. if (mEnabled) { // Enable ARC status immediately after sending . // If AVR responds with , disable ARC status again.