aboutsummaryrefslogtreecommitdiffstats
path: root/dive.c
diff options
context:
space:
mode:
Diffstat (limited to 'dive.c')
-rw-r--r--dive.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/dive.c b/dive.c
index 8c81a3d51..757622fe7 100644
--- a/dive.c
+++ b/dive.c
@@ -34,9 +34,10 @@ struct dive *fixup_dive(struct dive *dive)
int lasttime = 0;
int start = -1, end = -1;
int startpress = 0, endpress = 0;
- 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,9 +61,21 @@ struct dive *fixup_dive(struct dive *dive)
startpress = press;
}
if (temp) {
- endtemp = temp;
- if (!starttemp)
- starttemp = 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;
+ }
+
if (!mintemp || temp < mintemp)
mintemp = temp;
}