summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amy <amyjojo@google.com> 2019-05-10 18:32:50 -0700
committer Amy Zhang <amyjojo@google.com> 2019-06-28 21:39:44 +0000
commit3af63c3e2f48e847150329e504af3b9a7eabb0ed (patch)
tree38122f58a5d97ece6456eb4144174d66fa77d6ab
parent49d0108eaf33e7f0925c823504e6ec144beaf7e4 (diff)
Send out OSD name when the device just gets its logical address
allocated Test: manual Bug: 129092034 Change-Id: Ifc69a3e545cf2a953933e00fc091739571e92b46 (cherry picked from commit ccbd518248b89bc22d48b25fe9f4add3778860ea)
-rwxr-xr-xservices/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java20
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java4
2 files changed, 20 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
index 78b091e436ac..30ec2abe645c 100755
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -20,6 +20,7 @@ import android.annotation.Nullable;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.hdmi.IHdmiControlCallback;
import android.hardware.input.InputManager;
+import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -426,15 +427,26 @@ abstract class HdmiCecLocalDevice {
assertRunOnServiceThread();
// Note that since this method is called after logical address allocation is done,
// mDeviceInfo should not be null.
+ buildAndSendSetOsdName(message.getSource());
+ return true;
+ }
+
+ protected void buildAndSendSetOsdName(int dest) {
HdmiCecMessage cecMessage =
- HdmiCecMessageBuilder.buildSetOsdNameCommand(
- mAddress, message.getSource(), mDeviceInfo.getDisplayName());
+ HdmiCecMessageBuilder.buildSetOsdNameCommand(
+ mAddress, dest, mDeviceInfo.getDisplayName());
if (cecMessage != null) {
- mService.sendCecCommand(cecMessage);
+ mService.sendCecCommand(cecMessage, new SendMessageCallback() {
+ @Override
+ public void onSendCompleted(int error) {
+ if (error != SendMessageResult.SUCCESS) {
+ HdmiLogger.debug("Failed to send cec command " + cecMessage);
+ }
+ }
+ });
} else {
Slog.w(TAG, "Failed to build <Get Osd Name>:" + mDeviceInfo.getDisplayName());
}
- return true;
}
// Audio System device with no Playback device type
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index 560f7a03b20f..ec21b75891a5 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -87,6 +87,10 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
mAddress, mService.getPhysicalAddress(), mDeviceType));
mService.sendCecCommand(HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
mAddress, mService.getVendorId()));
+ // Actively send out an OSD name to the TV to update the TV panel in case the TV
+ // does not query the OSD name on time. This is not a required behavior by the spec.
+ // It is used for some TVs that need the OSD name update but don't query it themselves.
+ buildAndSendSetOsdName(Constants.ADDR_TV);
if (mService.audioSystem() == null) {
// If current device is not a functional audio system device,
// send message to potential audio system device in the system to get the system