]> sigrok.org Git - libsigrok.git/commitdiff
C++: Add Configurable::config_check() method.
authorMartin Ling <redacted>
Sat, 6 Sep 2014 12:53:09 +0000 (13:53 +0100)
committerUwe Hermann <redacted>
Mon, 8 Sep 2014 17:27:38 +0000 (19:27 +0200)
bindings/cxx/classes.cpp
bindings/cxx/include/libsigrok/libsigrok.hpp

index 68124b5a39cd50938a827d10e5154105b5050f0e..dc8eded7b4aac6e010702cf5e49a41d92947e2cb 100644 (file)
@@ -380,6 +380,34 @@ vector<const ConfigKey *> Configurable::config_keys(const ConfigKey *key)
        return result;
 }
 
+bool Configurable::config_check(const ConfigKey *key,
+       const ConfigKey *index_key)
+{
+       GVariant *gvar_opts;
+       gsize num_opts;
+       const int32_t *opts;
+
+       if (sr_config_list(config_driver, config_sdi, config_channel_group,
+                       index_key->get_id(), &gvar_opts) != SR_OK)
+               return false;
+
+       opts = (const int32_t *) g_variant_get_fixed_array(
+               gvar_opts, &num_opts, sizeof(int32_t));
+
+       for (gsize i = 0; i < num_opts; i++)
+       {
+               if (opts[i] == key->get_id())
+               {
+                       g_variant_unref(gvar_opts);
+                       return true;
+               }
+       }
+
+       g_variant_unref(gvar_opts);
+
+       return false;
+}
+
 Device::Device(struct sr_dev_inst *structure) :
        Configurable(structure->driver, structure, NULL),
        structure(structure)
index 637daf912114e99dd4b8efe1a5eb1922579eaf77..29d6c73638fa7780253e7287ec1c97faac2eec6d 100644 (file)
@@ -297,6 +297,8 @@ public:
        Glib::VariantContainerBase config_list(const ConfigKey *key);
        /** Enumerate available keys, according to a given index key. */
        vector<const ConfigKey *> config_keys(const ConfigKey *key);
+       /** Check for a key in the list from a given index key. */
+       bool config_check(const ConfigKey *key, const ConfigKey *index_key);
 protected:
        Configurable(
                struct sr_dev_driver *driver,