mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Trim the dive to exclude surface time at beginning and end
We don't change any of the samples, we just don't plot (or consider for dive time / mean calculations) the samples at the beginning or end of the dive that are less than a certain threshold under water. Right now that's an arbitrary 75cm which seems to Do The Right Thing(tm) for the dives I tried this with - but I'm happy to look at other values if this causes problems for people with dive computers I do not have access to. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
4c3dfee446
commit
7c09991876
3 changed files with 11 additions and 2 deletions
6
dive.c
6
dive.c
|
@ -449,10 +449,10 @@ struct dive *fixup_dive(struct dive *dive)
|
|||
lastindex = index;
|
||||
lastpressure = pressure;
|
||||
|
||||
if (lastdepth)
|
||||
if (lastdepth > SURFACE_THRESHOLD)
|
||||
end = time;
|
||||
|
||||
if (depth) {
|
||||
if (depth > SURFACE_THRESHOLD) {
|
||||
if (start < 0)
|
||||
start = lasttime;
|
||||
if (depth > maxdepth)
|
||||
|
@ -479,6 +479,8 @@ struct dive *fixup_dive(struct dive *dive)
|
|||
lastdepth = depth;
|
||||
lasttime = time;
|
||||
}
|
||||
dive->start = start;
|
||||
dive->end = end;
|
||||
/* if all the samples for a cylinder have pressure data that
|
||||
* is basically equidistant throw out the sample cylinder pressure
|
||||
* information but make sure we still have a valid start and end
|
||||
|
|
3
dive.h
3
dive.h
|
@ -261,6 +261,7 @@ struct dive {
|
|||
tripflag_t tripflag;
|
||||
dive_trip_t *divetrip;
|
||||
int selected;
|
||||
int start, end;
|
||||
timestamp_t when;
|
||||
char *location;
|
||||
char *notes;
|
||||
|
@ -296,6 +297,8 @@ static inline int depth_to_mbar(int depth, struct dive *dive)
|
|||
return depth / 10.0 * specific_weight + surface_pressure + 0.5;
|
||||
}
|
||||
|
||||
#define SURFACE_THRESHOLD 750 /* somewhat arbitrary: only below 75cm is it really diving */
|
||||
|
||||
/* this is a global spot for a temporary dive structure that we use to
|
||||
* be able to edit a dive without unintended side effects */
|
||||
extern struct dive edit_dive;
|
||||
|
|
|
@ -1704,6 +1704,10 @@ static struct plot_info *create_plot_info(struct dive *dive, int nr_samples, str
|
|||
int delay = 0;
|
||||
struct sample *sample = dive_sample+i;
|
||||
|
||||
if (sample->time.seconds < dive->start || sample->time.seconds > dive->end) {
|
||||
pi_idx--;
|
||||
continue;
|
||||
}
|
||||
entry = pi->entry + i + pi_idx;
|
||||
while (ceil_ev && ceil_ev->time.seconds <= sample->time.seconds) {
|
||||
struct event *next_ceil_ev = get_next_event(ceil_ev->next, "ceiling");
|
||||
|
|
Loading…
Add table
Reference in a new issue