From 9b5c7c2bbeaf5b4b17258f2549b08e34bcb42045 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Wed, 27 Nov 2013 23:05:51 +0100 Subject: 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 Signed-off-by: Dirk Hohndel --- statistics.c | 31 +++++++++++++++++-------------- 1 file 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) -- cgit v1.2.3-70-g09d2