X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=sigrok-cli.c;h=6feabd4df3838e281dda077a76007537f2976a7f;hp=9d870ab9662aa38d62e2cc87e35aebc5a73bca11;hb=1cf6a109935a29127f6df954da2defdc73bdedaf;hpb=995713f40cb9e7bd7151e0569501b9ee6f1a77a4 diff --git a/sigrok-cli.c b/sigrok-cli.c index 9d870ab..6feabd4 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -125,7 +125,7 @@ static GSList *hash_to_hwopt(GHashTable *hash) opts = NULL; for (gl = keys; gl; gl = gl->next) { key = gl->data; - if (!(srci = sr_drvopt_name_get(key))) { + if (!(srci = sr_config_info_name_get(key))) { g_critical("Unknown option %s", key); return NULL; } @@ -332,7 +332,7 @@ static void show_dev_detail(void) print_dev_line(sdi); - if (sr_info_get(sdi->driver, SR_DI_TRIGGER_TYPES, (const void **)&charopts, + if (sr_config_list(sdi->driver, SR_CONF_TRIGGER_TYPE, (const void **)&charopts, sdi) == SR_OK && charopts) { printf("Supported triggers: "); while (*charopts) { @@ -346,20 +346,20 @@ static void show_dev_detail(void) NULL) == SR_OK) && hwopts) { printf("Supported driver options:\n"); for (i = 0; hwopts[i]; i++) { - if (!(srci = sr_drvopt_get(hwopts[i]))) + if (!(srci = sr_config_info_get(hwopts[i]))) continue; printf(" %s\n", srci->id); } } title = "Supported device options:\n"; - if ((sr_info_get(sdi->driver, SR_DI_HWCAPS, (const void **)&hwcaps, + if ((sr_config_list(sdi->driver, SR_CONF_DEVICE_OPTIONS, (const void **)&hwcaps, NULL) != SR_OK) || !hwcaps) /* Driver supports no device instance options. */ return; for (cap = 0; hwcaps[cap]; cap++) { - if (!(srci = sr_devopt_get(hwcaps[cap]))) + if (!(srci = sr_config_info_get(hwcaps[cap]))) continue; if (title) { @@ -367,10 +367,10 @@ static void show_dev_detail(void) title = NULL; } - if (srci->key == SR_HWCAP_PATTERN_MODE) { + if (srci->key == SR_CONF_PATTERN_MODE) { /* Pattern generator modes */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_PATTERNS, + if (sr_config_list(sdi->driver, SR_CONF_PATTERN_MODE, (const void **)&stropts, sdi) == SR_OK) { printf(" - supported patterns:\n"); for (i = 0; stropts[i]; i++) @@ -379,10 +379,10 @@ static void show_dev_detail(void) printf("\n"); } - } else if (srci->key == SR_HWCAP_SAMPLERATE) { + } else if (srci->key == SR_CONF_SAMPLERATE) { /* Supported samplerates */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_SAMPLERATES, + if (sr_config_list(sdi->driver, SR_CONF_SAMPLERATE, (const void **)&samplerates, sdi) != SR_OK) { printf("\n"); continue; @@ -409,10 +409,10 @@ static void show_dev_detail(void) printf(" %s\n", sr_samplerate_string(samplerates->list[i])); } - } else if (srci->key == SR_HWCAP_BUFFERSIZE) { + } else if (srci->key == SR_CONF_BUFFERSIZE) { /* Supported buffer sizes */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_BUFFERSIZES, + if (sr_config_list(sdi->driver, SR_CONF_BUFFERSIZE, (const void **)&integers, sdi) != SR_OK) { printf("\n"); continue; @@ -421,10 +421,10 @@ static void show_dev_detail(void) for (i = 0; integers[i]; i++) printf(" %"PRIu64"\n", integers[i]); - } else if (srci->key == SR_HWCAP_TIMEBASE) { + } else if (srci->key == SR_CONF_TIMEBASE) { /* Supported time bases */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_TIMEBASES, + if (sr_config_list(sdi->driver, SR_CONF_TIMEBASE, (const void **)&rationals, sdi) != SR_OK) { printf("\n"); continue; @@ -434,10 +434,10 @@ static void show_dev_detail(void) printf(" %s\n", sr_period_string( rationals[i].p * rationals[i].q)); - } else if (srci->key == SR_HWCAP_TRIGGER_SOURCE) { + } else if (srci->key == SR_CONF_TRIGGER_SOURCE) { /* Supported trigger sources */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_TRIGGER_SOURCES, + if (sr_config_list(sdi->driver, SR_CONF_TRIGGER_SOURCE, (const void **)&stropts, sdi) != SR_OK) { printf("\n"); continue; @@ -446,10 +446,10 @@ static void show_dev_detail(void) for (i = 0; stropts[i]; i++) printf(" %s\n", stropts[i]); - } else if (srci->key == SR_HWCAP_FILTER) { + } else if (srci->key == SR_CONF_FILTER) { /* Supported filters */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_FILTERS, + if (sr_config_list(sdi->driver, SR_CONF_FILTER, (const void **)&stropts, sdi) != SR_OK) { printf("\n"); continue; @@ -458,10 +458,10 @@ static void show_dev_detail(void) for (i = 0; stropts[i]; i++) printf(" %s\n", stropts[i]); - } else if (srci->key == SR_HWCAP_VDIV) { + } else if (srci->key == SR_CONF_VDIV) { /* Supported volts/div values */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_VDIVS, + if (sr_config_list(sdi->driver, SR_CONF_VDIV, (const void **)&rationals, sdi) != SR_OK) { printf("\n"); continue; @@ -470,10 +470,10 @@ static void show_dev_detail(void) for (i = 0; rationals[i].p && rationals[i].q; i++) printf(" %s\n", sr_voltage_string( &rationals[i])); - } else if (srci->key == SR_HWCAP_COUPLING) { + } else if (srci->key == SR_CONF_COUPLING) { /* Supported coupling settings */ printf(" %s", srci->id); - if (sr_info_get(sdi->driver, SR_DI_COUPLING, + if (sr_config_list(sdi->driver, SR_CONF_COUPLING, (const void **)&stropts, sdi) != SR_OK) { printf("\n"); continue; @@ -568,8 +568,10 @@ static GArray *get_enabled_logic_probes(const struct sr_dev_inst *sdi) static void datafeed_in(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet) { + const struct sr_datafeed_meta *meta; const struct sr_datafeed_logic *logic; const struct sr_datafeed_analog *analog; + struct sr_config *src; static struct sr_output *o = NULL; static GArray *logic_probelist = NULL; static uint64_t received_samples = 0; @@ -580,6 +582,7 @@ static void datafeed_in(const struct sr_dev_inst *sdi, uint64_t *samplerate, output_len, filter_out_len; uint8_t *output_buf, *filter_out; GString *out; + GSList *l; /* If the first packet to come in isn't a header, don't even try. */ if (packet->type != SR_DF_HEADER && o == NULL) @@ -626,7 +629,7 @@ static void datafeed_in(const struct sr_dev_inst *sdi, unitsize = (logic_probelist->len + 7) / 8; if (opt_pds && logic_probelist->len) { - if (sr_info_get(sdi->driver, SR_DI_CUR_SAMPLERATE, + if (sr_info_get(sdi->driver, SR_CONF_SAMPLERATE, (const void **)&samplerate, sdi) != SR_OK) { g_critical("Unable to initialize protocol " "decoders: no samplerate found."); @@ -676,6 +679,23 @@ static void datafeed_in(const struct sr_dev_inst *sdi, o = NULL; break; + case SR_DF_META: + g_debug("cli: received SR_DF_META"); + meta = packet->payload; + for (l = meta->config; l; l = l->next) { + src = l->data; + switch (src->key) { + case SR_CONF_SAMPLERATE: + samplerate = (uint64_t *)src->value; + g_debug("cli: got samplerate %"PRIu64, *samplerate); + break; + default: + /* Unknown metadata is not an error. */ + break; + } + } + break; + case SR_DF_TRIGGER: g_debug("cli: received SR_DF_TRIGGER"); if (o->format->event) @@ -1224,7 +1244,7 @@ static int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args) g_hash_table_iter_init(&iter, args); while (g_hash_table_iter_next(&iter, &key, &value)) { - if (!(srci = sr_devopt_name_get(key))) { + if (!(srci = sr_config_info_name_get(key))) { g_critical("Unknown device option '%s'.", (char *) key); return SR_ERR; } @@ -1292,8 +1312,8 @@ static int set_limit_time(const struct sr_dev_inst *sdi) return SR_ERR; } - if (sr_driver_hwcap_exists(sdi->driver, SR_HWCAP_LIMIT_MSEC)) { - if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_MSEC, &time_msec) != SR_OK) { + if (sr_driver_hwcap_exists(sdi->driver, SR_CONF_LIMIT_MSEC)) { + if (sr_dev_config_set(sdi, SR_CONF_LIMIT_MSEC, &time_msec) != SR_OK) { g_critical("Failed to configure time limit."); sr_session_destroy(); return SR_ERR; @@ -1304,8 +1324,8 @@ static int set_limit_time(const struct sr_dev_inst *sdi) * convert to samples based on the samplerate. */ limit_samples = 0; - if (sr_dev_has_hwcap(sdi, SR_HWCAP_SAMPLERATE)) { - sr_info_get(sdi->driver, SR_DI_CUR_SAMPLERATE, + if (sr_dev_has_hwcap(sdi, SR_CONF_SAMPLERATE)) { + sr_info_get(sdi->driver, SR_CONF_SAMPLERATE, (const void **)&samplerate, sdi); limit_samples = (*samplerate) * time_msec / (uint64_t)1000; } @@ -1315,7 +1335,7 @@ static int set_limit_time(const struct sr_dev_inst *sdi) return SR_ERR; } - if (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES, + if (sr_dev_config_set(sdi, SR_CONF_LIMIT_SAMPLES, &limit_samples) != SR_OK) { g_critical("Failed to configure time-based sample limit."); sr_session_destroy(); @@ -1384,7 +1404,7 @@ static void run_session(void) } if (opt_continuous) { - if (!sr_driver_hwcap_exists(sdi->driver, SR_HWCAP_CONTINUOUS)) { + if (!sr_driver_hwcap_exists(sdi->driver, SR_CONF_CONTINUOUS)) { g_critical("This device does not support continuous sampling."); sr_session_destroy(); return; @@ -1400,7 +1420,7 @@ static void run_session(void) if (opt_samples) { if ((sr_parse_sizestring(opt_samples, &limit_samples) != SR_OK) - || (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_SAMPLES, + || (sr_dev_config_set(sdi, SR_CONF_LIMIT_SAMPLES, &limit_samples) != SR_OK)) { g_critical("Failed to configure sample limit."); sr_session_destroy(); @@ -1410,7 +1430,7 @@ static void run_session(void) if (opt_frames) { if ((sr_parse_sizestring(opt_frames, &limit_frames) != SR_OK) - || (sr_dev_config_set(sdi, SR_HWCAP_LIMIT_FRAMES, + || (sr_dev_config_set(sdi, SR_CONF_LIMIT_FRAMES, &limit_frames) != SR_OK)) { g_critical("Failed to configure frame limit."); sr_session_destroy();