summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joakim Bygdell <j.bygdell@gmail.com>2015-04-02 11:17:57 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-04-02 09:46:08 -0700
commitcd34fea1db4e3cf118bcc08358bb84df68314700 (patch)
tree77234364c7492bbeadd9a16a0e0b89627332bfdc
parent8571dcf9673e35710201cdffc0cb7ff1ff2b2426 (diff)
downloadsubsurface-cd34fea1db4e3cf118bcc08358bb84df68314700.tar.gz
Add 3min safety stop
Fixes #839 Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--planner.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/planner.c b/planner.c
index 60fc31bee..b93c9758a 100644
--- a/planner.c
+++ b/planner.c
@@ -905,6 +905,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
bottom_time = clock = previous_point_time = displayed_dive.dc.sample[displayed_dive.dc.samples - 1].time.seconds;
gi = gaschangenr - 1;
if(prefs.recreational_mode) {
+ bool safety_stop = true;
// How long can we stay at the current depth and still directly ascent to the surface?
while (trial_ascent(depth, 0, avg_depth, bottom_time, tissue_tolerance, &displayed_dive.cylinder[current_cylinder].gasmix,
po2, diveplan->surface_pressure / 1000.0)) {
@@ -932,6 +933,14 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
TIMESTEP, po2, &displayed_dive, prefs.decosac);
clock += TIMESTEP;
depth -= deltad;
+ if (depth <= 5000 && safety_stop) {
+ plan_add_segment(diveplan, clock - previous_point_time, 5000, gas, po2, false);
+ previous_point_time = clock;
+ clock += 180;
+ plan_add_segment(diveplan, clock - previous_point_time, 5000, gas, po2, false);
+ previous_point_time = clock;
+ safety_stop = false;
+ }
} while (depth > 0);
plan_add_segment(diveplan, clock - previous_point_time, 0, gas, po2, false);
create_dive_from_plan(diveplan, is_planner);