windows: update the error message when an error occurs while writing to the serial...
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 2 Aug 2012 23:35:54 +0000 (01:35 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 2 Aug 2012 23:35:54 +0000 (01:35 +0200)
src/lib/platform/windows/serialport.cpp

index ad7f8711d059e7679b2f1bd00c94b9f9a95ad27c..c595468cf0b5621d3efc7de3a39bd521a03138f2 100644 (file)
@@ -100,7 +100,17 @@ void CSerialSocket::Shutdown(void)
 
 ssize_t CSerialSocket::Write(void* data, size_t len)
 {
-  return IsOpen() ? SerialSocketWrite(m_socket, &m_iError, data, len) : -1;
+  if (IsOpen())
+  {
+    ssize_t iReturn = SerialSocketWrite(m_socket, &m_iError, data, len);
+    if (iReturn != len)
+    {
+      m_strError = "unable to write to the serial port";
+      FormatWindowsError(GetLastError(), m_strError);
+    }
+    return iReturn;
+  }
+  return -1;
 }
 
 ssize_t CSerialSocket::Read(void* data, size_t len, uint64_t iTimeoutMs /* = 0 */)
@@ -169,6 +179,7 @@ bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */)
     return false;
   }
 
+  m_strError.clear();
   m_bIsOpen = true;
   return m_bIsOpen;
 }