return bReturn;
}
-bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs /* = 10000 */, bool bSkipChecks /* = false */)
+bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs /* = 10000 */, bool bSkipChecks /* = false */, bool bStartListening /* = true */)
{
uint64_t iNow = GetTimeMs();
uint64_t iTimeout = iNow + iTimeoutMs;
if (!bSkipChecks && !CheckAdapter())
{
CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter failed to pass basic checks");
- Close();
+ delete m_port;
return false;
}
- else
+ else if (bStartListening)
{
if (CreateThread())
{
}
else
{
- Close();
+ delete m_port;
CLibCEC::AddLog(CEC_LOG_ERROR, "could not create a communication thread");
}
}
+ else
+ {
+ delete m_port;
+ }
- return false;
+ return true;
}
void CUSBCECAdapterCommunication::Close(void)
bool CUSBCECAdapterCommunication::GetConfiguration(libcec_configuration *configuration)
{
+ configuration->iFirmwareVersion = m_iFirmwareVersion;
if (m_iFirmwareVersion < 2)
return false;