const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
struct dev_context *devc;
- uint64_t tmp;
(void)cg;
devc->limit_msec = g_variant_get_uint64(data);
break;
case SR_CONF_LIMIT_SAMPLES:
- tmp = g_variant_get_uint64(data);
- devc->limit_samples = tmp;
- devc->limit_msec = sigma_limit_samples_to_msec(devc, tmp);
+ devc->limit_samples = g_variant_get_uint64(data);
+ devc->limit_msec = sigma_limit_samples_to_msec(devc,
+ devc->limit_samples);
break;
#if ASIX_SIGMA_WITH_TRIGGER
case SR_CONF_CAPTURE_RATIO:
- tmp = g_variant_get_uint64(data);
- if (tmp > 100)
- return SR_ERR;
- devc->capture_ratio = tmp;
+ devc->capture_ratio = g_variant_get_uint64(data);
break;
#endif
default:
{
switch (key) {
case SR_CONF_DEVICE_OPTIONS:
- return STD_CONFIG_LIST(key, data, sdi, cg, NULL, drvopts, devopts);
+ return STD_CONFIG_LIST(key, data, sdi, cg, NO_OPTS, drvopts, devopts);
case SR_CONF_SAMPLERATE:
*data = std_gvar_samplerates(samplerates, samplerates_count);
break;
struct dev_context *devc;
devc = sdi->priv;
- devc->state.state = SIGMA_IDLE;
- sr_session_source_remove(sdi->session, -1);
+ /*
+ * When acquisition is currently running, keep the receive
+ * routine registered and have it stop the acquisition upon the
+ * next invocation. Else unregister the receive routine here
+ * already. The detour is required to have sample data retrieved
+ * for forced acquisition stops.
+ */
+ if (devc->state.state == SIGMA_CAPTURE) {
+ devc->state.state = SIGMA_STOPPING;
+ } else {
+ devc->state.state = SIGMA_IDLE;
+ sr_session_source_remove(sdi->session, -1);
+ }
return SR_OK;
}