From f6b29d093f51508312846c8dcf7e1f9e104d0796 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Wed, 20 Nov 2013 19:52:17 +0100 Subject: [PATCH] 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 Signed-off-by: Dirk Hohndel --- dive.c | 6 +----- dive.h | 1 + profile.c | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/dive.c b/dive.c index 269aeb658..8ce1c950f 100644 --- a/dive.c +++ b/dive.c @@ -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 */ diff --git a/dive.h b/dive.h index 28753e2b9..c881d2450 100644 --- a/dive.h +++ b/dive.h @@ -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 */ diff --git a/profile.c b/profile.c index c0520bc43..0f90370f0 100644 --- a/profile.c +++ b/profile.c @@ -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;