/*
* 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>
*
*/
/*
- * ASIX SIGMA Logic Analyzer Driver
+ * ASIX SIGMA/SIGMA2 logic analyzer driver
*/
#include <glib.h>
/* 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;
}
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;
/* 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);
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);
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,