From 07745893e519bf6e310c0acb277636bdc7cb73c1 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Sun, 14 Nov 2021 03:55:33 +0100 Subject: [PATCH] Don't attempt to compute SAC for CCR dives CCRs are different. It does not make sense to compute a depth dependent SAC. You could compute the rate of O2 consumption but even that is likely wrong (as O2 in the diluent would enter that as well), so simply don't attempt it. Signed-off-by: Robert C. Helling --- CHANGELOG.md | 1 + core/divelist.c | 4 ++++ desktop-widgets/tab-widgets/TabDiveInformation.cpp | 2 +- dives/test40-42.xml | 4 ++-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4d50a0f1..634342ab3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +Divelist: Don't attempt to compute SAC for CCR dives --- * Always add new entries at the very top of this file above other existing entries and this note. * Use this layout for new entries: `[Area]: [Details about the change] [reference thread / issue]` diff --git a/core/divelist.c b/core/divelist.c index 4258d757a..09e3f372a 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -348,6 +348,10 @@ static double calculate_airuse(const struct dive *dive) int airuse = 0; int i; + // SAC for a CCR dive does not make sense. + if (dive->dc.divemode == CCR) + return 0.0; + for (i = 0; i < dive->cylinders.nr; i++) { pressure_t start, end; const cylinder_t *cyl = get_cylinder(dive, i); diff --git a/desktop-widgets/tab-widgets/TabDiveInformation.cpp b/desktop-widgets/tab-widgets/TabDiveInformation.cpp index c8112b2cd..0e34b3e81 100644 --- a/desktop-widgets/tab-widgets/TabDiveInformation.cpp +++ b/desktop-widgets/tab-widgets/TabDiveInformation.cpp @@ -143,7 +143,7 @@ void TabDiveInformation::updateProfile() ui->diveTimeText->setText(get_dive_duration_string(current_dive->duration.seconds, tr("h"), tr("min"), tr("sec"), " ", current_dive->dc.divemode == FREEDIVE)); - ui->sacText->setText(current_dive->cylinders.nr > 0 && mean[0] ? SACs : QString()); + ui->sacText->setText(current_dive->cylinders.nr > 0 && mean[0] && current_dive->dc.divemode != CCR ? SACs : QString()); if (current_dive->surface_pressure.mbar == 0) { ui->atmPressVal->clear(); // If no atm pressure for dive then clear text box diff --git a/dives/test40-42.xml b/dives/test40-42.xml index 070eb3ced..d4eca2c05 100644 --- a/dives/test40-42.xml +++ b/dives/test40-42.xml @@ -771,7 +771,7 @@ - + CCR dive @@ -3268,7 +3268,7 @@ - + CCR dive