X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=inline;f=src%2Flib%2FCECProcessor.cpp;h=12cea4f8ecc80186bf141dfd40e49dbf510a9a80;hb=d0a712a65c05b4bf7bf25eafb8b4c999b6888a42;hp=8e1c1017ff722e434447ff8a8247602530cf0b98;hpb=c71891a335d74d5f31dc96c2f5853384167a081b;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 8e1c101..12cea4f 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -163,11 +163,27 @@ bool CCECProcessor::OpenConnection(const char *strPort, uint16_t iBaudRate, uint if (bPingOk) { - uint16_t iFirmwareVersion = m_communication->GetFirmwareVersion(); - if ((bReturn = (iFirmwareVersion != CEC_FW_VERSION_UNKNOWN)) == false) - m_controller->AddLog(CEC_LOG_ERROR, "the adapter is running an unknown firmware version"); + uint16_t iFirmwareVersion(CEC_FW_VERSION_UNKNOWN); + int iFwVersionTry(0); + bool bFwVersionOk(false); + while (!bFwVersionOk && iFwVersionTry++ < CEC_FW_VERSION_TRIES) + { + if ((iFirmwareVersion = m_communication->GetFirmwareVersion()) == CEC_FW_VERSION_UNKNOWN) + { + CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond with a correct firmware version (try %d of %d)", iFwVersionTry, CEC_FW_VERSION_TRIES); + Sleep(500); + } + } - CLibCEC::AddLog(CEC_LOG_NOTICE, "CEC Adapter firmware version: %d", iFirmwareVersion); + if (iFirmwareVersion == CEC_FW_VERSION_UNKNOWN) + { + bReturn = false; + } + else + { + bReturn = true; + CLibCEC::AddLog(CEC_LOG_NOTICE, "CEC Adapter firmware version: %d", iFirmwareVersion); + } } return bReturn;