repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: fixed return value of CUSBCECAdapterCommunication::ParseMessage(). fixes message...
[deb_libcec.git]
/
src
/
lib
/
adapter
/
USBCECAdapterCommunication.cpp
diff --git
a/src/lib/adapter/USBCECAdapterCommunication.cpp
b/src/lib/adapter/USBCECAdapterCommunication.cpp
index 2d8957b05e839004b6c7ce771d080448e9c478ef..c858d87132ec1a2601f92235733466a0651b4ac2 100644
(file)
--- a/
src/lib/adapter/USBCECAdapterCommunication.cpp
+++ b/
src/lib/adapter/USBCECAdapterCommunication.cpp
@@
-67,7
+67,8
@@
CUSBCECAdapterCommunication::CUSBCECAdapterCommunication(CCECProcessor *processo
m_lastInitiator(CECDEVICE_UNKNOWN),
m_bNextIsEscaped(false),
m_bGotStart(false),
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);
}
{
m_port = new PLATFORM::CSerialPort(strPort, iBaudRate);
}
@@
-119,6
+120,11
@@
bool CUSBCECAdapterCommunication::CheckAdapter(uint32_t iTimeoutMs /* = 10000 */
else
bReturn = true;
else
bReturn = true;
+ {
+ CLockObject lock(m_mutex);
+ m_bInitialised = bReturn;
+ }
+
return bReturn;
}
return bReturn;
}
@@
-208,7
+214,7
@@
void *CUSBCECAdapterCommunication::Process(void)
{
CLockObject lock(m_mutex);
ReadFromDevice(50);
{
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 */
}
/* 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);
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 (buf)
@@
-391,6
+397,7
@@
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
if (msg.IsEmpty())
return bEom;
if (msg.IsEmpty())
return bEom;
+ CLockObject adapterLock(m_mutex);
switch(msg.Message())
{
case MSGCODE_FRAME_START:
switch(msg.Message())
{
case MSGCODE_FRAME_START:
@@
-424,7
+431,6
@@
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
m_currentframe.PushBack(msg[1]);
m_currentframe.eom = msg.IsEOM();
}
m_currentframe.PushBack(msg[1]);
m_currentframe.eom = msg.IsEOM();
}
- bEom = msg.IsEOM();
}
break;
default:
}
break;
default:
@@
-432,7
+438,7
@@
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
}
CLibCEC::AddLog(bIsError ? CEC_LOG_WARNING : CEC_LOG_DEBUG, msg.ToString());
}
CLibCEC::AddLog(bIsError ? CEC_LOG_WARNING : CEC_LOG_DEBUG, msg.ToString());
- return bEom;
+ return bEom
= msg.IsEOM();
;
}
uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)
}
uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)
@@
-663,7
+669,7
@@
void CUSBCECAdapterCommunication::AddData(uint8_t *data, size_t iLen)
m_bGotStart = false;
m_bNextIsEscaped = false;
m_bHasData = true;
m_bGotStart = false;
m_bNextIsEscaped = false;
m_bHasData = true;
- m_rcvCondition.
Signal
();
+ m_rcvCondition.
Broadcast
();
}
else if (m_bNextIsEscaped)
{
}
else if (m_bNextIsEscaped)
{