summaryrefslogtreecommitdiffstats
path: root/uemis.h
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2011-10-03 12:27:14 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2011-10-03 12:31:56 -0700
commit0c343f2a476a9e7ee86d491b5fba5376b746a042 (patch)
treee478c9b29b6baf432d22f5c4ce78b1ee395675ba /uemis.h
parent09ef299044246890d6e257593e4f5742191c13bb (diff)
downloadsubsurface-0c343f2a476a9e7ee86d491b5fba5376b746a042.tar.gz
Much nicer implementation of uemis sample parsing - and add events, too
This is something I wanted to do for a while. Every uemis sample is simply a packed structure with no padding. Instead of grabbing random bytes from the middle of an unstructured data blob let's just define the structure and access its members. And while we do that, add support for the more useful uemis events as well. A couple of the warnings are disabled by default (compile time flag) as they are just crazy - any normal dive will give you dozens and dozens of speed warnings. Same goes for the PO2 green warning (I haven't looked but this seems to trigger on a PO2 over 1.0 or something). Completely useless and just hides actually useful info. I still want to redo the way we visualize events in general - just printing the text ontop of the profile really is suboptimal. Especially as the uemis really seems to love to repeat several of the warnings quite frequently. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'uemis.h')
-rw-r--r--uemis.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/uemis.h b/uemis.h
index e4e8532c2..29a168f5d 100644
--- a/uemis.h
+++ b/uemis.h
@@ -1,10 +1,34 @@
-#ifndef UEMIS_H
-#define UEMIS_H
-
/*
* defines and prototypes for the uemis Zurich SDA file parser
*/
+#ifndef UEMIS_H
+#define UEMIS_H
+
+#include <stdint.h>
+
void uemis_parse_divelog_binary(char *base64, void *divep);
+typedef struct {
+ uint16_t dive_time;
+ uint16_t water_pressure; // (in cbar)
+ uint16_t dive_temperature; // (in dC)
+ uint8_t ascent_speed; // (units unclear)
+ uint8_t work_fact;
+ uint8_t cold_fact;
+ uint8_t bubble_fact;
+ uint16_t ascent_time;
+ uint16_t ascent_time_opt;
+ uint16_t p_amb_tol;
+ uint16_t satt;
+ uint16_t hold_depth;
+ uint16_t hold_time;
+ uint8_t active_tank;
+ uint16_t tank_pressure; // (in cbar)
+ uint16_t consumption; // (units unclear)
+ uint8_t rgt; // (remaining gas time in minutes)
+ uint8_t cns;
+ uint8_t flags[8];
+} __attribute((packed)) uemis_sample_t;
+
#endif /* DIVE_H */