bool CCECAdapterMessage::is_error(void) const
{
cec_adapter_messagecode code = message();
- return (code == MSGCODE_TIMEOUT_ERROR ||
- code == MSGCODE_HIGH_ERROR ||
+ return (code == MSGCODE_HIGH_ERROR ||
code == MSGCODE_LOW_ERROR ||
code == MSGCODE_RECEIVE_FAILED ||
code == MSGCODE_COMMAND_REJECTED ||
void CAdapterCommunication::SendMessageToAdapter(CCECAdapterMessage *msg)
{
- bool bReturn(true);
CLockObject lock(&msg->mutex);
if (m_port->Write(msg) != (int32_t) msg->size())
{
else
{
m_controller->AddLog(CEC_LOG_DEBUG, "command sent");
- CCondition::Sleep((uint32_t) msg->size() * 24 /*data*/ + 5 /*start bit (4.5 ms)*/ + 10);
+ CCondition::Sleep((uint32_t) msg->size() * 24 /*data*/ + 5 /*start bit (4.5 ms)*/);
msg->state = ADAPTER_MESSAGE_STATE_SENT;
}
msg->condition.Signal();
}
else if (buf == MSGSTART) //we found a msgstart before msgend, this is not right, remove
{
- m_controller->AddLog(CEC_LOG_ERROR, "received MSGSTART before MSGEND");
+ if (msg.size() > 0)
+ m_controller->AddLog(CEC_LOG_WARNING, "received MSGSTART before MSGEND, removing previous buffer contents");
msg.clear();
bGotStart = true;
}