]> sigrok.org Git - libsigrok.git/blobdiff - bindings/python/sigrok/core/lowlevel.i
GPL headers: Use correct project name.
[libsigrok.git] / bindings / python / sigrok / core / lowlevel.i
index eaf02a0e82fd4fcef8186c9b17fff7597ed6adf7..576af5cbd42d5a8e01f5464ba6ae9cf9296d1788 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
  *
  * Copyright (C) 2013 Martin Ling <martin-sigrok@earth.li>
  *
@@ -54,15 +54,32 @@ void sr_datafeed_python_callback(const struct sr_dev_inst *sdi,
     PyGILState_Release(gstate);
 }
 
-void sr_session_datafeed_python_callback_add(PyObject *cb)
+int sr_session_datafeed_python_callback_add(PyObject *cb)
 {
+    int ret;
+
     if (!PyCallable_Check(cb))
-        PyErr_SetString(PyExc_TypeError, "Object passed is not callable");
-    else
-        sr_session_datafeed_callback_add(
+        return SR_ERR_ARG;
+    else {
+        ret = sr_session_datafeed_callback_add(
             sr_datafeed_python_callback, cb);
+        if (ret == SR_OK)
+            Py_XINCREF(cb);
+        return ret;
+    }
+}
+
+PyObject *cdata(const void *data, unsigned long size)
+{
+#if PY_MAJOR_VERSION < 3
+    return PyString_FromStringAndSize(data, size);
+#else
+    return PyBytes_FromStringAndSize(data, size);
+#endif
 }
 
 %}
 
-void sr_session_datafeed_python_callback_add(PyObject *cb);
+int sr_session_datafeed_python_callback_add(PyObject *cb);
+
+PyObject *cdata(const void *data, unsigned long size);