#include <atomics.h>
#include <utils.h>
+/* handling uemis Zurich SDA files */
+#include "uemis.h"
+
/*
* I'd love to do a while-loop here for pending events, but
* that seems to screw up with the dive computer reading timing.
va_start(args, fmt);
error = g_error_new_valist(
- g_quark_from_string("divelog"),
+ g_quark_from_string("subsurface"),
DIVE_ERROR_PARSE, fmt, args);
va_end(args);
report_error(error);
for (i = 0; i < ngases; i++) {
int rc;
gasmix_t gasmix = {0};
+ int o2, he;
rc = parser_get_field(parser, FIELD_TYPE_GASMIX, i, &gasmix);
if (rc != PARSER_STATUS_SUCCESS && rc != PARSER_STATUS_UNSUPPORTED)
if (i >= MAX_CYLINDERS)
continue;
- dive->cylinder[i].gasmix.o2.permille = gasmix.oxygen * 1000 + 0.5;
- dive->cylinder[i].gasmix.he.permille = gasmix.helium * 1000 + 0.5;
+ o2 = gasmix.oxygen * 1000 + 0.5;
+ he = gasmix.helium * 1000 + 0.5;
+
+ /* Ignore bogus data - libdivecomputer does some crazy stuff */
+ if (o2 < 210 || o2 >= 1000)
+ o2 = 0;
+ if (he < 0 || he >= 800 || o2+he >= 1000)
+ he = 0;
+
+ dive->cylinder[i].gasmix.o2.permille = o2;
+ dive->cylinder[i].gasmix.he.permille = he;
}
return PARSER_STATUS_SUCCESS;
}
static void do_import(device_data_t *data)
{
- /* FIXME! Needs user input! */
- const char *devname = "/dev/ttyUSB0";
device_t *device = NULL;
device_status_t rc;
- rc = device_open(devname, data->type, &device);
+ if (data->type == DEVICE_TYPE_UEMIS) {
+ return uemis_import();
+ }
+
+ rc = device_open(data->devname, data->type, &device);
if (rc != DEVICE_STATUS_SUCCESS) {
error("Unable to open %s (%s)", data->name, data->devname);
return;
{ "Cressi Edy", DEVICE_TYPE_CRESSI_EDY },
{ "Zeagle N2iTiON 3", DEVICE_TYPE_ZEAGLE_N2ITION3 },
{ "Atomics Cobalt", DEVICE_TYPE_ATOMICS_COBALT },
+ { "Uemis Zurich SDA", DEVICE_TYPE_UEMIS },
{ NULL }
};