add --dont-scan (-D) command line option
authorGerhard Sittig <gerhard.sittig@gmx.net>
Thu, 11 Apr 2019 18:12:44 +0000 (20:12 +0200)
committerUwe Hermann <uwe@hermann-uwe.de>
Tue, 14 May 2019 18:06:07 +0000 (20:06 +0200)
Introduce the -D or --dont-scan command line option. This avoids
automatic driver scans, and exclusively uses what -d specifies.

Some device drivers use non-standard protocol features since their
supported devices don't support the corresponding standard mechanisms.
Which can confuse conforming devices. In these situations it can be
desirable to not scan automatically for available devices, instead do
nothing until callers will specify the -d option.

This change is motivated by but does not resolve bugs #1155 and #1373.

device.c
doc/sigrok-cli.1
options.c
sigrok-cli.h

index a159ff003c7f07f7b2669885e87fdbb44d5730b7..19192ecbb0b69b404529df45d374be955d1962c9 100644 (file)
--- a/device.c
+++ b/device.c
@@ -35,12 +35,16 @@ GSList *device_scan(void)
        int i;
 
        if (opt_drv) {
+               /* Caller specified driver. Use it. Only this one. */
                if (!parse_driver(opt_drv, &driver, &drvopts))
                        return NULL;
                devices = sr_driver_scan(driver, drvopts);
                g_slist_free_full(drvopts, (GDestroyNotify)free_drvopts);
+       } else if (opt_dont_scan) {
+               /* No -d choice, and -D "don't scan" requested. Do nothing. */
+               devices = NULL;
        } else {
-               /* No driver specified, let them all scan on their own. */
+               /* No driver specified. Scan all available drivers. */
                devices = NULL;
                drivers = sr_driver_list(sr_ctx);
                for (i = 0; drivers[i]; i++) {
index 54fb285227826ee6d080c6bf7019c0cdb7f43dae..e5562c19043d6e3174c4ef93d8d258cf2d3fee62 100644 (file)
@@ -59,6 +59,11 @@ USB \fBbus.address\fP example:
 .sp
 .RB "  $ " "sigrok\-cli \-\-driver=uni\-t\-ut61e:conn=4.6" " [...]"
 .TP
+.B "\-D, \-\-dont\-scan"
+Do not automatically scan for device drivers in the absence of a
+.BR "\-d " ( "\-\-driver" )
+specification.
+.TP
 .BR "\-c, \-\-config " <deviceoption>
 A colon-separated list of device options, where each option takes the form
 .BR key=value .
index af6a7fe962032675b99d770d3ce458af278194ca..3ec4414ba8792abd84579a78ff3395861df033db 100644 (file)
--- a/options.c
+++ b/options.c
@@ -26,6 +26,7 @@ gboolean opt_list_supported = FALSE;
 gboolean opt_list_supported_wiki = FALSE;
 gint opt_loglevel = SR_LOG_WARN; /* Show errors+warnings by default. */
 gboolean opt_scan_devs = FALSE;
+gboolean opt_dont_scan = FALSE;
 gboolean opt_wait_trigger = FALSE;
 gchar *opt_input_file = NULL;
 gchar *opt_output_file = NULL;
@@ -143,6 +144,8 @@ static const GOptionEntry optargs[] = {
 #endif
        {"scan", 0, 0, G_OPTION_ARG_NONE, &opt_scan_devs,
                        "Scan for devices", NULL},
+       {"dont-scan", 'D', 0, G_OPTION_ARG_NONE, &opt_dont_scan,
+                       "Don't auto-scan (use -d spec only)", NULL},
        {"show", 0, 0, G_OPTION_ARG_NONE, &opt_show,
                        "Show device/format/decoder details", NULL},
        {"time", 0, 0, G_OPTION_ARG_CALLBACK, &check_opt_time,
index c71586a1badbb0aabecf454ac697a847bd11c509..12a1462fe2a43de2b9504b00f33c26b6ff84def4 100644 (file)
@@ -99,6 +99,7 @@ extern gboolean opt_list_supported;
 extern gboolean opt_list_supported_wiki;
 extern gint opt_loglevel;
 extern gboolean opt_scan_devs;
+extern gboolean opt_dont_scan;
 extern gboolean opt_wait_trigger;
 extern gchar *opt_input_file;
 extern gchar *opt_output_file;