diff options
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | core/dive.c | 2 | ||||
-rw-r--r-- | profile-widget/diveeventitem.cpp | 11 |
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")) { |