]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/kingst-la2016/protocol.h
kingst-la2016: use a pool of USB bulk transfers, speedup download
[libsigrok.git] / src / hardware / kingst-la2016 / protocol.h
index 5695feaf5a36ddc351576b6670e9124d4e27b6ab..bbb44c336a8edcf7541b392aa47fa3d3a665b7ba 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * This file is part of the libsigrok project.
  *
+ * Copyright (C) 2022 Gerhard Sittig <gerhard.sittig@gmx.net>
  * Copyright (C) 2020 Florian Schmidt <schmidt_florian@gmx.de>
  * Copyright (C) 2013 Marcus Comstedt <marcus@mc.pp.se>
  * Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
  */
 #define LA2016_EP6_PKTSZ       512 /* Max packet size of USB endpoint 6. */
 #define LA2016_USB_BUFSZ       (256 * 2 * LA2016_EP6_PKTSZ) /* 256KiB buffer. */
+#define LA2016_USB_XFER_COUNT  32 /* Size of USB bulk transfers pool. */
 
 /* USB communication timeout during regular operation. */
 #define DEFAULT_TIMEOUT_MS     200
+#define CAPTURE_TIMEOUT_MS     500
 
 /*
  * Check for MCU firmware to take effect after upload. Check the device
@@ -146,11 +149,12 @@ struct dev_context {
        uint32_t read_pos;
 
        struct feed_queue_logic *feed_queue;
-       struct libusb_transfer *transfer;
+       GSList *transfers;
+       size_t transfer_bufsize;
 };
 
 SR_PRIV int la2016_upload_firmware(const struct sr_dev_inst *sdi,
-       struct sr_context *sr_ctx, libusb_device *dev, uint16_t product_id);
+       struct sr_context *sr_ctx, libusb_device *dev, gboolean skip_upload);
 SR_PRIV int la2016_identify_device(const struct sr_dev_inst *sdi,
        gboolean show_message);
 SR_PRIV int la2016_init_hardware(const struct sr_dev_inst *sdi);
@@ -161,5 +165,6 @@ SR_PRIV int la2016_setup_acquisition(const struct sr_dev_inst *sdi,
 SR_PRIV int la2016_start_acquisition(const struct sr_dev_inst *sdi);
 SR_PRIV int la2016_abort_acquisition(const struct sr_dev_inst *sdi);
 SR_PRIV int la2016_receive_data(int fd, int revents, void *cb_data);
+SR_PRIV void la2016_release_resources(const struct sr_dev_inst *sdi);
 
 #endif