- bool bError(false);
- if ((bReturn = WaitForAck(&bError, output.size(), 1000)) == false)
- m_controller->AddLog(CEC_LOG_ERROR, "did not receive ack");
- }
- else
- {
- bReturn = true;
+ CLockObject msgLock(&output->mutex);
+ if (!m_communication || !m_communication->Write(output))
+ return bReturn;
+ else
+ {
+ output->condition.Wait(&output->mutex, 1000);
+ if (output->state != ADAPTER_MESSAGE_STATE_SENT)
+ {
+ m_controller->AddLog(CEC_LOG_ERROR, "command was not sent");
+ return bReturn;
+ }
+ }
+
+ if (data.ack_timeout > 0)
+ {
+ bool bError(false);
+ if ((bReturn = WaitForAck(&bError, output->size(), data.ack_timeout)) == false)
+ m_controller->AddLog(CEC_LOG_ERROR, "did not receive ack");
+ }
+ else
+ {
+ bReturn = true;
+ }