From: Gerhard Sittig Date: Fri, 26 May 2017 17:36:01 +0000 (+0200) Subject: asix-sigma: Use monotonic time not wallclock time X-Git-Tag: libsigrok-0.5.0~31 X-Git-Url: http://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=2f425a56edbe528ed4566ea6791009dad61ef56d asix-sigma: Use monotonic time not wallclock time Switch from gettimeofday() to g_get_monotonic_time() calls. This commit is based on work done by jry@ (but with reduced diff size). --- diff --git a/src/hardware/asix-sigma/api.c b/src/hardware/asix-sigma/api.c index 99c1ef14..4b35ea33 100644 --- a/src/hardware/asix-sigma/api.c +++ b/src/hardware/asix-sigma/api.c @@ -388,7 +388,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) (devc->capture_ratio * 255) / 100, devc); /* Start acqusition. */ - gettimeofday(&devc->start_tv, 0); + devc->start_time = g_get_monotonic_time(); regval = WMR_TRGRES | WMR_SDRAMWRITEEN; #if ASIX_SIGMA_WITH_TRIGGER regval |= WMR_TRGEN; diff --git a/src/hardware/asix-sigma/protocol.c b/src/hardware/asix-sigma/protocol.c index 60c6a348..48de1b95 100644 --- a/src/hardware/asix-sigma/protocol.c +++ b/src/hardware/asix-sigma/protocol.c @@ -1138,7 +1138,7 @@ static int sigma_capture_mode(struct sr_dev_inst *sdi) { struct dev_context *devc; uint64_t running_msec; - struct timeval tv; + uint64_t current_time; devc = sdi->priv; @@ -1146,9 +1146,8 @@ static int sigma_capture_mode(struct sr_dev_inst *sdi) * Check if the selected sampling duration passed. Sample count * limits are covered by this enforced timeout as well. */ - gettimeofday(&tv, 0); - running_msec = (tv.tv_sec - devc->start_tv.tv_sec) * 1000 + - (tv.tv_usec - devc->start_tv.tv_usec) / 1000; + current_time = g_get_monotonic_time(); + running_msec = (current_time - devc->start_time) / 1000; if (running_msec >= devc->limit_msec) return download_capture(sdi); diff --git a/src/hardware/asix-sigma/protocol.h b/src/hardware/asix-sigma/protocol.h index 388b44bc..7e5d8497 100644 --- a/src/hardware/asix-sigma/protocol.h +++ b/src/hardware/asix-sigma/protocol.h @@ -262,7 +262,7 @@ struct dev_context { uint64_t limit_msec; uint64_t limit_samples; uint64_t sent_samples; - struct timeval start_tv; + uint64_t start_time; int cur_firmware; int num_channels; int cur_channels;