X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Ffx2lafw%2Fcommand.c;h=5a085bb6a799ab22a6502436556647c565876878;hb=45c59c8bdd01954f9214fe7b869d92c55415d109;hp=0b89f88ca0f3550332a4454487f5442c1be20635;hpb=37dc0b16a6d6aca8f98b4baee24028f3714f91d4;p=libsigrok.git diff --git a/hardware/fx2lafw/command.c b/hardware/fx2lafw/command.c index 0b89f88c..5a085bb6 100644 --- a/hardware/fx2lafw/command.c +++ b/hardware/fx2lafw/command.c @@ -21,8 +21,8 @@ #include "fx2lafw.h" #include "command.h" -#include "sigrok.h" -#include "sigrok-internal.h" +#include "libsigrok.h" +#include "libsigrok-internal.h" SR_PRIV int command_get_fw_version(libusb_device_handle *devhdl, struct version_info *vi) @@ -59,12 +59,18 @@ SR_PRIV int command_get_revid_version(libusb_device_handle *devhdl, } SR_PRIV int command_start_acquisition(libusb_device_handle *devhdl, - uint64_t samplerate) + uint64_t samplerate, gboolean samplewide) { struct cmd_start_acquisition cmd; int delay = 0, ret; /* Compute the sample rate. */ + if (samplewide && samplerate > MAX_16BIT_SAMPLE_RATE) { + sr_err("fx2lafw: Unable to sample at %" PRIu64 "Hz " + "when collecting 16-bit samples.", samplerate); + return SR_ERR; + } + if ((SR_MHZ(48) % samplerate) == 0) { cmd.flags = CMD_START_FLAGS_CLK_48MHZ; delay = SR_MHZ(48) / samplerate - 1; @@ -89,6 +95,10 @@ SR_PRIV int command_start_acquisition(libusb_device_handle *devhdl, cmd.sample_delay_h = (delay >> 8) & 0xff; cmd.sample_delay_l = delay & 0xff; + /* Select the sampling width */ + cmd.flags |= samplewide ? CMD_START_FLAGS_SAMPLE_16BIT : + CMD_START_FLAGS_SAMPLE_8BIT; + /* Send the control message. */ ret = libusb_control_transfer(devhdl, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT, CMD_START, 0x0000, 0x0000,