X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=libdivecomputer.c;h=c9255e0242324bc3a4cd4f3ed417b0a554775e3e;hb=a9f74044ae228f912515bebc983f872aa7f37695;hp=b9850b38b43573f6a2eb8e05dc5d8b14149bb027;hpb=425649a27816dbef9a6684b1da53e2ca6d8b7bd9;p=ext%2Fsubsurface.git diff --git a/libdivecomputer.c b/libdivecomputer.c index b9850b3..c9255e0 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -1,6 +1,7 @@ #include #include +#include "dive.h" #include "display.h" /* libdivecomputer */ @@ -89,6 +90,31 @@ static device_status_t device_open(const char *devname, } } +static void error(const char *fmt, ...) +{ + va_list args; + GError *error; + + va_start(args, fmt); + error = g_error_new_valist( + g_quark_from_string("divelog"), + DIVE_ERROR_PARSE, fmt, args); + va_end(args); + report_error(error); + g_error_free(error); +} + +static void +event_cb (device_t *device, device_event_t event, const void *data, void *userdata) +{ +} + +static int +cancel_cb (void *userdata) +{ + return 0; +} + static void do_import(const char *computer, device_type_t type) { /* FIXME! Needs user input! */ @@ -97,9 +123,29 @@ static void do_import(const char *computer, device_type_t type) device_status_t rc; rc = device_open(devname, type, &device); - printf("rc=%d\n", rc); - if (rc != DEVICE_STATUS_SUCCESS) + if (rc != DEVICE_STATUS_SUCCESS) { + error("Unable to open %s (%s)", computer, devname); return; + } + + // Register the event handler. + int events = DEVICE_EVENT_WAITING | DEVICE_EVENT_PROGRESS | DEVICE_EVENT_DEVINFO | DEVICE_EVENT_CLOCK; + rc = device_set_events(device, events, event_cb, NULL); + if (rc != DEVICE_STATUS_SUCCESS) { + error("Error registering the event handler."); + device_close(device); + return; + } + + // Register the cancellation handler. + rc = device_set_cancel(device, cancel_cb, NULL); + if (rc != DEVICE_STATUS_SUCCESS) { + error("Error registering the cancellation handler."); + device_close(device); + return; + } + + error("No actual code yet for importing (%s: %s)", computer, devname); } /*