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

Commit 08a1be81 authored by Yuncheol Heo's avatar Yuncheol Heo
Browse files

Implement MHL RAP reception.

Bug: 16966458
Change-Id: I77effc917e19072c387be8ba28d6ce1664d16415
parent 48054241
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -258,6 +258,12 @@ final class Constants {
    static final int MHL_RAP_ACTION_CONTENT_ON = 0x10;
    static final int MHL_RAP_ACTION_CONTENT_OFF = 0x11;

    // MHL RAPK messages.
    static final int MHL_RAPK_NO_ERROR = 0x00;
    static final int MHL_RAPK_UNRECOGNIZED_ACTION = 0x01;
    static final int MHL_RAPK_UNSUPPORTED_ACTION = 0x02;
    static final int MHL_RAPK_RESPONDER_BUSY = 0x03;

    static final int MHL_INVALID_ADOPTER_ID = -1;
    static final int MHL_INVALID_DEVICE_ID = -1;

+25 −2
Original line number Diff line number Diff line
@@ -198,6 +198,10 @@ public final class HdmiControlService extends SystemService {
    @GuardedBy("mLock")
    private boolean mProhibitMode;

    // Set to true while the input change by MHL is allowed.
    @GuardedBy("mLock")
    private boolean mMhlInputChangeEnabled;

    // List of listeners registered by callers that want to get notified of
    // system audio mode changes.
    private final ArrayList<IHdmiSystemAudioModeChangeListener>
@@ -269,6 +273,7 @@ public final class HdmiControlService extends SystemService {
        mPowerStatus = HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON;
        mProhibitMode = false;
        mHdmiControlEnabled = readBooleanSetting(Global.HDMI_CONTROL_ENABLED, true);
        mMhlInputChangeEnabled = readBooleanSetting(Global.MHL_INPUT_SWITCHING_ENABLED, true);

        mCecController = HdmiCecController.create(this);
        if (mCecController != null) {
@@ -353,10 +358,12 @@ public final class HdmiControlService extends SystemService {
                    // No need to propagate to HAL.
                    break;
                case Global.MHL_INPUT_SWITCHING_ENABLED:
                    setOption(OPTION_MHL_INPUT_SWITCHING, toInt(enabled));
                    setMhlInputChangeEnabled(enabled);
                    break;
                case Global.MHL_POWER_CHARGE_ENABLED:
                    setOption(OPTION_MHL_POWER_CHARGE, toInt(enabled));
                    if (mMhlController != null) {
                        mMhlController.setOption(OPTION_MHL_POWER_CHARGE, toInt(enabled));
                    }
                    break;
            }
        }
@@ -1741,4 +1748,20 @@ public final class HdmiControlService extends SystemService {
        assertRunOnServiceThread();
        mActivePortId = portId;
    }

    void setMhlInputChangeEnabled(boolean enabled) {
        if (mMhlController != null) {
            mMhlController.setOption(OPTION_MHL_INPUT_SWITCHING, toInt(enabled));
        }

        synchronized (mLock) {
            mMhlInputChangeEnabled = enabled;
        }
    }

    boolean isMhlInputChangeEnabled() {
        synchronized (mLock) {
            return mMhlInputChangeEnabled;
        }
    }
}