From 184b124ec22a796327642e3546d366179e693f07 Mon Sep 17 00:00:00 2001 From: Yuncheol Heo Date: Fri, 12 Sep 2014 15:09:07 +0900 Subject: [PATCH] Handle message. - Just accept the message, not to response . - Added the CEC message validation info. Bug: 17382771 Change-Id: I0c1ba870b0acfcd0414f0a3e7bb6c41483879116 --- .../com/android/server/hdmi/HdmiCecLocalDevice.java | 10 ++++++++-- .../com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 6 ++++++ .../android/server/hdmi/HdmiCecMessageValidator.java | 4 +++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index c00c5d009f09e..2f36181d64fab 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -263,7 +263,9 @@ abstract class HdmiCecLocalDevice { case Constants.MESSAGE_GIVE_DEVICE_POWER_STATUS: return handleGiveDevicePowerStatus(message); case Constants.MESSAGE_MENU_REQUEST: - return handleGiveDeviceMenuStatus(message); + return handleMenuRequest(message); + case Constants.MESSAGE_MENU_STATUS: + return handleMenuStatus(message); case Constants.MESSAGE_VENDOR_COMMAND: return handleVendorCommand(message); case Constants.MESSAGE_VENDOR_COMMAND_WITH_ID: @@ -503,13 +505,17 @@ abstract class HdmiCecLocalDevice { return true; } - protected boolean handleGiveDeviceMenuStatus(HdmiCecMessage message) { + protected boolean handleMenuRequest(HdmiCecMessage message) { // Always report menu active to receive Remote Control. mService.sendCecCommand(HdmiCecMessageBuilder.buildReportMenuStatus( mAddress, message.getSource(), Constants.MENU_STATE_ACTIVATED)); return true; } + protected boolean handleMenuStatus(HdmiCecMessage message) { + return false; + } + protected boolean handleVendorCommand(HdmiCecMessage message) { mService.invokeVendorCommandListeners(mDeviceType, message.getSource(), message.getParams(), false); diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 58ccbdb91a6eb..c9b7b45919bcd 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -1645,6 +1645,12 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { invokeDeviceEventListener(newInfo, HdmiControlManager.DEVICE_EVENT_UPDATE_DEVICE); } + @Override + protected boolean handleMenuStatus(HdmiCecMessage message) { + // Do nothing and just return true not to prevent from responding . + return true; + } + @Override protected void dump(final IndentingPrintWriter pw) { super.dump(pw); diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java index 0b3d9fb5df682..a6c9bee07add0 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java @@ -140,7 +140,9 @@ public final class HdmiCecMessageValidator { addValidationInfo(Constants.MESSAGE_SET_OSD_STRING, maxLengthValidator, DEST_DIRECT); addValidationInfo(Constants.MESSAGE_SET_OSD_NAME, maxLengthValidator, DEST_DIRECT); - // TODO: Handle messages for the Device Menu Control. + // Messages for the Device Menu Control. + addValidationInfo(Constants.MESSAGE_MENU_REQUEST, oneByteValidator, DEST_DIRECT); + addValidationInfo(Constants.MESSAGE_MENU_STATUS, oneByteValidator, DEST_DIRECT); // Messages for the Remote Control Passthrough. // TODO: Parse the first parameter and determine if it can have the next parameter.