X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FAdapterCommunication.cpp;h=4b0bcdd1b238ac26aa7882a8b4ebae1c62de90da;hb=7eb13cca43e722f2bfd20064daf580ea65411cf5;hp=be9485824be8e2f7dd30f6c29047428a8f370f2d;hpb=c7e9549276e43503fce28a80a0576e586b9975b4;p=deb_libcec.git diff --git a/src/lib/AdapterCommunication.cpp b/src/lib/AdapterCommunication.cpp index be94858..4b0bcdd 100644 --- a/src/lib/AdapterCommunication.cpp +++ b/src/lib/AdapterCommunication.cpp @@ -58,7 +58,7 @@ CAdapterCommunication::~CAdapterCommunication(void) m_port = NULL; } -bool CAdapterCommunication::Open(const char *strPort, int iBaudRate /* = 38400 */, int iTimeoutMs /* = 10000 */) +bool CAdapterCommunication::Open(const char *strPort, uint16_t iBaudRate /* = 38400 */, uint64_t iTimeoutMs /* = 10000 */) { CLockObject lock(&m_commMutex); if (m_bStarted) @@ -116,20 +116,21 @@ void *CAdapterCommunication::Process(void) CCondition::Sleep(50); } - m_controller->AddLog(CEC_LOG_DEBUG, "reader thread terminated"); - CLockObject lock(&m_commMutex); m_bStarted = false; return NULL; } -bool CAdapterCommunication::ReadFromDevice(int iTimeout) +bool CAdapterCommunication::ReadFromDevice(uint64_t iTimeout) { uint8_t buff[1024]; CLockObject lock(&m_commMutex); - int iBytesRead = m_port->Read(buff, sizeof(buff), iTimeout); + if (!m_port) + return false; + + int32_t iBytesRead = m_port->Read(buff, sizeof(buff), iTimeout); lock.Leave(); - if (iBytesRead < 0) + if (iBytesRead < 0 || iBytesRead > 256) { CStdString strError; strError.Format("error reading from serial port: %s", m_port->GetError().c_str()); @@ -137,12 +138,12 @@ bool CAdapterCommunication::ReadFromDevice(int iTimeout) return false; } else if (iBytesRead > 0) - AddData(buff, iBytesRead); + AddData(buff, (uint8_t) iBytesRead); return true; } -void CAdapterCommunication::AddData(uint8_t *data, int iLen) +void CAdapterCommunication::AddData(uint8_t *data, uint8_t iLen) { CLockObject lock(&m_bufferMutex); if (iLen + m_iInbufUsed > m_iInbufSize) @@ -161,7 +162,7 @@ bool CAdapterCommunication::Write(const cec_frame &data) { CLockObject lock(&m_commMutex); - if (m_port->Write(data) != data.size()) + if (m_port->Write(data) != (int) data.size()) { CStdString strError; strError.Format("error writing to serial port: %s", m_port->GetError().c_str()); @@ -176,7 +177,7 @@ bool CAdapterCommunication::Write(const cec_frame &data) return true; } -bool CAdapterCommunication::Read(cec_frame &msg, int iTimeout) +bool CAdapterCommunication::Read(cec_frame &msg, uint64_t iTimeout) { CLockObject lock(&m_bufferMutex);