X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=hardware%2Fasix-sigma%2Fasix-sigma.c;h=39e2dbed79cb8ef364557173c0a6b7a96abb436b;hb=f366e86c68071fa7888259aa3963b213caa81b51;hp=5fc45c347a04c012c42ac087292f052efdd7c11f;hpb=e210c6c09003cbd4cfada74c42466ad407c73ad8;p=libsigrok.git diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c index 5fc45c34..39e2dbed 100644 --- a/hardware/asix-sigma/asix-sigma.c +++ b/hardware/asix-sigma/asix-sigma.c @@ -1,7 +1,7 @@ /* * This file is part of the sigrok project. * - * Copyright (C) 2010 Håvard Espeland , + * Copyright (C) 2010-2012 Håvard Espeland , * Copyright (C) 2010 Martin Stensgård * Copyright (C) 2010 Carl Henrik Lunde * @@ -20,7 +20,7 @@ */ /* - * ASIX SIGMA Logic Analyzer Driver + * ASIX SIGMA/SIGMA2 logic analyzer driver */ #include @@ -426,17 +426,17 @@ static int hw_init(const char *devinfo) /* Look for SIGMAs. */ if (ftdi_usb_find_all(&ctx->ftdic, &devlist, - USB_VENDOR, USB_PRODUCT) < 0) + USB_VENDOR, USB_PRODUCT) <= 0) goto free; /* Make sure it's a version 1 or 2 SIGMA. */ ftdi_usb_get_strings(&ctx->ftdic, devlist->dev, NULL, 0, NULL, 0, - serial_txt, sizeof(serial_txt)); + serial_txt, sizeof(serial_txt)); sscanf(serial_txt, "%x", &serial); - if (serial < 0xa6010000 || serial > 0xa602ffff ) { + if (serial < 0xa6010000 || serial > 0xa602ffff) { sr_err("sigma: Only SIGMA and SIGMA2 are supported " - "in this version of Sigrok."); + "in this version of sigrok."); goto free; } @@ -1265,6 +1265,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) struct context *ctx; struct sr_datafeed_packet *packet; struct sr_datafeed_header *header; + struct sr_datafeed_meta_logic meta; struct clockselect_50 clockselect; int frac, triggerpin, ret; uint8_t triggerselect; @@ -1348,7 +1349,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) /* Setup maximum post trigger time. */ sigma_set_register(WRITE_POST_TRIGGER, - (ctx->capture_ratio * 255) / 100, ctx); + (ctx->capture_ratio * 255) / 100, ctx); /* Start acqusition. */ gettimeofday(&ctx->start_tv, 0); @@ -1366,17 +1367,23 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) return SR_ERR_MALLOC; } - /* Add capture source. */ - sr_source_add(0, G_IO_IN, 10, receive_data, sdi); - /* Send header packet to the session bus. */ packet->type = SR_DF_HEADER; packet->payload = header; header->feed_version = 1; gettimeofday(&header->starttime, NULL); - header->samplerate = ctx->cur_samplerate; - header->num_logic_probes = ctx->num_probes; sr_session_send(ctx->session_dev_id, packet); + + /* Send metadata about the SR_DF_LOGIC packets to come. */ + packet->type = SR_DF_META_LOGIC; + packet->payload = &meta; + meta.samplerate = ctx->cur_samplerate; + meta.num_probes = ctx->num_probes; + sr_session_send(ctx->session_dev_id, packet); + + /* Add capture source. */ + sr_source_add(0, G_IO_IN, 10, receive_data, sdi); + g_free(header); g_free(packet); @@ -1429,7 +1436,7 @@ static int hw_dev_acquisition_stop(int dev_index, void *cb_data) SR_PRIV struct sr_dev_driver asix_sigma_driver_info = { .name = "asix-sigma", - .longname = "ASIX SIGMA", + .longname = "ASIX SIGMA/SIGMA2", .api_version = 1, .init = hw_init, .cleanup = hw_cleanup,