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 <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Anton Lundin 2014-11-08 14:11:09 +01:00 committed by Dirk Hohndel
parent 42d3ed0431
commit df42f78486

View file

@ -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"));