From e288751353ad86dfb05a820f8a71dc2b75fcfb79 Mon Sep 17 00:00:00 2001 From: Willem Ferguson Date: Fri, 21 Nov 2014 15:33:05 +0200 Subject: Update fixup_pressure to calculate CCR oxygen cylinderpressures Fixup_pressure() needs to calculate the cylinder pressures at the start and at the end of the dive, also for CCR oxygen cylinders. Since, in the case of CCR, the default cylinder is the diluent, this is not automatically done for oxygen. This code provides for fixup_pressure() to be able to do the calculations for oxygen as well. Another change to fixup_dive() invokes fixup_pressure() to calculate the values for the oxygen cylinder. Signed-off-by: willem ferguson Signed-off-by: Dirk Hohndel --- dive.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'dive.c') diff --git a/dive.c b/dive.c index 78ad25532..5a8da0119 100644 --- a/dive.c +++ b/dive.c @@ -763,15 +763,20 @@ void per_cylinder_mean_depth(struct dive *dive, struct divecomputer *dc, int *me } } -static void fixup_pressure(struct dive *dive, struct sample *sample) +static void fixup_pressure(struct dive *dive, struct sample *sample, enum cylinderuse cyl_use) { int pressure, index; cylinder_t *cyl; - pressure = sample->cylinderpressure.mbar; + if (cyl_use != OXYGEN) { + pressure = sample->cylinderpressure.mbar; + index = sample->sensor; + } else { // for the CCR oxygen cylinder: + pressure = sample->o2cylinderpressure.mbar; + index = get_cylinder_idx_by_use(dive, OXYGEN); + } if (!pressure) return; - index = sample->sensor; /* FIXME! sensor -> cylinder mapping? */ if (index >= MAX_CYLINDERS) @@ -1221,7 +1226,9 @@ static void fixup_dive_dc(struct dive *dive, struct divecomputer *dc) maxdepth = depth; } - fixup_pressure(dive, sample); + fixup_pressure(dive, sample, OC_GAS); + if (dive->dc.dctype == CCR) + fixup_pressure(dive, sample, OXYGEN); if (temp) { if (!mintemp || temp < mintemp) -- cgit v1.2.3-70-g09d2