GHashTable *devargs;
GVariant *gvar;
struct sr_dev_inst *sdi;
- uint64_t max_samples;
+ uint64_t min_samples, max_samples;
int max_probes, i;
char **triggerlist;
sr_session_destroy();
return;
}
- if (sr_config_get(sdi->driver, sdi, NULL,
- SR_CONF_MAX_UNCOMPRESSED_SAMPLES, &gvar) == SR_OK) {
+ 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. */
- max_samples = g_variant_get_uint64(gvar);
+ 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);
g_variant_unref(gvar_opts);
}
+ /* Selected probes and probe group may affect which options are
+ * returned, or which values for them. */
+ select_probes(sdi);
probe_group = select_probe_group(sdi);
+
if ((sr_config_list(sdi->driver, sdi, probe_group, SR_CONF_DEVICE_OPTIONS,
&gvar_opts)) != SR_OK)
/* Driver supports no device instance options. */
printf("\n");
g_variant_unref(gvar);
+ } else if (srci->key == SR_CONF_LIMIT_SAMPLES) {
+ /* If implemented in config_list(), this denotes the
+ * maximum number of samples a device can send. This
+ * really applies only to logic analyzers, and then
+ * only to those that don't support compression, or
+ * have it turned off by default. The values returned
+ * are the low/high limits. */
+ if (sr_config_list(sdi->driver, sdi, probe_group, srci->key,
+ &gvar) != SR_OK) {
+ continue;
+ }
+ g_variant_get(gvar, "(tt)", &low, &high);
+ g_variant_unref(gvar);
+ printf(" Maximum number of samples: %"PRIu64"\n", high);
+
} else if (srci->key == SR_CONF_SAMPLERATE) {
/* Supported samplerates */
printf(" %s", srci->id);