summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/qtserialbluetooth.cpp11
-rw-r--r--core/serial_ftdi.c8
2 files changed, 14 insertions, 5 deletions
diff --git a/core/qtserialbluetooth.cpp b/core/qtserialbluetooth.cpp
index 71a76187f..14ddacf2b 100644
--- a/core/qtserialbluetooth.cpp
+++ b/core/qtserialbluetooth.cpp
@@ -6,6 +6,7 @@
#include <QEventLoop>
#include <QTimer>
#include <QDebug>
+#include <QThread>
#include <libdivecomputer/version.h>
#include <libdivecomputer/context.h>
@@ -395,6 +396,12 @@ static dc_status_t qt_serial_set_timeout(void *io, int timeout)
return DC_STATUS_SUCCESS;
}
+static dc_status_t qt_custom_sleep(void *io, unsigned int timeout)
+{
+ QThread::msleep(timeout);
+ return DC_STATUS_SUCCESS;
+}
+
#ifdef BLE_SUPPORT
dc_status_t
ble_packet_open(dc_iostream_t **iostream, dc_context_t *context, const char* devaddr, void *userdata)
@@ -415,7 +422,7 @@ ble_packet_open(dc_iostream_t **iostream, dc_context_t *context, const char* dev
qt_ble_write, /* write */
NULL, /* flush */
NULL, /* purge */
- NULL, /* sleep */
+ qt_custom_sleep, /* sleep */
qt_ble_close, /* close */
};
@@ -448,7 +455,7 @@ rfcomm_stream_open(dc_iostream_t **iostream, dc_context_t *context, const char*
qt_serial_write, /* write */
NULL, /* flush */
qt_serial_purge, /* purge */
- NULL, /* sleep */
+ qt_custom_sleep, /* sleep */
qt_serial_close, /* close */
};
diff --git a/core/serial_ftdi.c b/core/serial_ftdi.c
index 6d99672f2..9bcf7aba0 100644
--- a/core/serial_ftdi.c
+++ b/core/serial_ftdi.c
@@ -98,12 +98,14 @@ static dc_status_t serial_ftdi_get_transmitted (ftdi_serial_t *device)
return DC_STATUS_UNSUPPORTED;
}
-static dc_status_t serial_ftdi_sleep (ftdi_serial_t *device, unsigned long timeout)
+static dc_status_t serial_ftdi_sleep (void *io, unsigned int timeout)
{
+ ftdi_serial_t *device = io;
+
if (device == NULL)
return DC_STATUS_INVALIDARGS;
- INFO (device->context, "Sleep: value=%lu", timeout);
+ INFO (device->context, "Sleep: value=%u", timeout);
struct timespec ts;
ts.tv_sec = (timeout / 1000);
@@ -541,7 +543,7 @@ dc_status_t ftdi_open(dc_iostream_t **iostream, dc_context_t *context)
serial_ftdi_write, /* write */
NULL, /* flush */
serial_ftdi_purge, /* purge */
- NULL, /* sleep */
+ serial_ftdi_sleep, /* sleep */
serial_ftdi_close, /* close */
};