X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=7041b78f79acf82075b29d0eff9155e24448c556;hb=b057edadea84636e4e48fff043631b4bf98a9a34;hp=57704bdba531e571f8db1babbede3680ef167834;hpb=9bb14797c432e3d85c81b935fff0972cd61b5e66;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 57704bd..7041b78 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -149,8 +149,8 @@ bool CCECProcessor::OpenConnection(const char *strPort, uint16_t iBaudRate, uint uint64_t iNow = GetTimeMs(); uint64_t iTarget = iTimeoutMs > 0 ? iNow + iTimeoutMs : iNow + CEC_DEFAULT_TRANSMIT_WAIT; - unsigned iConnectTry(0), iPingTry(0), iFwVersionTry(0); - bool bConnected(false), bPinged(false); + unsigned iConnectTry(0), iPingTry(0), iFwVersionTry(0), iControlledTry(0); + bool bConnected(false), bPinged(false), bControlled(false); /* open a new connection */ while (iNow < iTarget && (bConnected = m_communication->Open(iTimeoutMs)) == false) @@ -177,6 +177,17 @@ bool CCECProcessor::OpenConnection(const char *strPort, uint16_t iBaudRate, uint iNow = GetTimeMs(); } + if (iFirmwareVersion >= 2) + { + /* try to set controlled mode */ + while (bConnected && iNow < iTarget && (bControlled = m_communication->SetControlledMode(true)) == false) + { + CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond correctly to setting controlled mode (try %d)", ++iControlledTry); + Sleep(500); + iNow = GetTimeMs(); + } + } + if ((bReturn = iFirmwareVersion != CEC_FW_VERSION_UNKNOWN) == true) CLibCEC::AddLog(CEC_LOG_NOTICE, "connected to the CEC adapter. firmware version = %d", iFirmwareVersion);