diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-08-16 17:11:51 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-08-23 05:16:38 -0700 |
commit | 5c4569247a31cf9f52238bd2b3f9c87b8f79933a (patch) | |
tree | 2e6216fafc0b42fb6eac368e58b01136e4f2bcc7 /core | |
parent | f5b11daffd6f240268ce78d72c64be43670988ea (diff) | |
download | subsurface-5c4569247a31cf9f52238bd2b3f9c87b8f79933a.tar.gz |
Cleanup: unify get_gas_at_time() and get_gasmix()
There were two functions for getting gas-mixes at a certain timestamp:
- get_gasmix() for repeated queries.
- get_gas_at_time() for a single query.
Since the latter is a special case of the former, simply call
the former in the latter. Moreover, rename to get_gasmix_at_time()
for consistency.
Replace on get_gasmix() call, which was outside of a loop by the
corresponding get_gasmix_at_time() call.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r-- | core/dive.c | 8 | ||||
-rw-r--r-- | core/dive.h | 5 | ||||
-rw-r--r-- | core/divelist.c | 3 | ||||
-rw-r--r-- | core/planner.c | 18 | ||||
-rw-r--r-- | core/planner.h | 1 |
5 files changed, 14 insertions, 21 deletions
diff --git a/core/dive.c b/core/dive.c index 6d9945932..0cf0df780 100644 --- a/core/dive.c +++ b/core/dive.c @@ -4308,3 +4308,11 @@ struct gasmix get_gasmix(struct dive *dive, struct divecomputer *dc, int time, s *evp = ev; return res; } + +/* get the gas at a certain time during the dive */ +struct gasmix get_gasmix_at_time(struct dive *d, struct divecomputer *dc, duration_t time) +{ + struct event *ev = NULL; + struct gasmix gasmix = { 0 }; + return get_gasmix(d, dc, time.seconds, &ev, &gasmix); +} diff --git a/core/dive.h b/core/dive.h index 7e62262d9..a1cc3ab6d 100644 --- a/core/dive.h +++ b/core/dive.h @@ -718,12 +718,15 @@ extern void printdecotable(struct decostop *table); extern struct event *get_next_event(struct event *event, const char *name); -/* Get gasmix at increasing timestamps. +/* Get gasmixes at increasing timestamps. * In "evp", pass a pointer to a "struct event *" which is NULL-initialized on first invocation. * On subsequent calls, pass the same "evp" and the "gasmix" from previous calls. */ extern struct gasmix get_gasmix(struct dive *dive, struct divecomputer *dc, int time, struct event **evp, struct gasmix *gasmix); +/* Get gasmix at a given time */ +extern struct gasmix get_gasmix_at_time(struct dive *dive, struct divecomputer *dc, duration_t time); + /* these structs holds the information that * describes the cylinders / weight systems. * they are global variables initialized in equipment.c diff --git a/core/divelist.c b/core/divelist.c index 9c2484417..12382d896 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -134,8 +134,7 @@ int total_weight(struct dive *dive) static int active_o2(struct dive *dive, struct divecomputer *dc, duration_t time) { - struct gasmix gas; - get_gas_at_time(dive, dc, time, &gas); + struct gasmix gas = get_gasmix_at_time(dive, dc, time); return get_o2(&gas); } diff --git a/core/planner.c b/core/planner.c index eefa94143..ec2436a70 100644 --- a/core/planner.c +++ b/core/planner.c @@ -81,22 +81,6 @@ bool diveplan_empty(struct diveplan *diveplan) return true; } -/* get the gas at a certain time during the dive */ -void get_gas_at_time(struct dive *dive, struct divecomputer *dc, duration_t time, struct gasmix *gas) -{ - // we always start with the first gas, so that's our gas - // unless an event tells us otherwise - struct event *event = dc->events; - *gas = dive->cylinder[0].gasmix; - while (event && event->time.seconds <= time.seconds) { - if (!strcmp(event->name, "gaschange")) { - int cylinder_idx = get_cylinder_index(dive, event); - *gas = dive->cylinder[cylinder_idx].gasmix; - } - event = event->next; - } -} - /* get the cylinder index at a certain time during the dive */ int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time) { @@ -164,7 +148,7 @@ int tissue_at_end(struct deco_state *ds, struct dive *dive, struct deco_state ** setpoint = sample[0].setpoint; t1 = sample->time; - get_gas_at_time(dive, dc, t0, &gas); + gas = get_gasmix_at_time(dive, dc, t0); if (i > 0) lastdepth = psample->depth; diff --git a/core/planner.h b/core/planner.h index 741f83c02..a96633b74 100644 --- a/core/planner.h +++ b/core/planner.h @@ -17,7 +17,6 @@ extern void set_verbatim(bool verbatim); extern void set_display_runtime(bool display); extern void set_display_duration(bool display); extern void set_display_transitions(bool display); -extern void get_gas_at_time(struct dive *dive, struct divecomputer *dc, duration_t time, struct gasmix *gas); extern int get_cylinderid_at_time(struct dive *dive, struct divecomputer *dc, duration_t time); extern int get_gasidx(struct dive *dive, struct gasmix *mix); extern bool diveplan_empty(struct diveplan *diveplan); |