From 6b50e7f959f28738b02c872053d1c17d1cf6fe75 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Tue, 26 Dec 2017 11:48:28 +0100 Subject: [PATCH] Set a default transport in the examples Setting a default transport type avoids the need to explicitely set a transport using the the new --transport command-line option. This also preserves backwards compatibility with previous versions where the option didn't exist yet. --- examples/common.c | 13 +++++++++++++ examples/common.h | 3 +++ examples/dctool_download.c | 2 +- examples/dctool_dump.c | 2 +- examples/dctool_fwupdate.c | 2 +- examples/dctool_read.c | 2 +- examples/dctool_scan.c | 2 +- examples/dctool_timesync.c | 2 +- examples/dctool_write.c | 2 +- 9 files changed, 23 insertions(+), 7 deletions(-) diff --git a/examples/common.c b/examples/common.c index bda07f2..f6ecceb 100644 --- a/examples/common.c +++ b/examples/common.c @@ -186,6 +186,19 @@ dctool_transport_name (dc_transport_t type) return NULL; } +dc_transport_t +dctool_transport_default (dc_descriptor_t *descriptor) +{ + unsigned int transports = dc_descriptor_get_transports (descriptor); + + for (size_t i = 0; i < C_ARRAY_SIZE (g_transports); ++i) { + if (transports & g_transports[i].type) + return g_transports[i].type; + } + + return DC_TRANSPORT_NONE; +} + void dctool_event_cb (dc_device_t *device, dc_event_type_t event, const void *data, void *userdata) { diff --git a/examples/common.h b/examples/common.h index 6f79402..4ae5b9c 100644 --- a/examples/common.h +++ b/examples/common.h @@ -49,6 +49,9 @@ dctool_transport_type (const char *name); const char * dctool_transport_name (dc_transport_t type); +dc_transport_t +dctool_transport_default (dc_descriptor_t *descriptor); + void dctool_event_cb (dc_device_t *device, dc_event_type_t event, const void *data, void *userdata); diff --git a/examples/dctool_download.c b/examples/dctool_download.c index 6a6ccc0..2a39f5f 100644 --- a/examples/dctool_download.c +++ b/examples/dctool_download.c @@ -258,7 +258,7 @@ dctool_download_run (int argc, char *argv[], dc_context_t *context, dc_descripto dc_buffer_t *fingerprint = NULL; dctool_output_t *output = NULL; dctool_units_t units = DCTOOL_UNITS_METRIC; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0; diff --git a/examples/dctool_dump.c b/examples/dctool_dump.c index 90c4105..6aa2e4a 100644 --- a/examples/dctool_dump.c +++ b/examples/dctool_dump.c @@ -114,7 +114,7 @@ dctool_dump_run (int argc, char *argv[], dc_context_t *context, dc_descriptor_t dc_status_t status = DC_STATUS_SUCCESS; dc_buffer_t *fingerprint = NULL; dc_buffer_t *buffer = NULL; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0; diff --git a/examples/dctool_fwupdate.c b/examples/dctool_fwupdate.c index acecb3e..e5daf35 100644 --- a/examples/dctool_fwupdate.c +++ b/examples/dctool_fwupdate.c @@ -113,7 +113,7 @@ dctool_fwupdate_run (int argc, char *argv[], dc_context_t *context, dc_descripto { int exitcode = EXIT_SUCCESS; dc_status_t status = DC_STATUS_SUCCESS; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0; diff --git a/examples/dctool_read.c b/examples/dctool_read.c index 769b7c6..2a9bf18 100644 --- a/examples/dctool_read.c +++ b/examples/dctool_read.c @@ -102,7 +102,7 @@ dctool_read_run (int argc, char *argv[], dc_context_t *context, dc_descriptor_t int exitcode = EXIT_SUCCESS; dc_status_t status = DC_STATUS_SUCCESS; dc_buffer_t *buffer = NULL; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0; diff --git a/examples/dctool_scan.c b/examples/dctool_scan.c index 9f46fc6..b96d014 100644 --- a/examples/dctool_scan.c +++ b/examples/dctool_scan.c @@ -118,7 +118,7 @@ dctool_scan_run (int argc, char *argv[], dc_context_t *context, dc_descriptor_t // Default option values. unsigned int help = 0; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Parse the command-line options. int opt = 0; diff --git a/examples/dctool_timesync.c b/examples/dctool_timesync.c index c0384e4..e0aff1f 100644 --- a/examples/dctool_timesync.c +++ b/examples/dctool_timesync.c @@ -101,7 +101,7 @@ dctool_timesync_run (int argc, char *argv[], dc_context_t *context, dc_descripto { int exitcode = EXIT_SUCCESS; dc_status_t status = DC_STATUS_SUCCESS; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0; diff --git a/examples/dctool_write.c b/examples/dctool_write.c index 98d4028..fc76c78 100644 --- a/examples/dctool_write.c +++ b/examples/dctool_write.c @@ -102,7 +102,7 @@ dctool_write_run (int argc, char *argv[], dc_context_t *context, dc_descriptor_t int exitcode = EXIT_SUCCESS; dc_status_t status = DC_STATUS_SUCCESS; dc_buffer_t *buffer = NULL; - dc_transport_t transport = DC_TRANSPORT_NONE; + dc_transport_t transport = dctool_transport_default (descriptor); // Default option values. unsigned int help = 0;