+ break;
+ default:
+ g_critical("Unknown data type specified for option '%s' "
+ "(driver implementation bug?).", key);
+ ret = -1;
+ }
+
+ if (ret < 0)
+ g_critical("Invalid value: '%s' for option '%s'", value, key);
+
+ return ret;
+}
+
+int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args)
+{
+ struct sr_config src;
+ struct sr_channel_group *cg;
+ GHashTableIter iter;
+ gpointer key, value;
+ int ret;
+
+ g_hash_table_iter_init(&iter, args);
+ while (g_hash_table_iter_next(&iter, &key, &value)) {
+ if ((ret = opt_to_gvar(key, value, &src)) != 0)
+ return ret;
+ cg = select_channel_group(sdi);
+ if ((ret = maybe_config_set(sr_dev_inst_driver_get(sdi), sdi, cg,
+ src.key, src.data)) != SR_OK) {