]> sigrok.org Git - libsigrok.git/blobdiff - bindings/python/sigrok/core/classes.py
probe_groups: Update Python bindings for API change.
[libsigrok.git] / bindings / python / sigrok / core / classes.py
index 2998b4126b6bf2a26a3ba9306410e5e7b18f74e9..068fd39408c2429c101b7d28ae171ca8033fdc72 100644 (file)
@@ -115,11 +115,20 @@ class Driver(object):
     def name(self):
         return self.struct.name
 
-    def scan(self):
+    def scan(self, **kwargs):
         if not self._initialized:
             check(sr_driver_init(self.context.struct, self.struct))
             self._initialized = True
-        device_list = sr_driver_scan(self.struct, None)
+        options = []
+        for name, value in kwargs.items():
+            key = getattr(ConfigKey, name.upper())
+            src = sr_config()
+            src.key = key.id
+            src.data = python_to_gvariant(value)
+            options.append(src.this)
+        option_list = python_to_gslist(options)
+        device_list = sr_driver_scan(self.struct, option_list)
+        g_slist_free(option_list)
         devices = [Device(self, gpointer_to_sr_dev_inst_ptr(ptr))
             for ptr in gslist_to_python(device_list)]
         g_slist_free(device_list)
@@ -142,8 +151,8 @@ class Device(object):
         key = getattr(ConfigKey, name.upper())
         data = new_gvariant_ptr_ptr()
         try:
-            check(sr_config_get(self.driver.struct,
-                key.id, data, self.struct))
+            check(sr_config_get(self.driver.struct, self.struct, None,
+                key, data))
         except Error as error:
             if error.errno == SR_ERR_NA:
                 raise NotImplementedError(
@@ -159,8 +168,7 @@ class Device(object):
         except AttributeError:
             super(Device, self).__setattr__(name, value)
             return
-        check(sr_config_set(self.struct,
-            key.id, python_to_gvariant(value)))
+        check(sr_config_set(self.struct, None, key, python_to_gvariant(value)))
 
     @property
     def vendor(self):
@@ -188,6 +196,9 @@ class Session(object):
     def add_device(self, device):
         check(sr_session_dev_add(device.struct))
 
+    def open_device(self, device):
+        check(sr_dev_open(device.struct))
+
     def add_callback(self, callback):
         wrapper = partial(callback_wrapper, self, callback)
         check(sr_session_datafeed_python_callback_add(wrapper))