diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-12 09:50:40 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-12 09:50:40 -0700 |
commit | a9f74044ae228f912515bebc983f872aa7f37695 (patch) | |
tree | 45bb68d051a3c0e3d7a7ae4eb6d1b208934f2646 /libdivecomputer.c | |
parent | 425649a27816dbef9a6684b1da53e2ca6d8b7bd9 (diff) | |
download | subsurface-a9f74044ae228f912515bebc983f872aa7f37695.tar.gz |
Flesh out the libdivecomputer interfaces some more
.. start some error reporting, and register some early (empty)
callbacks.
This still doesn't actually do anything. But commit early, commit
often: when I start seriously breaking things, I want to have a "hey,
this still at least compiled" state.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'libdivecomputer.c')
-rw-r--r-- | libdivecomputer.c | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/libdivecomputer.c b/libdivecomputer.c index b9850b38b..c9255e024 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -1,6 +1,7 @@ #include <stdio.h> #include <gtk/gtk.h> +#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); } /* |