Fix OTT devices not reacting to messages in Standby
Reverts most changes to Playback device message handling in Standby from aosp/1970899, to fix CTS tests and avoid unexpected behavior changes. aosp/1970899 has all devices use HdmiCecStandbyModeHandler, which causes Playback devices to ignore or <Feature Abort> certain messages in standby. This caused CTS failures for cect_hf_4_6_7 and cect_11_2_2_1 (b/226366076). This CL moves all behavior-affecting handlers except for <User Control Pressed> (required for the fix in aosp/1970899) back to TVs only: it is safer to preserve the original behavior until there is a reason to change it. Test: atest CtsHdmiCecHostTestCases Bug: 226366076 Change-Id: I888da78e27503ca0dada29e8a8b1f3d3fe03a608
This commit is contained in:
@@ -83,7 +83,9 @@ public final class HdmiCecStandbyModeHandler {
|
||||
private final HdmiCecLocalDevice mDevice;
|
||||
|
||||
private final SparseArray<CecMessageHandler> mCecMessageHandlers = new SparseArray<>();
|
||||
private final CecMessageHandler mDefaultHandler = new Aborter(
|
||||
private final CecMessageHandler mDefaultHandler;
|
||||
|
||||
private final CecMessageHandler mAborterUnrecognizedOpcode = new Aborter(
|
||||
Constants.ABORT_UNRECOGNIZED_OPCODE);
|
||||
private final CecMessageHandler mAborterIncorrectMode = new Aborter(
|
||||
Constants.ABORT_NOT_IN_CORRECT_MODE);
|
||||
@@ -95,6 +97,10 @@ public final class HdmiCecStandbyModeHandler {
|
||||
mUserControlProcessedHandler = new UserControlProcessedHandler();
|
||||
|
||||
private void addCommonHandlers() {
|
||||
addHandler(Constants.MESSAGE_USER_CONTROL_PRESSED, mUserControlProcessedHandler);
|
||||
}
|
||||
|
||||
private void addTvHandlers() {
|
||||
addHandler(Constants.MESSAGE_ACTIVE_SOURCE, mBystander);
|
||||
addHandler(Constants.MESSAGE_REQUEST_ACTIVE_SOURCE, mBystander);
|
||||
addHandler(Constants.MESSAGE_ROUTING_CHANGE, mBystander);
|
||||
@@ -118,17 +124,13 @@ public final class HdmiCecStandbyModeHandler {
|
||||
addHandler(Constants.MESSAGE_REPORT_POWER_STATUS, mBypasser);
|
||||
addHandler(Constants.MESSAGE_GIVE_FEATURES, mBypasser);
|
||||
|
||||
addHandler(Constants.MESSAGE_USER_CONTROL_PRESSED, mUserControlProcessedHandler);
|
||||
|
||||
addHandler(Constants.MESSAGE_GIVE_DEVICE_POWER_STATUS, mBypasser);
|
||||
addHandler(Constants.MESSAGE_ABORT, mBypasser);
|
||||
addHandler(Constants.MESSAGE_GET_CEC_VERSION, mBypasser);
|
||||
|
||||
addHandler(Constants.MESSAGE_VENDOR_COMMAND_WITH_ID, mAborterIncorrectMode);
|
||||
addHandler(Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE, mAborterIncorrectMode);
|
||||
}
|
||||
|
||||
private void addTvHandlers() {
|
||||
addHandler(Constants.MESSAGE_IMAGE_VIEW_ON, mAutoOnHandler);
|
||||
addHandler(Constants.MESSAGE_TEXT_VIEW_ON, mAutoOnHandler);
|
||||
|
||||
@@ -153,6 +155,9 @@ public final class HdmiCecStandbyModeHandler {
|
||||
addCommonHandlers();
|
||||
if (mDevice.getType() == HdmiDeviceInfo.DEVICE_TV) {
|
||||
addTvHandlers();
|
||||
mDefaultHandler = mAborterUnrecognizedOpcode;
|
||||
} else {
|
||||
mDefaultHandler = mBypasser;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user