From df42f78486cd42ff48c13d9e96fe7cc33fde1887 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Sat, 8 Nov 2014 14:11:09 +0100 Subject: Add support for libdivecomputer DC_FIELD_DIVEMODE 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 Signed-off-by: Dirk Hohndel --- libdivecomputer.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libdivecomputer.c') diff --git a/libdivecomputer.c b/libdivecomputer.c index 67d291c16..280859e50 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")); -- cgit v1.2.3-70-g09d2