X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=b455ac88d9ab0558e81f77108e703be494331f4b;hb=00a02d1d839c2155ee8abc3a37d10ab12b9881db;hp=cf7b5b4ec62f0d046483464d8528c09bdf55b9e3;hpb=41e3372ac4ad2de0d20e19e9dc9c8776220451b1;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index cf7b5b4..b455ac8 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -78,7 +78,7 @@ CCECProcessor::CCECProcessor(CLibCEC *controller, const char *strDeviceName, con m_iLastTransmission(0) { m_configuration.Clear(); - m_configuration.serverVersion = CEC_SERVER_VERSION_1_5_1; + m_configuration.serverVersion = CEC_SERVER_VERSION_1_5_2; // client version < 1.5.0 m_configuration.clientVersion = (uint32_t)CEC_CLIENT_VERSION_PRE_1_5; @@ -189,7 +189,7 @@ bool CCECProcessor::OpenConnection(const char *strPort, uint16_t iBaudRate, uint { CLibCEC::AddLog(CEC_LOG_ERROR, "could not open a connection (try %d)", ++iConnectTry); m_communication->Close(); - Sleep(500); + CEvent::Sleep(1000); } if (bReturn) @@ -1374,6 +1374,8 @@ const char *CCECProcessor::ToString(const cec_client_version version) return "1.5.0"; case CEC_CLIENT_VERSION_1_5_1: return "1.5.1"; + case CEC_CLIENT_VERSION_1_5_2: + return "1.5.2"; default: return "Unknown"; } @@ -1388,7 +1390,9 @@ const char *CCECProcessor::ToString(const cec_server_version version) case CEC_SERVER_VERSION_1_5_0: return "1.5.0"; case CEC_SERVER_VERSION_1_5_1: - return "1.5.1"; + return "1.5.1"; + case CEC_SERVER_VERSION_1_5_2: + return "1.5.2"; default: return "Unknown"; } @@ -1439,9 +1443,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) @@ -1581,6 +1607,11 @@ bool CCECProcessor::SetConfiguration(const libcec_configuration *configuration) else return SetHDMIPort(m_configuration.baseDevice, m_configuration.iHDMIPort); } + else if (m_configuration.bActivateSource == 1 && IsRunning() && !IsActiveSource(m_logicalAddresses.primary)) + { + // activate the source if we're not already the active source + SetActiveSource(m_configuration.deviceTypes.types[0]); + } return true; }