summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2011-11-09 07:41:41 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2011-11-09 07:53:10 -0800
commite38eb77e30c2d0d06eb61db0cd1bdf3f5e164e8d (patch)
tree498bd104465ed888b48ccac2bbaadbb69920cda8
parent4b735521e2561fe6d03f9f94122fbdc58f48e4a5 (diff)
downloadsubsurface-e38eb77e30c2d0d06eb61db0cd1bdf3f5e164e8d.tar.gz
Correctly plot dives ending below the surface
I thought we had fixed this before - but I guess it got broken again somewhere. We now make sure that the plot_info ends on an entry with depth 0. Added test14 to verify the fix. Also fixed cut'n'paste errors in a few test dive files. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dives/test1.xml5
-rw-r--r--dives/test11.xml2
-rw-r--r--dives/test12.xml2
-rw-r--r--dives/test13.xml2
-rw-r--r--dives/test14.xml39
-rw-r--r--dives/test2.xml2
-rw-r--r--dives/test4.xml2
-rw-r--r--dives/test9.xml2
-rw-r--r--profile.c9
9 files changed, 54 insertions, 11 deletions
diff --git a/dives/test1.xml b/dives/test1.xml
index 8ea8b7b24..6aa79736e 100644
--- a/dives/test1.xml
+++ b/dives/test1.xml
@@ -2,6 +2,7 @@
<program name='subsurface' version='1'></program>
<dive number='1' date='2011-01-01' time='09:00:00' duration='30:00 min'>
<depth max='30.00 m' mean='15.00 m' />
- <location>Second test dive, this one with location</location>
+ <location>First test dive, this one with location</location>
+ <notes>Yes, the previous dive is dive 0, that one with no location.</notes>
</dive>
-</dives> \ No newline at end of file
+</dives>
diff --git a/dives/test11.xml b/dives/test11.xml
index 4bd52e0c0..5e77f61a1 100644
--- a/dives/test11.xml
+++ b/dives/test11.xml
@@ -3,7 +3,7 @@
<dive number='11' date='2011-01-01' time='19:00:00' duration='30:00 min'>
<depth max='30.0 m' mean='15.0 m' />
<temperature air='27.0 C' water='26.0 C' />
- <location>10th test dive, 3 tanks, 2 tank changes</location>
+ <location>11th test dive, 3 tanks, 2 tank changes</location>
<notes>Shows three pressure plots, each from 200 to 100bar and gaschange events at 10 and 20 min mark.</notes>
<cylinder o2='33.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
<cylinder o2='50.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
diff --git a/dives/test12.xml b/dives/test12.xml
index efaad6871..cfc8d3193 100644
--- a/dives/test12.xml
+++ b/dives/test12.xml
@@ -3,7 +3,7 @@
<dive number='12' date='2011-01-01' time='20:00:00' duration='30:00 min'>
<depth max='30.0 m' mean='15.0 m' />
<temperature air='27.0 C' water='26.0 C' />
- <location>10th test dive, 3 tanks, 3 tank changes</location>
+ <location>12th test dive, 3 tanks, 3 tank changes</location>
<notes>Shows three pressure plots, each from 200 to 100bar and gaschange events at 10, 20 and 25 min mark. Last change is back to first tank.</notes>
<cylinder o2='33.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
<cylinder o2='50.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
diff --git a/dives/test13.xml b/dives/test13.xml
index e5555d854..0668f4d43 100644
--- a/dives/test13.xml
+++ b/dives/test13.xml
@@ -3,7 +3,7 @@
<dive number='13' date='2011-01-01' time='21:00:00' duration='30:00 min'>
<depth max='30.0 m' mean='15.0 m' />
<temperature air='27.0 C' water='26.0 C' />
- <location>10th test dive, 3 tanks, 3 tank changes</location>
+ <location>13th test dive, 3 tanks, 3 tank changes</location>
<notes>Shows three pressure plots, each from 200 to 100bar and gaschange events at 10, 20 and 25 min mark. Last change is back to first tank
Now with samples. We have a sample at the first tank change but not the 2nd and 3rd</notes>
<cylinder o2='33.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
diff --git a/dives/test14.xml b/dives/test14.xml
new file mode 100644
index 000000000..a6a1fae96
--- /dev/null
+++ b/dives/test14.xml
@@ -0,0 +1,39 @@
+<dives>
+<program name='subsurface' version='1'></program>
+<dive number='14' date='2011-01-01' time='22:00:00' duration='30:00 min'>
+ <depth max='30.0 m' mean='15.0 m' />
+ <temperature air='27.0 C' water='26.0 C' />
+ <location>14th test dive - no depth 0 samples</location>
+ <notes>This should show 1m depth at the 30min mark and then a tick up to the surface 20sec later</notes>
+ <sample time='1:00 min' temp='27.0 C' depth='5 m' />
+ <sample time='2:00 min' temp='26.0 C' depth='10 m' />
+ <sample time='3:00 min' temp='25.0 C' depth='15 m' />
+ <sample time='4:00 min' temp='24.0 C' depth='20 m' />
+ <sample time='5:00 min' temp='24.0 C' depth='25 m' />
+ <sample time='6:00 min' temp='23.0 C' depth='30 m' />
+ <sample time='7:00 min' depth='30 m' />
+ <sample time='8:00 min' depth='30 m' />
+ <sample time='9:00 min' depth='30 m' />
+ <sample time='10:00 min' depth='30 m' />
+ <sample time='11:00 min' depth='30 m' />
+ <sample time='12:00 min' depth='30 m' />
+ <sample time='13:00 min' depth='30 m' />
+ <sample time='14:00 min' temp='26.0 C' depth='10 m' />
+ <sample time='15:00 min' depth='15 m' />
+ <sample time='16:00 min' depth='5 m' />
+ <sample time='17:00 min' depth='10 m' />
+ <sample time='18:00 min' depth='10 m' />
+ <sample time='19:00 min' depth='10 m' />
+ <sample time='20:00 min' depth='10 m' />
+ <sample time='21:00 min' depth='10 m' />
+ <sample time='22:00 min' depth='5 m' />
+ <sample time='23:00 min' depth='5 m' />
+ <sample time='24:00 min' depth='5 m' />
+ <sample time='25:00 min' depth='5 m' />
+ <sample time='26:00 min' depth='5 m' />
+ <sample time='27:00 min' depth='5 m' />
+ <sample time='28:00 min' temp='26.0 C' depth='5 m' />
+ <sample time='29:00 min' temp='26.5 C' depth='2.5 m' />
+ <sample time='30:00 min' temp='26.0 C' depth='1 m' />
+</dive>
+</dives>
diff --git a/dives/test2.xml b/dives/test2.xml
index 826445dac..286f1f62d 100644
--- a/dives/test2.xml
+++ b/dives/test2.xml
@@ -2,7 +2,7 @@
<program name='subsurface' version='1'></program>
<dive number='2' date='2011-01-01' time='10:00:00' duration='30:00 min'>
<depth max='30.00 m' mean='15.00 m' />
- <location>3rd test dive, add cylinder with no start/end pressure</location>
+ <location>2nd test dive, add cylinder with no start/end pressure</location>
<cylinder size='9.987 l' workpressure='206.843 bar' description='AL72' />
</dive>
</dives>
diff --git a/dives/test4.xml b/dives/test4.xml
index 903e0fd7a..df17b1b7f 100644
--- a/dives/test4.xml
+++ b/dives/test4.xml
@@ -3,7 +3,7 @@
<dive number='4' date='2011-01-01' time='12:00:00' duration='30:00 min'>
<depth max='30.0 m' mean='15.0 m' />
<temperature air='27.0 C' water='26.0 C' />
- <location>4rd test dive, add temp</location>
+ <location>4th test dive, add temp</location>
<notes>SAC should be 0.46 cuft/min or 13.1 l/min</notes>
<cylinder size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
</dive>
diff --git a/dives/test9.xml b/dives/test9.xml
index ff6a874d8..ba0f19be9 100644
--- a/dives/test9.xml
+++ b/dives/test9.xml
@@ -3,7 +3,7 @@
<dive number='9' date='2011-01-01' time='17:00:00' duration='30:00 min'>
<depth max='30.0 m' mean='15.0 m' />
<temperature air='27.0 C' water='26.0 C' />
- <location>8th test dive, with temperature in samples</location>
+ <location>9th test dive, with temperature in samples</location>
<notes>End temperature is not plotted as correct text</notes>
<cylinder o2='33.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
<cylinder o2='50.0%' size='9.987 l' workpressure='206.843 bar' description='AL72' start='200.0 bar' end='100.0 bar' />
diff --git a/profile.c b/profile.c
index 173032a13..60e0f4215 100644
--- a/profile.c
+++ b/profile.c
@@ -1098,7 +1098,7 @@ static struct plot_info *create_plot_info(struct dive *dive, int nr_samples, str
entry->temperature = sample->temperature.mkelvin;
if (depth || lastdepth)
- lastindex = i+pi_idx;
+ lastindex = i + pi_idx;
lastdepth = depth;
if (depth > pi->maxdepth)
@@ -1162,9 +1162,12 @@ static struct plot_info *create_plot_info(struct dive *dive, int nr_samples, str
i = nr + 2;
pi->entry[i].sec = sec + 20;
pi->entry[i+1].sec = sec + 40;
- /* the number of actual entries - we may have allocated more if there
- * were gas change events, but this is how many were filled */
+ /* the number of actual entries - some computers have lots of
+ * depth 0 samples at the end of a dive, we want to make sure
+ * we have exactly one of them at the end */
pi->nr = lastindex+1;
+ while (pi->nr <= i+2 && pi->entry[pi->nr-1].depth > 0)
+ pi->nr++;
pi->maxtime = pi->entry[lastindex].sec;
pi->endpressure = pi->minpressure = dive->cylinder[0].end.mbar;