diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-17 12:26:21 -0600 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-10-12 07:45:37 -0400 |
commit | df4e26c8757a81bb40ba2fd60431d5d1ecd64b11 (patch) | |
tree | a7f46fb0a25a5131a42727ab0ca770f2fc0c8f30 /dive.h | |
parent | b47e0658cf5e60e18d4c9405e3b28f196ac3e2d8 (diff) | |
download | subsurface-df4e26c8757a81bb40ba2fd60431d5d1ecd64b11.tar.gz |
Start sanitizing gaschange event information
Decode the gasmix data into a sane format when creating the event, and
add the (currently unused) ability to specify a gas change to a
particular cylinder rather than (or in addition to) the gasmix.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'dive.h')
-rw-r--r-- | dive.h | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -85,11 +85,29 @@ typedef struct struct event { struct event *next; duration_t time; - int type, flags, value; + int type; + /* This is the annoying libdivecomputer format. */ + int flags, value; + /* .. and this is our "extended" data for some event types */ + union { + /* + * Currently only for gas switch events. + * + * NOTE! The index may be -1, which means "unknown". In that + * case, the get_cylinder_index() function will give the best + * match with the cylinders in the dive based on gasmix. + */ + struct { + int index; + struct gasmix mix; + } gas; + }; bool deleted; char name[]; }; +extern int event_is_gaschange(struct event *ev); +extern int event_gasmix_redundant(struct event *ev); extern int get_pressure_units(int mb, const char **units); extern double get_depth_units(int mm, int *frac, const char **units); @@ -651,7 +669,7 @@ extern void copy_samples(struct divecomputer *s, struct divecomputer *d); extern bool is_cylinder_used(struct dive *dive, int idx); extern void fill_default_cylinder(cylinder_t *cyl); extern void add_gas_switch_event(struct dive *dive, struct divecomputer *dc, int time, int idx); -extern void add_event(struct divecomputer *dc, int time, int type, int flags, int value, const char *name); +extern struct event *add_event(struct divecomputer *dc, int time, int type, int flags, int value, const char *name); extern void remove_event(struct event *event); extern void update_event_name(struct dive *d, struct event* event, char *name); extern void per_cylinder_mean_depth(struct dive *dive, struct divecomputer *dc, int *mean, int *duration); |