X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=e0f8c3ffd01f6f0a21aae476c196dc6f368f36ad;hb=a2198e5e7bf23df91c2cfe2acc5a75521395d531;hp=cf7b5b4ec62f0d046483464d8528c09bdf55b9e3;hpb=41e3372ac4ad2de0d20e19e9dc9c8776220451b1;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index cf7b5b4..e0f8c3f 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -1439,9 +1439,31 @@ void CCECBusScan::WaitUntilIdle(void) } } -bool CCECProcessor::StartBootloader(void) +bool CCECProcessor::StartBootloader(const char *strPort /* = NULL */) { - return m_communication->StartBootloader(); + if (!m_communication && strPort) + { + bool bReturn(false); + IAdapterCommunication *comm = new CUSBCECAdapterCommunication(this, strPort); + CTimeout timeout(10000); + int iConnectTry(0); + while (timeout.TimeLeft() > 0 && (bReturn = comm->Open(NULL, (timeout.TimeLeft() / CEC_CONNECT_TRIES)), true) == false) + { + CLibCEC::AddLog(CEC_LOG_ERROR, "could not open a connection (try %d)", ++iConnectTry); + comm->Close(); + Sleep(500); + } + if (comm->IsOpen()) + { + bReturn = comm->StartBootloader(); + delete comm; + } + return bReturn; + } + else + { + return m_communication->StartBootloader(); + } } bool CCECProcessor::PingAdapter(void)