From 09da42f8192a83dba0b7b31b78b5c40100e164b1 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Fri, 27 Apr 2018 20:14:07 +0200 Subject: Fix divemode detection in planner Signed-off-by: Robert C. Helling --- core/dive.c | 5 ++--- core/planner.c | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/dive.c b/core/dive.c index d75de418e..9ec95c141 100644 --- a/core/dive.c +++ b/core/dive.c @@ -250,11 +250,10 @@ enum dive_comp_type get_current_divemode(struct divecomputer *dc, int time, stru struct event *ev = *evp; if (*divemode == UNDEF_COMP_TYPE) { *divemode = dc->divemode; - ev = dc ? dc->events : NULL; + ev = dc ? get_next_event(dc->events, "modechange") : NULL; } while (ev && ev->time.seconds < time) { - if (ev != dc->events) - *divemode = (enum dive_comp_type) ev->value; + *divemode = (enum dive_comp_type) ev->value; ev = get_next_event(ev->next, "modechange"); } *evp = ev; diff --git a/core/planner.c b/core/planner.c index 51b3a487b..40424cc61 100644 --- a/core/planner.c +++ b/core/planner.c @@ -190,7 +190,7 @@ int tissue_at_end(struct deco_state *ds, struct dive *dive, struct deco_state ** ds->max_bottom_ceiling_pressure.mbar = ceiling_pressure.mbar; } - divemode = get_current_divemode(&dive->dc, t0.seconds, &evdm, &divemode); + divemode = get_current_divemode(&dive->dc, t0.seconds + 1, &evdm, &divemode); interpolate_transition(ds, dive, t0, t1, lastdepth, sample->depth, &gas, setpoint, divemode); psample = sample; t0 = t1; @@ -367,7 +367,6 @@ static void create_dive_from_plan(struct diveplan *diveplan, struct dive *dive, } dive->dc.last_manual_time.seconds = last_manual_point; - dc->divemode = type; #if DEBUG_PLAN & 32 save_dive(stdout, &displayed_dive); #endif -- cgit v1.2.3-70-g09d2