Use an adjusted timestep to calculate length of deco stops, so that they
always end at whole minutes of runtime.  This makes for a cleaner ascent
profile.
From 15e08450252f304fc7d46931e2aca5c991c2f3de Mon Sep 17 00:00:00 2001
From: Rick Walsh <[email protected]>
Date: Sat, 20 Jun 2015 11:36:07 +1000
Subject: [PATCH 2/2] Planner - end deco stops at whole minutes of runtime

Use an adjusted timestep to calculate length of deco stops, so that they always end at whole minutes of runtime.  This makes for a cleaner ascent profile.

Signed-off-by: Rick Walsh <[email protected]>
---
 planner.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/planner.c b/planner.c
index 5e9ab10..52b2d5e 100644
--- a/planner.c
+++ b/planner.c
@@ -1076,10 +1076,15 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool
 				previous_point_time = clock;
 				stopping = true;
 			}
+			
+			/* Deco stop should end when runtime is at a whole minute */
+			int this_decotimestep;
+			this_decotimestep = DECOTIMESTEP - clock % DECOTIMESTEP;
+			
 			tissue_tolerance = add_segment(depth_to_mbar(depth, &displayed_dive) / 1000.0,
 						       &displayed_dive.cylinder[current_cylinder].gasmix,
-						       DECOTIMESTEP, po2, &displayed_dive, prefs.decosac);
-			clock += DECOTIMESTEP;
+						       this_decotimestep, po2, &displayed_dive, prefs.decosac);
+			clock += this_decotimestep;
 			/* Finish infinite deco */
 			if(clock >= 48 * 3600 && depth >= 6000) {
 				error = LONGDECO;
-- 
2.4.3

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to