mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Planner: only track gas when planning a dive
When adding a dive we don't have SAC data so we should simply have the user manually enter their gas consumption. That still doesn't work, but this is one required step to get it to work. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
75c9bcd726
commit
d4e3745370
2 changed files with 16 additions and 12 deletions
2
dive.h
2
dive.h
|
@ -709,7 +709,7 @@ struct divedatapoint *create_dp(int time_incr, int depth, struct gasmix gasmix,
|
|||
#if DEBUG_PLAN
|
||||
void dump_plan(struct diveplan *diveplan);
|
||||
#endif
|
||||
void plan(struct diveplan *diveplan, char **cached_datap, bool add_deco, bool show_disclaimer);
|
||||
void plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer);
|
||||
void delete_single_dive(int idx);
|
||||
|
||||
struct event *get_next_event(struct event *event, char *name);
|
||||
|
|
26
planner.c
26
planner.c
|
@ -240,7 +240,7 @@ static void update_cylinder_pressure(struct dive *d, int old_depth, int new_dept
|
|||
|
||||
/* simply overwrite the data in the displayed_dive
|
||||
* return false if something goes wrong */
|
||||
static void create_dive_from_plan(struct diveplan *diveplan)
|
||||
static void create_dive_from_plan(struct diveplan *diveplan, bool track_gas)
|
||||
{
|
||||
struct divedatapoint *dp;
|
||||
struct divecomputer *dc;
|
||||
|
@ -275,7 +275,8 @@ static void create_dive_from_plan(struct diveplan *diveplan)
|
|||
oldgasmix = cyl->gasmix;
|
||||
sample = prepare_sample(dc);
|
||||
sample->po2.mbar = dp->po2;
|
||||
sample->cylinderpressure.mbar = cyl->end.mbar;
|
||||
if (track_gas)
|
||||
sample->cylinderpressure.mbar = cyl->end.mbar;
|
||||
finish_sample(dc);
|
||||
while (dp) {
|
||||
struct gasmix gasmix = dp->gasmix;
|
||||
|
@ -316,7 +317,8 @@ static void create_dive_from_plan(struct diveplan *diveplan)
|
|||
sample[-1].po2.mbar = po2;
|
||||
sample->time.seconds = lasttime + 1;
|
||||
sample->depth.mm = lastdepth;
|
||||
sample->cylinderpressure.mbar = cyl->sample_end.mbar;
|
||||
if (track_gas)
|
||||
sample->cylinderpressure.mbar = cyl->sample_end.mbar;
|
||||
finish_sample(dc);
|
||||
oldgasmix = gasmix;
|
||||
}
|
||||
|
@ -328,9 +330,11 @@ static void create_dive_from_plan(struct diveplan *diveplan)
|
|||
sample->po2.mbar = po2;
|
||||
sample->time.seconds = lasttime = time;
|
||||
sample->depth.mm = lastdepth = depth;
|
||||
update_cylinder_pressure(&displayed_dive, sample[-1].depth.mm, depth, time - sample[-1].time.seconds,
|
||||
dp->entered ? diveplan->bottomsac : diveplan->decosac, cyl, !dp->entered);
|
||||
sample->cylinderpressure.mbar = cyl->end.mbar;
|
||||
if (track_gas) {
|
||||
update_cylinder_pressure(&displayed_dive, sample[-1].depth.mm, depth, time - sample[-1].time.seconds,
|
||||
dp->entered ? diveplan->bottomsac : diveplan->decosac, cyl, !dp->entered);
|
||||
sample->cylinderpressure.mbar = cyl->end.mbar;
|
||||
}
|
||||
finish_sample(dc);
|
||||
dp = dp->next;
|
||||
}
|
||||
|
@ -707,7 +711,7 @@ int ascend_velocity(int depth, int avg_depth, int bottom_time)
|
|||
}
|
||||
}
|
||||
|
||||
void plan(struct diveplan *diveplan, char **cached_datap, bool add_deco, bool show_disclaimer)
|
||||
void plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer)
|
||||
{
|
||||
struct sample *sample;
|
||||
int po2;
|
||||
|
@ -734,7 +738,7 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool add_deco, bool sh
|
|||
set_gf(diveplan->gflow, diveplan->gfhigh, prefs.gf_low_at_maxdepth);
|
||||
if (!diveplan->surface_pressure)
|
||||
diveplan->surface_pressure = SURFACE_PRESSURE;
|
||||
create_dive_from_plan(diveplan);
|
||||
create_dive_from_plan(diveplan, is_planner);
|
||||
|
||||
/* Let's start at the last 'sample', i.e. the last manually entered waypoint. */
|
||||
sample = &displayed_dive.dc.sample[displayed_dive.dc.samples - 1];
|
||||
|
@ -751,10 +755,10 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool add_deco, bool sh
|
|||
last_ascend_rate = ascend_velocity(depth, avg_depth, bottom_time);
|
||||
|
||||
/* if all we wanted was the dive just get us back to the surface */
|
||||
if (!add_deco) {
|
||||
if (!is_planner) {
|
||||
transitiontime = depth / 75; /* this still needs to be made configurable */
|
||||
plan_add_segment(diveplan, transitiontime, 0, gas, po2, false);
|
||||
create_dive_from_plan(diveplan);
|
||||
create_dive_from_plan(diveplan, is_planner);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -908,7 +912,7 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool add_deco, bool sh
|
|||
|
||||
/* We made it to the surface */
|
||||
plan_add_segment(diveplan, clock - previous_point_time, 0, gas, po2, false);
|
||||
create_dive_from_plan(diveplan);
|
||||
create_dive_from_plan(diveplan, is_planner);
|
||||
add_plan_to_notes(diveplan, &displayed_dive, show_disclaimer);
|
||||
|
||||
free(stoplevels);
|
||||
|
|
Loading…
Add table
Reference in a new issue