]> sigrok.org Git - sigrok-cli.git/blobdiff - sigrok-cli.c
device detail now lists probes
[sigrok-cli.git] / sigrok-cli.c
index 9ae646667381dba6e9981d00678bb7fbd63e44a5..aeffeaa8d42f659aac62fde3d31d642e175cc138 100644 (file)
@@ -132,7 +132,6 @@ static GSList *hash_to_hwopt(GHashTable *hash)
                value = g_hash_table_lookup(hash, key);
                hwopt->value = g_strdup(value);
                opts = g_slist_append(opts, hwopt);
-               break;
        }
        g_list_free(keys);
 
@@ -245,6 +244,8 @@ static void show_version(void)
 
 static void print_dev_line(const struct sr_dev_inst *sdi)
 {
+       struct sr_probe *probe;
+       GSList *l;
 
        if (sdi->vendor && sdi->vendor[0])
                printf("%s ", sdi->vendor);
@@ -252,9 +253,19 @@ static void print_dev_line(const struct sr_dev_inst *sdi)
                printf("%s ", sdi->model);
        if (sdi->version && sdi->version[0])
                printf("%s ", sdi->version);
-       if (sdi->probes)
-               printf("with %d probes", g_slist_length(sdi->probes));
-       printf("\n");
+       if (sdi->probes) {
+               if (g_slist_length(sdi->probes) == 1) {
+                       probe = sdi->probes->data;
+                       printf("with 1 probe: %s\n", probe->name);
+               } else {
+                       printf("with %d probes:\n", g_slist_length(sdi->probes));
+                       for (l = sdi->probes; l; l = l->next) {
+                               probe = l->data;
+                               printf("      %s\n", probe->name);
+                       }
+               }
+       } else
+               printf("\n");
 }
 
 static void show_dev_list(void)
@@ -546,6 +557,7 @@ static void datafeed_in(const struct sr_dev_inst *sdi,
        int num_enabled_probes, sample_size, ret, i;
        uint64_t output_len, filter_out_len;
        uint8_t *output_buf, *filter_out;
+       GString *out;
 
        /* If the first packet to come in isn't a header, don't even try. */
        if (packet->type != SR_DF_HEADER && o == NULL)
@@ -594,6 +606,9 @@ static void datafeed_in(const struct sr_dev_inst *sdi,
                               received_samples);
                if (outfile && outfile != stdout)
                        fclose(outfile);
+
+               if (o->format->cleanup)
+                       o->format->cleanup(o);
                g_free(o);
                o = NULL;
                break;
@@ -784,6 +799,14 @@ static void datafeed_in(const struct sr_dev_inst *sdi,
                g_message("received unknown packet type %d", packet->type);
        }
 
+       if (o && o->format->recv) {
+               out = o->format->recv(o, sdi, packet);
+               if (out && out->len) {
+                       fwrite(out->str, 1, out->len, outfile);
+                       fflush(outfile);
+               }
+       }
+
 }
 
 /* Register the given PDs for this session.