]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Remove redundant temperature readings
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 18:20:27 +0000 (11:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 18:20:27 +0000 (11:20 -0700)
I'm aiming to really differentiate in dive log software by making my XML
export files be *clean*, dammit.

That means that we don't have random names, we don't have crazy random
units, and we don't have redundant information.

So when the temperature doesn't change, just don't report it.  That's
already what "no sample" means, just clean things up.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
dive.c

diff --git a/dive.c b/dive.c
index 8c81a3d516702bb9ecac67f2ee40fb82088d6e0a..9bac25eeef3aa8412972e2ccfe890851828b3445 100644 (file)
--- a/dive.c
+++ b/dive.c
@@ -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;