+ g_variant_unref(gvar_list);
+ }
+ g_variant_unref(gvar_dict);
+
+ } else if (srci->key == SR_CONF_BUFFERSIZE) {
+ /* Supported buffer sizes */
+ printf(" %s", srci->id);
+ if (sr_config_list(sdi->driver, SR_CONF_BUFFERSIZE,
+ &gvar_list, sdi) != SR_OK) {
+ printf("\n");
+ continue;
+ }
+ uint64 = g_variant_get_fixed_array(gvar_list,
+ &num_elements, sizeof(uint64_t));
+ printf(" - supported buffer sizes:\n");
+ for (i = 0; i < num_elements; i++)
+ printf(" %"PRIu64"\n", uint64[i]);
+ g_variant_unref(gvar_list);
+
+ } else if (srci->key == SR_CONF_TIMEBASE) {
+ /* Supported time bases */
+ printf(" %s", srci->id);
+ if (sr_config_list(sdi->driver, SR_CONF_TIMEBASE,
+ &gvar_list, sdi) != SR_OK) {
+ printf("\n");
+ continue;
+ }
+ printf(" - supported time bases:\n");
+ num_elements = g_variant_n_children(gvar_list);
+ for (i = 0; i < num_elements; i++) {
+ gvar = g_variant_get_child_value(gvar_list, i);
+ g_variant_get(gvar, "(tt)", &p, &q);
+ s = sr_period_string(p * q);
+ printf(" %s\n", s);
+ g_free(s);
+ }
+ g_variant_unref(gvar_list);
+
+ } else if (srci->key == SR_CONF_VDIV) {
+ /* Supported volts/div values */
+ printf(" %s", srci->id);
+ if (sr_config_list(sdi->driver, SR_CONF_VDIV,
+ &gvar_list, sdi) != SR_OK) {
+ printf("\n");
+ continue;
+ }
+ printf(" - supported volts/div:\n");
+ num_elements = g_variant_n_children(gvar_list);
+ for (i = 0; i < num_elements; i++) {
+ gvar = g_variant_get_child_value(gvar_list, i);
+ g_variant_get(gvar, "(tt)", &p, &q);
+ s = sr_voltage_string(p, q);
+ printf(" %s\n", s);
+ g_free(s);
+ }
+ g_variant_unref(gvar_list);
+
+ } else if (srci->datatype == SR_T_CHAR) {
+ printf(" %s: ", srci->id);
+ if (sr_config_get(sdi->driver, srci->key,
+ &gvar, sdi) == SR_OK) {
+ tmp_str = g_strdup(g_variant_get_string(gvar, NULL));
+ g_variant_unref(gvar);
+ } else
+ tmp_str = NULL;
+
+ if (sr_config_list(sdi->driver, srci->key,
+ &gvar, sdi) != SR_OK) {
+ printf("\n");
+ continue;
+ }
+
+ stropts = g_variant_get_strv(gvar, &num_elements);
+ for (i = 0; i < num_elements; i++) {
+ if (i)
+ printf(", ");
+ printf("%s", stropts[i]);
+ if (tmp_str && !strcmp(tmp_str, stropts[i]))
+ printf(" (current)");
+ }
+ printf("\n");
+ g_free(stropts);
+ g_free(tmp_str);
+ g_variant_unref(gvar);
+
+ } else if (srci->datatype == SR_T_UINT64_RANGE) {
+ printf(" %s: ", srci->id);
+ if (sr_config_list(sdi->driver, srci->key,
+ &gvar_list, sdi) != SR_OK) {
+ printf("\n");
+ continue;
+ }
+
+ if (sr_config_get(sdi->driver, srci->key, &gvar, sdi) == SR_OK) {
+ g_variant_get(gvar, "(tt)", &cur_low, &cur_high);
+ g_variant_unref(gvar);