summaryrefslogtreecommitdiffstats
path: root/statistics.c
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2013-11-27 23:05:51 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-11-27 14:15:12 -0800
commit9b5c7c2bbeaf5b4b17258f2549b08e34bcb42045 (patch)
treeba6e26f6c65692593aa49fd8526c57fbe1c65c11 /statistics.c
parent57fb878b41bb803aa9418f84e82aa489b5d542d3 (diff)
downloadsubsurface-9b5c7c2bbeaf5b4b17258f2549b08e34bcb42045.tar.gz
Only return gas volumes for gases used
We check in get_gaslist is_gas_used, so if were going to be consistent about what we return from get_gaslist and in get_gas_used, only return gas volumes that we actually consumed during the dive. The problem now this fixes can be seen in dives/test10.xml Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'statistics.c')
-rw-r--r--statistics.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/statistics.c b/statistics.c
index 51b8d60e2..c4beba3b2 100644
--- a/statistics.c
+++ b/statistics.c
@@ -293,20 +293,6 @@ void get_selected_dives_text(char *buffer, int size)
}
}
-void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
-{
- int idx;
- for (idx = 0; idx < MAX_CYLINDERS; idx++) {
- cylinder_t *cyl = &dive->cylinder[idx];
- pressure_t start, end;
-
- start = cyl->start.mbar ? cyl->start : cyl->sample_start;
- end = cyl->end.mbar ? cyl->end : cyl->sample_end;
- if (start.mbar && end.mbar)
- gases[idx].mliter = gas_volume(cyl, start) - gas_volume(cyl, end);
- }
-}
-
bool is_gas_used(struct dive *dive, int idx)
{
cylinder_t *cyl = &dive->cylinder[idx];
@@ -354,6 +340,23 @@ bool is_gas_used(struct dive *dive, int idx)
return used;
}
+void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
+{
+ int idx;
+ for (idx = 0; idx < MAX_CYLINDERS; idx++) {
+ cylinder_t *cyl = &dive->cylinder[idx];
+ pressure_t start, end;
+
+ if (!is_gas_used(dive, idx))
+ continue;
+
+ start = cyl->start.mbar ? cyl->start : cyl->sample_start;
+ end = cyl->end.mbar ? cyl->end : cyl->sample_end;
+ if (start.mbar && end.mbar)
+ gases[idx].mliter = gas_volume(cyl, start) - gas_volume(cyl, end);
+ }
+}
+
#define MAXBUF 80
/* for the O2/He readings just create a list of them */
char *get_gaslist(struct dive *dive)