From 2e8286623d3f4e1b8bf3a4d5141cda0839d1d506 Mon Sep 17 00:00:00 2001 From: Miika Turkia Date: Tue, 18 Aug 2015 07:35:23 +0300 Subject: [PATCH] Fix MKVI erroneous sample time There was a bug in MKVI download tool that resulted in erroneous sample times. This fix takes care of that and should work similarly as the vendor's own. Fixes #916 Signed-off-by: Miika Turkia Signed-off-by: Dirk Hohndel --- file.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/file.c b/file.c index 8522b2e38..f612656f9 100644 --- a/file.c +++ b/file.c @@ -552,6 +552,7 @@ int parse_txt_file(const char *filename, const char *csv) bool has_depth = false, has_setpoint = false, has_ndl = false; char *lineptr, *key, *value; int o2cylinder_pressure = 0, cylinder_pressure = 0, cur_cylinder_index = 0; + unsigned int prev_time = 0; struct dive *dive; struct divecomputer *dc; @@ -651,7 +652,14 @@ int parse_txt_file(const char *filename, const char *csv) has_setpoint = false; has_ndl = false; sample = prepare_sample(dc); - sample->time.seconds = cur_sampletime; + + /* + * There was a bug in MKVI download tool that resulted in erroneous sample + * times. This fix should work similarly as the vendor's own. + */ + + sample->time.seconds = cur_sampletime < 0xFFFF * 3 / 4 ? cur_sampletime : prev_time; + prev_time = sample->time.seconds; do { int i = sscanf(lineptr, "%d,%d,%d", &sampletime, &type, &value);