diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-17 12:03:11 -0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-17 12:03:11 -0200 |
commit | c486a9ee81de77faba90b5aa0b2e63eb11ec47f8 (patch) | |
tree | a8a0aaf03a7b1dc3b91d8a0cdcd166c6975b50e3 /dive.c | |
parent | 1268e0d22597593e3276ffa574e7eeb679d0dbd2 (diff) | |
download | subsurface-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.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -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; |