Assign local device portId 0

Before, the local device on a TV would be assigned an invalid portId,
which was causing the local device to be removed from the HdmiCecNetwork
in some instances.

Bug: 213423171
Test: atest HdmiCecNetworkTest
Change-Id: I99e1ca1d54a74682c0737deb2ad2163f7db5e0db
Merged-In: I99e1ca1d54a74682c0737deb2ad2163f7db5e0db
This commit is contained in:
Nathalie Le Clair
2022-02-28 18:03:58 +01:00
parent 888ee5bea0
commit c8adf1f70e
2 changed files with 21 additions and 2 deletions

View File

@@ -865,10 +865,13 @@ public class HdmiCecNetwork {
* on the current device. * on the current device.
*/ */
int physicalAddressToPortId(int path) { 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 mask = 0xF000;
int finalMask = 0xF000; int finalMask = 0xF000;
int physicalAddress;
physicalAddress = getPhysicalAddress();
int maskedAddress = physicalAddress; int maskedAddress = physicalAddress;
while (maskedAddress != 0) { while (maskedAddress != 0) {

View File

@@ -141,6 +141,22 @@ public class HdmiCecNetworkTest {
Constants.INVALID_PORT_ID); Constants.INVALID_PORT_ID);
} }
@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 @Test
public void localDevices_verifyOne_tv() { public void localDevices_verifyOne_tv() {
mHdmiCecNetwork.clearLocalDevices(); mHdmiCecNetwork.clearLocalDevices();