From 2d73284ebd14c28579076312987694cbd35cfe42 Mon Sep 17 00:00:00 2001 From: Bert Vermeulen Date: Mon, 11 Mar 2013 16:29:27 +0100 Subject: [PATCH 1/1] add --set option --- doc/sigrok-cli.1 | 18 ++++++++++++++---- sigrok-cli.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/doc/sigrok-cli.1 b/doc/sigrok-cli.1 index 58f86e7..e4f4c4f 100644 --- a/doc/sigrok-cli.1 +++ b/doc/sigrok-cli.1 @@ -398,12 +398,16 @@ will acquire 3000000 samples. .TP .BR "\-\-continuous" Sample continuously until stopped. Not all devices support this. +.TP +.BR "\-\-set" +Set one or more variables specified with the --device option, without doing +any acquisition. .SH EXAMPLES In order to get exactly 100 samples from the connected fx2lafw-supported logic analyzer hardware, run the following command: .TP .B " sigrok\-cli \-\-driver fx2lafw \-\-samples 100" .TP -If you want to sample data for 3 seconds, use: +If you want to sample data for 3 seconds (3000 ms), use: .TP .B " sigrok\-cli \-\-driver fx2lafw \-\-time 3000" .TP @@ -415,9 +419,15 @@ To capture data from the first 4 probes using the Openbench Logic Sniffer lastin 0:high, 1:rising, 2:low, 3:high, use: .TP .nf - \fBsigrok\-cli \-\-driver ols:conn=/dev/ttyACM0 \-\-device samplerate=10m \\ -\fB\-\-output\-format bits \-\-probes 0\-3 \-\-time 100 \\ -\fB\-\-wait\-trigger \-\-triggers 0=1,1=r,2=0,3=1 + \fBsigrok\-cli \-\-driver ols:conn=/dev/ttyACM0 \-\-device samplerate=10m \\\fP +\fB\-\-output\-format bits \-\-probes 0\-3 \-\-time 100 \\\fP +\fB\-\-wait\-trigger \-\-triggers 0=1,1=r,2=0,3=1\fP +.TP +To turn on internal logging on a Lascar EL-USB series device: +.TP +\fBsigrok\-cli \-\-driver lascar\-el\-usb:conn=10c4.0002 \\\fP +\fB\-\-device datalog=on --set\fP +.TP .fi .SH "EXIT STATUS" .B sigrok\-cli diff --git a/sigrok-cli.c b/sigrok-cli.c index a6db4f5..e58c514 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -66,6 +66,7 @@ static gchar *opt_time = NULL; static gchar *opt_samples = NULL; static gchar *opt_frames = NULL; static gchar *opt_continuous = NULL; +static gchar *opt_set = NULL; static GOptionEntry optargs[] = { {"version", 'V', 0, G_OPTION_ARG_NONE, &opt_version, @@ -108,6 +109,7 @@ static GOptionEntry optargs[] = { "Number of frames to acquire", NULL}, {"continuous", 0, 0, G_OPTION_ARG_NONE, &opt_continuous, "Sample continuously", NULL}, + {"set", 0, 0, G_OPTION_ARG_NONE, &opt_set, "Set device options only", NULL}, {NULL, 0, 0, 0, NULL, NULL, NULL} }; @@ -1292,6 +1294,40 @@ static int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args) return SR_OK; } +static void set_options(void) +{ + struct sr_dev_inst *sdi; + GSList *devices; + GHashTable *devargs; + + if (!opt_dev) { + g_critical("No setting specified."); + return; + } + + if (!(devargs = parse_generic_arg(opt_dev, FALSE))) + return; + + if (!(devices = device_scan())) { + g_critical("No devices found."); + return; + } + sdi = devices->data; + + sr_session_new(); + if (sr_session_dev_add(sdi) != SR_OK) { + g_critical("Failed to use device."); + return; + } + + set_dev_options(sdi, devargs); + + sr_session_destroy(); + g_slist_free(devices); + g_hash_table_destroy(devargs); + +} + static int set_limit_time(const struct sr_dev_inst *sdi) { uint64_t time_msec; @@ -1521,6 +1557,8 @@ int main(int argc, char **argv) show_dev_detail(); else if (opt_input_file) load_input_file(); + else if (opt_set) + set_options(); else if (opt_samples || opt_time || opt_frames || opt_continuous) run_session(); else -- 2.30.2