X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=sigrok-cli.c;h=0b5a01fbcb6464b013f9bcde9574d54aee01b49d;hp=90e92f5117bac286bad36e488c3c760cc00b5763;hb=905766867972aa1177cf6a23f42d0ceda096bbc8;hpb=a1418b73d4f33f1439b7e2c94be9019c3085a555 diff --git a/sigrok-cli.c b/sigrok-cli.c index 90e92f5..0b5a01f 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -1,7 +1,7 @@ /* * This file is part of the sigrok project. * - * Copyright (C) 2010 Bert Vermeulen + * Copyright (C) 2012 Bert Vermeulen * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -159,7 +159,7 @@ static void show_device_list(void) demo_device = NULL; for (l = devices; l; l = l->next) { device = l->data; - if (strstr(device->plugin->name, "demo")) { + if (sr_device_has_hwcap(device, SR_HWCAP_DEMO_DEVICE)) { demo_device = device; continue; } @@ -446,7 +446,7 @@ static void datafeed_in(struct sr_device *device, struct sr_datafeed_packet *pac if (opt_pds) { if (srd_session_feed(received_samples, (uint8_t*)filter_out, filter_out_len) != SRD_OK) - abort(); + sr_session_halt(); } else { output_len = 0; if (o->format->data && packet->type == o->format->df_type) @@ -494,7 +494,7 @@ static int register_pds(struct sr_device *device, const char *pdstring) fprintf(stderr, "Failed to instantiate PD %s\n", pd_name); goto err_out; } - g_datalist_set_data(&pd_ann_visible, pd_name, pd_name); + g_datalist_set_data(&pd_ann_visible, di->instance_id, pd_name); } /* Any keys left in the options hash are probes, where the key @@ -504,11 +504,6 @@ static int register_pds(struct sr_device *device, const char *pdstring) if (srd_instance_set_probes(di, pd) != SRD_OK) return 1; - if (g_hash_table_size(pd) > 0) { - fprintf(stderr, "Unknown options or probes specified."); - return 1; - } - err_out: g_strfreev(pdtokens); if (pd) @@ -530,7 +525,7 @@ void show_pd_annotation(struct srd_proto_data *pdata) return; } - if (!g_datalist_get_data(&pd_ann_visible, pdata->pdo->proto_id)) { + if (!g_datalist_get_data(&pd_ann_visible, pdata->pdo->di->instance_id)) { /* not in the list of PDs whose annotations we're showing */ return; } @@ -715,7 +710,7 @@ int num_real_devices(void) devices = sr_device_list(); for (l = devices; l; l = l->next) { device = l->data; - if (!strstr(device->plugin->name, "demo")) + if (!sr_device_has_hwcap(device, SR_HWCAP_DEMO_DEVICE)) num_devices++; } @@ -1026,7 +1021,7 @@ int main(int argc, char **argv) } if (opt_pd_stack) { - pds = g_strsplit(opt_pd_stack, ":", 0); + pds = g_strsplit(opt_pd_stack, ",", 0); if (g_strv_length(pds) < 2) { printf("Specify at least two protocol decoders to stack.\n"); return 1;