From 1b45f3e735f5a8b0423640e11622233a6c03de01 Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Sun, 10 Jan 2016 10:03:55 +0100 Subject: [PATCH] visomat-data-downloader: add an option to enable libusb debug output --- src/Makefile | 3 +++ src/visomat-data-downloader.c | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 4ac4019..79105ea 100644 --- a/src/Makefile +++ b/src/Makefile @@ -36,6 +36,9 @@ ifeq ($(DEBUG),1) CFLAGS += -DDEBUG endif +# for getopt +CFLAGS += -D_POSIX_C_SOURCE=2 + CFLAGS += $(shell pkg-config --cflags libusb-1.0) LDLIBS := $(shell pkg-config --libs libusb-1.0) diff --git a/src/visomat-data-downloader.c b/src/visomat-data-downloader.c index 69f62d6..2ea275a 100644 --- a/src/visomat-data-downloader.c +++ b/src/visomat-data-downloader.c @@ -20,6 +20,7 @@ */ #include +#include #include #include #include @@ -355,12 +356,38 @@ static int visomat_get_datetime(visomat_device *dev) return 0; } -int main(void) +static void usage(const char *name) +{ + printf("usage: %s [OPTIONS]\n\n", name); + printf("OPTIONS:\n"); + printf("\t-D\t\tenable libusb debug output\n"); + printf("\t-h\t\tthis help message\n"); +} + +int main(int argc, char *argv[]) { int ret; + int opt; + bool enable_libusb_debug = false; libusb_device_handle *dev; int current_configuration; + while ((opt = getopt(argc, argv, "Dh")) != -1) { + switch (opt) { + case 'D': + enable_libusb_debug = true; + break; + case 'h': + usage(argv[0]); + ret = 0; + goto out; + default: /* '?' */ + usage(argv[0]); + ret = -EINVAL; + goto out; + } + } + ret = libusb_init(NULL); if (ret < 0) { fprintf(stderr, "libusb_init failed: %s\n", @@ -368,7 +395,8 @@ int main(void) goto out; } - libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_INFO); + libusb_set_debug(NULL, enable_libusb_debug ? + LIBUSB_LOG_LEVEL_DEBUG : LIBUSB_LOG_LEVEL_INFO); dev = libusb_open_device_with_vid_pid(NULL, VISOMAT_DEVICE_VID, -- 2.1.4