X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fdemo%2Fapi.c;fp=src%2Fhardware%2Fdemo%2Fapi.c;h=190dc83637a48ff6fa7c0a68fec0699abb3e2616;hb=6fc51fb1eeddd7b024a672ef951e760b7b9f697f;hp=32ca88dd106d55da14ac7f5e03b58ddb90214e0c;hpb=31f69b096f8020d817ff26800231cb549f5ce11e;p=libsigrok.git diff --git a/src/hardware/demo/api.c b/src/hardware/demo/api.c index 32ca88dd..190dc836 100644 --- a/src/hardware/demo/api.c +++ b/src/hardware/demo/api.c @@ -143,6 +143,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) devc->logic_pattern = DEFAULT_LOGIC_PATTERN; devc->num_analog_channels = num_analog_channels; devc->limit_frames = limit_frames; + devc->capture_ratio = 20; + devc->stl = NULL; if (num_logic_channels > 0) { /* Logic channels, all in one channel group. */ @@ -434,6 +436,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) uint8_t mask; GHashTableIter iter; void *value; + struct sr_trigger *trigger; devc = sdi->priv; devc->sent_samples = 0; @@ -499,6 +502,18 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) devc->spent_us = 0; devc->step = 0; + /* Store Triggers to stl and preset trigger_fired */ + if ((trigger = sr_session_trigger_get(sdi->session))) { + int pre_trigger_samples = 0; + if (devc->limit_samples > 0) + pre_trigger_samples = (devc->capture_ratio * devc->limit_samples) / 100; + devc->stl = soft_trigger_logic_new(sdi, trigger, pre_trigger_samples); + if (!devc->stl) + return SR_ERR_MALLOC; + devc->trigger_fired = FALSE; + } else + devc->trigger_fired = TRUE; + return SR_OK; } @@ -514,6 +529,11 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi) std_session_send_df_end(sdi); + if (devc->stl) { + soft_trigger_logic_free(devc->stl); + devc->stl = NULL; + } + return SR_OK; }