cec: fixed return value of CUSBCECAdapterCommunication::ParseMessage(). fixes message...
[deb_libcec.git] / src / lib / adapter / USBCECAdapterCommunication.cpp
index 80670e42f5c981f01bb2b1aff2c2d6c0fec345f6..c858d87132ec1a2601f92235733466a0651b4ac2 100644 (file)
@@ -67,7 +67,8 @@ CUSBCECAdapterCommunication::CUSBCECAdapterCommunication(CCECProcessor *processo
     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);
 }
@@ -119,6 +120,11 @@ bool CUSBCECAdapterCommunication::CheckAdapter(uint32_t iTimeoutMs /* = 10000 */
   else
     bReturn = true;
 
+  {
+    CLockObject lock(m_mutex);
+    m_bInitialised = bReturn;
+  }
+
   return bReturn;
 }
 
@@ -208,7 +214,7 @@ void *CUSBCECAdapterCommunication::Process(void)
     {
       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 */
@@ -320,7 +326,7 @@ bool CUSBCECAdapterCommunication::Read(CCECAdapterMessage &msg, uint32_t iTimeou
     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)
@@ -425,7 +431,6 @@ bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
         m_currentframe.PushBack(msg[1]);
         m_currentframe.eom = msg.IsEOM();
       }
-      bEom = msg.IsEOM();
     }
     break;
   default:
@@ -433,7 +438,7 @@ bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
   }
 
   CLibCEC::AddLog(bIsError ? CEC_LOG_WARNING : CEC_LOG_DEBUG, msg.ToString());
-  return bEom;
+  return bEom = msg.IsEOM();;
 }
 
 uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)