[PATCH] qtbluetooth: add a read timeout

Anton Lundin glance at acc.umu.se
Mon Sep 21 13:38:16 PDT 2015


This adds a read timeout to the qt serial bluetooth code. This is needed
for error handling and error recovery purposes.

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 qtserialbluetooth.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/qtserialbluetooth.cpp b/qtserialbluetooth.cpp
index 442702d..6e717a3 100644
--- a/qtserialbluetooth.cpp
+++ b/qtserialbluetooth.cpp
@@ -248,8 +248,15 @@ static int qt_serial_read(serial_t *device, void* data, unsigned int size)
 		} else if (rc == 0) {
 			// Wait until the device is available for read operations
 			QEventLoop loop;
+			QTimer timer;
+			timer.setSingleShot(true);
+			loop.connect(&timer, SIGNAL(timeout()), SLOT(quit()));
 			loop.connect(device->socket, SIGNAL(readyRead()), SLOT(quit()));
+			timer.start(device->timeout);
 			loop.exec();
+
+			if (!timer.isActive())
+				return 0;
 		}
 
 		nbytes += rc;
-- 
2.1.4



More information about the subsurface mailing list