Use get_cylinder_index in per_cylinder_mean_depth

Use get_cylinder_index that handles SAMPLE_EVENT_GASCHANGE and
SAMPLE_EVENT_GASCHANGE2.

This also removes the need for a special case where get_gasidx returns
-1, because get_cylinder_index always returns the "closest" gas that it
finds.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Anton Lundin 2013-11-20 19:52:17 +01:00 committed by Dirk Hohndel
parent 51345e4ad8
commit f6b29d093f
3 changed files with 3 additions and 6 deletions

6
dive.c
View file

@ -361,11 +361,7 @@ void per_cylinder_mean_depth(struct dive *dive, struct divecomputer *dc, int *me
int time = sample->time.seconds;
int depth = sample->depth.mm;
if (ev && time >= ev->time.seconds) {
int o2 = (ev->value & 0xFFFF) * 10;
int he = (ev->value >> 16) * 10;
int tank = get_gasidx(dive, o2, he);
if (tank >= 0)
idx = tank; // should never happen unless the input file is inconsistent
idx = get_cylinder_index(dive, ev);
ev = get_next_event(ev->next, "gaschange");
}
/* We ignore segments at the surface */

1
dive.h
View file

@ -662,6 +662,7 @@ extern void fill_default_cylinder(cylinder_t *cyl);
extern void add_gas_switch_event(struct dive *dive, struct divecomputer *dc, int time, int idx);
extern void add_event(struct divecomputer *dc, int time, int type, int flags, int value, const char *name);
extern void per_cylinder_mean_depth(struct dive *dive, struct divecomputer *dc, int *mean, int *duration);
extern int get_cylinder_index(struct dive *dive, struct event *ev);
/* UI related protopypes */

View file

@ -553,7 +553,7 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
}
}
static int get_cylinder_index(struct dive *dive, struct event *ev)
int get_cylinder_index(struct dive *dive, struct event *ev)
{
int i;
int best = 0, score = INT_MAX;