]> sigrok.org Git - libsigrok.git/blobdiff - hardware/asix-sigma/asix-sigma.c
sr: change all drivers to use SR_DF_META_LOGIC
[libsigrok.git] / hardware / asix-sigma / asix-sigma.c
index 5fc45c347a04c012c42ac087292f052efdd7c11f..39e2dbed79cb8ef364557173c0a6b7a96abb436b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the sigrok project.
  *
- * Copyright (C) 2010 Håvard Espeland <gus@ping.uio.no>,
+ * Copyright (C) 2010-2012 Håvard Espeland <gus@ping.uio.no>,
  * Copyright (C) 2010 Martin Stensgård <mastensg@ping.uio.no>
  * Copyright (C) 2010 Carl Henrik Lunde <chlunde@ping.uio.no>
  *
@@ -20,7 +20,7 @@
  */
 
 /*
- * ASIX SIGMA Logic Analyzer Driver
+ * ASIX SIGMA/SIGMA2 logic analyzer driver
  */
 
 #include <glib.h>
@@ -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,