From 8417e84e8295d478f77512bcac455cd2ce925726 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Tue, 22 Sep 2015 23:33:14 +0200 Subject: qtbluetooth: add a read timeout 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 Signed-off-by: Dirk Hohndel --- qtserialbluetooth.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'qtserialbluetooth.cpp') diff --git a/qtserialbluetooth.cpp b/qtserialbluetooth.cpp index 442702da7..ee8b2b793 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 nbytes; } nbytes += rc; -- cgit v1.2.3-70-g09d2