Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69229e31 authored by Nathalie Le Clair's avatar Nathalie Le Clair
Browse files

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
parent 6304e44d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -894,10 +894,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) {
+16 −0
Original line number Diff line number Diff line
@@ -143,6 +143,22 @@ public class HdmiCecNetworkTest {
                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
    public void localDevices_verifyOne_tv() {
        mHdmiCecNetwork.clearLocalDevices();