From b62e63650a3794a90f7af1aaee62b7fa7780b455 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 24 Feb 2013 11:07:27 -0800 Subject: Fix SAC calculations for dives without any samples We computed a made-up average depth based on the maximum depth, and used that. That's questionable even if we didn't have any explicit average depth to begin with, but it's particularly wrong if we did have an explicit average depth to use. Now, admittedly we have no way to actually create fake dives like this with a particular average depth, so this really doesn't make any difference in real life. But we should do this right. Also, make the XML be in the format that subsurface actually saves things in (mainly things like cylinder sizes having an extra decimal place, but also ordering of XML elements). Signed-off-by: Linus Torvalds Signed-off-by: Dirk Hohndel --- dive.c | 3 ++- dives/sac-test.xml | 30 ++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/dive.c b/dive.c index 950948b59..c07912ebd 100644 --- a/dive.c +++ b/dive.c @@ -678,7 +678,8 @@ static void fixup_dive_dc(struct dive *dive, struct divecomputer *dc) if (asc_desc_time * 2 >= duration) asc_desc_time = duration/2; - dc->meandepth.mm = depth*(duration-asc_desc_time)/duration; + if (!dc->meandepth.mm) + dc->meandepth.mm = depth*(duration-asc_desc_time)/duration; if (depth > maxdepth) maxdepth = depth; } else { diff --git a/dives/sac-test.xml b/dives/sac-test.xml index 14ee3f17b..fe0f51994 100644 --- a/dives/sac-test.xml +++ b/dives/sac-test.xml @@ -6,7 +6,7 @@ SAC test dive 1 SAC should be 20l/min (0.7063 cuft/min) We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min - + @@ -21,7 +21,7 @@ We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min SAC test dive 2 SAC should be 20l/min (0.7063 cuft/min) We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min - + @@ -33,11 +33,11 @@ We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min SAC test dive 3 SAC should be 20l/min (0.7063 cuft/min) We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min - - + + + - @@ -46,16 +46,16 @@ We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min - - SAC test dive 3 + + SAC test dive 4 SAC should be 20l/min (0.7063 cuft/min) This adds a 5-minute surface time to the middle of the dive. We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min - - + + + - @@ -65,5 +65,15 @@ We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min + + SAC test dive 5 + SAC should be 20l/min (0.7063 cuft/min) +This verifies that it works without any sample data too. +We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min + + + + + -- cgit v1.2.3-70-g09d2