From a39038a902a88cc0ad5d71362342fe1aa0071e6b Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sun, 4 Oct 2015 12:13:10 +0100 Subject: In free dive mode split dives with only a 10 second surface interval If the dive computer tells us that this was free diving we should be a lot more aggressive splitting dives. For scuba dives a minute seems more reasonable (to avoid splitting dives when you pop to the surface to get the bearing and continue the dive after a few second). Signed-off-by: Dirk Hohndel --- dive.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'dive.c') diff --git a/dive.c b/dive.c index bbb1ff4ac..ea97833ea 100644 --- a/dive.c +++ b/dive.c @@ -2941,6 +2941,15 @@ static int split_dive_at(struct dive *dive, int a, int b) return 1; } +/* in freedive mode we split for as little as 10 seconds on the surface, + * otherwise we use a minute */ +static bool should_split(struct divecomputer *dc, int t1, int t2) +{ + int threshold = dc->divemode == FREEDIVE ? 10 : 60; + + return t2 - t1 >= threshold; +} + /* * Try to split a dive into multiple dives at a surface interval point. * @@ -2983,7 +2992,7 @@ int split_dive(struct dive *dive) // the surface start. if (!surface_start) continue; - if (sample->time.seconds - dc->sample[surface_start].time.seconds < 60) + if (!should_split(dc, dc->sample[surface_start].time.seconds, sample[i - 1].time.seconds)) continue; return split_dive_at(dive, surface_start, i-1); -- cgit v1.2.3-70-g09d2