libdivecomputer recently gained a api for telling us which mode the
divecomputer was running in, so this uses that to tell us if it was a OC
or CCR dive.

Signed-off-by: Anton Lundin <[email protected]>
---
 libdivecomputer.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/libdivecomputer.c b/libdivecomputer.c
index 67d291c..280859e 100644
--- a/libdivecomputer.c
+++ b/libdivecomputer.c
@@ -569,6 +569,25 @@ static int dive_cb(const unsigned char *data, unsigned int 
size,
        }
 #endif
 
+#if DC_VERSION_CHECK(0, 5, 0) && defined(DC_GASMIX_UNKNOWN)
+       dc_divemode_t divemode;
+       rc = dc_parser_get_field(parser, DC_FIELD_DIVEMODE, 0, &divemode);
+       if (rc != DC_STATUS_SUCCESS && rc != DC_STATUS_UNSUPPORTED) {
+               dev_info(devdata, translate("gettextFromC", "Error obtaining 
divemode"));
+               goto error_exit;
+       }
+       switch(divemode) {
+       case DC_DIVEMODE_FREEDIVE:
+       case DC_DIVEMODE_GAUGE:
+       case DC_DIVEMODE_OC: /* Open circuit */
+               dive->dc.dctype = OC;
+               break;
+       case DC_DIVEMODE_CC:  /* Closed circuit */
+               dive->dc.dctype = CCR;
+               break;
+       }
+#endif
+
        rc = parse_gasmixes(devdata, dive, parser, ngases, data);
        if (rc != DC_STATUS_SUCCESS) {
                dev_info(devdata, translate("gettextFromC", "Error parsing the 
gas mix"));
-- 
1.9.1

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to