summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--core/dive.c2
-rw-r--r--profile-widget/diveeventitem.cpp11
3 files changed, 11 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 252071fdf..ab33add20 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
-- Warn in case of isobaric counter diffusion
+- Warn in case of isobaric counter diffusion if N2 increas is more than
+ 20% of He decrease.
- Desktop: Automatically sync with cloud when going online
- Small UI fixes
- Fix bug when using remembered BT/BLE addresses in dive computer download
diff --git a/core/dive.c b/core/dive.c
index 54d2a00f4..6d19b7e58 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -1184,7 +1184,7 @@ bool isobaric_counterdiffusion(struct gasmix *oldgasmix, struct gasmix *newgasmi
{
results->dN2 = get_he(oldgasmix) + get_o2(oldgasmix) - get_he(newgasmix) - get_o2(newgasmix);
results->dHe = get_he(newgasmix) - get_he(oldgasmix);
- return get_he(oldgasmix) && results->dN2 > 0 && 5 * results->dN2 > -results->dHe;
+ return get_he(oldgasmix) > 0 && results->dN2 > 0 && results->dHe < 0 && get_he(oldgasmix) && results->dN2 > 0 && 5 * results->dN2 > -results->dHe;
}
/* some events should never be thrown away */
diff --git a/profile-widget/diveeventitem.cpp b/profile-widget/diveeventitem.cpp
index e904bbefc..5a5ba15b5 100644
--- a/profile-widget/diveeventitem.cpp
+++ b/profile-widget/diveeventitem.cpp
@@ -166,6 +166,7 @@ void DiveEventItem::setupToolTipString(struct gasmix *lastgasmix)
int type = internalEvent->type;
if (event_is_gaschange(internalEvent)) {
+ struct icd_data icd_data;
struct gasmix *mix = get_gasmix_from_event(&displayed_dive, internalEvent);
name += ": ";
name += gasname(mix);
@@ -173,9 +174,13 @@ void DiveEventItem::setupToolTipString(struct gasmix *lastgasmix)
/* Do we have an explicit cylinder index? Show it. */
if (internalEvent->gas.index >= 0)
name += tr(" (cyl. %1)").arg(internalEvent->gas.index + 1);
- icd_data icd_data;
- if (isobaric_counterdiffusion(lastgasmix, mix, &icd_data))
- name += tr("\nICD ΔN2/ΔHe=%1/%2=%3%").arg(icd_data.dN2 / 10).arg(-icd_data.dHe / 10).arg((-100 * icd_data.dN2 / icd_data.dHe));
+ bool icd = isobaric_counterdiffusion(lastgasmix, mix, &icd_data);
+ if (icd_data.dHe < 0) {
+ if (icd)
+ name += tr("\nICD: ΔHe=%1% ΔN₂=%2%>%3%").arg(icd_data.dHe / 10).arg(icd_data.dN2 / 10).arg(-icd_data.dHe / 50);
+ else
+ name += tr("\nICD: ΔHe=%1% ΔN₂=%2%<%3%").arg(icd_data.dHe / 10).arg(icd_data.dN2 / 10).arg(-icd_data.dHe / 50);
+ }
*lastgasmix = *mix;
} else if (value) {
if (type == SAMPLE_EVENT_PO2 && same_string(internalEvent->name, "SP change")) {