]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/fx2lafw/protocol.h
dslogic: Implement trigger functionality
[libsigrok.git] / src / hardware / fx2lafw / protocol.h
index f6f87b0c965ea1da487626c08d34b20452cc8dbd..54b2f97df9b3ea980b87520c01d26a5711bb798e 100644 (file)
@@ -39,6 +39,8 @@
 #define NUM_SIMUL_TRANSFERS    32
 #define MAX_EMPTY_TRANSFERS    (NUM_SIMUL_TRANSFERS * 2)
 
+#define NUM_CHANNELS           16
+
 #define FX2LAFW_REQUIRED_VERSION_MAJOR 1
 
 #define MAX_8BIT_SAMPLE_RATE   SR_MHZ(24)
@@ -66,7 +68,7 @@
 #define CMD_START_FLAGS_WIDE_POS       5
 #define CMD_START_FLAGS_CLK_SRC_POS    6
 
-#define CMD_START_FLAGS_CLK_CTL2       (1 << CMD_START_FLAGS_CLK_CTL2)
+#define CMD_START_FLAGS_CLK_CTL2       (1 << CMD_START_FLAGS_CLK_CTL2_POS)
 #define CMD_START_FLAGS_SAMPLE_8BIT    (0 << CMD_START_FLAGS_WIDE_POS)
 #define CMD_START_FLAGS_SAMPLE_16BIT   (1 << CMD_START_FLAGS_WIDE_POS)
 
@@ -91,6 +93,8 @@ struct fx2lafw_profile {
 
 struct dev_context {
        const struct fx2lafw_profile *profile;
+       GSList *enabled_analog_channels;
+       gboolean ch_enabled[NUM_CHANNELS];
        /*
         * Since we can't keep track of an fx2lafw device after upgrading
         * the firmware (it renumerates into a different device address
@@ -118,11 +122,10 @@ struct dev_context {
        int submitted_transfers;
        int empty_transfer_count;
 
-       void *cb_data;
        unsigned int num_transfers;
        struct libusb_transfer **transfers;
        struct sr_context *ctx;
-       void (*send_data_proc)(struct dev_context *devc,
+       void (*send_data_proc)(struct sr_dev_inst *sdi,
                uint8_t *data, size_t length, size_t sample_width);
        uint8_t *logic_buffer;
        float *analog_buffer;
@@ -130,8 +133,8 @@ struct dev_context {
        /* Is this a DSLogic? */
        gboolean dslogic;
        uint16_t dslogic_mode;
+       uint32_t trigger_pos;
        int dslogic_external_clock;
-       gboolean trigger_en;
 };
 
 SR_PRIV int fx2lafw_command_start_acquisition(const struct sr_dev_inst *sdi);
@@ -144,9 +147,9 @@ SR_PRIV void LIBUSB_CALL fx2lafw_receive_transfer(struct libusb_transfer *transf
 SR_PRIV size_t fx2lafw_get_buffer_size(struct dev_context *devc);
 SR_PRIV unsigned int fx2lafw_get_number_of_transfers(struct dev_context *devc);
 SR_PRIV unsigned int fx2lafw_get_timeout(struct dev_context *devc);
-SR_PRIV void la_send_data_proc(struct dev_context *devc, uint8_t *data, size_t length,
-               size_t sample_width);
-SR_PRIV void mso_send_data_proc(struct dev_context *devc, uint8_t *data, size_t length,
-               size_t sample_width);
+SR_PRIV void la_send_data_proc(struct sr_dev_inst *sdi, uint8_t *data,
+               size_t length, size_t sample_width);
+SR_PRIV void mso_send_data_proc(struct sr_dev_inst *sdi, uint8_t *data,
+               size_t length, size_t sample_width);
 
 #endif