mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Fix get_cylinder_index() gasmix comparisons
get_cylinder_index() looks up which cylinder to use based on the gaschange event that describes the mix. However, it was both buggy and not very good. It was buggy because it didn't understand about our air rules, and it was not very good because it required an exact match (after rounding our permille-based numbers to percent). So fix it to use the right permille values, and look for a closest match (using the normal sum-of-squares distance function - although I wonder if we should consider helium percentages to be "more important" and give them a stronger weight). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
f2f29665d4
commit
99070c49e2
2 changed files with 34 additions and 16 deletions
10
dive.h
10
dive.h
|
@ -215,6 +215,16 @@ static inline int mbar_to_PSI(int mbar)
|
|||
return to_PSI(p);
|
||||
}
|
||||
|
||||
static inline int get_o2(const struct gasmix *mix)
|
||||
{
|
||||
return mix->o2.permille ? : O2_IN_AIR;
|
||||
}
|
||||
|
||||
static inline int get_he(const struct gasmix *mix)
|
||||
{
|
||||
return mix->he.permille;
|
||||
}
|
||||
|
||||
static inline gboolean is_air(int o2, int he)
|
||||
{
|
||||
return (he == 0) && (o2 == 0 || ((o2 >= O2_IN_AIR - 1) && (o2 <= O2_IN_AIR + 1)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue