summaryrefslogtreecommitdiffstats
path: root/dive.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-11-17 12:03:11 -0200
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-11-17 12:03:11 -0200
commitc486a9ee81de77faba90b5aa0b2e63eb11ec47f8 (patch)
treea8a0aaf03a7b1dc3b91d8a0cdcd166c6975b50e3 /dive.c
parent1268e0d22597593e3276ffa574e7eeb679d0dbd2 (diff)
downloadsubsurface-c486a9ee81de77faba90b5aa0b2e63eb11ec47f8.tar.gz
Remove redundant duplicate pressure samples
At least the Suunto pressure transmitter seems to be pretty "quantisized", and it will send identical samples for a while until the pressure changes enough. Then subsurface gives this silly flat line with a sudden jump downwards, which *could* be you suddenly taking a deep breath after holding it for a while, but almost certainly it's a sensor issue. So just remove successive identical pressure readings. They aren't interesting, and subsurface will actually do a good job of interpolating it according to SAC rate instead. And they just make the XML look worse. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'dive.c')
-rw-r--r--dive.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/dive.c b/dive.c
index dad0e237b..cd797d276 100644
--- a/dive.c
+++ b/dive.c
@@ -239,16 +239,26 @@ struct dive *fixup_dive(struct dive *dive)
int i;
double depthtime = 0;
int lasttime = 0;
+ int lastindex = -1;
int start = -1, end = -1;
int maxdepth = 0, mintemp = 0;
int lastdepth = 0;
- int lasttemp = 0;
+ int lasttemp = 0, lastpressure = 0;
for (i = 0; i < dive->samples; i++) {
struct sample *sample = dive->sample + i;
int time = sample->time.seconds;
int depth = sample->depth.mm;
int temp = sample->temperature.mkelvin;
+ int pressure = sample->cylinderpressure.mbar;
+ int index = sample->cylinderindex;
+
+ /* Remove duplicate redundant pressure information */
+ if (pressure == lastpressure && index == lastindex)
+ sample->cylinderpressure.mbar = 0;
+
+ lastindex = index;
+ lastpressure = pressure;
if (lastdepth)
end = time;