]> sigrok.org Git - libsigrok.git/blobdiff - hardware/fx2lafw/fx2lafw.h
sr: fx2lafw: Abort pending transfers when sampling is stopped
[libsigrok.git] / hardware / fx2lafw / fx2lafw.h
index 52c4c3a612c5ab0fd2c7247a09a9ac17da043209..ae3ed1bc31753664ed9b8e345447ad56468db799 100644 (file)
 
 #define FX2LAFW_REQUIRED_VERSION_MAJOR 1
 
+#define MAX_8BIT_SAMPLE_RATE   SR_MHZ(24)
+#define MAX_16BIT_SAMPLE_RATE  SR_MHZ(12)
+
 /* 6 delay states of up to 256 clock ticks */
 #define MAX_SAMPLE_DELAY       (6 * 256)
 
 /* Software trigger implementation: positive values indicate trigger stage. */
 #define TRIGGER_FIRED          -1
 
+#define DEV_CAPS_16BIT_POS     0
+
+#define DEV_CAPS_16BIT         (1 << DEV_CAPS_16BIT_POS)
+
 struct fx2lafw_profile {
        uint16_t vid;
        uint16_t pid;
@@ -50,7 +57,7 @@ struct fx2lafw_profile {
 
        const char *firmware;
 
-       int num_probes;
+       uint32_t dev_caps;
 };
 
 struct context {
@@ -68,17 +75,23 @@ struct context {
        uint64_t cur_samplerate;
        uint64_t limit_samples;
 
-       uint8_t trigger_mask[NUM_TRIGGER_STAGES];
-       uint8_t trigger_value[NUM_TRIGGER_STAGES];
+       gboolean sample_wide;
+
+       uint16_t trigger_mask[NUM_TRIGGER_STAGES];
+       uint16_t trigger_value[NUM_TRIGGER_STAGES];
        int trigger_stage;
-       uint8_t trigger_buffer[NUM_TRIGGER_STAGES];
+       uint16_t trigger_buffer[NUM_TRIGGER_STAGES];
 
        int num_samples;
        int submitted_transfers;
+       int empty_transfer_count;
 
        void *session_dev_id;
 
        struct sr_usb_dev_inst *usb;
+
+       unsigned int num_transfers;
+       struct libusb_transfer **transfers;
 };
 
 #endif