Improve gas accounting in the panner

When using gasmixes where the difference is less than 2% the planner can't
caclulate casconsumptions correctly. This sets the minimum gasdifference
to 1%.

Fixes #795

Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Joakim Bygdell 2015-03-07 16:37:12 +01:00 committed by Dirk Hohndel
parent 237043d6ba
commit 20a82e2b21
2 changed files with 4 additions and 4 deletions

View file

@ -115,7 +115,7 @@ int get_gasidx(struct dive *dive, struct gasmix *mix)
int gasidx = -1; int gasidx = -1;
while (++gasidx < MAX_CYLINDERS) while (++gasidx < MAX_CYLINDERS)
if (gasmix_distance(&dive->cylinder[gasidx].gasmix, mix) < 200) if (gasmix_distance(&dive->cylinder[gasidx].gasmix, mix) < 100)
return gasidx; return gasidx;
return -1; return -1;
} }
@ -210,7 +210,7 @@ static int verify_gas_exists(struct gasmix mix_in)
cyl = displayed_dive.cylinder + i; cyl = displayed_dive.cylinder + i;
if (cylinder_nodata(cyl)) if (cylinder_nodata(cyl))
continue; continue;
if (gasmix_distance(&cyl->gasmix, &mix_in) < 200) if (gasmix_distance(&cyl->gasmix, &mix_in) < 100)
return i; return i;
} }
fprintf(stderr, "this gas %s should have been on the cylinder list\nThings will fail now\n", gasname(&mix_in)); fprintf(stderr, "this gas %s should have been on the cylinder list\nThings will fail now\n", gasname(&mix_in));

View file

@ -1112,7 +1112,7 @@ bool DivePlannerPointsModel::tankInUse(struct gasmix gasmix)
continue; continue;
if (!p.entered) // removing deco gases is ok if (!p.entered) // removing deco gases is ok
continue; continue;
if (gasmix_distance(&p.gasmix, &gasmix) < 200) if (gasmix_distance(&p.gasmix, &gasmix) < 100)
return true; return true;
} }
return false; return false;
@ -1139,7 +1139,7 @@ void DivePlannerPointsModel::tanksUpdated()
struct gasmix gas; struct gasmix gas;
gas.o2.permille = oldGases.at(i).first; gas.o2.permille = oldGases.at(i).first;
gas.he.permille = oldGases.at(i).second; gas.he.permille = oldGases.at(i).second;
if (gasmix_distance(&gas, &p.gasmix) < 200) { if (gasmix_distance(&gas, &p.gasmix) < 100) {
p.gasmix.o2.permille = gases.at(i).first; p.gasmix.o2.permille = gases.at(i).first;
p.gasmix.he.permille = gases.at(i).second; p.gasmix.he.permille = gases.at(i).second;
} }