]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Parse uemis cylinder data
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 21:29:57 +0000 (14:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 21:56:01 +0000 (14:56 -0700)
This is some seriously crazy stuff.  Instead of making sense as a
divelog, the uemis xml makes more sense as a "dive computer settings
dump".

And I guess I can see why they'd do that.  But it makes parsing it just
incredibly annoying.  The thing is more of a "these are the
configurations I support as a dive computer thing" than a "this was the
tank you were diving with".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
dive.h
parse-xml.c

diff --git a/dive.h b/dive.h
index 1386a3bf8d8b7a999e08bcf4fcb6b99faeae47e5..08194f6a91caceec9692934b97fb1be67507e7bc 100644 (file)
--- a/dive.h
+++ b/dive.h
@@ -108,7 +108,7 @@ struct sample {
        int cylinderindex;
 };
 
-#define MAX_CYLINDERS (4)
+#define MAX_CYLINDERS (8)
 
 struct dive {
        time_t when;
index 1ca046db7a62f2e0391e8f89e896df0c34dd06d8..75959d6828a61f70baedc1db959c2280e1ba7792 100644 (file)
@@ -587,6 +587,7 @@ static void uemis_time_zone(char *buffer, void *_when)
        *when += tz * 3600;
 }
 
+/* Christ. Uemis tank data is a total mess. */
 static int uemis_dive_match(struct dive *dive, const char *name, int len, char *buf)
 {
        return  MATCH(".units.length", uemis_length_unit, &units) ||
@@ -599,6 +600,20 @@ static int uemis_dive_match(struct dive *dive, const char *name, int len, char *
                MATCH(".date_time", uemis_date_time, &dive->when) ||
                MATCH(".time_zone", uemis_time_zone, &dive->when) ||
                MATCH(".ambient.temperature", decicelsius, &dive->airtemp) ||
+               MATCH(".air.bottom_tank.size", cylindersize, &dive->cylinder[0].type.size) ||
+               MATCH(".air.bottom_tank.oxygen", percent, &dive->cylinder[0].gasmix.o2) ||
+               MATCH(".nitrox_1.bottom_tank.size", cylindersize, &dive->cylinder[1].type.size) ||
+               MATCH(".nitrox_1.bottom_tank.oxygen", percent, &dive->cylinder[1].gasmix.o2) ||
+               MATCH(".nitrox_2.bottom_tank.size", cylindersize, &dive->cylinder[2].type.size) ||
+               MATCH(".nitrox_2.bottom_tank.oxygen", percent, &dive->cylinder[2].gasmix.o2) ||
+               MATCH(".nitrox_2.deco_tank.size", cylindersize, &dive->cylinder[3].type.size) ||
+               MATCH(".nitrox_2.deco_tank.oxygen", percent, &dive->cylinder[3].gasmix.o2) ||
+               MATCH(".nitrox_3.bottom_tank.size", cylindersize, &dive->cylinder[4].type.size) ||
+               MATCH(".nitrox_3.bottom_tank.oxygen", percent, &dive->cylinder[4].gasmix.o2) ||
+               MATCH(".nitrox_3.deco_tank.size", cylindersize, &dive->cylinder[5].type.size) ||
+               MATCH(".nitrox_3.deco_tank.oxygen", percent, &dive->cylinder[5].gasmix.o2) ||
+               MATCH(".nitrox_3.travel_tank.size", cylindersize, &dive->cylinder[6].type.size) ||
+               MATCH(".nitrox_3.travel_tank.oxygen", percent, &dive->cylinder[6].gasmix.o2) ||
                0;
 }