diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecNetwork.java | 7 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java | 16 |
2 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java b/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java index 180bcdbe7546..1234d7fa0832 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java @@ -865,10 +865,13 @@ public class HdmiCecNetwork { * on the current device. */ int physicalAddressToPortId(int path) { + int physicalAddress = getPhysicalAddress(); + if (path == physicalAddress) { + // The local device isn't connected to any port; assign portId 0 + return Constants.CEC_SWITCH_HOME; + } int mask = 0xF000; int finalMask = 0xF000; - int physicalAddress; - physicalAddress = getPhysicalAddress(); int maskedAddress = physicalAddress; while (maskedAddress != 0) { diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java index c478c2343361..017039053222 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java @@ -142,6 +142,22 @@ public class HdmiCecNetworkTest { } @Test + public void physicalAddressToPort_localDevice_weAreSourceDevice() { + mNativeWrapper.setPhysicalAddress(0x2000); + mHdmiCecNetwork.initPortInfo(); + assertThat(mHdmiCecNetwork.physicalAddressToPortId(0x2000)) + .isEqualTo(Constants.CEC_SWITCH_HOME); + } + + @Test + public void physicalAddressToPort_localDevice_weAreTv() { + mNativeWrapper.setPhysicalAddress(0x0000); + mHdmiCecNetwork.initPortInfo(); + assertThat(mHdmiCecNetwork.physicalAddressToPortId(0x0000)) + .isEqualTo(Constants.CEC_SWITCH_HOME); + } + + @Test public void localDevices_verifyOne_tv() { mHdmiCecNetwork.clearLocalDevices(); mHdmiCecNetwork.addLocalDevice(HdmiDeviceInfo.DEVICE_TV, |