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. */
uint8_t mask;
GHashTableIter iter;
void *value;
+ struct sr_trigger *trigger;
devc = sdi->priv;
devc->sent_samples = 0;
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;
}
std_session_send_df_end(sdi);
+ if (devc->stl) {
+ soft_trigger_logic_free(devc->stl);
+ devc->stl = NULL;
+ }
+
return SR_OK;
}