]> git.tdb.fi Git - ext/subsurface.git/blobdiff - libdivecomputer.c
Show dive import error messages in the import dialog
[ext/subsurface.git] / libdivecomputer.c
index bf912f00875fa79fe8a2d204a285e0cc33356a95..4495b1716e72bab5ba18edcc57b56f82b969886d 100644 (file)
 
 #include "libdivecomputer.h"
 
-static void error(const char *fmt, ...)
+/* Christ. Libdivecomputer has the worst configuration system ever. */
+#ifdef HW_FROG_H
+  #define NOT_FROG , 0
+  #define LIBDIVECOMPUTER_SUPPORTS_FROG
+#else
+  #define NOT_FROG
+#endif
+
+static GError *error(const char *fmt, ...)
 {
        va_list args;
        GError *error;
@@ -20,8 +28,7 @@ static void error(const char *fmt, ...)
                g_quark_from_string("subsurface"),
                DIVE_ERROR_PARSE, fmt, args);
        va_end(args);
-       report_error(error);
-       g_error_free(error);
+       return error;
 }
 
 static parser_status_t create_parser(device_data_t *devdata, parser_t **parser)
@@ -78,7 +85,12 @@ static parser_status_t create_parser(device_data_t *devdata, parser_t **parser)
                return mares_iconhd_parser_create(parser, devdata->devinfo.model);
 
        case DEVICE_TYPE_HW_OSTC:
-               return hw_ostc_parser_create(parser);
+               return hw_ostc_parser_create(parser NOT_FROG);
+
+#ifdef LIBDIVECOMPUTER_SUPPORTS_FROG
+       case DEVICE_TYPE_HW_FROG:
+               return hw_ostc_parser_create(parser, 1);
+#endif
 
        case DEVICE_TYPE_CRESSI_EDY:
        case DEVICE_TYPE_ZEAGLE_N2ITION3:
@@ -499,7 +511,7 @@ static void *pthread_wrapper(void *_data)
        return (void *)err_string;
 }
 
-void do_import(device_data_t *data)
+GError *do_import(device_data_t *data)
 {
        pthread_t pthread;
        void *retval;
@@ -514,7 +526,8 @@ void do_import(device_data_t *data)
        if (pthread_join(pthread, &retval) < 0)
                retval = "Odd pthread error return";
        if (retval)
-               error(retval, data->name, data->devname);
+               return error(retval, data->name, data->devname);
+       return NULL;
 }
 
 /*
@@ -544,6 +557,9 @@ struct device_list device_list[] = {
        { "Mares Puck, Nemo Air, Nemo Wide",    DEVICE_TYPE_MARES_PUCK },
        { "Mares Icon HD",      DEVICE_TYPE_MARES_ICONHD },
        { "OSTC",               DEVICE_TYPE_HW_OSTC },
+#ifdef LIBDIVECOMPUTER_SUPPORTS_FROG
+       { "OSTC Frog",          DEVICE_TYPE_HW_FROG },
+#endif
        { "Cressi Edy",         DEVICE_TYPE_CRESSI_EDY },
        { "Zeagle N2iTiON 3",   DEVICE_TYPE_ZEAGLE_N2ITION3 },
        { "Atomics Cobalt",     DEVICE_TYPE_ATOMICS_COBALT },