]> git.tdb.fi Git - ext/subsurface.git/blobdiff - dive.c
Remove redundant temperature readings
[ext/subsurface.git] / dive.c
diff --git a/dive.c b/dive.c
index 9cd6da0ebfa710c284d55b2975720fc0606d0ec7..9bac25eeef3aa8412972e2ccfe890851828b3445 100644 (file)
--- a/dive.c
+++ b/dive.c
@@ -13,7 +13,7 @@
  * samples it stores. So it's possible that the max and mean
  * have been reported more correctly originally.
  *
- * Only if the values calulcated from the samples are clearly
+ * Only if the values calculated from the samples are clearly
  * different do we override the normal depth values.
  *
  * This considers 1m to be "clearly different". That's
@@ -37,6 +37,8 @@ struct dive *fixup_dive(struct dive *dive)
        int starttemp = 0, endtemp = 0;
        int maxdepth = 0, mintemp = 0;
        int lastdepth = 0;
+       int lasttemp = 0;
+       temperature_t *redundant_temp = NULL;
 
        for (i = 0; i < dive->samples; i++) {
                struct sample *sample = dive->sample + i;
@@ -60,6 +62,21 @@ struct dive *fixup_dive(struct dive *dive)
                                startpress = press;
                }
                if (temp) {
+                       /*
+                        * If we have consecutive identical
+                        * temperature readings, throw away
+                        * the redundant ones. We care about
+                        * the "edges" only.
+                        */
+                       if (lasttemp == temp) {
+                               if (redundant_temp)
+                                       redundant_temp->mkelvin = 0;
+                               redundant_temp = &sample->temperature;
+                       } else {
+                               redundant_temp = NULL;
+                               lasttemp = temp;
+                       }
+
                        endtemp = temp;
                        if (!starttemp)
                                starttemp = temp;