python: Wrap Analog::data() as a NumPy array.
This commit is contained in:
parent
b20635771c
commit
ed6b4c4747
|
@ -46,6 +46,7 @@ which provides access to the error code and description."
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include <pygobject.h>
|
#include <pygobject.h>
|
||||||
|
#include <numpy/arrayobject.h>
|
||||||
|
|
||||||
PyObject *GLib;
|
PyObject *GLib;
|
||||||
PyTypeObject *IOChannel;
|
PyTypeObject *IOChannel;
|
||||||
|
@ -66,6 +67,7 @@ typedef guint pyg_flags_type;
|
||||||
GLib = PyImport_ImportModule("gi.repository.GLib");
|
GLib = PyImport_ImportModule("gi.repository.GLib");
|
||||||
IOChannel = (PyTypeObject *) PyObject_GetAttrString(GLib, "IOChannel");
|
IOChannel = (PyTypeObject *) PyObject_GetAttrString(GLib, "IOChannel");
|
||||||
PollFD = (PyTypeObject *) PyObject_GetAttrString(GLib, "PollFD");
|
PollFD = (PyTypeObject *) PyObject_GetAttrString(GLib, "PollFD");
|
||||||
|
import_array();
|
||||||
%}
|
%}
|
||||||
|
|
||||||
/* Map file objects to file descriptors. */
|
/* Map file objects to file descriptors. */
|
||||||
|
@ -446,6 +448,7 @@ std::map<std::string, Glib::VariantBase> dict_to_map_options(PyObject *dict,
|
||||||
%}
|
%}
|
||||||
|
|
||||||
/* Ignore these methods, we will override them below. */
|
/* Ignore these methods, we will override them below. */
|
||||||
|
%ignore sigrok::Analog::data;
|
||||||
%ignore sigrok::Driver::scan;
|
%ignore sigrok::Driver::scan;
|
||||||
%ignore sigrok::InputFormat::create_input;
|
%ignore sigrok::InputFormat::create_input;
|
||||||
%ignore sigrok::OutputFormat::create_output;
|
%ignore sigrok::OutputFormat::create_output;
|
||||||
|
@ -573,3 +576,23 @@ std::map<std::string, Glib::VariantBase> dict_to_map_options(PyObject *dict,
|
||||||
$self->config_set(key, python_to_variant_by_key(input, key));
|
$self->config_set(key, python_to_variant_by_key(input, key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return NumPy array from Analog::data(). */
|
||||||
|
%extend sigrok::Analog
|
||||||
|
{
|
||||||
|
PyObject * _data()
|
||||||
|
{
|
||||||
|
int nd = 2;
|
||||||
|
npy_intp dims[2];
|
||||||
|
dims[0] = $self->channels().size();
|
||||||
|
dims[1] = $self->num_samples();
|
||||||
|
int typenum = NPY_FLOAT;
|
||||||
|
void *data = $self->data_pointer();
|
||||||
|
return PyArray_SimpleNewFromData(nd, dims, typenum, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
%pythoncode
|
||||||
|
{
|
||||||
|
data = property(_data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue