summaryrefslogtreecommitdiffstats
path: root/planner.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-09-18 22:40:34 -0500
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-09-18 22:40:34 -0500
commit56535e4b3b9c2324f42674f385ee7bda2b9028eb (patch)
tree2ace8638b6649e028a39e40531355ee159e1f348 /planner.c
parent4141c68450bfceab8464aa1297d68a8258538ddd (diff)
downloadsubsurface-56535e4b3b9c2324f42674f385ee7bda2b9028eb.tar.gz
Only calculate deco stops in planner mode
In add dive mode simply bring the diver safely back to the surface (currently with a fixed ascent rate of 30ft/min (or 9m/min)). We should make that rate configurable (for the planner as well as the dive add function). Also, the dive add function should offer to automatically include a safety stop. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'planner.c')
-rw-r--r--planner.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/planner.c b/planner.c
index 7c77555ac..6ed7030c7 100644
--- a/planner.c
+++ b/planner.c
@@ -594,7 +594,7 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive)
}
#endif
-void plan(struct diveplan *diveplan, char **cached_datap, struct dive **divep, char **error_string_p)
+void plan(struct diveplan *diveplan, char **cached_datap, struct dive **divep, bool add_deco, char **error_string_p)
{
struct dive *dive;
struct sample *sample;
@@ -623,6 +623,19 @@ void plan(struct diveplan *diveplan, char **cached_datap, struct dive **divep, c
get_gas_from_events(&dive->dc, sample->time.seconds, &o2, &he);
po2 = dive->dc.sample[dive->dc.samples - 1].po2;
depth = dive->dc.sample[dive->dc.samples - 1].depth.mm;
+
+ /* if all we wanted was the dive just get us back to the surface */
+ if (!add_deco) {
+ transitiontime = depth / 150; /* this still needs to be made configurable */
+ plan_add_segment(diveplan, transitiontime, 0, o2, he, po2);
+ /* re-create the dive */
+ delete_single_dive(dive_table.nr - 1);
+ *divep = dive = create_dive_from_plan(diveplan, error_string_p);
+ if (dive)
+ record_dive(dive);
+ return;
+ }
+
tissue_tolerance = tissue_at_end(dive, cached_datap, error_string_p);
ceiling = deco_allowed_depth(tissue_tolerance, diveplan->surface_pressure / 1000.0, dive, 1);
#if DEBUG_PLAN & 4