using namespace CEC;
using namespace PLATFORM;
-CAdapterCommunication::CAdapterCommunication(CCECProcessor *processor) :
+CAdapterCommunication::CAdapterCommunication(CCECProcessor *processor, const char *strPort, uint16_t iBaudRate /* = 38400 */) :
m_port(NULL),
m_processor(processor),
m_iLineTimeout(0),
m_iFirmwareVersion(CEC_FW_VERSION_UNKNOWN)
{
- m_port = new PLATFORM::CSerialPort;
+ m_port = new PLATFORM::CSerialPort(strPort, iBaudRate);
}
CAdapterCommunication::~CAdapterCommunication(void)
}
}
-bool CAdapterCommunication::Open(const char *strPort, uint16_t iBaudRate /* = 38400 */, uint32_t iTimeoutMs /* = 10000 */)
+bool CAdapterCommunication::Open(uint32_t iTimeoutMs /* = 10000 */)
{
uint64_t iNow = GetTimeMs();
uint64_t iTimeout = iNow + iTimeoutMs;
bool bConnected(false);
while (!bConnected && iNow < iTimeout)
{
- if ((bConnected = m_port->Open(strPort, iBaudRate)) == false)
+ if ((bConnected = m_port->Open(iTimeout)) == false)
{
- strError.Format("error opening serial port '%s': %s", strPort, m_port->GetError().c_str());
+ strError.Format("error opening serial port '%s': %s", m_port->GetName().c_str(), m_port->GetError().c_str());
Sleep(250);
iNow = GetTimeMs();
}
return bTransmitSucceeded && !bError;
}
-void CAdapterCommunication::AddData(uint8_t *data, uint8_t iLen)
+void CAdapterCommunication::AddData(uint8_t *data, size_t iLen)
{
CLockObject lock(m_mutex);
- for (uint8_t iPtr = 0; iPtr < iLen; iPtr++)
+ for (size_t iPtr = 0; iPtr < iLen; iPtr++)
m_inBuffer.Push(data[iPtr]);
m_rcvCondition.Signal();
bool CAdapterCommunication::ReadFromDevice(uint32_t iTimeout)
{
- int32_t iBytesRead;
- uint8_t buff[1024];
+ ssize_t iBytesRead;
+ uint8_t buff[256];
if (!m_port)
return false;
iBytesRead = m_port->Read(buff, sizeof(buff), iTimeout);
if (iBytesRead < 0 || iBytesRead > 256)
{
- CStdString strError;
- strError.Format("error reading from serial port: %s", m_port->GetError().c_str());
- CLibCEC::AddLog(CEC_LOG_ERROR, strError);
+ CLibCEC::AddLog(CEC_LOG_ERROR, "error reading from serial port: %s", m_port->GetError().c_str());
return false;
}
else if (iBytesRead > 0)
- AddData(buff, (uint8_t) iBytesRead);
+ {
+ AddData(buff, iBytesRead);
+ }
return iBytesRead > 0;
}
{
CLockObject adapterLock(m_mutex);
CLockObject lock(msg->mutex);
- if (m_port->Write(msg->packet.data, msg->Size()) != (int32_t) msg->Size())
+ if (m_port->Write(msg->packet.data, msg->Size()) != (ssize_t) msg->Size())
{
CStdString strError;
strError.Format("error writing to serial port: %s", m_port->GetError().c_str());