From cf104bb8de8eeda9c82e4eeca184a75de817a4ab Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 7 May 2020 12:28:01 -0700 Subject: [PATCH] Extend on the event flag type with severity and types The libdivecomputer sample flag field for events is fairly useless, traditionally just having a "begin/end" bit. This extends the flags field with a severity marker ("state", "info", "warning", "alarm") so that subsurface can report the event with the proper kind of notice (ie big red error marker for an alarm, but not show divecomputer state changes by default, for example). For Shearwater events we can also add the type of event ("interest", "navpoint", "danger", "animal", "injury"). Signed-off-by: Linus Torvalds --- include/libdivecomputer/parser.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/include/libdivecomputer/parser.h b/include/libdivecomputer/parser.h index 032e92a..29befdd 100644 --- a/include/libdivecomputer/parser.h +++ b/include/libdivecomputer/parser.h @@ -112,9 +112,29 @@ typedef enum parser_sample_event_t { typedef enum parser_sample_flags_t { SAMPLE_FLAGS_NONE = 0, SAMPLE_FLAGS_BEGIN = (1 << 0), - SAMPLE_FLAGS_END = (1 << 1) + SAMPLE_FLAGS_END = (1 << 1), + SAMPLE_FLAGS_SEVERITY_MASK = (7 << 2), } parser_sample_flags_t; +#define SAMPLE_FLAGS_SEVERITY_SHIFT 2 + +#define SAMPLE_FLAGS_SEVERITY_MISSING (0 << SAMPLE_FLAGS_SEVERITY_SHIFT) +#define SAMPLE_FLAGS_SEVERITY_STATE (1 << SAMPLE_FLAGS_SEVERITY_SHIFT) +#define SAMPLE_FLAGS_SEVERITY_INFO (2 << SAMPLE_FLAGS_SEVERITY_SHIFT) +#define SAMPLE_FLAGS_SEVERITY_WARN (3 << SAMPLE_FLAGS_SEVERITY_SHIFT) +#define SAMPLE_FLAGS_SEVERITY_ALARM (4 << SAMPLE_FLAGS_SEVERITY_SHIFT) + +/* these are used for the types of TAGs in Shearwater PNF info events */ +#define SAMPLE_FLAGS_TYPE_SHIFT 5 +#define SAMPLE_FLAGS_TYPE_MASK (7 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_NONE (0 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_INTEREST (1 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_NAVPOINT (2 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_DANGER (3 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_ANIMAL (4 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_ISSUE (5 << SAMPLE_FLAGS_TYPE_SHIFT) +#define SAMPLE_FLAGS_TYPE_INJURY (6 << SAMPLE_FLAGS_TYPE_SHIFT) + typedef enum parser_sample_vendor_t { SAMPLE_VENDOR_NONE, SAMPLE_VENDOR_UWATEC_ALADIN,