]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/fx2lafw/protocol.c
fx2lafw: Add SR_CONF_CAPTURE_RATIO support.
[libsigrok.git] / src / hardware / fx2lafw / protocol.c
index 7e7b189116c565bd6b7f352de84e340bdb247fe6..bc3228f12d23fff44b4013da873011c4d4c5932c 100644 (file)
@@ -299,15 +299,12 @@ SR_PRIV struct dev_context *fx2lafw_dev_new(void)
 {
        struct dev_context *devc;
 
-       if (!(devc = g_try_malloc(sizeof(struct dev_context)))) {
-               sr_err("Device context malloc failed.");
-               return NULL;
-       }
-
+       devc = g_malloc0(sizeof(struct dev_context));
        devc->profile = NULL;
        devc->fw_updated = 0;
        devc->cur_samplerate = 0;
        devc->limit_samples = 0;
+       devc->capture_ratio = 0;
        devc->sample_wide = FALSE;
        devc->stl = NULL;
 
@@ -395,6 +392,7 @@ SR_PRIV void fx2lafw_receive_transfer(struct libusb_transfer *transfer)
        struct sr_datafeed_logic logic;
        unsigned int num_samples;
        int trigger_offset, cur_sample_count, unitsize;
+       int pre_trigger_samples;
 
        sdi = transfer->user_data;
        devc = sdi->priv;
@@ -462,8 +460,9 @@ SR_PRIV void fx2lafw_receive_transfer(struct libusb_transfer *transfer)
                }
        } else {
                trigger_offset = soft_trigger_logic_check(devc->stl,
-                               transfer->buffer, transfer->actual_length);
+                       transfer->buffer, transfer->actual_length, &pre_trigger_samples);
                if (trigger_offset > -1) {
+                       devc->sent_samples += pre_trigger_samples;
                        packet.type = SR_DF_LOGIC;
                        packet.payload = &logic;
                        num_samples = cur_sample_count - trigger_offset;