Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Get the following string fields from the .py decoders' register()
function and store them in the respective 'struct srd_decoder':
- longname
- longdesc
- author
- email
- license
|
|
Make the list of metadata info match the spec in the wiki more closely.
|
|
There were several issues with the other method, revert for now.
|
|
Until now the build would break if the user doesn't enable at least one
of the libusb1.0-based LAs. I.e., you could not compile only OLS, or
only the demo driver.
|
|
|
|
Do the same for sigrokdecode_ -> srd_ in struct names and function names.
|
|
|
|
Let sigrokdecode_init() always load all decoders it can find in the
decoders directory, i.e., the user doesn't need to manually load decoders.
Instead he can just look up the list via sigrokdecode_list_decoders()
after sigrokdecode_init() has run.
This is not a problem, as sigrokdecode_init() is only run once per
sigrok-cli or sigrok-gui invocation, and even with many decoders this
should not take too long.
The list of decoders within libsigrokdecode is no longer a string, but
rather a list of 'struct sigrokdecode_decoder *' pointers.
Add sigrokdecode_get_decoder_by_id() API function which returns the
decoder with the specified ID (file name without ".py" suffix, for now),
or NULL if it cannot be found.
sigrokdecode_load_decoder() is now a private function and not exported
via the lib, i.e. not available to users of libsigrokdecode.
|
|
|
|
Use PyImport_ImportModule() instead of PyImport_Import(), so we don't
have to temporarily create a py_name object.
|
|
|
|
They're defined like this in Python.h:
/* Macros to use in case the object pointer may be NULL: */
#define Py_XINCREF(op) if ((op) == NULL) ; else Py_INCREF(op)
#define Py_XDECREF(op) if ((op) == NULL) ; else Py_DECREF(op)
I.e., the performance penalty we take by using Py_XINCREF/Py_XDECREF is
pretty much non-existant.
|
|
|
|
This should fix an error/segfault when running a decoder on bigger
datasets.
|
|
Mark all Python/C API functions returning a new reference with "NEWREF",
and those that steal references with "STEAL".
|
|
|
|
|
|
FIRMWARE_DIR and DECODERS_DIR as defined in config.h need some magic applied
to resolve the $prefix/$data variable to an absolute path.
|
|
|
|
|
|
|
|
|
|
The library APIs are not yet usable or finalized, so don't expose the
libs for now. Instead, only install sigrok-cli, the manpages, and
the decoders.
|
|
Windows paths such as c:\... and/or those with spaces in them were
problematic.
|
|
Drop convenience locations which were supposed to allow running
./cli/sigrok-cli in the build directory. That will not really work fine
due to some other reasons. We only support running sigrok-cli after an
installation (into /usr/local or /opt or $HOME/sigrokinst or whatever).
|
|
|
|
|
|
Instead, add a libsigrokdecode_list_decoders() API call which gives you
the list of known protocol decoders.
|
|
Use $(datadir)/sigrok/decoders as subdirectory for the protocol decoders
(instead of installing them in the top-level $(datadir)/sigrok), just
as we do for $(datadir)/sigrok/firmware.
|
|
Add a new -A | --list-protocol-decoders option to show the list of
protocol decoders we could find.
Add -a | --protocol-decoders to specify a list of decoders that shall
be applied to the datastream. Currently only works for one decoder.
Define DECODERS_DIR, which is the directory where the decoders will be
installed upon 'make install', and where libsigrokdecode_init() will
search for them.
Thanks Olivier Fauchon <olivier@aixmarseille.com> for the initial patch,
merged in slightly different form.
|
|
|
|
Python docs tells us more about string functions:
"These functions have been renamed to PyBytes_* in Python 3.x. Unless
otherwise noted, the PyBytes functions available in 3.x are aliased to
their PyString_* equivalents to help porting."
(http://docs.python.org/c-api/string.html)
Use #defines to map the new names and fix the compile for Python >= 3.0.
Thanks Olivier Fauchon <olivier@aixmarseille.com> for the patch.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Untested, unfinished.
|
|
|
|
|
|
|
|
- Introduce 'struct sigrokdecode_decoder'.
- Decoders are now handled via two C functions:
- sigrokdecode_load_decoder(): Fills a 'struct sigrokdecode_decoder'.
- sigrokdecode_run_decoder(): Runs a decoder function.
- There are now two decoder API functions a script needs to implement:
- register(): Returns a Python dict with certain metadata.
- decode(): Runs the actual decoder code.
- libsigrokdecode: Add and use some more #defines for errors:
- SIGROKDECODE_ERR_ARGS
- SIGROKDECODE_ERR_PYTHON
- Various other smaller Python decode script infrastructure issues.
|
|
|
|
|
|
|