mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Allow for more O2 sensors
The Divesoft Liberty has four O2 sensors. So far, we had a hard coded limit of three sensors and crashed with a failed assert when we encoutered more than three. This allows for up to MAX_O2_SENSORS which is currently 6. The voting logic is adapted accordingly: We sort the values and we keep deleting the values that differ more than 20% by value from the closest. This follows what Shearwater implements on their computers. In some of the import/export functions the value is still hard coded to 6 thanks to explicit field names. Signed-off-by: Robert C. Helling <helling@lmu.de>
This commit is contained in:
parent
e00e1bb9f7
commit
e794efaba6
13 changed files with 31329 additions and 31257 deletions
13
core/dive.c
13
core/dive.c
|
@ -1184,23 +1184,20 @@ static void fixup_no_o2sensors(struct divecomputer *dc)
|
|||
return;
|
||||
|
||||
for (int i = 0; i < dc->samples; i++) {
|
||||
int nsensor = 0;
|
||||
int nsensor = 0, j;
|
||||
struct sample *s = dc->sample + i;
|
||||
|
||||
// How many o2 sensors can we find in this sample?
|
||||
if (s->o2sensor[0].mbar)
|
||||
nsensor++;
|
||||
if (s->o2sensor[1].mbar)
|
||||
nsensor++;
|
||||
if (s->o2sensor[2].mbar)
|
||||
nsensor++;
|
||||
for (j = 0; j < MAX_O2_SENSORS; j++)
|
||||
if (s->o2sensor[j].mbar)
|
||||
nsensor++;
|
||||
|
||||
// If we fond more than the previous found max, record it.
|
||||
if (nsensor > dc->no_o2sensors)
|
||||
dc->no_o2sensors = nsensor;
|
||||
|
||||
// Already found the maximum posible amount.
|
||||
if (nsensor == 3)
|
||||
if (nsensor == MAX_O2_SENSORS)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue