]> git.tdb.fi Git - ext/subsurface.git/blobdiff - libdivecomputer.c
Fix edit callback for weight system
[ext/subsurface.git] / libdivecomputer.c
index 9d4c1065a3817ce046798448b7c7a39a2a10be2a..bf912f00875fa79fe8a2d204a285e0cc33356a95 100644 (file)
@@ -67,6 +67,9 @@ static parser_status_t create_parser(device_data_t *devdata, parser_t **parser)
        case DEVICE_TYPE_OCEANIC_ATOM2:
                return oceanic_atom2_parser_create(parser, devdata->devinfo.model);
 
+       case DEVICE_TYPE_MARES_DARWIN:
+               return mares_darwin_parser_create(parser, devdata->devinfo.model);
+
        case DEVICE_TYPE_MARES_NEMO:
        case DEVICE_TYPE_MARES_PUCK:
                return mares_nemo_parser_create(parser, devdata->devinfo.model);
@@ -109,7 +112,7 @@ static int parse_gasmixes(struct dive *dive, parser_t *parser, int ngases)
                he = gasmix.helium * 1000 + 0.5;
 
                /* Ignore bogus data - libdivecomputer does some crazy stuff */
-               if (o2 < 210 || o2 >= 1000)
+               if (o2 <= AIR_PERMILLE || o2 >= 1000)
                        o2 = 0;
                if (he < 0 || he >= 800 || o2+he >= 1000)
                        he = 0;
@@ -175,7 +178,7 @@ sample_cb(parser_sample_type_t type, parser_sample_value_t value, void *userdata
        case SAMPLE_TYPE_TIME:
                sample = prepare_sample(divep);
                sample->time.seconds = value.time;
-               finish_sample(*divep, sample);
+               finish_sample(*divep);
                break;
        case SAMPLE_TYPE_DEPTH:
                sample->depth.mm = value.depth * 1000 + 0.5;
@@ -385,6 +388,9 @@ static device_status_t device_open(const char *devname,
        case DEVICE_TYPE_OCEANIC_ATOM2:
                return oceanic_atom2_device_open(device, devname);
 
+       case DEVICE_TYPE_MARES_DARWIN:
+               return mares_darwin_device_open(device, devname, 0); /// last parameter is model type (taken from example), 0 seems to be standard, 1 is DARWIN_AIR => Darwin Air wont work if this is fixed here?
+
        case DEVICE_TYPE_MARES_NEMO:
                return mares_nemo_device_open(device, devname);
 
@@ -533,8 +539,9 @@ struct device_list device_list[] = {
        { "Oceanic VT Pro",     DEVICE_TYPE_OCEANIC_VTPRO },
        { "Oceanic Veo250",     DEVICE_TYPE_OCEANIC_VEO250 },
        { "Oceanic Atom 2",     DEVICE_TYPE_OCEANIC_ATOM2 },
-       { "Mares Nemo",         DEVICE_TYPE_MARES_NEMO },
-       { "Mares Puck",         DEVICE_TYPE_MARES_PUCK },
+       { "Mares Darwin, M1, M2, Airlab",       DEVICE_TYPE_MARES_DARWIN },
+       { "Mares Nemo, Excel, Apneist", DEVICE_TYPE_MARES_NEMO },
+       { "Mares Puck, Nemo Air, Nemo Wide",    DEVICE_TYPE_MARES_PUCK },
        { "Mares Icon HD",      DEVICE_TYPE_MARES_ICONHD },
        { "OSTC",               DEVICE_TYPE_HW_OSTC },
        { "Cressi Edy",         DEVICE_TYPE_CRESSI_EDY },