X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=sigrok-cli.c;h=75015aa2b80bda18c11eb0000fc5ef78044d81f3;hb=a8a380bd8e1b29add408e7351fbc67891b3a8cbf;hp=d21ae1c8da159ed293715720c1bae2425be91e4c;hpb=f73128e45d33debfa0ca99aec564c3768e98090f;p=sigrok-cli.git diff --git a/sigrok-cli.c b/sigrok-cli.c index d21ae1c..75015aa 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -271,26 +271,39 @@ static void print_dev_line(const struct sr_dev_inst *sdi) { struct sr_probe *probe; GSList *l; + GString *s; + GVariant *gvar; + s = g_string_sized_new(128); + g_string_assign(s, sdi->driver->name); + if (sr_config_get(sdi->driver, SR_CONF_CONN, &gvar, sdi) == SR_OK) { + g_string_append(s, ":conn="); + g_string_append(s, g_variant_get_string(gvar, NULL)); + g_variant_unref(gvar); + } + g_string_append(s, " - "); if (sdi->vendor && sdi->vendor[0]) - printf("%s ", sdi->vendor); + g_string_append_printf(s, "%s ", sdi->vendor); if (sdi->model && sdi->model[0]) - printf("%s ", sdi->model); + g_string_append_printf(s, "%s ", sdi->model); if (sdi->version && sdi->version[0]) - printf("%s ", sdi->version); + g_string_append_printf(s, "%s ", sdi->version); if (sdi->probes) { if (g_slist_length(sdi->probes) == 1) { probe = sdi->probes->data; - printf("with 1 probe: %s", probe->name); + g_string_append_printf(s, "with 1 probe: %s", probe->name); } else { - printf("with %d probes:", g_slist_length(sdi->probes)); + g_string_append_printf(s, "with %d probes:", g_slist_length(sdi->probes)); for (l = sdi->probes; l; l = l->next) { probe = l->data; - printf(" %s", probe->name); + g_string_append_printf(s, " %s", probe->name); } } } - printf("\n"); + g_string_append_printf(s, "\n"); + printf("%s", s->str); + g_string_free(s, TRUE); + } static void show_dev_list(void) @@ -317,8 +330,8 @@ static void show_dev_detail(void) GSList *devices; GVariant *gvar_opts, *gvar_dict, *gvar_list, *gvar; gsize num_opts, num_elements; - const uint64_t *int64; - const int32_t *opts, *int32; + const uint64_t *uint64, p, q; + const int32_t *opts; unsigned int num_devices, tmp_bool, o, i; char *s; const char *charopts, **stropts; @@ -409,27 +422,27 @@ static void show_dev_detail(void) } if ((gvar_list = g_variant_lookup_value(gvar_dict, "samplerates", G_VARIANT_TYPE("at")))) { - int64 = g_variant_get_fixed_array(gvar_list, + uint64 = g_variant_get_fixed_array(gvar_list, &num_elements, sizeof(uint64_t)); printf(" - supported samplerates:\n"); for (i = 0; i < num_elements; i++) - printf(" %s\n", sr_samplerate_string(int64[i])); + printf(" %s\n", sr_samplerate_string(uint64[i])); } if ((gvar_list = g_variant_lookup_value(gvar_dict, "samplerate-steps", G_VARIANT_TYPE("at")))) { - int64 = g_variant_get_fixed_array(gvar_list, + uint64 = g_variant_get_fixed_array(gvar_list, &num_elements, sizeof(uint64_t)); /* low */ - if (!(s = sr_samplerate_string(int64[0]))) + if (!(s = sr_samplerate_string(uint64[0]))) continue; printf(" (%s", s); g_free(s); /* high */ - if (!(s = sr_samplerate_string(int64[1]))) + if (!(s = sr_samplerate_string(uint64[1]))) continue; printf(" - %s", s); g_free(s); /* step */ - if (!(s = sr_samplerate_string(int64[2]))) + if (!(s = sr_samplerate_string(uint64[2]))) continue; printf(" in steps of %s)\n", s); g_free(s); @@ -445,11 +458,11 @@ static void show_dev_detail(void) printf("\n"); continue; } - int64 = g_variant_get_fixed_array(gvar_list, + uint64 = g_variant_get_fixed_array(gvar_list, &num_elements, sizeof(uint64_t)); printf(" - supported buffer sizes:\n"); for (i = 0; i < num_elements; i++) - printf(" %"PRIu64"\n", int64[i]); + printf(" %"PRIu64"\n", uint64[i]); g_variant_unref(gvar_list); } else if (srci->key == SR_CONF_TIMEBASE) { @@ -461,11 +474,14 @@ static void show_dev_detail(void) continue; } printf(" - supported time bases:\n"); - int64 = g_variant_get_fixed_array(gvar_list, - &num_elements, sizeof(uint64_t)); - for (i = 0; i < num_elements / 2; i++) - printf(" %s\n", sr_period_string( - int64[i * 2] * int64[i * 2 + 1])); + num_elements = g_variant_n_children(gvar_list); + for (i = 0; i < num_elements; i++) { + gvar = g_variant_get_child_value(gvar_list, i); + g_variant_get(gvar, "(tt)", &p, &q); + s = sr_period_string(p * q); + printf(" %s\n", s); + g_free(s); + } g_variant_unref(gvar_list); } else if (srci->key == SR_CONF_TRIGGER_SOURCE) { @@ -505,11 +521,14 @@ static void show_dev_detail(void) continue; } printf(" - supported volts/div:\n"); - int64 = g_variant_get_fixed_array(gvar_list, - &num_elements, sizeof(uint64_t)); - for (i = 0; i < num_elements / 2; i++) - printf(" %s\n", sr_voltage_string( - int64[i * 2], int64[i * 2 + 1])); + num_elements = g_variant_n_children(gvar_list); + for (i = 0; i < num_elements; i++) { + gvar = g_variant_get_child_value(gvar_list, i); + g_variant_get(gvar, "(tt)", &p, &q); + s = sr_voltage_string(p, q); + printf(" %s\n", s); + g_free(s); + } g_variant_unref(gvar_list); } else if (srci->key == SR_CONF_COUPLING) { @@ -638,7 +657,7 @@ 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_packet *packet, void *cb_data) { const struct sr_datafeed_meta *meta; const struct sr_datafeed_logic *logic; @@ -657,6 +676,8 @@ static void datafeed_in(const struct sr_dev_inst *sdi, uint64_t samplerate, output_len, filter_out_len; uint8_t *output_buf, *filter_out; + (void) cb_data; + /* If the first packet to come in isn't a header, don't even try. */ if (packet->type != SR_DF_HEADER && o == NULL) return; @@ -1386,7 +1407,7 @@ static void load_input_file_format(void) return; sr_session_new(); - sr_session_datafeed_callback_add(datafeed_in); + sr_session_datafeed_callback_add(datafeed_in, NULL); if (sr_session_dev_add(in->sdi) != SR_OK) { g_critical("Failed to use device."); sr_session_destroy(); @@ -1406,7 +1427,7 @@ static void load_input_file(void) if (sr_session_load(opt_input_file) == SR_OK) { /* sigrok session file */ - sr_session_datafeed_callback_add(datafeed_in); + sr_session_datafeed_callback_add(datafeed_in, NULL); sr_session_start(); sr_session_run(); sr_session_stop(); @@ -1585,7 +1606,7 @@ static void run_session(void) sdi = devices->data; sr_session_new(); - sr_session_datafeed_callback_add(datafeed_in); + sr_session_datafeed_callback_add(datafeed_in, NULL); if (sr_session_dev_add(sdi) != SR_OK) { g_critical("Failed to use device.");