summaryrefslogtreecommitdiffstats
path: root/uemis.c
diff options
context:
space:
mode:
Diffstat (limited to 'uemis.c')
-rw-r--r--uemis.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/uemis.c b/uemis.c
index 88099beb3..198d90358 100644
--- a/uemis.c
+++ b/uemis.c
@@ -19,6 +19,7 @@
#include "dive.h"
#include "uemis.h"
#include <libdivecomputer/parser.h>
+#include <libdivecomputer/version.h>
/*
* following code is based on code found in at base64.sourceforge.net/b64.c
@@ -101,8 +102,6 @@ bail:
return datalen;
}
-static gboolean in_deco;
-
/* Create events from the flag bits and other data in the sample;
* These bits basically represent what is displayed on screen at sample time.
* Many of these 'warnings' are way hyper-active and seriously clutter the
@@ -160,19 +159,21 @@ static void uemis_event(struct dive *dive, struct divecomputer *dc, struct sampl
/* flags[7] reflects the little on screen icons that remind of previous
* warnings / alerts - not useful for events */
- /* now add deco / ceiling events */
- if (u_sample->p_amb_tol > dive->surface_pressure.mbar &&
- u_sample->hold_time &&
- u_sample->hold_time < 99) {
- add_event(dc, sample->time.seconds, SAMPLE_EVENT_CEILING, SAMPLE_FLAGS_BEGIN,
- u_sample->hold_depth * 10, N_("ceiling"));
- add_event(dc, sample->time.seconds, SAMPLE_EVENT_DECOSTOP, 0,
- u_sample->hold_time * 60, N_("deco"));
- in_deco = TRUE;
- } else if (in_deco) {
- in_deco = FALSE;
- add_event(dc, sample->time.seconds, SAMPLE_EVENT_CEILING, SAMPLE_FLAGS_END,
- 0, N_("ceiling"));
+ /* now add deco / NDL
+ * This will create an event for every sample (SUCK) but the
+ * code in the parser will then do the right thing and just
+ * keep the relevant ones */
+ if (u_sample->p_amb_tol > dive->surface_pressure.mbar) {
+ if (u_sample->hold_time && u_sample->hold_time < 99) {
+ int hold_depth = u_sample->hold_depth / 100.0 + 0.5;
+ add_event(dc, sample->time.seconds, SAMPLE_EVENT_DECOSTOP, 0,
+ hold_depth | (u_sample->hold_time * 60) << 16 , N_("deco stop"));
+ }
+#if DC_VERSION_CHECK(0, 3, 0)
+ } else {
+ add_event(dc, sample->time.seconds, SAMPLE_EVENT_NDL, 0,
+ u_sample->hold_time * 60, N_("non stop time"));
+#endif
}
}
@@ -189,7 +190,6 @@ void uemis_parse_divelog_binary(char *base64, void *datap) {
struct divecomputer *dc = &dive->dc;
int template, gasoffset;
- in_deco = FALSE;
datalen = uemis_convert_base64(base64, &data);
dive->airtemp.mkelvin = *(uint16_t *)(data + 45) * 100 + 273150;