X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=session.c;h=9441f5da1865f86992e783056296f1f116b656dd;hp=a8a647a35079c9a0ad5223319df77b24377523e9;hb=6df458b71ace93941780153b79b348d4fd99493d;hpb=ad54a1a630e6887204bc57a95075f403fd44aa6c diff --git a/session.c b/session.c index a8a647a..9441f5d 100644 --- a/session.c +++ b/session.c @@ -21,6 +21,8 @@ #include "config.h" #include #include +#include +#include static struct sr_output_format *output_format = NULL; static int default_output_format = FALSE; @@ -173,7 +175,10 @@ void datafeed_in(const struct sr_dev_inst *sdi, GSList *l; GString *out; int sample_size, ret; - uint64_t samplerate, output_len, filter_out_len, end_sample; + uint64_t samplerate, output_len, filter_out_len; +#ifdef HAVE_SRD + uint64_t end_sample; +#endif uint8_t *output_buf, *filter_out; (void) cb_data; @@ -551,6 +556,7 @@ void run_session(void) GHashTable *devargs; GVariant *gvar; struct sr_dev_inst *sdi; + uint64_t min_samples, max_samples; int max_probes, i; char **triggerlist; @@ -629,6 +635,21 @@ void run_session(void) sr_session_destroy(); return; } + if (sr_config_list(sdi->driver, sdi, NULL, + SR_CONF_LIMIT_SAMPLES, &gvar) == SR_OK) { + /* The device has no compression, or compression is turned + * off, and publishes its sample memory size. */ + g_variant_get(gvar, "(tt)", &min_samples, &max_samples); + g_variant_unref(gvar); + if (limit_samples < min_samples) { + g_critical("The device stores at least %"PRIu64 + " samples with the current settings.", min_samples); + } + if (limit_samples > max_samples) { + g_critical("The device can store only %"PRIu64 + " samples with the current settings.", max_samples); + } + } gvar = g_variant_new_uint64(limit_samples); if (sr_config_set(sdi, NULL, SR_CONF_LIMIT_SAMPLES, gvar) != SR_OK) { g_critical("Failed to configure sample limit.");