repositories
/
deb_libcec.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
17dd542
)
Revert "win32: implemented timeouts in serial socket reads"
author
Lars Op den Kamp
<lars@opdenkamp.eu>
Thu, 29 Mar 2012 10:36:23 +0000
(12:36 +0200)
committer
Lars Op den Kamp
<lars@opdenkamp.eu>
Thu, 29 Mar 2012 10:36:23 +0000
(12:36 +0200)
This reverts commit
5347b94bbd7455453754fd79b6aaa64aa368ce59
.
src/lib/platform/sockets/serialport.h
patch
|
blob
|
blame
|
history
src/lib/platform/windows/os-socket.h
patch
|
blob
|
blame
|
history
src/lib/platform/windows/serialport.cpp
patch
|
blob
|
blame
|
history
diff --git
a/src/lib/platform/sockets/serialport.h
b/src/lib/platform/sockets/serialport.h
index fb4be19d4ec650856defb3d59046510f851f942c..bdd05b96f3edc0ebf1ab9946a4f69f200c9cd3e7 100644
(file)
--- a/
src/lib/platform/sockets/serialport.h
+++ b/
src/lib/platform/sockets/serialport.h
@@
-71,9
+71,6
@@
namespace PLATFORM
public:
CSerialSocket(const CStdString &strName, uint32_t iBaudrate, SerialDataBits iDatabits = SERIAL_DATA_BITS_EIGHT, SerialStopBits iStopbits = SERIAL_STOP_BITS_ONE, SerialParity iParity = SERIAL_PARITY_NONE) :
CCommonSocket<serial_socket_t>(INVALID_SERIAL_SOCKET_VALUE, strName),
public:
CSerialSocket(const CStdString &strName, uint32_t iBaudrate, SerialDataBits iDatabits = SERIAL_DATA_BITS_EIGHT, SerialStopBits iStopbits = SERIAL_STOP_BITS_ONE, SerialParity iParity = SERIAL_PARITY_NONE) :
CCommonSocket<serial_socket_t>(INVALID_SERIAL_SOCKET_VALUE, strName),
-#ifdef __WINDOWS__
- m_iCurrentTimeout(0),
-#endif
m_bIsOpen(false),
m_iBaudrate(iBaudrate),
m_iDatabits(iDatabits),
m_bIsOpen(false),
m_iBaudrate(iBaudrate),
m_iDatabits(iDatabits),
@@
-99,9
+96,6
@@
namespace PLATFORM
protected:
#ifndef __WINDOWS__
struct termios m_options;
protected:
#ifndef __WINDOWS__
struct termios m_options;
- #else
- bool SetTimeouts(serial_socket_t socket, int* iError, DWORD iTimeout);
- DWORD m_iCurrentTimeout;
#endif
bool m_bIsOpen;
#endif
bool m_bIsOpen;
diff --git
a/src/lib/platform/windows/os-socket.h
b/src/lib/platform/windows/os-socket.h
index 86750c50b9bc4e51d5abe56d8ee8a09f253a4341..5174cba1aaa5e5db4535a345a844c10d005d47b2 100644
(file)
--- a/
src/lib/platform/windows/os-socket.h
+++ b/
src/lib/platform/windows/os-socket.h
@@
-95,8
+95,6
@@
namespace PLATFORM
inline ssize_t SerialSocketRead(serial_socket_t socket, int *iError, void* data, size_t len, uint64_t iTimeoutMs /*= 0*/)
{
inline ssize_t SerialSocketRead(serial_socket_t socket, int *iError, void* data, size_t len, uint64_t iTimeoutMs /*= 0*/)
{
- *iError = 0;
-
if (len != (DWORD)len)
{
*iError = EINVAL;
if (len != (DWORD)len)
{
*iError = EINVAL;
diff --git
a/src/lib/platform/windows/serialport.cpp
b/src/lib/platform/windows/serialport.cpp
index fe917255d5ad2e921b4ce628077ea42d57027c49..c0cdd936af9e586991ac2e6b463ca2df1674abc8 100644
(file)
--- a/
src/lib/platform/windows/serialport.cpp
+++ b/
src/lib/platform/windows/serialport.cpp
@@
-48,14
+48,11
@@
void FormatWindowsError(int iErrorCode, CStdString &strMessage)
}
}
}
}
-bool
CSerialSocket::SetTimeouts(serial_socket_t socket, int* iError, DWORD iTimeout
)
+bool
SetTimeouts(serial_socket_t socket, int* iError, bool bBlocking
)
{
if (socket == INVALID_HANDLE_VALUE)
return false;
{
if (socket == INVALID_HANDLE_VALUE)
return false;
- if (iTimeout == m_iCurrentTimeout)
- return true;
-
COMMTIMEOUTS cto;
if (!GetCommTimeouts(socket, &cto))
{
COMMTIMEOUTS cto;
if (!GetCommTimeouts(socket, &cto))
{
@@
-63,9
+60,18
@@
bool CSerialSocket::SetTimeouts(serial_socket_t socket, int* iError, DWORD iTime
return false;
}
return false;
}
- cto.ReadIntervalTimeout = 0;
- cto.ReadTotalTimeoutConstant = iTimeout;
- cto.ReadTotalTimeoutMultiplier = 0;
+ if (bBlocking)
+ {
+ cto.ReadIntervalTimeout = 0;
+ cto.ReadTotalTimeoutConstant = 0;
+ cto.ReadTotalTimeoutMultiplier = 0;
+ }
+ else
+ {
+ cto.ReadIntervalTimeout = MAXDWORD;
+ cto.ReadTotalTimeoutConstant = 0;
+ cto.ReadTotalTimeoutMultiplier = 0;
+ }
if (!SetCommTimeouts(socket, &cto))
{
if (!SetCommTimeouts(socket, &cto))
{
@@
-73,7
+79,6
@@
bool CSerialSocket::SetTimeouts(serial_socket_t socket, int* iError, DWORD iTime
return false;
}
return false;
}
- m_iCurrentTimeout = iTimeout;
return true;
}
return true;
}
@@
-98,20
+103,7
@@
ssize_t CSerialSocket::Write(void* data, size_t len)
ssize_t CSerialSocket::Read(void* data, size_t len, uint64_t iTimeoutMs /* = 0 */)
{
ssize_t CSerialSocket::Read(void* data, size_t len, uint64_t iTimeoutMs /* = 0 */)
{
- if (IsOpen())
- {
- DWORD iTimeout((DWORD)iTimeoutMs);
- if (iTimeout != iTimeoutMs)
- return -1;
-
- int iError(0);
- if (!SetTimeouts(m_socket, &iError, iTimeout))
- return -1;
-
- return SerialSocketRead(m_socket, &m_iError, data, len, iTimeoutMs);
- }
-
- return -1;
+ return IsOpen() ? SerialSocketRead(m_socket, &m_iError, data, len, iTimeoutMs) : -1;
}
bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */)
}
bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */)
@@
-161,7
+153,7
@@
bool CSerialSocket::Open(uint64_t iTimeoutMs /* = 0 */)
return false;
}
return false;
}
- if (!SetTimeouts(m_socket, &m_iError,
MAXDWORD
))
+ if (!SetTimeouts(m_socket, &m_iError,
false
))
{
m_strError = "unable to set timeouts";
FormatWindowsError(GetLastError(), m_strError);
{
m_strError = "unable to set timeouts";
FormatWindowsError(GetLastError(), m_strError);