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

Commit 22135d77 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "CEC: Add implementation of ENABLE_CEC option to default HdmiCec"

parents dba159dc d591d975
Loading
Loading
Loading
Loading
+27 −1
Original line number Original line Diff line number Diff line
@@ -36,6 +36,9 @@ namespace cec {
namespace V1_0 {
namespace V1_0 {
namespace implementation {
namespace implementation {


// When set to false, all the CEC commands are discarded. True by default after initialization.
bool mCecEnabled;

int mCecFd;
int mCecFd;
int mExitFd;
int mExitFd;
pthread_t mEventThread;
pthread_t mEventThread;
@@ -44,6 +47,7 @@ sp<IHdmiCecCallback> mCallback;
HdmiCecDefault::HdmiCecDefault() {
HdmiCecDefault::HdmiCecDefault() {
    mCecFd = -1;
    mCecFd = -1;
    mExitFd = -1;
    mExitFd = -1;
    mCecEnabled = false;
    mCallback = nullptr;
    mCallback = nullptr;
}
}


@@ -156,6 +160,10 @@ Return<void> HdmiCecDefault::getPhysicalAddress(getPhysicalAddress_cb callback)
}
}


Return<SendMessageResult> HdmiCecDefault::sendMessage(const CecMessage& message) {
Return<SendMessageResult> HdmiCecDefault::sendMessage(const CecMessage& message) {
    if (!mCecEnabled) {
        return SendMessageResult::FAIL;
    }

    struct cec_msg cecMsg;
    struct cec_msg cecMsg;
    memset(&cecMsg, 0, sizeof(cec_msg));
    memset(&cecMsg, 0, sizeof(cec_msg));


@@ -230,7 +238,15 @@ Return<void> HdmiCecDefault::getPortInfo(getPortInfo_cb callback) {
    return Void();
    return Void();
}
}


Return<void> HdmiCecDefault::setOption(OptionKey /*key*/, bool /*value*/) {
Return<void> HdmiCecDefault::setOption(OptionKey key, bool value) {
    switch (key) {
        case OptionKey::ENABLE_CEC:
            LOG(DEBUG) << "setOption: Enable CEC: " << value;
            mCecEnabled = value;
            break;
        default:
            break;
    }
    return Void();
    return Void();
}
}


@@ -300,6 +316,7 @@ Return<Result> HdmiCecDefault::init() {
        return Result::FAILURE_NOT_SUPPORTED;
        return Result::FAILURE_NOT_SUPPORTED;
    }
    }


    mCecEnabled = true;
    return Result::SUCCESS;
    return Result::SUCCESS;
}
}


@@ -315,6 +332,7 @@ Return<void> HdmiCecDefault::release() {
    if (mCecFd > 0) {
    if (mCecFd > 0) {
        close(mCecFd);
        close(mCecFd);
    }
    }
    mCecEnabled = false;
    setCallback(nullptr);
    setCallback(nullptr);
    return Void();
    return Void();
}
}
@@ -345,6 +363,10 @@ void* HdmiCecDefault::event_thread(void*) {
            struct cec_event ev;
            struct cec_event ev;
            ret = ioctl(mCecFd, CEC_DQEVENT, &ev);
            ret = ioctl(mCecFd, CEC_DQEVENT, &ev);


            if (!mCecEnabled) {
                continue;
            }

            if (ret) {
            if (ret) {
                LOG(ERROR) << "CEC_DQEVENT failed, Error = " << strerror(errno);
                LOG(ERROR) << "CEC_DQEVENT failed, Error = " << strerror(errno);
                continue;
                continue;
@@ -366,6 +388,10 @@ void* HdmiCecDefault::event_thread(void*) {
            struct cec_msg msg = {};
            struct cec_msg msg = {};
            ret = ioctl(mCecFd, CEC_RECEIVE, &msg);
            ret = ioctl(mCecFd, CEC_RECEIVE, &msg);


            if (!mCecEnabled) {
                continue;
            }

            if (ret) {
            if (ret) {
                LOG(ERROR) << "CEC_RECEIVE failed, Error = " << strerror(errno);
                LOG(ERROR) << "CEC_RECEIVE failed, Error = " << strerror(errno);
                continue;
                continue;