CCECAdapterMessage::CCECAdapterMessage(const cec_command &command)
{
clear();
+ maxTries = command.retries + 1;
//set ack polarity to high when transmitting to the broadcast address
//set ack polarity low when transmitting to any other address
CAdapterCommunication::CAdapterCommunication(CCECProcessor *processor) :
m_port(NULL),
- m_processor(processor)
+ m_processor(processor),
+ m_iLineTimeout(0)
{
m_port = new CSerialPort;
}
//clear any input bytes
uint8_t buff[1024];
- while (m_port->Read(buff, sizeof(buff), 500) > 0) {}
+ while (m_port->Read(buff, sizeof(buff), 1000) > 0) {}
if (CreateThread())
{
return bReturn;
}
+bool CAdapterCommunication::SetLineTimeout(uint8_t iTimeout)
+{
+ bool bReturn(m_iLineTimeout != iTimeout);
+
+ if (!bReturn)
+ {
+ CCECAdapterMessage *output = new CCECAdapterMessage;
+
+ output->push_back(MSGSTART);
+ output->push_escaped(MSGCODE_TRANSMIT_IDLETIME);
+ output->push_escaped(iTimeout);
+ output->push_back(MSGEND);
+
+ if ((bReturn = Write(output)) == false)
+ m_processor->AddLog(CEC_LOG_ERROR, "could not set the idletime");
+ delete output;
+ }
+
+ return bReturn;
+}
+
bool CAdapterCommunication::IsOpen(void) const
{
return !IsStopped() && m_port->IsOpen() && IsRunning();