summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2017-01-03 15:14:42 +0100
committerGravatar Subsurface <dirk@subsurface-divelog.org>2017-01-03 22:28:18 -0800
commit43599742a3ca3600196156d1be233ebd05c8dfb6 (patch)
tree278c3c19e80d5424a6c8093c572ab9fe8d712f55 /core
parent72bcb6481f3b935444d7868a74599dda133f9b43 (diff)
downloadsubsurface-43599742a3ca3600196156d1be233ebd05c8dfb6.tar.gz
Display surface interval in diveplan
...instead of just stating "repetitive dive". As requested by a user. Signed-off-by: Robert C. Helling <helling@atdotde.de>
Diffstat (limited to 'core')
-rw-r--r--core/dive.h2
-rw-r--r--core/divelist.c4
-rw-r--r--core/divelist.h2
-rw-r--r--core/planner.c28
4 files changed, 21 insertions, 15 deletions
diff --git a/core/dive.h b/core/dive.h
index aa6352db3..8798b22ff 100644
--- a/core/dive.h
+++ b/core/dive.h
@@ -860,7 +860,7 @@ struct diveplan {
short vpmb_conservatism;
struct divedatapoint *dp;
int eff_gflow, eff_gfhigh;
- bool repetitive;
+ unsigned int surface_interval;
};
struct divedatapoint *plan_add_segment(struct diveplan *diveplan, int duration, int depth, int cylinderid, int po2, bool entered);
diff --git a/core/divelist.c b/core/divelist.c
index f4762ddef..fdc1f906b 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -361,7 +361,7 @@ static struct gasmix air = { .o2.permille = O2_IN_AIR, .he.permille = 0 };
/* take into account previous dives until there is a 48h gap between dives */
/* return true if this is a repetitive dive */
-bool init_decompression(struct dive *dive)
+unsigned int init_decompression(struct dive *dive)
{
int i, divenr = -1;
unsigned int surface_time;
@@ -448,7 +448,7 @@ bool init_decompression(struct dive *dive)
}
// I do not dare to remove this call. We don't need the result but it might have side effects. Bummer.
tissue_tolerance_calc(dive, surface_pressure);
- return deco_init;
+ return surface_time;
}
void update_cylinder_related_info(struct dive *dive)
diff --git a/core/divelist.h b/core/divelist.h
index f36766fed..52ebbada9 100644
--- a/core/divelist.h
+++ b/core/divelist.h
@@ -14,7 +14,7 @@ extern void update_cylinder_related_info(struct dive *);
extern void mark_divelist_changed(int);
extern int unsaved_changes(void);
extern void remove_autogen_trips(void);
-extern bool init_decompression(struct dive *dive);
+extern unsigned int init_decompression(struct dive *dive);
/* divelist core logic functions */
extern void process_dives(bool imported, bool prefer_imported);
diff --git a/core/planner.c b/core/planner.c
index 5bc7e82b6..cb11bfbaa 100644
--- a/core/planner.c
+++ b/core/planner.c
@@ -128,7 +128,7 @@ void interpolate_transition(struct dive *dive, duration_t t0, duration_t t1, dep
}
/* returns the tissue tolerance at the end of this (partial) dive */
-bool tissue_at_end(struct dive *dive, char **cached_datap)
+unsigned int tissue_at_end(struct dive *dive, char **cached_datap)
{
struct divecomputer *dc;
struct sample *sample, *psample;
@@ -136,19 +136,19 @@ bool tissue_at_end(struct dive *dive, char **cached_datap)
depth_t lastdepth = {};
duration_t t0 = {}, t1 = {};
struct gasmix gas;
- bool repetitive = false;
+ unsigned int surface_interval = 0;
if (!dive)
- return false;
+ return 0;
if (*cached_datap) {
restore_deco_state(*cached_datap);
} else {
- repetitive = init_decompression(dive);
+ surface_interval = init_decompression(dive);
cache_deco_state(cached_datap);
}
dc = &dive->dc;
if (!dc->samples)
- return false;
+ return 0;
psample = sample = dc->sample;
for (i = 0; i < dc->samples; i++, sample++) {
@@ -191,7 +191,7 @@ bool tissue_at_end(struct dive *dive, char **cached_datap)
psample = sample;
t0 = t1;
}
- return repetitive;
+ return surface_interval;
}
@@ -596,10 +596,16 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool
snprintf(temp, sz_temp, translate("gettextFromC", "recreational mode based on Bühlmann ZHL-16B with GFlow = %d and GFhigh = %d"),
diveplan->gflow, diveplan->gfhigh);
}
- len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s%s</b><br>%s</div>",
- translate("gettextFromC", "Subsurface dive plan"),
- diveplan->repetitive ? translate("gettextFromC", " (repetitive)") : "",
- temp);
+ if (diveplan->surface_interval > 60) {
+ len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s %d:%02d)</b><br>%s</div>",
+ translate("gettextFromC", "Subsurface dive plan (surface interval "),
+ FRACTION(diveplan->surface_interval / 60, 60),
+ temp);
+ } else {
+ len += snprintf(buffer + len, sz_buffer - len, "<div><b>%s</b><br>%s</div>",
+ translate("gettextFromC", "Subsurface dive plan"),
+ temp);
+ }
len += snprintf(buffer + len, sz_buffer - len, translate("gettextFromC", "<div>Runtime: %dmin</div><br>"),
diveplan_duration(diveplan));
@@ -1086,7 +1092,7 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool
gi = gaschangenr - 1;
/* Set tissue tolerance and initial vpmb gradient at start of ascent phase */
- diveplan->repetitive = tissue_at_end(&displayed_dive, cached_datap);
+ diveplan->surface_interval = tissue_at_end(&displayed_dive, cached_datap);
nuclear_regeneration(clock);
vpmb_start_gradient();