X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Ffx2lafw%2Fcommand.c;h=e68b4f04ed599b38c97261b57f3b061ea468a0b2;hb=2a67abfe349f26f0cc9d34e36f48b250cb9cac50;hp=5346408d72660570643a2580282bb10b37face95;hpb=d1ddc7a9a8a7226fcb1f8b5a360c275684e77e9a;p=libsigrok.git diff --git a/hardware/fx2lafw/command.c b/hardware/fx2lafw/command.c index 5346408d..e68b4f04 100644 --- a/hardware/fx2lafw/command.c +++ b/hardware/fx2lafw/command.c @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the libsigrok project. * * Copyright (C) 2012 Joel Holdsworth * @@ -18,11 +18,10 @@ */ #include - +#include "libsigrok.h" +#include "libsigrok-internal.h" #include "fx2lafw.h" #include "command.h" -#include "sigrok.h" -#include "sigrok-internal.h" SR_PRIV int command_get_fw_version(libusb_device_handle *devhdl, struct version_info *vi) @@ -34,7 +33,8 @@ SR_PRIV int command_get_fw_version(libusb_device_handle *devhdl, (unsigned char *)vi, sizeof(struct version_info), 100); if (ret < 0) { - sr_err("fx2lafw: Unable to get version info: %d.", ret); + sr_err("Unable to get version info: %s.", + libusb_error_name(ret)); return SR_ERR; } @@ -51,7 +51,7 @@ SR_PRIV int command_get_revid_version(libusb_device_handle *devhdl, revid, 1, 100); if (ret < 0) { - sr_err("fx2lafw: Unable to get REVID: %d.", ret); + sr_err("Unable to get REVID: %s.", libusb_error_name(ret)); return SR_ERR; } @@ -59,13 +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, - bool samplewide) + 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("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; @@ -78,19 +83,18 @@ SR_PRIV int command_start_acquisition(libusb_device_handle *devhdl, delay = SR_MHZ(30) / samplerate - 1; } - sr_info("fx2lafw: GPIF delay = %d, clocksource = %sMHz", delay, + sr_info("GPIF delay = %d, clocksource = %sMHz.", delay, (cmd.flags & CMD_START_FLAGS_CLK_48MHZ) ? "48" : "30"); if (delay <= 0 || delay > MAX_SAMPLE_DELAY) { - sr_err("fx2lafw: Unable to sample at %" PRIu64 "Hz.", - samplerate); + sr_err("Unable to sample at %" PRIu64 "Hz.", samplerate); return SR_ERR; } cmd.sample_delay_h = (delay >> 8) & 0xff; cmd.sample_delay_l = delay & 0xff; - /* Select the sampling width */ + /* Select the sampling width. */ cmd.flags |= samplewide ? CMD_START_FLAGS_SAMPLE_16BIT : CMD_START_FLAGS_SAMPLE_8BIT; @@ -99,7 +103,8 @@ SR_PRIV int command_start_acquisition(libusb_device_handle *devhdl, LIBUSB_ENDPOINT_OUT, CMD_START, 0x0000, 0x0000, (unsigned char *)&cmd, sizeof(cmd), 100); if (ret < 0) { - sr_err("fx2lafw: Unable to send start command: %d.", ret); + sr_err("Unable to send start command: %s.", + libusb_error_name(ret)); return SR_ERR; }