]> sigrok.org Git - libsigrok.git/commitdiff
fx2lafw: Implemented initial support for start capture
authorJoel Holdsworth <redacted>
Thu, 1 Mar 2012 20:34:20 +0000 (20:34 +0000)
committerJoel Holdsworth <redacted>
Wed, 7 Mar 2012 07:52:05 +0000 (07:52 +0000)
hardware/fx2lafw/Makefile.am
hardware/fx2lafw/command.c [new file with mode: 0644]
hardware/fx2lafw/command.h [new file with mode: 0644]
hardware/fx2lafw/fx2lafw.c

index 5713fe11adc8047fe022da471a31686bbc269388..fc479083343953d68e144e33b98e1b477c498b48 100644 (file)
@@ -25,6 +25,8 @@ AM_CPPFLAGS = -DFIRMWARE_DIR='"$(FIRMWARE_DIR)"'
 noinst_LTLIBRARIES = libsigrokhwfx2lafw.la
 
 libsigrokhwfx2lafw_la_SOURCES = \
+       command.c \
+       command.h \
        fx2lafw.c \
        fx2lafw.h
 
diff --git a/hardware/fx2lafw/command.c b/hardware/fx2lafw/command.c
new file mode 100644 (file)
index 0000000..0e60c9a
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libusb.h>
+
+#include "command.h"
+#include "sigrok.h"
+#include "sigrok-internal.h"
+
+int command_start_acquisition(libusb_device_handle *devhdl)
+{
+       const int res = libusb_control_transfer(devhdl,
+                               LIBUSB_REQUEST_TYPE_VENDOR |
+                               LIBUSB_ENDPOINT_OUT, CMD_START, 0x0000,
+                               0x0000, NULL, 0, 100);
+       if (res < 0) {
+               sr_err("fx2lafw: Unable to send start command: %d",
+                       res);
+               return SR_ERR;
+       }
+
+       return SR_OK;
+}
diff --git a/hardware/fx2lafw/command.h b/hardware/fx2lafw/command.h
new file mode 100644 (file)
index 0000000..74e4928
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
+ *
+ * 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Protocol commands */
+#define CMD_SET_SAMPLERATE     0xb0
+#define CMD_START              0xb1
+#define CMD_STOP               0xb2
+#define CMD_GET_FW_VERSION     0xb3
+
+int command_start_acquisition(libusb_device_handle *devhdl);
index 2bf1bda6b229be9070bdc7696e944dba1321b59a..5a40be92c0a831bcd43ec68e72be64c68874b73c 100644 (file)
@@ -26,6 +26,7 @@
 #include "sigrok.h"
 #include "sigrok-internal.h"
 #include "fx2lafw.h"
+#include "command.h"
 
 static struct fx2lafw_profile supported_fx2[] = {
        /* USBee AX */
@@ -590,7 +591,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
        struct context *ctx;
        struct libusb_transfer *transfer;
        const struct libusb_pollfd **lupfd;
-       int size, i;
+       int err, size, i;
        unsigned char *buf;
 
        if (!(sdi = sr_dev_inst_get(dev_insts, dev_index)))
@@ -608,6 +609,10 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
                return SR_ERR_MALLOC;
        }
 
+       if ((err = command_start_acquisition (ctx->usb->devhdl)) != SR_OK) {
+               return err;
+       }
+
        /* Start with 2K transfer, subsequently increased to 4K. */
        size = 2048;
        for (i = 0; i < NUM_SIMUL_TRANSFERS; i++) {