m_lastInitiator(CECDEVICE_UNKNOWN),
m_bNextIsEscaped(false),
m_bGotStart(false),
- m_messageProcessor(NULL)
+ m_messageProcessor(NULL),
+ m_bInitialised(false)
{
m_port = new PLATFORM::CSerialPort(strPort, iBaudRate);
}
else
bReturn = true;
+ {
+ CLockObject lock(m_mutex);
+ m_bInitialised = bReturn;
+ }
+
return bReturn;
}
m_messageProcessor->CreateThread();
cec_command command;
+ command.Clear();
bool bCommandReceived(false);
while (!IsStopped())
{
{
CLockObject lock(m_mutex);
ReadFromDevice(50);
- bCommandReceived = m_callback && Read(command, 0);
+ bCommandReceived = m_callback && Read(command, 0) && m_bInitialised;
}
/* push the next command to the callback method if there is one */
if (iTimeout == 0 || !m_rcvCondition.Wait(m_mutex, m_bHasData, iTimeout))
return false;
m_inBuffer.Pop(buf);
- m_bHasData = m_inBuffer.Size() > 0;
+ m_bHasData = !m_inBuffer.IsEmpty();
}
if (buf)
if (msg.IsEmpty())
return bEom;
+ CLockObject adapterLock(m_mutex);
switch(msg.Message())
{
case MSGCODE_FRAME_START:
m_currentframe.PushBack(msg[1]);
m_currentframe.eom = msg.IsEOM();
}
- bEom = msg.IsEOM();
}
break;
default:
}
CLibCEC::AddLog(bIsError ? CEC_LOG_WARNING : CEC_LOG_DEBUG, msg.ToString());
- return bEom;
+ return bEom = msg.IsEOM();;
}
uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)
m_bGotStart = false;
m_bNextIsEscaped = false;
m_bHasData = true;
- m_rcvCondition.Signal();
+ m_rcvCondition.Broadcast();
}
else if (m_bNextIsEscaped)
{