From 655e9ad312ac68521dc219145b38825ca6a6f027 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Mon, 28 Dec 2015 08:48:02 +0100 Subject: [PATCH] Add a default event handler. --- examples/common.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ examples/common.h | 3 +++ 2 files changed, 47 insertions(+) diff --git a/examples/common.c b/examples/common.c index 6cb0867..f892120 100644 --- a/examples/common.c +++ b/examples/common.c @@ -24,6 +24,12 @@ #include "common.h" #include "utils.h" +#ifdef _WIN32 +#define DC_TICKS_FORMAT "%I64d" +#else +#define DC_TICKS_FORMAT "%lld" +#endif + #define C_ARRAY_SIZE(array) (sizeof (array) / sizeof *(array)) typedef struct backend_table_t { @@ -88,6 +94,44 @@ dctool_family_name (dc_family_t type) return NULL; } +void +dctool_event_cb (dc_device_t *device, dc_event_type_t event, const void *data, void *userdata) +{ + const dc_event_progress_t *progress = (const dc_event_progress_t *) data; + const dc_event_devinfo_t *devinfo = (const dc_event_devinfo_t *) data; + const dc_event_clock_t *clock = (const dc_event_clock_t *) data; + const dc_event_vendor_t *vendor = (const dc_event_vendor_t *) data; + + switch (event) { + case DC_EVENT_WAITING: + message ("Event: waiting for user action\n"); + break; + case DC_EVENT_PROGRESS: + message ("Event: progress %3.2f%% (%u/%u)\n", + 100.0 * (double) progress->current / (double) progress->maximum, + progress->current, progress->maximum); + break; + case DC_EVENT_DEVINFO: + message ("Event: model=%u (0x%08x), firmware=%u (0x%08x), serial=%u (0x%08x)\n", + devinfo->model, devinfo->model, + devinfo->firmware, devinfo->firmware, + devinfo->serial, devinfo->serial); + break; + case DC_EVENT_CLOCK: + message ("Event: systime=" DC_TICKS_FORMAT ", devtime=%u\n", + clock->systime, clock->devtime); + break; + case DC_EVENT_VENDOR: + message ("Event: vendor="); + for (unsigned int i = 0; i < vendor->size; ++i) + message ("%02X", vendor->data[i]); + message ("\n"); + break; + default: + break; + } +} + dc_status_t dctool_descriptor_search (dc_descriptor_t **out, const char *name, dc_family_t family, unsigned int model) { diff --git a/examples/common.h b/examples/common.h index 8393fd6..1aa19fb 100644 --- a/examples/common.h +++ b/examples/common.h @@ -36,6 +36,9 @@ dctool_family_type (const char *name); const char * dctool_family_name (dc_family_t type); +void +dctool_event_cb (dc_device_t *device, dc_event_type_t event, const void *data, void *userdata); + dc_status_t dctool_descriptor_search (dc_descriptor_t **out, const char *name, dc_family_t family, unsigned int model);