Use correct pO2 when computing MOD in equipment tab

The cylinder model is used both in the planner and the
equipment tab. We have three preferences for the pO2 that
is used to compute MOD: In the planner, there is one for
the bottom part of the dive and another one for deco.
Those are set in the planenr UI. There is another value,
controlled in the Tec Prefernces. That one should be
used in the equipment tab rather than the one from
the planner.

Fixes #2984

Signed-off-by: Robert C. Helling <helling@atdotde.de>
This commit is contained in:
Robert C. Helling 2020-09-29 23:59:56 +02:00 committed by Dirk Hohndel
parent a7ca27d071
commit efdc875aa3
3 changed files with 4 additions and 2 deletions

View file

@ -1,3 +1,4 @@
Use pO2 from prefernces for MOD display in equipment tab
mobile: fix manually adding dives in the past [#2971]
---

View file

@ -3628,8 +3628,9 @@ int get_depth_at_time(const struct divecomputer *dc, unsigned int time)
fraction_t best_o2(depth_t depth, const struct dive *dive)
{
fraction_t fo2;
int po2 = in_planner() ? prefs.bottompo2 : prefs.modpO2 * 1000;
fo2.permille = (prefs.bottompo2 * 100 / depth_to_mbar(depth.mm, dive)) * 10; //use integer arithmetic to round down to nearest percent
fo2.permille = (po2 * 100 / depth_to_mbar(depth.mm, dive)) * 10; //use integer arithmetic to round down to nearest percent
// Don't permit >100% O2
if (fo2.permille > 1000)
fo2.permille = 1000;

View file

@ -230,7 +230,7 @@ QVariant CylindersModel::data(const QModelIndex &index, int role) const
return QStringLiteral("*");
} else {
pressure_t modpO2;
modpO2.mbar = prefs.bottompo2;
modpO2.mbar = in_planner() ? prefs.bottompo2 : prefs.modpO2 * 1000;
return get_depth_string(gas_mod(cyl->gasmix, modpO2, d, M_OR_FT(1,1)), true);
}
case MND: