return Glib::VariantContainerBase(data);
}
-vector<const ConfigKey *> Configurable::config_keys(const ConfigKey *key)
+map<const ConfigKey *, set<Capability>> Configurable::config_keys(const ConfigKey *key)
{
GVariant *gvar_opts;
gsize num_opts;
- const int32_t *opts;
- vector<const ConfigKey *> result;
+ const uint32_t *opts;
+ map<const ConfigKey *, set<Capability>> result;
check(sr_config_list(
config_driver, config_sdi, config_channel_group,
key->id(), &gvar_opts));
- opts = (const int32_t *) g_variant_get_fixed_array(
- gvar_opts, &num_opts, sizeof(int32_t));
+ opts = (const uint32_t *) g_variant_get_fixed_array(
+ gvar_opts, &num_opts, sizeof(uint32_t));
for (gsize i = 0; i < num_opts; i++)
- result.push_back(ConfigKey::get(opts[i]));
+ {
+ auto key = ConfigKey::get(opts[i] & SR_CONF_MASK);
+ set<Capability> capabilities;
+ if (opts[i] & SR_CONF_GET)
+ capabilities.insert(GET);
+ if (opts[i] & SR_CONF_SET)
+ capabilities.insert(SET);
+ if (opts[i] & SR_CONF_LIST)
+ capabilities.insert(LIST);
+ result[key] = capabilities;
+ }
g_variant_unref(gvar_opts);
{
GVariant *gvar_opts;
gsize num_opts;
- const int32_t *opts;
+ const uint32_t *opts;
if (sr_config_list(config_driver, config_sdi, config_channel_group,
index_key->id(), &gvar_opts) != SR_OK)
return false;
- opts = (const int32_t *) g_variant_get_fixed_array(
- gvar_opts, &num_opts, sizeof(int32_t));
+ opts = (const uint32_t *) g_variant_get_fixed_array(
+ gvar_opts, &num_opts, sizeof(uint32_t));
for (gsize i = 0; i < num_opts; i++)
{
- if (opts[i] == key->id())
+ if ((opts[i] & SR_CONF_MASK) == key->id())
{
g_variant_unref(gvar_opts);
return true;
if (part.length() > 0)
s << part;
+ if (serial_number().length() > 0)
+ s << serial_number();
+ else
+ s << connection_id();
+
return s.str();
}
return valid_string(_structure->version);
}
+string Device::serial_number()
+{
+ return valid_string(_structure->serial_num);
+}
+
+string Device::connection_id()
+{
+ return valid_string(_structure->connection_id);
+}
+
vector<shared_ptr<Channel>> Device::channels()
{
vector<shared_ptr<Channel>> result;
check(ret);
}
+void Input::end()
+{
+ check(sr_input_end(_structure));
+}
+
Input::~Input()
{
if (_device)
delete _device;
- check(sr_input_free(_structure));
+ sr_input_free(_structure);
}
InputDevice::InputDevice(shared_ptr<Input> input,