]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Correctly plot dives ending below the surface
authorDirk Hohndel <dirk@hohndel.org>
Wed, 9 Nov 2011 15:41:41 +0000 (07:41 -0800)
committerDirk Hohndel <dirk@hohndel.org>
Wed, 9 Nov 2011 15:53:10 +0000 (07:53 -0800)
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>
dives/test1.xml
dives/test11.xml
dives/test12.xml
dives/test13.xml
dives/test14.xml [new file with mode: 0644]
dives/test2.xml
dives/test4.xml
dives/test9.xml
profile.c

index 8ea8b7b244f486a9b5ba93e133ff70e2a9d51ae2..6aa79736e22f8ce9dde03afa04728cda4657b5dc 100644 (file)
@@ -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>
index 4bd52e0c06fc21b22162c1f109c6abf1a557baf1..5e77f61a1201d4d73a9effd321bb32d02d52c295 100644 (file)
@@ -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' />
index efaad6871da105dd3d23fe1bcf94d0943957b4c1..cfc8d31934ff307fb255b8cb5188ee5ef7ebe198 100644 (file)
@@ -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' />
index e5555d8541d542bee547ff6dc254d11f04f5b980..0668f4d43ba67d2283e277f38de0df3d4f42768e 100644 (file)
@@ -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 (file)
index 0000000..a6a1fae
--- /dev/null
@@ -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>
index 826445dacd64666fedb58db4d4d42a4fd5d9aab7..286f1f62d2707a855de82f26ed14bf2a72ac4526 100644 (file)
@@ -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>
index 903e0fd7ae33ba71f87f9db3f5a8add7b581ad86..df17b1b7f5101aaf6e2f4ce3be1d1af38977c9cb 100644 (file)
@@ -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>
index ff6a874d86b15e2c03fe5f01f09edf2e1dbdb2a1..ba0f19be93e7099adb459c2b2d98ae6ae84bd9b0 100644 (file)
@@ -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' />
index 173032a130a85088c10dfd26e0a0bae2dbd64bd2..60e0f4215e2b69e481dd11501d188f36c8d64a15 100644 (file)
--- 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;