diff options
-rw-r--r-- | core/qtserialbluetooth.cpp | 11 | ||||
-rw-r--r-- | core/serial_ftdi.c | 8 |
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 */ }; |